| 1 | #!/bin/bash |
| 2 | # SPDX-License-Identifier: Apache-2.0 |
| 3 | # SPDX-FileCopyrightText: Copyright contributors to the vLLM project |
| 4 | # |
| 5 | # Generate Buildkite annotation for ROCm wheel release |
| 6 | set -ex |
| 7 | |
| 8 | # Extract build configuration from Dockerfile.rocm_base (single source of truth) |
| 9 | # Extract ROCm version dynamically from Dockerfile.rocm_base |
| 10 | # BASE_IMAGE format: rocm/dev-ubuntu-22.04:7.0-complete -> extracts "7.0" |
| 11 | ROCM_VERSION=$(grep -E '^ARG BASE_IMAGE=' docker/Dockerfile.rocm_base | sed -E 's/.*:([0-9]+\.[0-9]+).*/\1/' || echo "unknown") |
| 12 | PYTHON_VERSION=$(grep '^ARG PYTHON_VERSION=' docker/Dockerfile.rocm_base | sed 's/^ARG PYTHON_VERSION=//') |
| 13 | PYTORCH_ROCM_ARCH=$(grep '^ARG PYTORCH_ROCM_ARCH=' docker/Dockerfile.rocm_base | sed 's/^ARG PYTORCH_ROCM_ARCH=//') |
| 14 | |
| 15 | # Get release version, default to 1.0.0.dev for nightly/per-commit builds |
| 16 | RELEASE_VERSION=$(buildkite-agent meta-data get release-version 2>/dev/null || echo "") |
| 17 | if [ -z "${RELEASE_VERSION}" ]; then |
| 18 | RELEASE_VERSION="1.0.0.dev" |
| 19 | fi |
| 20 | |
| 21 | ROCM_BASE_CACHE_KEY=$(.buildkite/scripts/cache-rocm-base-wheels.sh key) |
| 22 | |
| 23 | # S3 URLs |
| 24 | S3_BUCKET="${S3_BUCKET:-vllm-wheels}" |
| 25 | S3_REGION="${AWS_DEFAULT_REGION:-us-west-2}" |
| 26 | S3_URL="http://${S3_BUCKET}.s3-website-${S3_REGION}.amazonaws.com" |
| 27 | |
| 28 | # Format ROCm version for path (e.g., "7.1" -> "rocm710") |
| 29 | ROCM_VERSION_PATH="rocm$(echo "${ROCM_VERSION}" | tr -d '.')" |
| 30 | ROCM_PATH="rocm/${BUILDKITE_COMMIT}/${ROCM_VERSION_PATH}" |
| 31 | buildkite-agent annotate --style 'success' --context 'rocm-release-workflow' << EOF |
| 32 | ## ROCm Wheel and Docker Image Releases |
| 33 | ### Build Configuration |
| 34 | | Setting | Value | |
| 35 | |---------|-------| |
| 36 | | **ROCm Version** | ${ROCM_VERSION} | |
| 37 | | **Python Version** | ${PYTHON_VERSION} | |
| 38 | | **GPU Architectures** | ${PYTORCH_ROCM_ARCH} | |
| 39 | | **Branch** | \`${BUILDKITE_BRANCH}\` | |
| 40 | | **Commit** | \`${BUILDKITE_COMMIT}\` | |
| 41 | |
| 42 | ### :package: Installation |
| 43 | |
| 44 | **Install from this build (by commit):** |
| 45 | |
| 46 | \`\`\`bash |
| 47 | pip install vllm --extra-index-url ${S3_URL}/${ROCM_PATH}/ --trusted-host ${S3_BUCKET}.s3-website-${S3_REGION}.amazonaws.com |
| 48 | |
| 49 | # Example for ROCm ${ROCM_VERSION}: |
| 50 | pip install vllm --extra-index-url ${S3_URL}/rocm/${BUILDKITE_COMMIT}/${ROCM_VERSION_PATH}/ --trusted-host ${S3_BUCKET}.s3-website-${S3_REGION}.amazonaws.com |
| 51 | \`\`\` |
| 52 | |
| 53 | **Install from nightly (if published):** |
| 54 | |
| 55 | \`\`\`bash |
| 56 | pip install vllm --extra-index-url ${S3_URL}/rocm/nightly/ --trusted-host ${S3_BUCKET}.s3-website-${S3_REGION}.amazonaws.com |
| 57 | \`\`\` |
| 58 | |
| 59 | ### :floppy_disk: Download Wheels Directly |
| 60 | |
| 61 | \`\`\`bash |
| 62 | # List all ROCm wheels |
| 63 | aws s3 ls s3://${S3_BUCKET}/rocm/${BUILDKITE_COMMIT}/${ROCM_VERSION_PATH}/ |
| 64 | # Download specific wheels |
| 65 | aws s3 cp s3://${S3_BUCKET}/rocm/${BUILDKITE_COMMIT}/${ROCM_VERSION_PATH}/vllm-*.whl . |
| 66 | aws s3 cp s3://${S3_BUCKET}/rocm/${BUILDKITE_COMMIT}/${ROCM_VERSION_PATH}/torch-*.whl . |
| 67 | aws s3 cp s3://${S3_BUCKET}/rocm/${BUILDKITE_COMMIT}/${ROCM_VERSION_PATH}/triton-*.whl . |
| 68 | aws s3 cp s3://${S3_BUCKET}/rocm/${BUILDKITE_COMMIT}/${ROCM_VERSION_PATH}/triton-kernels-*.whl . |
| 69 | aws s3 cp s3://${S3_BUCKET}/rocm/${BUILDKITE_COMMIT}/${ROCM_VERSION_PATH}/torchvision-*.whl . |
| 70 | aws s3 cp s3://${S3_BUCKET}/rocm/${BUILDKITE_COMMIT}/${ROCM_VERSION_PATH}/torchaudio-*.whl . |
| 71 | aws s3 cp s3://${S3_BUCKET}/rocm/${BUILDKITE_COMMIT}/${ROCM_VERSION_PATH}/amdsmi-*.whl . |
| 72 | aws s3 cp s3://${S3_BUCKET}/rocm/${BUILDKITE_COMMIT}/${ROCM_VERSION_PATH}/amd_aiter-*.whl . |
| 73 | aws s3 cp s3://${S3_BUCKET}/rocm/${BUILDKITE_COMMIT}/${ROCM_VERSION_PATH}/flash-attn-*.whl . |
| 74 | \`\`\` |
| 75 | |
| 76 | ### :gear: Included Packages |
| 77 | - **vllm**: vLLM with ROCm support |
| 78 | - **torch**: PyTorch built for ROCm ${ROCM_VERSION} |
| 79 | - **triton**: Triton |
| 80 | - **triton-kernels**: Triton kernels |
| 81 | - **torchvision**: TorchVision for ROCm PyTorch |
| 82 | - **torchaudio**: Torchaudio for ROCm PyTorch |
| 83 | - **amdsmi**: AMD SMI Python bindings |
| 84 | - **amd_aiter**: Aiter for ROCm |
| 85 | - **flash-attn**: Flash Attention for ROCm |
| 86 | |
| 87 | ### :warning: Notes |
| 88 | - These wheels are built for **ROCm ${ROCM_VERSION}** and will NOT work with CUDA GPUs |
| 89 | - Supported GPU architectures: ${PYTORCH_ROCM_ARCH} |
| 90 | - Platform: Linux x86_64 only |
| 91 | |
| 92 | ### :package: Docker Image Release |
| 93 | |
| 94 | To download and upload the image: |
| 95 | |
| 96 | \`\`\` |
| 97 | docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-rocm-base |
| 98 | docker pull public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-rocm |
| 99 | |
| 100 | docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${ROCM_BASE_CACHE_KEY}-rocm-base vllm/vllm-openai-rocm:${BUILDKITE_COMMIT}-base |
| 101 | docker tag vllm/vllm-openai-rocm:${BUILDKITE_COMMIT}-base vllm/vllm-openai-rocm:latest-base |
| 102 | docker tag vllm/vllm-openai-rocm:${BUILDKITE_COMMIT}-base vllm/vllm-openai-rocm:v${RELEASE_VERSION}-base |
| 103 | docker push vllm/vllm-openai-rocm:latest-base |
| 104 | docker push vllm/vllm-openai-rocm:v${RELEASE_VERSION}-base |
| 105 | |
| 106 | docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:${BUILDKITE_COMMIT}-rocm vllm/vllm-openai-rocm:${BUILDKITE_COMMIT} |
| 107 | docker tag vllm/vllm-openai-rocm:${BUILDKITE_COMMIT} vllm/vllm-openai-rocm:latest |
| 108 | docker tag vllm/vllm-openai-rocm:${BUILDKITE_COMMIT} vllm/vllm-openai-rocm:v${RELEASE_VERSION} |
| 109 | docker push vllm/vllm-openai-rocm:latest |
| 110 | docker push vllm/vllm-openai-rocm:v${RELEASE_VERSION} |
| 111 | \`\`\` |
| 112 | |
| 113 | EOF |