Spaces:
Running
Running
File size: 3,166 Bytes
04a15c5 d34af22 04a15c5 d34af22 04a15c5 d34af22 04a15c5 3c1c3de 9dbf344 51ba1cb 9dbf344 51ba1cb 9dbf344 04a15c5 d34af22 04a15c5 9dbf344 04a15c5 3c1c3de cd6a3e0 3c1c3de 22ca76e 51ba1cb 22ca76e 04a15c5 9dbf344 04a15c5 9dbf344 51ba1cb 9dbf344 d34af22 9dbf344 04a15c5 9dbf344 04a15c5 cd6a3e0 9dbf344 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# First stage: build dependencies
FROM public.ecr.aws/docker/library/python:3.11.9-slim-bookworm
# Install Lambda web adapter in case you want to run with with an AWS Lamba function URL (not essential if not using Lambda)
#COPY --from=public.ecr.aws/awsguru/aws-lambda-adapter:0.8.3 /lambda-adapter /opt/extensions/lambda-adapter
# Install wget, curl, and build-essential
RUN apt-get update && apt-get install -y \
wget \
curl \
build-essential
# Create a directory for the model
RUN mkdir /model && mkdir /model/rep && mkdir /model/embed
WORKDIR /src
COPY requirements_aws.txt .
RUN pip install --no-cache-dir -r requirements_aws.txt
# Gradio needs to be installed after due to conflict with spacy in requirements
RUN pip install --no-cache-dir gradio==4.41.0
# Set up a new user named "user" with user ID 1000
RUN useradd -m -u 1000 user
# Change ownership of /home/user directory
RUN chown -R user:user /home/user
# Make output folder
RUN mkdir -p /home/user/app/output && chown -R user:user /home/user/app/output
RUN mkdir -p /home/user/.cache/huggingface/hub && chown -R user:user /home/user/.cache/huggingface/hub
RUN mkdir -p /home/user/.cache/matplotlib && chown -R user:user /home/user/.cache/matplotlib
RUN mkdir -p /home/user/app/model/rep && chown -R user:user /home/user/app/model/rep
RUN mkdir -p /home/user/app/model/embed && chown -R user:user /home/user/app/model/embed
RUN mkdir -p /home/user/app/cache && chown -R user:user /home/user/app/cache
# Download the quantised phi model directly with curl. Changed at it is so big - not loaded
#RUN curl -L -o /home/user/app/model/rep/Phi-3.1-mini-128k-instruct-Q4_K_M.gguf https://huggingface.co/bartowski/Phi-3.1-mini-128k-instruct-GGUF/tree/main/Phi-3.1-mini-128k-instruct-Q4_K_M.gguf
# Download the Mixed bread embedding model during the build process - changed as it is too big for AWS. Not loaded.
#RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash
#RUN apt-get install git-lfs -y
#RUN git lfs install
#RUN git clone https://huggingface.co/mixedbread-ai/mxbai-embed-large-v1 /home/user/app/model/embed
#RUN rm -rf /home/user/app/model/embed/.git
# Download the embedding model - Create a directory for the model and download specific files using huggingface_hub
COPY download_model.py /src/download_model.py
RUN python /src/download_model.py
# Switch to the "user" user
USER user
# Set home to the user's home directory
ENV HOME=/home/user \
PATH=/home/user/.local/bin:$PATH \
PYTHONPATH=/home/user/app \
PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
GRADIO_ALLOW_FLAGGING=never \
GRADIO_NUM_PORTS=1 \
GRADIO_SERVER_NAME=0.0.0.0 \
GRADIO_SERVER_PORT=7860 \
GRADIO_THEME=huggingface \
AWS_STS_REGIONAL_ENDPOINT=regional \
GRADIO_OUTPUT_FOLDER='output/' \
NUMBA_CACHE_DIR=/home/user/app/cache \
SYSTEM=spaces
# Set the working directory to the user's home directory
WORKDIR $HOME/app
# Copy the current directory contents into the container at $HOME/app setting the owner to the user
COPY --chown=user . $HOME/app
CMD ["python", "app.py"] |