1+ name : Automated Training [Workflow - 10]
2+
3+ on :
4+ push :
5+ branches :
6+ - main
7+ tags :
8+ - ' *'
9+
10+ jobs :
11+ training_workloads :
12+ name : Training Workloads
13+ runs-on : ubuntu-latest
14+
15+ environment : Training Workloads
16+
17+
18+ strategy :
19+ matrix :
20+ python-version : [3.11]
21+
22+ env :
23+ HF_TOKEN : ${{ secrets.HF_TOKEN }}
24+ DATASET_NAME : indonesia_stocks
25+ MODEL_REGISTRY_NAME : stock_models_10
26+ HF_USERNAME : qywok
27+
28+ steps :
29+ - name : Set Global Directory
30+ run : git config --global --add safe.directory /github/workspace
31+
32+ - uses : actions/checkout@v3
33+ with :
34+ lfs : true
35+ persist-credentials : false
36+ fetch-depth : 1
37+
38+ - name : Setup Python
39+ uses : actions/setup-python@v5
40+ with :
41+ python-version : ${{ matrix.python-version }}
42+
43+ - name : Check Disk System
44+ id : check_disk_system
45+ run : df -h
46+
47+ - name : Get Current Date
48+ id : get_current_date
49+ run : |
50+ full_date=$(date)
51+ echo "FULL_DATE=${full_date}" >> $GITHUB_ENV
52+
53+ current_date=$(date +%d)
54+ current_date=$((10#$current_date + 1))
55+ echo "CURRENT_DATE=${current_date}" >> $GITHUB_ENV
56+
57+ full_current_date=$(date +'%Y-%m-%d')
58+ echo "FULL_CURRENT_DATE=${full_current_date}" >> $GITHUB_ENV
59+
60+ - name : Read Date and Training Schedule
61+ id : read_date_training_schedule
62+ run : |
63+ echo "DATE_SCHEDULE=$(cat schedules/date.schedule)" \
64+ >> $GITHUB_ENV
65+ echo "TRAINING_SCHEDULE=$(cat schedules/training.schedule)" \
66+ >> $GITHUB_ENV
67+
68+ - name : Cloning Model from Hugging Face
69+ id : cloning_model
70+ if : env.DATE_SCHEDULE == env.FULL_CURRENT_DATE && env.TRAINING_SCHEDULE == 'TRAIN_ON'
71+ run : |
72+ echo "[ CONDITION LOG ]: ${{ env.DATE_SCHEDULE }} - ${{ env.FULL_CURRENT_DATE }} - ${{ env.TRAINING_SCHEDULE }}"
73+ git clone https://huggingface.co/qywok/stock_models_10
74+
75+ - name : Cloning Datasets From Hugging Face
76+ id : cloning_dataset
77+ if : env.DATE_SCHEDULE == env.FULL_CURRENT_DATE && env.TRAINING_SCHEDULE == 'TRAIN_ON'
78+ run : |
79+ echo "[ CONDITION LOG ]: ${{ env.DATE_SCHEDULE }} - ${{ env.FULL_CURRENT_DATE }} - ${{ env.TRAINING_SCHEDULE }}"
80+ git clone https://huggingface.co/datasets/$HF_USERNAME/$DATASET_NAME
81+
82+ - name : Cache pip
83+ if : env.DATE_SCHEDULE == env.FULL_CURRENT_DATE && env.TRAINING_SCHEDULE == 'TRAIN_ON'
84+ uses : actions/cache@v4
85+ with :
86+ path : ~/.cache/pip
87+ key : ${{ runner.os }}-pip-${{ hashFiles('requirements/linux/workload/ubuntu.production.txt') }}
88+ restore-keys : |
89+ ${{ runner.os }}-pip-
90+
91+ - name : Requirements Install
92+ id : requirements_install
93+ if : env.DATE_SCHEDULE == env.FULL_CURRENT_DATE && env.TRAINING_SCHEDULE == 'TRAIN_ON'
94+ run : |
95+ echo "[ CONDITION LOG ]: ${{ env.DATE_SCHEDULE }} - ${{ env.FULL_CURRENT_DATE }} - ${{ env.TRAINING_SCHEDULE }}"
96+ pip install -r requirements/linux/workload/ubuntu.production.txt
97+ pip install torch==2.7.0 --index-url https://download.pytorch.org/whl/cpu
98+
99+ - name : Training Workloads
100+ id : training_workloads
101+ if : env.DATE_SCHEDULE == env.FULL_CURRENT_DATE && env.TRAINING_SCHEDULE == 'TRAIN_ON'
102+ run : |
103+ echo "[ CONDITION LOG ]: ${{ env.DATE_SCHEDULE }} - ${{ env.FULL_CURRENT_DATE }} - ${{ env.TRAINING_SCHEDULE }}"
104+ python autotraining.py \
105+ --workloads_json=workloads_10.json \
106+ --model_registry=stock_models_10
107+
108+ - name : Ingest to Hugging Face Models
109+ id : ingest_hf_model
110+ if : env.DATE_SCHEDULE == env.FULL_CURRENT_DATE && env.TRAINING_SCHEDULE == 'TRAIN_ON'
111+ run : |
112+ echo "[ CONDITION LOG ]: ${{ env.DATE_SCHEDULE }} - ${{ env.FULL_CURRENT_DATE }} - ${{ env.TRAINING_SCHEDULE }}"
113+ cd stock_models_10
114+ git config --local user.email "alfariqyraihan@gmail.com"
115+ git config --local user.name "qywok"
116+ git add -A
117+ git diff-index --quiet HEAD || git commit -m "[ Ingest Date (GMT +0) ]: $FULL_DATE"
118+ git push https://$HF_USERNAME:$HF_TOKEN@huggingface.co/$HF_USERNAME/$MODEL_REGISTRY_NAME main --force
119+ cd .. && ls -al
120+
121+ - name : Remove Temporarary Files and Directories
122+ id : remove_temporary
123+ if : env.DATE_SCHEDULE == env.FULL_CURRENT_DATE && env.TRAINING_SCHEDULE == 'TRAIN_ON'
124+ run : |
125+ echo "[ CONDITION LOG ]: ${{ env.DATE_SCHEDULE }} - ${{ env.FULL_CURRENT_DATE }} - ${{ env.TRAINING_SCHEDULE }}"
126+ rm -rf stock_models_10
127+ rm -rf $DATASET_NAME
128+ ls -al
129+ rm .github/workflows/workflow_*_pipeline.yaml
130+ ls -al .github/workflows
131+
132+ - name : Change Training Schedule
133+ id : change_training_schedule
134+ if : env.DATE_SCHEDULE == env.FULL_CURRENT_DATE && env.TRAINING_SCHEDULE == 'TRAIN_ON'
135+ run : |
136+ echo "[ CONDITION LOG ]: ${{ env.DATE_SCHEDULE }} - ${{ env.FULL_CURRENT_DATE }} - ${{ env.TRAINING_SCHEDULE }}"
137+ echo "TRAIN_OFF" > schedules/training.schedule
138+ cat schedules/training.schedule
139+
140+ - name : Commit Changes
141+ id : commit_changes
142+ if : env.DATE_SCHEDULE == env.FULL_CURRENT_DATE && env.TRAINING_SCHEDULE == 'TRAIN_ON'
143+ run : |
144+ echo "[ CONDITION LOG ]: ${{ env.DATE_SCHEDULE }} - ${{ env.FULL_CURRENT_DATE }} - ${{ env.TRAINING_SCHEDULE }}"
145+ git config --local user.email "belajarqywok@gmail.com"
146+ git config --local user.name "belajarqywok"
147+ git add -A
148+ git commit -m "[ GITHUB ACTION UPDATE (GMT +0) ]: $FULL_DATE"
149+
150+ - name : Push Changes
151+ id : push_changes
152+ if : env.DATE_SCHEDULE == env.FULL_CURRENT_DATE && env.TRAINING_SCHEDULE == 'TRAIN_ON'
153+ uses : ad-m/github-push-action@master
154+ with :
155+ github_token : ${{ secrets.GH_TOKEN }}
156+ branch : main
157+
0 commit comments