setup runpod images
Browse files- .github/workflows/main.yml +33 -1
- docker/Dockerfile +4 -1
- docker/Dockerfile-runpod +11 -0
- scripts/runpod-entrypoint.sh +10 -0
.github/workflows/main.yml
CHANGED
@@ -31,10 +31,42 @@ jobs:
|
|
31 |
with:
|
32 |
context: .
|
33 |
build-args: |
|
34 |
-
BASE_TAG
|
35 |
file: ./docker/Dockerfile
|
36 |
push: ${{ github.event_name != 'pull_request' }}
|
37 |
tags: ${{ steps.metadata.outputs.tags }}
|
38 |
labels: ${{ steps.metadata.outputs.labels }}
|
39 |
cache-from: type=gha
|
40 |
cache-to: type=gha,mode=max
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
with:
|
32 |
context: .
|
33 |
build-args: |
|
34 |
+
BASE_TAG=${{ github.ref_name }}-base
|
35 |
file: ./docker/Dockerfile
|
36 |
push: ${{ github.event_name != 'pull_request' }}
|
37 |
tags: ${{ steps.metadata.outputs.tags }}
|
38 |
labels: ${{ steps.metadata.outputs.labels }}
|
39 |
cache-from: type=gha
|
40 |
cache-to: type=gha,mode=max
|
41 |
+
build-axolotl-runpod:
|
42 |
+
needs: build-axolotl
|
43 |
+
if: github.repository_owner == 'OpenAccess-AI-Collective'
|
44 |
+
# this job needs to be run on self-hosted GPU runners...
|
45 |
+
runs-on: self-hosted
|
46 |
+
steps:
|
47 |
+
- name: Checkout
|
48 |
+
uses: actions/checkout@v3
|
49 |
+
- name: Docker metadata
|
50 |
+
id: metadata
|
51 |
+
uses: docker/metadata-action@v3
|
52 |
+
with:
|
53 |
+
images: winglian/axolotl-runpod
|
54 |
+
- name: Login to Docker Hub
|
55 |
+
uses: docker/login-action@v2
|
56 |
+
with:
|
57 |
+
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
58 |
+
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
59 |
+
- name: Set up Docker Buildx
|
60 |
+
uses: docker/setup-buildx-action@v2
|
61 |
+
- name: Build
|
62 |
+
uses: docker/build-push-action@v4
|
63 |
+
with:
|
64 |
+
context: .
|
65 |
+
build-args: |
|
66 |
+
BASE_TAG=${{ github.ref_name }}
|
67 |
+
file: ./docker/Dockerfile-runpod
|
68 |
+
push: ${{ github.event_name != 'pull_request' }}
|
69 |
+
tags: ${{ steps.metadata.outputs.tags }}
|
70 |
+
labels: ${{ steps.metadata.outputs.labels }}
|
71 |
+
cache-from: type=gha
|
72 |
+
cache-to: type=gha,mode=max
|
docker/Dockerfile
CHANGED
@@ -4,7 +4,7 @@ FROM winglian/axolotl-base:$BASE_TAG
|
|
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 |
|
@@ -16,3 +16,6 @@ RUN mkdir axolotl
|
|
16 |
COPY . axolotl/
|
17 |
RUN cd axolotl && \
|
18 |
pip install -e .[int4]
|
|
|
|
|
|
|
|
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 curl
|
8 |
|
9 |
WORKDIR /workspace
|
10 |
|
|
|
16 |
COPY . axolotl/
|
17 |
RUN cd axolotl && \
|
18 |
pip install -e .[int4]
|
19 |
+
|
20 |
+
# helper for huggingface-login cli
|
21 |
+
RUN git config --global credential.helper store
|
docker/Dockerfile-runpod
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
ARG BASE_TAG=main
|
2 |
+
FROM winglian/axolotl:$BASE_TAG
|
3 |
+
|
4 |
+
RUN apt install --yes --no-install-recommends openssh-server tmux && \
|
5 |
+
mkdir -p ~/.ssh && \
|
6 |
+
chmod 700 ~/.ssh && \
|
7 |
+
echo -e "\n[[ -z \"\$TMUX\" ]] && { tmux attach-session -t ssh_tmux || tmux new-session -s ssh_tmux; exit; }" >> ~/.bashrc && \
|
8 |
+
chmod +x /workdir/axolotl/scripts/runpod-entrypoint.sh
|
9 |
+
|
10 |
+
ENTRYPOINT ["/workdir/axolotl/scripts/runpod-entrypoint.sh"]
|
11 |
+
CMD ["sleep", "infinity"]
|
scripts/runpod-entrypoint.sh
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/bin/bash
|
2 |
+
|
3 |
+
echo $PUBLIC_KEY >> ~/.ssh/authorized_keys
|
4 |
+
chmod 700 -R ~/.ssh
|
5 |
+
|
6 |
+
# Start the SSH service in the background
|
7 |
+
service ssh start
|
8 |
+
|
9 |
+
# Execute the passed arguments (CMD)
|
10 |
+
exec "$@"
|