File size: 3,851 Bytes
10dd6c2 e9c68d8 8aa5379 2063a08 218c4a7 f74c60f 2063a08 7d2db2d f74c60f 2063a08 7d2db2d 33464a2 2063a08 6d767ba 7da53e2 2063a08 f74c60f 2063a08 6d767ba 49771fa f74c60f 2063a08 6d767ba 2063a08 6d767ba f74c60f 2063a08 33464a2 5db51af 6d767ba f74c60f 2063a08 7d2db2d 5db51af 63a76d0 2063a08 33786a0 8aa5379 1a4e767 92078c7 2063a08 5db51af 2063a08 5db51af 2063a08 1a4e767 5db51af 0d97cbe |
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 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# Documentation: https://huggingface.co/docs/hub/spaces-sdks-docker
FROM python:3.9
# Create a non-root user and allow them to have appropriate permissions
# on our Space content
RUN useradd -m -u 1000 user
COPY --chown=user ./requirements.txt /requirements.txt
COPY --chown=user ./train.sh /train.sh
COPY --chown=user ./upload_results.py /upload_results.py
COPY --chown=user ./pause_space.py /pause_space.py
RUN chmod +x /train.sh
# May not need to do this. Just tired of permissions errors and going wild.
RUN chmod +x /upload_results.py
RUN chmod +x /pause_space.py
# Make the working directory for user.
RUN mkdir /app
# Start installing stuff as root so it doesn't complain about install permissions.
#RUN pip install --no-cache-dir --upgrade pip
RUN pip install --no-cache-dir --upgrade -r /requirements.txt
# Clone into the working directory for the user.
RUN git clone https://github.com/lee-ny/teaching_arithmetic.git /app/teaching_arithmetic
#&& cd teaching_arithmetic && pip install -e .
# Copy all files we have into the user's working directory.
COPY --chown=user . /app
# Kept getting permission denied errors when running train.py, which tries to
# create the out directory. Just doing this to try to help that.
RUN mkdir /app/teaching_arithmetic/out
RUN chmod -R 777 /app/
# Switch to the user profile.
# This will help make sure the permissions of the cloned git stuff
# don't require root privileges (I am guessing).
USER user
# Switch to the /app working directory.
WORKDIR /app
# Permissions. Permissions. Already did this. Doing it again anyway.
RUN chmod +x train.sh
RUN chmod +x upload_results.py
RUN chmod +x pause_space.py
# Expose the secret so it can be used later.
RUN --mount=type=secret,id=DATACOMP_TOKEN
#,mode=0444,required=true \
# Could also use CMD. Example:
# CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
ENTRYPOINT ["/train.sh"]
# Keeping these as FYI, commented out, as they are other things we could do.
#ENV PATH="/home/user/.local/bin:/opt/conda/bin:$PATH"
#ENV HOME="/home/user"
#WORKDIR $HOME/app
# We now install with requirements.txt
#ARG PYTORCH_VERSION=2.1.0
#ARG PYTHON_VERSION=3.9 #8.10
#ARG CUDA_VERSION=11.8
#ARG CU_DNN=8.5.0.96
#ARG MAMBA_VERSION=24.3.0-0
#ARG CUDA_CHANNEL=nvidia
#ARG INSTALL_CHANNEL=pytorch
# Automatically set by buildx
#ARG TARGETPLATFORM
# Updating basic dependencies we'll be using.
#RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
# build-essential \
# ca-certificates \
# ccache \
# curl \
# python3 \
# python3-pip \
# git && \
# rm -rf /var/lib/apt/lists/*
# Installing conda, translating Docker's TARGETPLATFORM into mamba arches
#RUN case ${TARGETPLATFORM} in \
# "linux/arm64") MAMBA_ARCH=aarch64 ;; \
# *) MAMBA_ARCH=x86_64 ;; \
# esac && \
# curl -fsSL -v -o ~/mambaforge.sh -O "https://github.com/conda-forge/miniforge/releases/download/${MAMBA_VERSION}/Mambaforge-${MAMBA_VERSION}-Linux-${MAMBA_ARCH}.sh"
#RUN chmod +x ~/mambaforge.sh && \
# bash ~/mambaforge.sh -b -p /opt/conda && \
# rm ~/mambaforge.sh
# Installing pytorch
# On arm64 we exit with an error code
#RUN case ${TARGETPLATFORM} in \
# "linux/arm64") exit 1 ;; \
# *) /opt/conda/bin/conda update -y conda && \
# /opt/conda/bin/conda install -c "${INSTALL_CHANNEL}" -c "${CUDA_CHANNEL}" -y "python=${PYTHON_VERSION}" "pytorch=$PYTORCH_VERSION" "pytorch-cuda=$(echo $CUDA_VERSION | cut -d'.' -f 1-2)" ;; \
# esac && \
# /opt/conda/bin/conda clean -ya
# Expose the secret DEBUG at buildtime and use its value as git remote URL
#RUN --mount=type=secret,id=DEBUG,mode=0444,required=true \
# git init && \
# git remote add origin $(cat /run/secrets/DEBUG)
|