docker layer caching, build w axolotl from base build
Browse files- .github/workflows/base.yml +3 -0
- .github/workflows/main.yml +8 -2
- docker/Dockerfile +8 -14
- docker/Dockerfile-base +4 -1
- requirements.txt +0 -2
- setup.py +4 -0
.github/workflows/base.yml
CHANGED
|
@@ -9,6 +9,7 @@ on:
|
|
| 9 |
jobs:
|
| 10 |
build-base:
|
| 11 |
if: github.repository_owner == 'OpenAccess-AI-Collective'
|
|
|
|
| 12 |
runs-on: self-hosted
|
| 13 |
steps:
|
| 14 |
- name: Checkout
|
|
@@ -33,3 +34,5 @@ jobs:
|
|
| 33 |
push: ${{ github.event_name != 'pull_request' }}
|
| 34 |
tags: ${{ steps.metadata.outputs.tags }}
|
| 35 |
labels: ${{ steps.metadata.outputs.labels }}
|
|
|
|
|
|
|
|
|
| 9 |
jobs:
|
| 10 |
build-base:
|
| 11 |
if: github.repository_owner == 'OpenAccess-AI-Collective'
|
| 12 |
+
# this job needs to be run on self-hosted GPU runners...
|
| 13 |
runs-on: self-hosted
|
| 14 |
steps:
|
| 15 |
- name: Checkout
|
|
|
|
| 34 |
push: ${{ github.event_name != 'pull_request' }}
|
| 35 |
tags: ${{ steps.metadata.outputs.tags }}
|
| 36 |
labels: ${{ steps.metadata.outputs.labels }}
|
| 37 |
+
cache-from: type=gha
|
| 38 |
+
cache-to: type=gha,mode=max
|
.github/workflows/main.yml
CHANGED
|
@@ -8,8 +8,10 @@ on:
|
|
| 8 |
|
| 9 |
jobs:
|
| 10 |
build-axolotl:
|
| 11 |
-
|
| 12 |
-
|
|
|
|
|
|
|
| 13 |
steps:
|
| 14 |
- name: Checkout
|
| 15 |
uses: actions/checkout@v3
|
|
@@ -29,7 +31,11 @@ jobs:
|
|
| 29 |
uses: docker/build-push-action@v4
|
| 30 |
with:
|
| 31 |
context: .
|
|
|
|
|
|
|
| 32 |
file: ./docker/Dockerfile
|
| 33 |
push: ${{ github.event_name != 'pull_request' }}
|
| 34 |
tags: ${{ steps.metadata.outputs.tags }}
|
| 35 |
labels: ${{ steps.metadata.outputs.labels }}
|
|
|
|
|
|
|
|
|
| 8 |
|
| 9 |
jobs:
|
| 10 |
build-axolotl:
|
| 11 |
+
# We specify this so it doesn't run automatically in our other github org
|
| 12 |
+
# that we use to build the base on self-hosted GPU runners
|
| 13 |
+
if: github.repository_owner == 'winglian'
|
| 14 |
+
runs-on: ubuntu-latest
|
| 15 |
steps:
|
| 16 |
- name: Checkout
|
| 17 |
uses: actions/checkout@v3
|
|
|
|
| 31 |
uses: docker/build-push-action@v4
|
| 32 |
with:
|
| 33 |
context: .
|
| 34 |
+
build-args: |
|
| 35 |
+
BASE_TAG=dev
|
| 36 |
file: ./docker/Dockerfile
|
| 37 |
push: ${{ github.event_name != 'pull_request' }}
|
| 38 |
tags: ${{ steps.metadata.outputs.tags }}
|
| 39 |
labels: ${{ steps.metadata.outputs.labels }}
|
| 40 |
+
cache-from: type=gha
|
| 41 |
+
cache-to: type=gha,mode=max
|
docker/Dockerfile
CHANGED
|
@@ -1,22 +1,16 @@
|
|
| 1 |
-
|
|
|
|
| 2 |
|
| 3 |
ARG TORCH_CUDA_ARCH_LIST="7.0 7.5 8.0 8.6+PTX"
|
|
|
|
| 4 |
RUN apt-get update && \
|
| 5 |
-
apt-get install -y
|
| 6 |
-
git lfs install --skip-repo && \
|
| 7 |
-
mkdir /tmp/wheels && \
|
| 8 |
-
cd /tmp/wheels && \
|
| 9 |
-
curl -L -O https://github.com/winglian/axolotl/raw/wheels/wheels/deepspeed-0.9.2%2B7ddc3b01-cp38-cp38-linux_x86_64.whl && \
|
| 10 |
-
curl -L -O https://github.com/winglian/axolotl/raw/wheels/wheels/flash_attn-1.0.4-cp38-cp38-linux_x86_64.whl && \
|
| 11 |
-
pip install deepspeed-0.9.2%2B7ddc3b01-cp38-cp38-linux_x86_64.whl && \
|
| 12 |
-
pip install flash_attn-1.0.4-cp38-cp38-linux_x86_64.whl && \
|
| 13 |
-
pip install "peft @ git+https://github.com/huggingface/peft.git@main" --force-reinstall --no-dependencies && \
|
| 14 |
-
pip install awscli
|
| 15 |
|
| 16 |
WORKDIR /workspace
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
ARG REF=main
|
| 18 |
RUN git clone https://github.com/winglian/axolotl && cd axolotl && git checkout $REF && \
|
| 19 |
pip install -e .[int4]
|
| 20 |
-
|
| 21 |
-
RUN pip3 install --force-reinstall https://download.pytorch.org/whl/nightly/cu117/torch-2.0.0.dev20230301%2Bcu117-cp38-cp38-linux_x86_64.whl --index-url https://download.pytorch.org/whl/nightly/cu117
|
| 22 |
-
|
|
|
|
| 1 |
+
ARG BASE_TAG=main
|
| 2 |
+
FROM winglian/axolotl:$BASE_TAG
|
| 3 |
|
| 4 |
ARG TORCH_CUDA_ARCH_LIST="7.0 7.5 8.0 8.6+PTX"
|
| 5 |
+
|
| 6 |
RUN apt-get update && \
|
| 7 |
+
apt-get install -y vim \
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
|
| 9 |
WORKDIR /workspace
|
| 10 |
+
|
| 11 |
+
# The base image ships with `pydantic==1.8.2` which is not working
|
| 12 |
+
RUN python3 -m pip install -U --no-cache-dir pydantic
|
| 13 |
+
|
| 14 |
ARG REF=main
|
| 15 |
RUN git clone https://github.com/winglian/axolotl && cd axolotl && git checkout $REF && \
|
| 16 |
pip install -e .[int4]
|
|
|
|
|
|
|
|
|
docker/Dockerfile-base
CHANGED
|
@@ -66,4 +66,7 @@ RUN git lfs install --skip-repo
|
|
| 66 |
RUN pip3 install "peft @ git+https://github.com/huggingface/peft.git@main" \
|
| 67 |
"accelerate @ git+https://github.com/huggingface/accelerate.git@main" \
|
| 68 |
"transformers @ git+https://github.com/huggingface/transformers.git@main" && \
|
| 69 |
-
pip3 install awscli
|
|
|
|
|
|
|
|
|
|
|
|
| 66 |
RUN pip3 install "peft @ git+https://github.com/huggingface/peft.git@main" \
|
| 67 |
"accelerate @ git+https://github.com/huggingface/accelerate.git@main" \
|
| 68 |
"transformers @ git+https://github.com/huggingface/transformers.git@main" && \
|
| 69 |
+
pip3 install awscli && \
|
| 70 |
+
# The base image ships with `pydantic==1.8.2` which is not working
|
| 71 |
+
pip3 install -U --no-cache-dir pydantic
|
| 72 |
+
|
requirements.txt
CHANGED
|
@@ -9,7 +9,5 @@ datasets
|
|
| 9 |
accelerate
|
| 10 |
sentencepiece
|
| 11 |
wandb
|
| 12 |
-
flash-attn
|
| 13 |
-
deepspeed
|
| 14 |
einops
|
| 15 |
xformers
|
|
|
|
| 9 |
accelerate
|
| 10 |
sentencepiece
|
| 11 |
wandb
|
|
|
|
|
|
|
| 12 |
einops
|
| 13 |
xformers
|
setup.py
CHANGED
|
@@ -23,5 +23,9 @@ setup(
|
|
| 23 |
'int4_triton': [
|
| 24 |
"alpaca_lora_4bit[triton] @ git+https://github.com/winglian/alpaca_lora_4bit.git@setup_pip",
|
| 25 |
],
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
},
|
| 27 |
)
|
|
|
|
| 23 |
'int4_triton': [
|
| 24 |
"alpaca_lora_4bit[triton] @ git+https://github.com/winglian/alpaca_lora_4bit.git@setup_pip",
|
| 25 |
],
|
| 26 |
+
'extras': [
|
| 27 |
+
'flash-attn',
|
| 28 |
+
'deepspeed',
|
| 29 |
+
]
|
| 30 |
},
|
| 31 |
)
|