Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vLLM on Strix Halo (AMD gfx1151) with ROCm 7.2.2

A build-and-run record for vLLM from source on an AMD Strix Halo APU (Ryzen AI MAX+ 395, Radeon 8060S, gfx1151) against system ROCm 7.2.2 with AMD's gfx1151 nightly PyTorch wheels. This repo preserves the two build failures that matter, the source patches the model set required, and an honest account of why this stack was eventually parked in production in favor of llama.cpp.


TL;DR

What works: vLLM 0.22.1rc1.dev322+rocm722 builds from source on Ubuntu 26.04 + ROCm 7.2.2 + Python 3.14 and serves quantized LLMs on a Strix Halo APU.

The one-line fix: point ROCM_PATH and ROCM_HOME at the system ROCm (/opt/rocm-7.2.2), not the pip-bundled ROCm SDK that ships inside the nightly torch wheels. The pip SDK is a runtime, not a build SDK.

Why it was retired: For single-user interactive latency on a unified-memory APU, llama.cpp fit the workload shape better. vLLM's continuous-batching machinery pays off for multi-client throughput, not batch-1 latency. See docs/LESSONS.md for the measured reasoning.


Environment

Component Version
APU AMD Ryzen AI MAX+ 395 / Radeon 8060S (gfx1151)
System RAM / VRAM partition 128 GB total; ~103 GiB visible to ROCm with the BIOS partition used here
OS Ubuntu 26.04 LTS
Kernel 7.0.0-22-generic
GCC 15.2.0
Python 3.14.4
System ROCm 7.2.2 at /opt/rocm-7.2.2 (HIP 7.2.53211)
PyTorch 2.12.0a0+rocm7.13.0a20260411 from https://rocm.nightlies.amd.com/v2/gfx1151/
Triton 3.7.0+git8108eb2c.rocm7.13.0a20260411
vLLM source upstream main, commit c9c1540e61 (2026-07-01)
vLLM built version 0.22.1rc1.dev322+gc9c1540e6.d20260701.rocm722

There are no stable gfx1151 wheels; the nightly index is the only source, and the tag rolls. The lockfiles in env/ pin a known-good freeze from the working venv.


Step-by-step: build, patch, and serve

1. Set your paths

export VLLM_SRC="${VLLM_SRC:-/path/to/vllm-src}"     # where to clone vLLM
export VENV="${VENV:-/path/to/venv-vllm}"            # Python venv for the build
export ROCM_HOME="${ROCM_HOME:-/opt/rocm-7.2.2}"     # system ROCm SDK
export MODEL="${MODEL:-/path/to/your/model}"         # HF hub id or local path

2. Build

scripts/build-vllm-rocm.sh

This:

  • Creates the venv and installs the gfx1151 nightly torch stack.
  • Checks out vLLM commit c9c1540e61.
  • Applies the two local patches in patches/.
  • Builds with ROCM_PATH=$ROCM_HOME.
  • Removes tilelang and upgrades tensorizer.

Do not shortcut this script — the ROCM_PATH fix, tilelang removal, and tensorizer upgrade are all load-bearing. See docs/BUILD.md for the full explanation.

3. Serve

scripts/vllm-serve.sh --port 8001

Or, to run under systemd, copy systemd/vllm-openai.service and systemd/env.example to /etc/vllm-openai/env, edit MODEL and any other variables, then run:

sudo systemctl enable --now vllm-openai.service

4. Verify the server

# List models
curl -s http://localhost:8001/v1/models | head -c 400

# One-line chat completion
curl -s http://localhost:8001/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"'"$(basename "$MODEL")"'","messages":[{"role":"user","content":"Say hello"}],"max_tokens":20}'

Verification / testing

After the build:

source "$VENV/bin/activate"
python -c "import vllm; print(vllm.__version__)"      # expect ...rocm722 tag
python -c "import torch; print(torch.version.hip)"      # expect 7.13.x runtime
python patches/patch_vllm.py --vllm-src "$VLLM_SRC" --check
pip show tilelang   # expect *not* installed

A smoke-test matrix from the working venv is in docs/LESSONS.md. The logs in logs/ are the primary source for every build claim.


Known limitations

  • No stable gfx1151 wheels. The nightly wheel index at rocm.nightlies.amd.com/v2/gfx1151/ is the only source; tags roll.
  • Python 3.14 dependency friction. vLLM pins tensorizer==2.10.1, which breaks on 3.14; override to >=2.12. tilelang must be uninstalled after every vLLM reinstall.
  • torch / ROCm symbol interposition. Nightly torch loads a bundled librocm_smi64.so.1 with RTLD_GLOBAL; patch torch/_rocm_init.py to use rtld_global=False to avoid exit-time crashes when the system's librocm_smi64.so.7 is also loaded.
  • FP8 is slow on gfx1151 (RDNA3.5 has no native FP8 arithmetic). Prefer AWQ / GPTQ / NF4 checkpoints.
  • --enforce-eager is required for the V1 engine on this stack, because torch.compile cache serialization fails to pickle across spawn-based workers.
  • Single-user latency is not vLLM's strength. This stack was retired in favor of llama.cpp for batch-1 interactive use on a unified-memory APU.

Reproduction notes

  • All build claims trace to logs/vllm-build-v2-rocm713-FAILED.log and logs/vllm-build-v2-rocm722-SUCCESS.log.
  • Runtime claims trace to the build notes and logs/vllm-service-final-crash.log.
  • patches/patch_vllm.py is idempotent and backs up files. Re-run --check after every upstream sync.
  • env/ contains a pip freeze lockfile and venv snapshot from the working environment; treat them as a known-good freeze, not a reproducibility contract.

License

PolyForm Noncommercial 1.0.0 — see LICENSE.

Required Notice: Copyright 2026 LucRoot (info@lucasroot.com).


Author: Dr. Lucas Root, Ph.D. — info@lucasroot.com

About

vLLM on ROCm 7.2.2 for AMD Strix Halo (gfx1151): source-build recipe, upstream patches, environment lockfile, systemd unit — and both the failed ROCm 7.1.3 and successful 7.2.2 build logs so you skip the wrong half. PolyForm noncommercial.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages