The non-root user approach had multiple issues with RunPod compatibility, sudo PATH handling, and tmux in exec sessions. Restoring root as the default user for now.
49 lines
1.7 KiB
Plaintext
49 lines
1.7 KiB
Plaintext
ARG BASE_TAG=main-base
|
|
FROM axolotlai/axolotl-base-uv:$BASE_TAG
|
|
|
|
ARG TORCH_CUDA_ARCH_LIST="7.0 7.5 8.0 8.6+PTX"
|
|
ARG AXOLOTL_EXTRAS=""
|
|
ARG AXOLOTL_ARGS=""
|
|
ARG CUDA="118"
|
|
ARG PYTORCH_VERSION="2.1.2"
|
|
ARG TARGETARCH
|
|
|
|
ENV PYTORCH_VERSION=$PYTORCH_VERSION
|
|
|
|
RUN apt-get update && \
|
|
apt-get install -y --allow-change-held-packages vim curl nano libnccl2 libnccl-dev rsync s3fs && \
|
|
rm -rf /var/cache/apt/archives && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /workspace
|
|
|
|
RUN git clone --depth=1 https://github.com/axolotl-ai-cloud/axolotl.git
|
|
|
|
WORKDIR /workspace/axolotl
|
|
|
|
# If AXOLOTL_EXTRAS is set, append it in brackets; don't install deepspeed with arm64
|
|
RUN uv pip uninstall causal_conv1d
|
|
RUN if [ "$TARGETARCH" = "arm64" ]; then \
|
|
BASE_EXTRAS="flash-attn,ring-flash-attn,optimizers,ray"; \
|
|
else \
|
|
BASE_EXTRAS="deepspeed,flash-attn,ring-flash-attn,optimizers,ray"; \
|
|
fi && \
|
|
if [ "$AXOLOTL_EXTRAS" != "" ]; then \
|
|
uv pip install --no-build-isolation -e .[$BASE_EXTRAS,$AXOLOTL_EXTRAS] $AXOLOTL_ARGS; \
|
|
else \
|
|
uv pip install --no-build-isolation -e .[$BASE_EXTRAS] $AXOLOTL_ARGS; \
|
|
fi && \
|
|
python scripts/unsloth_install.py --uv | sh && \
|
|
python scripts/cutcrossentropy_install.py --uv | sh && \
|
|
uv pip install pytest && \
|
|
uv cache clean
|
|
|
|
# fix so that git fetch/pull from remote works with shallow clone
|
|
RUN git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" && \
|
|
git config --get remote.origin.fetch && \
|
|
git config --global credential.helper store
|
|
|
|
COPY .axolotl-complete.bash /root/.axolotl-complete.bash
|
|
RUN chmod +x /root/.axolotl-complete.bash && \
|
|
echo 'source /root/.axolotl-complete.bash' >> ~/.bashrc
|