Triton benchmarks #423
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Triton benchmarks | |
on: | |
workflow_dispatch: | |
inputs: | |
runner_label: | |
description: Runner label, keep empty for default | |
type: string | |
default: "" | |
tag: | |
description: Tag for benchmark results | |
type: string | |
default: "test" | |
schedule: | |
- cron: "5 23 * * *" | |
permissions: read-all | |
env: | |
PYTHON_VERSION: "3.10" | |
jobs: | |
build: | |
name: Triton benchmarks | |
runs-on: | |
- ${{ inputs.runner_label || 'max1550' }} | |
timeout-minutes: 720 | |
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: Load pip cache | |
id: pip-cache | |
uses: ./.github/actions/load | |
with: | |
path: $HOME/.cache/pip | |
# pip cache per commit id just to minimize network traffic | |
key: pip-$PYTHON_VERSION-$GITHUB_SHA | |
- name: Install Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
- name: Install Python build dependencies | |
run: | | |
pip install wheel | |
- name: Setup PyTorch | |
uses: ./.github/actions/setup-pytorch | |
- name: Setup IPEX | |
uses: ./.github/actions/setup-ipex | |
- name: Build Triton wheels | |
uses: ./.github/actions/setup-triton | |
with: | |
command: DEBUG=1 python setup.py bdist_wheel | |
- name: Install Triton | |
run: | | |
pip install python/dist/*.whl | |
- name: Install benchmark dependencies | |
run: | | |
pip install matplotlib pandas tabulate | |
- name: Create reports dir | |
run: | | |
mkdir reports | |
echo "REPORTS=$PWD/reports" >> $GITHUB_ENV | |
- name: Install benchmarks | |
id: install | |
run: | | |
cd benchmarks | |
python setup.py install | |
- name: Run Triton FA kernel benchmark - advanced path | |
if: ${{ steps.install.outcome == 'success' && !cancelled() }} | |
run: | | |
cd benchmarks/triton_kernels_benchmark | |
TRITON_INTEL_ADVANCED_PATH=1 \ | |
TRITON_INTEL_REDUCE_TRANSPOSE=1 \ | |
TRITON_INTEL_ENABLE_ADDRESS_PAYLOAD_OPT=1 \ | |
IGC_VISAOptions=" -enableBCR -nolocalra -printregusage -DPASTokenReduction -enableHalfLSC -abiver 2" \ | |
IGC_DisableLoopUnroll=1 \ | |
python flash_attention_fwd_benchmark.py --reports $REPORTS | |
TAG=${{ inputs.tag || 'ci' }}-adv | |
source ../../scripts/capture-hw-details.sh | |
python ../../scripts/build_report.py $REPORTS/attn-performance.csv $REPORTS/attn-triton-advanced-report.csv --benchmark attn --compiler triton --param_cols "Z,H,N_CTX,D_HEAD" --tflops_col Triton-TFlops --hbm_col "Triton-GB/s" --tag $TAG | |
- name: Save pip cache | |
if: ${{ steps.pip-cache.outputs.status == 'miss' }} | |
uses: ./.github/actions/save | |
with: | |
path: ${{ steps.pip-cache.outputs.path }} | |
dest: ${{ steps.pip-cache.outputs.dest }} | |
- name: Upload benchmark reports | |
if: ${{ steps.install.outcome == 'success' && !cancelled() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: benchmark-reports | |
path: reports |