diff --git a/.github/workflows/ci-shark-platform2.yml b/.github/workflows/ci-shark-platform2.yml new file mode 100644 index 000000000..3d2afd4d4 --- /dev/null +++ b/.github/workflows/ci-shark-platform2.yml @@ -0,0 +1,98 @@ +# Copyright 2024 Advanced Micro Devices, Inc. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions. +# See https://llvm.org/LICENSE.txt for license information. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +name: CI - fast from source shark-platform + +on: + workflow_dispatch: + pull_request: + push: + branches: + - main + +concurrency: + # A PR number if a pull request and otherwise the commit hash. This cancels + # queued and in-progress runs for the same PR (presubmit) or commit + # (postsubmit). The workflow name is prepended to avoid conflicts between + # different workflows. + group: ${{ github.workflow }}-${{ github.event.number || github.sha }} + cancel-in-progress: true + +jobs: + test_shortfin_llm_server: + name: "Integration Tests - Shortfin LLM Server" + strategy: + matrix: + version: [3.11] + fail-fast: false + runs-on: nodai-amdgpu-mi250-x86-64 + defaults: + run: + shell: bash + env: + PIP_CACHE_DIR: "${{ github.workspace }}/.pip-cache" + steps: + - name: "Setting up Python" + id: setup_python + uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 + with: + python-version: ${{matrix.version}} + + - name: "Checkout Code" + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Cache Pip Packages + uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 + id: cache-pip + with: + path: ${{ env.PIP_CACHE_DIR }} + key: pip-${{ steps.setup_python.outputs.python-version }}-${{ hashFiles('*requirements.txt') }} + + - name: Install pip deps + run: | + python -m pip install --no-compile --upgrade pip + # Note: We install in three steps in order to satisfy requirements + # from non default locations first. Installing the PyTorch CPU + # wheels saves multiple minutes and a lot of bandwidth on runner setup. + pip install --no-compile -r pytorch-cpu-requirements.txt + pip install --no-compile -r requirements.txt -e sharktank/ + + # Install latest iree-tubrine. + pip install --no-compile -f https://iree.dev/pip-release-links.html --src deps \ + -e "git+https://github.com/iree-org/iree-turbine.git#egg=iree-turbine" + + # Try with the latest IREE nightly releases, not what iree-turbine pins. + # We could also pin to a known working or stable version. + # This should eventually stabilize. Do the best we can for now. + pip install -f https://iree.dev/pip-release-links.html --upgrade --pre \ + iree-base-compiler \ + iree-base-runtime + + - name: Clone IREE with matching version + run: | + # Get IREE version + IREE_VERSION=$(pip show iree-base-compiler | grep Version: | cut -d' ' -f2) + echo "Required IREE version: ${IREE_VERSION}" + + EXPECTED_TAG="iree-${IREE_VERSION}" + + # Clone or update IREE repository + IREE_PATH="../iree" + if [ -d "$IREE_PATH" ] && [ "$(cd $IREE_PATH && git describe --tags --exact-match 2>/dev/null)" = "$EXPECTED_TAG" ]; then + echo "IREE repository already at correct version" + else + rm -rf "$IREE_PATH" + git clone --depth 1 --branch "$EXPECTED_TAG" --recurse-submodules --shallow-submodules https://github.com/iree-org/iree.git "$IREE_PATH" + fi + + - name: Install CMake + uses: ssrobins/install-cmake@v1 # this action installs cmake into the action workspace + + - name: Install shortfin via dev_me.py + run: cd shortfin && python dev_me.py + + - name: Run LLM Integration Tests + run: pytest -v build_tools/integration_tests/llm --log-cli-level=INFO