-
Notifications
You must be signed in to change notification settings - Fork 0
98 lines (79 loc) · 3.41 KB
/
release.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
name: Release Core ML Model
on:
workflow_dispatch:
jobs:
create_release:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 0 # This fetches all history for all branches and tags
- name: Setup Python
uses: actions/setup-python@v2
with:
# need this version to work w coremltools :(
python-version: '3.8'
- name: Install Dependencies
run: |
pip install bump2version tensorflow keras coremltools
- name: Download artifact
uses: actions/download-artifact@v4
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
workflow: ml_training.yml
workflow_conclusion: success
repository: https://github.com/tmart234/OpenFlow
name: lstm_model_keras_release
path: ./model
- name: Determine new version tag
id: new_version
run: |
# Fetch the latest release
LATEST_RELEASE=$(curl -s https://api.github.com/repos/${{ github.repository }}/releases/latest)
# Extract the tag name from the latest release
LATEST_TAG=$(echo $LATEST_RELEASE | jq -r '.tag_name')
# If there are no releases then exit
if [ -z "$LATEST_TAG" ]; then
exit 1
fi
echo "Current version: $LATEST_TAG"
NEW_TAG=$(bump2version --current-version $LATEST_TAG patch --dry-run --list | grep 'new_version=' | cut -d= -f2)
echo "New version: $NEW_TAG"
echo "NEW_TAG=$NEW_TAG" >> $GITHUB_ENV
- name: Count unique station IDs
id: count_station_ids
run: |
UNIQUE_STATION_IDS=$(wc -l < .github/site_ids.txt)
echo "UNIQUE_STATION_IDS=$UNIQUE_STATION_IDS" >> $GITHUB_ENV
- name: Count features per timestep
id: count_features
run: |
NUM_FEATURES=5 # Min Flow, Max Flow, TMIN, TMAX, date_normalized
NUM_FEATURES=$((NUM_FEATURES + UNIQUE_STATION_IDS))
echo "NUM_FEATURES=$NUM_FEATURES" >> $GITHUB_ENV
# - name: Convert ONNX Model to Core ML
# run: |
# python -m coremltools convert ./model/lstm_model.onnx --output-path ./model/lstm_model_${{ env.NEW_TAG }}.mlmodel --input-names 'input' --output-names 'output'
# number of timesteps per sample = (historical_flow_timesteps + forecast_temperature_timesteps) = (60+14)=74
# 5 features per time step: (Min Flow, Max Flow, TMIN, TMAX, date_normalized)
- name: Convert Model to Core ML
run: |
python $GITHUB_WORKSPACE/openFlowML/ml_utils.py ./model/lstm_model.h5 ./model/lstm_model_${{ env.NEW_TAG }}.mlpackage "(1, 74, ${{ env.NUM_FEATURES }})"
- name: Zip the Model Package
run: zip -r lstm_model_${{ env.NEW_TAG }}.mlpackage.zip . -i ./model/lstm_model_${{ env.NEW_TAG }}.mlpackage
- name: Check Zip File
run: |
if [ ! -s "./lstm_model_${{ env.NEW_TAG }}.mlpackage.zip" ]; then
echo "Zip file is empty: lstm_model_${{ env.NEW_TAG }}.mlpackage.zip"
exit 1
fi
- name: Upload Release Asset to GH
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./lstm_model_${{ env.NEW_TAG }}.mlpackage.zip
asset_name: lstm_model_${{ env.NEW_TAG }}.mlpackage.zip
asset_content_type: application/zip