Skip to content

Commit 5dda2f8

Browse files
initial commit
0 parents  commit 5dda2f8

File tree

13 files changed

+1396
-0
lines changed

13 files changed

+1396
-0
lines changed

.github/workflows/release.yml

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
name: release
2+
3+
on:
4+
push:
5+
branches:
6+
- "main"
7+
release:
8+
types: [published]
9+
workflow_dispatch:
10+
inputs:
11+
image_tag:
12+
description: "Docker Image Tag"
13+
required: false
14+
default: "dev"
15+
16+
jobs:
17+
docker-build:
18+
runs-on: ubuntu-latest-m
19+
20+
steps:
21+
- name: Clear Space
22+
run: |
23+
rm -rf /usr/share/dotnet
24+
rm -rf /opt/ghc
25+
rm -rf "/usr/local/share/boost"
26+
rm -rf "$AGENT_TOOLSDIRECTORY"
27+
28+
- name: Set up QEMU
29+
uses: docker/setup-qemu-action@v2
30+
31+
- name: Set up Docker Buildx
32+
uses: docker/setup-buildx-action@v2
33+
34+
- name: Login to Docker Hub
35+
uses: docker/login-action@v2
36+
with:
37+
username: ${{ secrets.DOCKERHUB_USERNAME }}
38+
password: ${{ secrets.DOCKERHUB_TOKEN }}
39+
40+
# Determine tags
41+
- name: Generate tags
42+
id: tags
43+
run: |
44+
BASE_TAG="${{ vars.DOCKERHUB_REPO }}/${{ vars.DOCKERHUB_IMG }}"
45+
if [[ "${{ github.event_name }}" == "release" ]]; then
46+
# For releases: tag with version AND latest
47+
echo "tags=${BASE_TAG}:${{ github.event.release.tag_name }},${BASE_TAG}:latest" >> $GITHUB_OUTPUT
48+
elif [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
49+
# For manual dispatch: use provided tag
50+
echo "tags=${BASE_TAG}:${{ github.event.inputs.image_tag }}" >> $GITHUB_OUTPUT
51+
else
52+
# For main branch: dev tag only
53+
echo "tags=${BASE_TAG}:dev" >> $GITHUB_OUTPUT
54+
fi
55+
56+
# Build and push step
57+
- name: Build and push
58+
uses: docker/build-push-action@v4
59+
with:
60+
push: true
61+
file: ./Dockerfile
62+
tags: ${{ steps.tags.outputs.tags }}
63+
64+
validate-build:
65+
needs: docker-build
66+
runs-on: ubuntu-latest
67+
if: github.event_name != 'release' # Skip validation for releases
68+
69+
steps:
70+
# Checkout
71+
- uses: actions/checkout@v4
72+
73+
# Basic validation - check if image was pushed successfully
74+
- name: Validate Image
75+
run: |
76+
echo "✅ Docker image built and pushed successfully"
77+
echo "Image: ${{ vars.DOCKERHUB_REPO }}/${{ vars.DOCKERHUB_IMG }}:${{ (github.event_name == 'release' && github.event.release.tag_name) || (github.event_name == 'workflow_dispatch' && github.event.inputs.image_tag) || 'dev' }}"
78+
echo "🎯 Pod deployment ready for testing"

.gitignore

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# Python
2+
__pycache__/
3+
*.py[cod]
4+
*$py.class
5+
*.so
6+
.Python
7+
build/
8+
develop-eggs/
9+
dist/
10+
downloads/
11+
eggs/
12+
.eggs/
13+
lib/
14+
lib64/
15+
parts/
16+
sdist/
17+
var/
18+
wheels/
19+
*.egg-info/
20+
.installed.cfg
21+
*.egg
22+
MANIFEST
23+
24+
# Virtual environments
25+
.env
26+
.venv
27+
env/
28+
venv/
29+
ENV/
30+
env.bak/
31+
venv.bak/
32+
33+
# IDE
34+
.vscode/
35+
.idea/
36+
*.swp
37+
*.swo
38+
*~
39+
40+
# OS
41+
.DS_Store
42+
.DS_Store?
43+
._*
44+
.Spotlight-V100
45+
.Trashes
46+
ehthumbs.db
47+
Thumbs.db
48+
49+
# Logs
50+
*.log
51+
logs/
52+
53+
# Docker
54+
.dockerignore
55+
56+
# Training outputs (if running locally)
57+
outputs/
58+
checkpoints/
59+
wandb/
60+
61+
# Config files with secrets (if any)
62+
config.yaml
63+
my_*.yaml
64+
*_config.yaml
65+
!*config_example.yaml
66+
!*config_template.yaml
67+
68+
# Temporary files
69+
tmp/
70+
temp/
71+
*.tmp

Dockerfile

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
FROM axolotlai/axolotl-cloud:main-latest
2+
3+
WORKDIR /workspace/fine-tuning
4+
5+
COPY requirements.txt .
6+
7+
RUN --mount=type=cache,target=/root/.cache/pip \
8+
pip install --upgrade pip && \
9+
pip install -r requirements.txt
10+
11+
RUN rm -rf /root/.cache/pip
12+
13+
# Expose vLLM port (not started automatically)
14+
EXPOSE 8000
15+
16+
COPY scripts/WELCOME /etc/motd
17+
18+
COPY scripts .
19+
20+
RUN chmod +x autorun.sh start_vllm.sh
21+
CMD ["/workspace/fine-tuning/autorun.sh"]

LICENSE

Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
Apache License
2+
Version 2.0, January 2004
3+
http://www.apache.org/licenses/
4+
5+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6+
7+
1. Definitions.
8+
9+
"License" shall mean the terms and conditions for use, reproduction,
10+
and distribution as defined by Sections 1 through 9 of this document.
11+
12+
"Licensor" shall mean the copyright owner or entity granting the License.
13+
14+
"Legal Entity" shall mean the union of the acting entity and all
15+
other entities that control, are controlled by, or are under common
16+
control with that entity. For the purposes of control, an entity
17+
is "controlled" if (a) it has the power, direct or indirect, to cause
18+
the direction or management of such entity, whether by contract or
19+
otherwise, or (b) ownership of fifty percent (50%) or more of the
20+
outstanding shares, or (c) beneficial ownership of such entity.
21+
22+
"You" (or "Your") shall mean an individual or Legal Entity
23+
exercising permissions granted by this License.
24+
25+
"Source" shall mean the preferred form for making modifications,
26+
including but not limited to software source code, documentation
27+
source, and configuration files.
28+
29+
"Object" shall mean any form resulting from mechanical
30+
transformation or translation of a Source form, including but
31+
not limited to compiled object code, generated documentation,
32+
and conversions to other media types.
33+
34+
"Work" shall mean the work of authorship, whether in Source or
35+
Object form, made available under the License, as indicated by a
36+
copyright notice that is included in or attached to the work
37+
(which shall not include communications that are marked or
38+
designated in writing by the copyright owner as "Not a Work").
39+
40+
"Derivative Works" shall mean any work, whether in Source or Object
41+
form, that is based upon (or derived from) the Work and for which the
42+
editorial revisions, annotations, elaborations, or other modifications
43+
represent, as a whole, an original work of authorship. For the purposes
44+
of this License, Derivative Works shall not include works that remain
45+
separable from, or merely link (or bind by name) to the interfaces of,
46+
the Work and derivative works thereof.
47+
48+
"Contribution" shall mean any work of authorship, including
49+
the original version of the Work and any modifications or additions
50+
to that Work or Derivative Works thereof, that is intentionally
51+
submitted to Licensor for inclusion in the Work by the copyright owner
52+
or by an individual or Legal Entity authorized to submit on behalf of
53+
the copyright owner. For the purposes of the definition of a
54+
"Contribution", an individual or Legal Entity authorized to submit
55+
on behalf of the copyright owner shall not be deemed to be a
56+
copyright owner for the purposes of this License.
57+
58+
2. Grant of Copyright License. Subject to the terms and conditions of
59+
this License, each Contributor hereby grants to You a perpetual,
60+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
61+
copyright license to use, reproduce, modify, merge, publish,
62+
distribute, sublicense, and/or sell copies of the Work, and to
63+
permit persons to whom the Work is furnished to do so, subject to
64+
the following conditions:
65+
66+
The above copyright notice and this permission notice shall be
67+
included in all copies or substantial portions of the Work.
68+
69+
3. Grant of Patent License. Subject to the terms and conditions of
70+
this License, each Contributor hereby grants to You a perpetual,
71+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
72+
(except as stated in this section) patent license to make, have made,
73+
use, offer to sell, sell, import, and otherwise transfer the Work,
74+
where such license applies only to those patent claims licensable
75+
by such Contributor that are necessarily infringed by their
76+
Contribution(s) alone or by combination of their Contribution(s)
77+
with the Work to which such Contribution(s) was submitted. If You
78+
institute patent litigation against any entity (including a
79+
cross-claim or counterclaim in a lawsuit) alleging that the Work
80+
or a Contribution incorporated within the Work constitutes direct
81+
or contributory patent infringement, then any patent licenses
82+
granted to You under this License for that Work shall terminate
83+
as of the date such litigation is filed.
84+
85+
4. Redistribution. You may reproduce and distribute copies of the
86+
Work or Derivative Works thereof in any medium, with or without
87+
modifications, and in Source or Object form, provided that You
88+
meet the following conditions:
89+
90+
(a) You must give any other recipients of the Work or
91+
Derivative Works a copy of this License; and
92+
93+
(b) You must cause any modified files to carry prominent notices
94+
stating that You changed the files; and
95+
96+
(c) You must retain, in the Source form of any Derivative Works
97+
that You distribute, all copyright, trademark, and
98+
attribution notices from the Source form of the Work,
99+
excluding those notices that do not pertain to any part of
100+
the Derivative Works; and
101+
102+
(d) If the Work includes a "NOTICE" file as part of its
103+
distribution, then any Derivative Works that You distribute must
104+
include a readable copy of the attribution notices contained
105+
within such NOTICE file, excluding those notices that do not
106+
pertain to any part of the Derivative Works, in at least one
107+
of the following places: within a NOTICE file distributed
108+
as part of the Derivative Works; within the Source form or
109+
documentation, if provided along with the Derivative Works; or,
110+
within a display generated by the Derivative Works, if and
111+
wherever such third-party notices normally appear. The contents
112+
of the NOTICE file are for informational purposes only and
113+
do not modify the License. You may add Your own attribution
114+
notices within Derivative Works that You distribute, alongside
115+
or as an addendum to the NOTICE text from the Work, provided
116+
that such additional attribution notices cannot be construed
117+
as modifying the License.
118+
119+
You may add Your own copyright notice to Your modifications and
120+
may provide additional or different license terms and conditions
121+
for use, reproduction, or distribution of Your modifications, or
122+
for any such Derivative Works as a whole, provided Your use,
123+
reproduction, and distribution of the Work otherwise complies with
124+
the conditions stated in this License.
125+
126+
5. Submission of Contributions. Unless You explicitly state otherwise,
127+
any Contribution intentionally submitted for inclusion in the Work
128+
by You to the Licensor shall be under the terms and conditions of
129+
this License, without any additional terms or conditions.
130+
Notwithstanding the above, nothing herein shall supersede or modify
131+
the terms of any separate license agreement you may have executed
132+
with Licensor regarding such Contributions.
133+
134+
6. Trademarks. This License does not grant permission to use the trade
135+
names, trademarks, service marks, or product names of the Licensor,
136+
except as required for reasonable and customary use in describing the
137+
origin of the Work and reproducing the content of the NOTICE file.
138+
139+
7. Disclaimer of Warranty. Unless required by applicable law or
140+
agreed to in writing, Licensor provides the Work (and each
141+
Contributor provides its Contributions) on an "AS IS" BASIS,
142+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
143+
implied, including, without limitation, any warranties or conditions
144+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
145+
PARTICULAR PURPOSE. You are solely responsible for determining the
146+
appropriateness of using or redistributing the Work and assume any
147+
risks associated with Your exercise of permissions under this License.
148+
149+
8. Limitation of Liability. In no event and under no legal theory,
150+
whether in tort (including negligence), contract, or otherwise,
151+
unless required by applicable law (such as deliberate and grossly
152+
negligent acts) or agreed to in writing, shall any Contributor be
153+
liable to You for damages, including any direct, indirect, special,
154+
incidental, or consequential damages of any character arising as a
155+
result of this License or out of the use or inability to use the
156+
Work (including but not limited to damages for loss of goodwill,
157+
work stoppage, computer failure or malfunction, or any and all
158+
other commercial damages or losses), even if such Contributor
159+
has been advised of the possibility of such damages.
160+
161+
9. Acceptance and Revision of License. By using, reproducing, or
162+
distributing the Work (or any work based on the Work), You indicate
163+
Your acceptance of this License. This License may only be modified
164+
by mutual written agreement between You and the Licensor.
165+
166+
END OF TERMS AND CONDITIONS
167+
168+
APPENDIX: How to apply the Apache License to your work.
169+
170+
To apply the Apache License to your work, attach the following
171+
boilerplate notice, with the fields enclosed by brackets "[]"
172+
replaced with your own identifying information. Don't include
173+
the brackets! The text should be enclosed in the appropriate
174+
comment syntax for the file format. We also recommend that a
175+
file or class name and description of purpose be included on the
176+
same page as the copyright notice for easier identification within
177+
third-party archives.
178+
179+
Copyright 2024 RunPod Inc.
180+
181+
Licensed under the Apache License, Version 2.0 (the "License");
182+
you may not use this file except in compliance with the License.
183+
You may obtain a copy of the License at
184+
185+
http://www.apache.org/licenses/LICENSE-2.0
186+
187+
Unless required by applicable law or agreed to in writing, software
188+
distributed under the License is distributed on an "AS IS" BASIS,
189+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
190+
See the License for the specific language governing permissions and
191+
limitations under the License.

0 commit comments

Comments
 (0)