Skip to content

Triton wheels

Triton wheels #90

name: Triton wheels
on:
workflow_dispatch:
schedule:
- cron: "5 23 * * *"
permissions: read-all
env:
USE_AOT_DEVLIST: pvc
jobs:
build:
name: Build
runs-on:
- glados
- spr
- runner-0.0.13
strategy:
matrix:
python:
- "3.9"
- "3.10"
- "3.11"
defaults:
run:
shell: bash -noprofile --norc -eo pipefail -c "source /home/runner/intel/oneapi/setvars.sh > /dev/null; source {0}"
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Python ${{ matrix.python }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: Install Python build dependencies
run: |
pip install wheel
- name: Setup PyTorch
uses: ./.github/actions/setup-pytorch
- name: Identify pinned versions
run: |
cd pytorch
echo "TORCHVISION_COMMIT_ID=$(<.github/ci_commit_pins/vision.txt)" >> $GITHUB_ENV
echo "TORCHTEXT_COMMIT_ID=$(<.github/ci_commit_pins/text.txt)" >> $GITHUB_ENV
echo "TORCHAUDIO_COMMIT_ID=$(<.github/ci_commit_pins/audio.txt)" >> $GITHUB_ENV
- name: Setup IPEX
uses: ./.github/actions/setup-ipex
- name: Get LLVM commit id
run: |
LLVM_COMMIT_ID=$(<cmake/llvm-hash.txt)
echo "LLVM_COMMIT_ID=$LLVM_COMMIT_ID" >> $GITHUB_ENV
- name: Identify Triton commit id
run: |
echo "TRITON_COMMIT_ID=$(git rev-parse HEAD)" >> $GITHUB_ENV
- name: Generate Triton cache key
id: triton-key
run: |
COMPOSITE_KEY=$(echo ${{ matrix.python }} $LLVM_COMMIT_ID $TRITON_COMMIT_ID | sha256sum - | cut -d\ -f1)
echo "key=triton-$COMPOSITE_KEY" >> $GITHUB_OUTPUT
- name: Load Triton wheels from a cache
id: triton-cache
uses: ./.github/actions/load
with:
path: python/dist
key: ${{ steps.triton-key.outputs.key }}
- name: Build Triton wheels
if: ${{ steps.triton-cache.outputs.status == 'miss' }}
run: |
export DEBUG=1
export TRITON_WHEEL_VERSION_SUFFIX="+git$(git rev-parse --short HEAD)"
cd python
python setup.py bdist_wheel
- name: Install Triton
run: |
pip install python/dist/*.whl
- name: Save Triton wheels to a cache
if: ${{ steps.triton-cache.outputs.status == 'miss' }}
uses: ./.github/actions/save
with:
path: ${{ steps.triton-cache.outputs.path }}
dest: ${{ steps.triton-cache.outputs.dest }}
- name: Load torchvision from a cache
id: torchvision-cache
uses: ./.github/actions/load
with:
path: vision
key: torchvision-$PYTHON_VERSION-$TORCHVISION_COMMIT_ID
- name: Build torchvision wheels
if: ${{ steps.torchvision-cache.outputs.status == 'miss' }}
run: |
git clone --single-branch -b main https://github.com/pytorch/vision.git
cd vision
git checkout $TORCHVISION_COMMIT_ID
python setup.py bdist_wheel
- name: Install torchvision
run: |
pip install vision/dist/*.whl
python -c "import torchvision; print(torchvision.__version__)"
- name: Save torchvision to a cache
if: ${{ steps.torchvision-cache.outputs.status == 'miss' }}
uses: ./.github/actions/save
with:
path: ${{ steps.torchvision-cache.outputs.path }}
dest: ${{ steps.torchvision-cache.outputs.dest }}
- name: Load torchtext from a cache
id: torchtext-cache
uses: ./.github/actions/load
with:
path: text
key: torchtext-$PYTHON_VERSION-$TORCHTEXT_COMMIT_ID
- name: Build torchtext wheels
if: ${{ steps.torchtext-cache.outputs.status == 'miss' }}
run: |
git clone --recurse-submodules --jobs 8 --single-branch -b main https://github.com/pytorch/text.git
cd text
git checkout $TORCHTEXT_COMMIT_ID
python setup.py bdist_wheel
- name: Install torchtext
run: |
pip install text/dist/*.whl
python -c "import torchtext; print(torchtext.__version__)"
- name: Save torchtext to a cache
if: ${{ steps.torchtext-cache.outputs.status == 'miss' }}
uses: ./.github/actions/save
with:
path: ${{ steps.torchtext-cache.outputs.path }}
dest: ${{ steps.torchtext-cache.outputs.dest }}
- name: Load torchaudio from a cache
id: torchaudio-cache
uses: ./.github/actions/load
with:
path: audio
key: torchaudio-$PYTHON_VERSION-$TORCHAUDIO_COMMIT_ID
- name: Build torchaudio wheels
if: ${{ steps.torchaudio-cache.outputs.status == 'miss' }}
run: |
git clone --single-branch -b main https://github.com/pytorch/audio.git
cd audio
git checkout $TORCHAUDIO_COMMIT_ID
python setup.py bdist_wheel
- name: Install torchaudio
run: |
pip install audio/dist/*.whl
python -c "import torchaudio; print(torchaudio.__version__)"
- name: Save torchaudio to a cache
if: ${{ steps.torchaudio-cache.outputs.status == 'miss' }}
uses: ./.github/actions/save
with:
path: ${{ steps.torchaudio-cache.outputs.path }}
dest: ${{ steps.torchaudio-cache.outputs.dest }}
- name: Prepare wheels for upload
run: |
mkdir -p wheels
cp -L pytorch/dist/*.whl wheels/
cp -L intel-extension-for-pytorch/dist/*.whl wheels/
cp -L python/dist/*.whl wheels/
cp -L vision/dist/*.whl wheels/
cp -L text/dist/*.whl wheels/
cp -L audio/dist/*.whl wheels/
- name: Report environment details
run: |
TIMESTAMP=$(date '+%Y%m%d')
echo "TIMESTAMP=$TIMESTAMP" >> "${GITHUB_ENV}"
cat <<EOF | tee wheels/.env
TIMESTAMP=$TIMESTAMP
GITHUB_RUN_ID=$GITHUB_RUN_ID
GITHUB_RUN_NUMBER=$GITHUB_RUN_NUMBER
GITHUB_RUN_ATTEMPT=$GITHUB_RUN_ATTEMPT
PYTHON_VERSION=$PYTHON_VERSION
PYTORCH_REPO=$PYTORCH_REPO
PYTORCH_COMMIT_ID=$PYTORCH_COMMIT_ID
IPEX_REPO=$IPEX_REPO
IPEX_COMMIT_ID=$IPEX_COMMIT_ID
LLVM_REPO=llvm/llvm-project
LLVM_COMMIT_ID=$LLVM_COMMIT_ID
TRITON_REPO=intel/intel-xpu-backend-for-triton
TRITON_COMMIT_ID=$TRITON_COMMIT_ID
TORCHVISION_COMMIT_ID=$TORCHVISION_COMMIT_ID
TORCHTEXT_COMMIT_ID=$TORCHTEXT_COMMIT_ID
TORCHAUDIO_COMMIT_ID=$TORCHAUDIO_COMMIT_ID
EOF
- name: Upload wheels to artifacts
uses: actions/upload-artifact@v4
with:
name: wheels-py${{ matrix.python }}-${{ env.TIMESTAMP }}
path: wheels