mirror of
https://github.com/nod-ai/AMD-SHARK-Studio.git
synced 2026-02-19 11:56:43 -05:00
* Add workflow for GH pages releases and release scraping script. * Update test_models.py and change tokens for gh pages.
133 lines
5.4 KiB
YAML
133 lines
5.4 KiB
YAML
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
|
|
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
|
|
|
|
name: Nightly Release
|
|
|
|
on:
|
|
schedule:
|
|
- cron: '0 5 * * *'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build:
|
|
|
|
runs-on: a100
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
python-version: ["3.10"]
|
|
backend: [IREE, SHARK]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Set up Python ${{ matrix.python-version }}
|
|
uses: actions/setup-python@v3
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
|
|
- name: Setup pip cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ~/.cache/pip
|
|
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-pip-
|
|
|
|
- name: Compute version
|
|
run: |
|
|
package_version="$(printf '%(%Y%m%d)T.${{ github.run_number }}')"
|
|
tag_name="${package_version}"
|
|
echo "package_version=${package_version}" >> $GITHUB_ENV
|
|
echo "tag_name=${tag_name}" >> $GITHUB_ENV
|
|
- name: Set Environment Variables
|
|
run: |
|
|
echo "SHORT_SHA=`git rev-parse --short=4 HEAD`" >> $GITHUB_ENV
|
|
echo "DATE=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
|
|
- name: Create Release
|
|
id: create_release
|
|
uses: actions/create-release@v1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.NODAI_INVOCATION_TOKEN }}
|
|
with:
|
|
tag_name: ${{ env.tag_name }}
|
|
release_name: nod.ai SHARK ${{ env.tag_name }}
|
|
body: |
|
|
Automatic snapshot release of nod.ai SHARK.
|
|
draft: true
|
|
prerelease: false
|
|
- name: Find Torch-MLIR Release
|
|
run: |
|
|
TM_HTML_URL="$(python3 -c "import urllib.request, json, sys; u=json.loads(urllib.request.urlopen('https://api.github.com/repos/llvm/torch-mlir/releases/latest').read().decode()).get('html_url', False); print(u) if u else sys.exit(1);")"
|
|
TM_RELEASE_DIR=${TM_HTML_URL/"tag"/"expanded_assets"}
|
|
echo "TM_RELEASE_DIR=${TM_RELEASE_DIR}" >> $GITHUB_ENV
|
|
- name: Install dependencies
|
|
run: |
|
|
echo "Torch-MLIR Release DIR is ${{ env.TM_RELEASE_DIR }}"
|
|
python -m pip install --upgrade pip
|
|
python -m pip install flake8 pytest toml
|
|
if [ -f requirements.txt ]; then pip install -r requirements.txt -f ${{ env.TM_RELEASE_DIR }} -f https://github.com/nod-ai/SHARK-Runtime/releases; fi
|
|
- name: Lint with flake8
|
|
run: |
|
|
# stop the build if there are Python syntax errors or undefined names
|
|
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --exclude shark.venv,lit.cfg.py
|
|
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
|
|
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics --exclude shark.venv,lit.cfg.py
|
|
- name: Build and validate the IREE package
|
|
if: ${{ matrix.backend == 'IREE' }}
|
|
run: |
|
|
cd $GITHUB_WORKSPACE
|
|
USE_IREE=1 VENV_DIR=iree.venv ./setup_venv.sh
|
|
source iree.venv/bin/activate
|
|
package_version="$(printf '%(%Y%m%d)T.${{ github.run_number }}')"
|
|
SHARK_PACKAGE_VERSION=${package_version} \
|
|
pip wheel -v -w wheelhouse . --pre -f https://download.pytorch.org/whl/nightly/torch -f ${{ env.TM_RELEASE_DIR }} -f https://github.com/iree-org/iree/releases
|
|
# Install the built wheel
|
|
pip install ./wheelhouse/nodai*
|
|
# Validate the Models
|
|
/bin/bash "$GITHUB_WORKSPACE/build_tools/populate_sharktank_ci.sh"
|
|
pytest --ci --ci_sha=${SHORT_SHA} --local_tank_cache="./gen_shark_tank/" tank/test_models.py |
|
|
tail -n 1 |
|
|
tee -a pytest_results.txt
|
|
if !(grep -Fxq " failed" pytest_results.txt)
|
|
then
|
|
export SHA=$(git log -1 --format='%h')
|
|
gsutil -m cp -r $GITHUB_WORKSPACE/gen_shark_tank/* gs://shark_tank/$SHA
|
|
gsutil -m cp -r gs://shark_tank/$SHA/* gs://shark_tank/latest/
|
|
fi
|
|
rm -rf ./wheelhouse/nodai*
|
|
|
|
- name: Build and validate the SHARK Runtime package
|
|
if: ${{ matrix.backend == 'SHARK' }}
|
|
run: |
|
|
cd $GITHUB_WORKSPACE
|
|
./setup_venv.sh
|
|
source shark.venv/bin/activate
|
|
package_version="$(printf '%(%Y%m%d)T.${{ github.run_number }}')"
|
|
SHARK_PACKAGE_VERSION=${package_version} \
|
|
pip wheel -v -w wheelhouse . --pre -f https://download.pytorch.org/whl/nightly/torch -f ${{ env.TM_RELEASE_DIR }} -f https://github.com/nod-ai/SHARK-Runtime/releases
|
|
# Install the built wheel
|
|
pip install ./wheelhouse/nodai*
|
|
# Validate the Models
|
|
pytest --ci --ci_sha=${SHORT_SHA} --local_tank_cache="./gen_shark_tank/" tank/test_models.py |
|
|
tail -n 1 |
|
|
tee -a pytest_results.txt
|
|
|
|
- name: Upload Release Assets
|
|
if: ${{ matrix.backend == 'SHARK' }}
|
|
id: upload-release-assets
|
|
uses: dwenegar/upload-release-assets@v1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.NODAI_INVOCATION_TOKEN }}
|
|
with:
|
|
release_id: ${{ steps.create_release.outputs.id }}
|
|
assets_path: ${GITHUB_WORKSPACE}/wheelhouse/nodai_*.whl
|
|
|
|
- name: Publish Release
|
|
if: ${{ matrix.backend == 'SHARK' }}
|
|
id: publish_release
|
|
uses: eregon/publish-release@v1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.NODAI_INVOCATION_TOKEN }}
|
|
with:
|
|
release_id: ${{ steps.create_release.outputs.id }}
|