Update build-and-run.yml #80
This file contains hidden or 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: GPULlama3 Build & Run | |
| on: | |
| push: | |
| branches: [ main ] | |
| pull_request: | |
| branches: [ main ] | |
| types: [opened, synchronize, reopened] | |
| jobs: | |
| build-and-run: | |
| runs-on: self-hosted | |
| outputs: | |
| tornado_sdk: ${{ steps.export_sdk.outputs.tornado_sdk }} | |
| env: | |
| JAVA_HOME: /opt/jenkins/jdks/graal-23.1.0/jdk-21.0.3 | |
| TORNADO_ROOT: ${{ github.workspace }}/GPULlama3.java/external/tornadovm | |
| LLAMA_ROOT: ${{ github.workspace }} | |
| steps: | |
| - name: Checkout GPULlama3 | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Check code formatting (Spotless) | |
| run: | | |
| cd ${{ github.workspace }} | |
| #./mvnw -T12C -Pspotless spotless:check | |
| - name: Clone TornadoVM explicitly | |
| run: | | |
| git clone --depth 1 --branch develop \ | |
| https://github.com/beehive-lab/TornadoVM.git \ | |
| GPULlama3.java/external/tornadovm | |
| - name: Set up Python venv for TornadoVM | |
| run: | | |
| python3 -m venv GPULlama3.java/external/tornadovm/venv | |
| source GPULlama3.java/external/tornadovm/venv/bin/activate | |
| python --version | |
| - name: Build TornadoVM | |
| id: export_sdk | |
| run: | | |
| set -x | |
| cd GPULlama3.java/external/tornadovm | |
| source venv/bin/activate | |
| echo "=== Building TornadoVM ===" | |
| make | |
| echo "=== Searching for TornadoVM SDK directory ===" | |
| SDK_DIR=$(find dist -type d -maxdepth 3 -path "*/tornadovm-*-opencl" | head -n 1) | |
| if [ -z "$SDK_DIR" ]; then | |
| echo "::error::Could not locate TornadoVM SDK directory!" | |
| find dist -maxdepth 5 -type d | |
| exit 1 | |
| fi | |
| FULL_SDK="${PWD}/${SDK_DIR}" | |
| echo "Detected TornadoVM SDK: $FULL_SDK" | |
| export TORNADO_SDK="$FULL_SDK" | |
| export PATH="$FULL_SDK/bin:$JAVA_HOME/bin:$PATH" | |
| echo "TORNADO_SDK=$FULL_SDK" >> $GITHUB_ENV | |
| echo "PATH=$PATH" >> $GITHUB_ENV | |
| # 👇 THIS IS WHAT YOU WERE MISSING | |
| echo "tornado_sdk=$FULL_SDK" >> $GITHUB_OUTPUT | |
| which tornado || { echo "::error::tornado not in PATH"; exit 1; } | |
| tornado --devices | |
| - name: Build GPULlama3 | |
| run: | | |
| set -x | |
| cd ${{ github.workspace }} | |
| echo "Using TORNADO_SDK=$TORNADO_SDK" | |
| export PATH="$TORNADO_SDK/bin:$JAVA_HOME/bin:$PATH" | |
| which tornado || { echo "::error::tornado unavailable during GPULlama3 build"; exit 1; } | |
| tornado --version | |
| make | |
| ./llama-tornado --help | |
| test-models: | |
| runs-on: self-hosted | |
| needs: build-and-run | |
| strategy: | |
| fail-fast: true | |
| matrix: | |
| model: | |
| - /opt/models/DeepSeek-R1-Distill-Qwen-1.5B-F16.gguf | |
| - /opt/models/DeepSeek-R1-Distill-Qwen-1.5B-Q8_0.gguf | |
| - /opt/models/Llama-3.2-1B-Instruct-F16.gguf | |
| - /opt/models/Llama-3.2-1B-Instruct-Q8_0.gguf | |
| - /opt/models/Llama-3.2-3B-Instruct-F16.gguf | |
| - /opt/models/Llama-3.2-3B-Instruct-Q8_0.gguf | |
| - /opt/models/Mistral-7B-Instruct-v0.3.fp16.gguf | |
| - /opt/models/Mistral-7B-Instruct-v0.3.Q8_0.gguf | |
| - /opt/models/Phi-3-mini-4k-instruct-fp16.gguf | |
| - /opt/models/Phi-3-mini-4k-instruct-Q8_0.gguf | |
| - /opt/models/Qwen2.5-0.5B-Instruct-f16.gguf | |
| - /opt/models/Qwen2.5-0.5B-Instruct-Q8_0.gguf | |
| - /opt/models/qwen2.5-1.5b-instruct-fp16.gguf | |
| - /opt/models/qwen2.5-1.5b-instruct-q8_0.gguf | |
| - /opt/models/Qwen3-0.6B-f16.gguf | |
| - /opt/models/Qwen3-0.6B-Q8_0.gguf | |
| - /opt/models/Qwen3-4B-f16.gguf | |
| - /opt/models/Qwen3-4B-Q8_0.gguf | |
| env: | |
| JAVA_HOME: /opt/jenkins/jdks/graal-23.1.0/jdk-21.0.3 | |
| TORNADO_SDK: ${{ needs.build-and-run.outputs.tornado_sdk }} | |
| TORNADO_ROOT: ${{ github.workspace }}/GPULlama3.java/external/tornadovm | |
| LLAMA_ROOT: ${{ github.workspace }} | |
| steps: | |
| - name: Checkout GPULlama3 | |
| uses: actions/checkout@v4 | |
| - name: Run inference for ${{ matrix.model }} | |
| run: | | |
| set -x | |
| cd ${{ github.workspace }} | |
| echo "Using Tornado SDK: $TORNADO_SDK" | |
| export PATH="$TORNADO_SDK/bin:$JAVA_HOME/bin:$PATH" | |
| ./llama-tornado --gpu --opencl \ | |
| --model "${{ matrix.model }}" \ | |
| --prompt "Say hello" |