vLLM for AMD gfx906 GPUs, e.g. Radeon VII / MI50 / MI60
35
stars
10,213
commits
Python
primary language
Aug 25, 2026
updated
专为 AMD gfx906 GPU(Radeon VII、Radeon Pro VII、Instinct MI50/MI60)优化的 LLM 推理引擎
本项目基于 vLLM 开发,感谢原项目所有贡献者。
详见 NOTICE 文件了解完整的归属声明。
⚠️ 本项目由社区维护中。 原作者已归档其工作,但本分支持续更新以保持与最新 vLLM 版本的兼容性。
mmproj 的视觉配置、权重名称映射、Conv3d patch embedding 合并和多模态输入处理链路。⚠️ 重要提示:模型支持状态
本项目已从上游 vLLM 同步了大量新模型文件(49+ 个模型),但这些模型未经 ROCm/gfx906 架构的适配和测试。虽然文件已包含在代码库中,但不保证在 AMD gfx906 GPU 上能正常运行。
已测试并确认可用:
已知无法运行:
! 或在引擎初始化/推理阶段崩溃未经测试的模型(同步自上游,可能不工作):
如需使用这些模型,建议先测试基本功能。遇到问题请提交 issue。
这是 vLLM 的修改版本,专门用于 AMD gfx906 系列 GPU。它包含了针对 gfx906 架构的 ROCm 兼容性优化和变通方案。
原作者: nalanzeyu
ROCm 6.3 组合的 Triton 安装方式请参阅
triton-gfx906 安装指南。
当前仓库的依赖文件默认使用 ROCm 7.2 组合。该组合需要可用于 gfx906 的
rocBLAS Tensile 文件;必要时通过 ROCBLAS_TENSILE_LIBPATH 指定其路径。
# 安装系统依赖
sudo apt install python3-venv python3-dev
# 克隆仓库
git clone https://github.com/ttdxq/gfx906-vllm.git
cd gfx906-vllm
# 创建虚拟环境
uv venv --python 3.12 .venv
source .venv/bin/activate
# 安装当前 ROCm 7.2 构建和运行依赖
uv pip install -r requirements/rocm-build.txt -r requirements/rocm.txt
# 构建并安装 vLLM
MAX_JOBS=$(nproc) CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) \
uv pip install --no-build-isolation -e .
上述源码构建命令对应当前仓库的 ROCm 7.2 + PyTorch 2.11 依赖。继续使用 ROCm 6.3 原有组合时,请按 triton-gfx906 安装指南准备对应的 PyTorch 和 Triton 环境,不要混用两套 ROCm/PyTorch/Triton 依赖。
# 文本模型或仅使用文本功能时,可以显式禁用多模态输入
VLLM_USE_MODELSCOPE=true vllm serve Qwen/Qwen3.5-0.8B \
--port 8000 \
--tensor-parallel-size 1 \
--max-model-len 8192 \
--reasoning-parser qwen3_5 \
--limit-mm-per-prompt '{"image": 0, "video": 0}'
# 指定 GPU 内存使用率
vllm serve Qwen/Qwen3.5-0.8B \
--port 8000 \
--max-model-len 8192 \
--gpu-memory-utilization 0.85 \
--reasoning-parser qwen3_5
前置条件:
--tensor-parallel-size 2需要替换 RCCL。AMD 官方 RCCL(含 ROCm 7.2 官方仓版本) 不包含 gfx906 设备内核,直接启动会在初始化阶段以invalid kernel file/invalid device function等错误失败。需安装 gfx906 构建的 RCCL 替换库(与官方 2.27.7 同源,仅构建目标为 gfx906),适用于 torch+rocm7.2轮子。
1. 安装 gfx906 RCCL(从 Releases 下载 rccl-gfx906-2.27.7-rocm7.2.4.tar.gz 解压后):
# conda / venv 环境(先激活)
conda activate <你的环境>
./install.sh
HIP_VISIBLE_DEVICES=0,1 python rccl_probe.py
# 预期输出 ALLREDUCE_OK: [2.0, 2.0, 2.0, 2.0] 即安装成功;回滚用 ./install.sh --rollback
# uv 项目环境(--no-sync 必须带,防止隐式 sync 破坏定制 torch)
uv run --no-sync ./install.sh
若无预编译包,可自行构建(约 25 分钟):
git clone --depth 1 --branch rocm-7.2.4 https://github.com/ROCm/rccl
cd rccl && mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/opt/rocm -DGPU_TARGETS="gfx906" -G Ninja
ninja -j$(nproc)
# 用 build/librccl.so.1.0 按上述 install.sh 同样方式替换 torch/lib 内的 librccl
2. 启动 TP=2 服务:
HIP_VISIBLE_DEVICES=0,1 \
vllm serve /path/to/Qwen3.8-27B-UD-Q6_K_XL.gguf \
--port 8000 \
--tensor-parallel-size 2 \
--max-model-len 32768 \
--reasoning-parser qwen3_5 \
--limit-mm-per-prompt '{"image": 0, "video": 0}'
说明:
主模型和对应 mmproj 应放在同一目录,并保持可识别的配对命名。
为约束启动 profiling 使用的 dummy 图片尺寸,建议设置与业务图片上限相符的 width 和 height:
--limit-mm-per-prompt '{"image":{"count":1,"width":512,"height":512},"video":0}'
width 和 height 用于约束启动 profiling 的 dummy 图片尺寸,并不是运行时图片的硬限制。部署时应使用与实际最大图片尺寸匹配的 profiling 配置。
# 检查模型可用性
curl http://localhost:8000/v1/models
# 发送对话请求
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3.5-0.8B",
"messages": [{"role": "user", "content": "你好!请介绍一下你自己"}],
"max_tokens": 100
}'
from openai import OpenAI
# 初始化客户端
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="token-not-required"
)
# 发送对话请求
response = client.chat.completions.create(
model="Qwen/Qwen3.5-0.8B",
messages=[
{"role": "user", "content": "写一首关于编程的俳句"}
],
max_tokens=100
)
print(response.choices[0].message.content)
LLMM1,部分非 gfx9 小 batch 使用 Triton,其余 gfx906 路径使用 PyTorch/ROCm GEMM fallbackvllm/model_executor/layers/utils.pymamba_cache_mode 属性问题基于原项目测试结果:
gfx906 上 AWQ 默认继续使用当前较保守的 Triton 路径。如需试验 vllm-gfx906-mobydick 风格的 GPTQ-compatible AWQ 路径,可显式设置:
export VLLM_ROCM_USE_GFX906_MOBYDICK_AWQ=1
该开关默认关闭,仅建议在排查 Triton AWQ 兼容性或对比两条 AWQ 路径行为时使用。
详细信息请参阅 Issue #29。
max-model-len - 对于小模型可以节省内存--gpu-memory-utilization - 显式管理内存使用--limit-mm-per-prompt 设置与业务相符的图片数量和最大测试尺寸rocm-smi 和 ps 检查占用,避免终止其他 GPU 工作线的进程这是正常现象 - Triton 正在编译内核。请等待 1-2 分钟。
rocm-smi 检查目标 GPU 的显存占用和进程归属--max-model-len、--max-num-batched-tokens 或 KV cache 大小--limit-mm-per-prompt 降低 profiling 图片尺寸--skip-mm-profiling 判断是否为 profiling 峰值导致欢迎贡献!你可以:
Apache License 2.0 - 详见 LICENSE
如果你在研究中使用了本分支,请同时引用原始 vLLM 论文并说明 gfx906 适配:
@inproceedings{kwon2023efficient,
title={Efficient Memory Management for Large Language Model Serving with PagedAttention},
author={Woosuk Kwon and Zhuohan Li and Siyuan Zhuang and Ying Sheng and Lianmin Zheng and Cody Hao Yu and Joseph E. Gonzalez and Hao Zhang and Ion Stoica},
booktitle={Proceedings of the ACM SIGOPS 29th Symposium on Operating Systems Principles},
year={2023}
}
注意: 本项目为社区维护的分支。使用风险自负,特别是作为硬件购买的参考依据。
(top 30 of 454)
Python
88.4%
Cuda
6.7%
C++
3.6%
vLLM for AMD gfx906 GPUs, e.g. Radeon VII / MI50 / MI60
35
stars
10,213
commits
Python
primary language
Aug 25, 2026
updated
专为 AMD gfx906 GPU(Radeon VII、Radeon Pro VII、Instinct MI50/MI60)优化的 LLM 推理引擎
本项目基于 vLLM 开发,感谢原项目所有贡献者。
详见 NOTICE 文件了解完整的归属声明。
⚠️ 本项目由社区维护中。 原作者已归档其工作,但本分支持续更新以保持与最新 vLLM 版本的兼容性。
mmproj 的视觉配置、权重名称映射、Conv3d patch embedding 合并和多模态输入处理链路。⚠️ 重要提示:模型支持状态
本项目已从上游 vLLM 同步了大量新模型文件(49+ 个模型),但这些模型未经 ROCm/gfx906 架构的适配和测试。虽然文件已包含在代码库中,但不保证在 AMD gfx906 GPU 上能正常运行。
已测试并确认可用:
已知无法运行:
! 或在引擎初始化/推理阶段崩溃未经测试的模型(同步自上游,可能不工作):
如需使用这些模型,建议先测试基本功能。遇到问题请提交 issue。
这是 vLLM 的修改版本,专门用于 AMD gfx906 系列 GPU。它包含了针对 gfx906 架构的 ROCm 兼容性优化和变通方案。
原作者: nalanzeyu
ROCm 6.3 组合的 Triton 安装方式请参阅
triton-gfx906 安装指南。
当前仓库的依赖文件默认使用 ROCm 7.2 组合。该组合需要可用于 gfx906 的
rocBLAS Tensile 文件;必要时通过 ROCBLAS_TENSILE_LIBPATH 指定其路径。
# 安装系统依赖
sudo apt install python3-venv python3-dev
# 克隆仓库
git clone https://github.com/ttdxq/gfx906-vllm.git
cd gfx906-vllm
# 创建虚拟环境
uv venv --python 3.12 .venv
source .venv/bin/activate
# 安装当前 ROCm 7.2 构建和运行依赖
uv pip install -r requirements/rocm-build.txt -r requirements/rocm.txt
# 构建并安装 vLLM
MAX_JOBS=$(nproc) CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) \
uv pip install --no-build-isolation -e .
上述源码构建命令对应当前仓库的 ROCm 7.2 + PyTorch 2.11 依赖。继续使用 ROCm 6.3 原有组合时,请按 triton-gfx906 安装指南准备对应的 PyTorch 和 Triton 环境,不要混用两套 ROCm/PyTorch/Triton 依赖。
# 文本模型或仅使用文本功能时,可以显式禁用多模态输入
VLLM_USE_MODELSCOPE=true vllm serve Qwen/Qwen3.5-0.8B \
--port 8000 \
--tensor-parallel-size 1 \
--max-model-len 8192 \
--reasoning-parser qwen3_5 \
--limit-mm-per-prompt '{"image": 0, "video": 0}'
# 指定 GPU 内存使用率
vllm serve Qwen/Qwen3.5-0.8B \
--port 8000 \
--max-model-len 8192 \
--gpu-memory-utilization 0.85 \
--reasoning-parser qwen3_5
前置条件:
--tensor-parallel-size 2需要替换 RCCL。AMD 官方 RCCL(含 ROCm 7.2 官方仓版本) 不包含 gfx906 设备内核,直接启动会在初始化阶段以invalid kernel file/invalid device function等错误失败。需安装 gfx906 构建的 RCCL 替换库(与官方 2.27.7 同源,仅构建目标为 gfx906),适用于 torch+rocm7.2轮子。
1. 安装 gfx906 RCCL(从 Releases 下载 rccl-gfx906-2.27.7-rocm7.2.4.tar.gz 解压后):
# conda / venv 环境(先激活)
conda activate <你的环境>
./install.sh
HIP_VISIBLE_DEVICES=0,1 python rccl_probe.py
# 预期输出 ALLREDUCE_OK: [2.0, 2.0, 2.0, 2.0] 即安装成功;回滚用 ./install.sh --rollback
# uv 项目环境(--no-sync 必须带,防止隐式 sync 破坏定制 torch)
uv run --no-sync ./install.sh
若无预编译包,可自行构建(约 25 分钟):
git clone --depth 1 --branch rocm-7.2.4 https://github.com/ROCm/rccl
cd rccl && mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/opt/rocm -DGPU_TARGETS="gfx906" -G Ninja
ninja -j$(nproc)
# 用 build/librccl.so.1.0 按上述 install.sh 同样方式替换 torch/lib 内的 librccl
2. 启动 TP=2 服务:
HIP_VISIBLE_DEVICES=0,1 \
vllm serve /path/to/Qwen3.8-27B-UD-Q6_K_XL.gguf \
--port 8000 \
--tensor-parallel-size 2 \
--max-model-len 32768 \
--reasoning-parser qwen3_5 \
--limit-mm-per-prompt '{"image": 0, "video": 0}'
说明:
主模型和对应 mmproj 应放在同一目录,并保持可识别的配对命名。
为约束启动 profiling 使用的 dummy 图片尺寸,建议设置与业务图片上限相符的 width 和 height:
--limit-mm-per-prompt '{"image":{"count":1,"width":512,"height":512},"video":0}'
width 和 height 用于约束启动 profiling 的 dummy 图片尺寸,并不是运行时图片的硬限制。部署时应使用与实际最大图片尺寸匹配的 profiling 配置。
# 检查模型可用性
curl http://localhost:8000/v1/models
# 发送对话请求
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3.5-0.8B",
"messages": [{"role": "user", "content": "你好!请介绍一下你自己"}],
"max_tokens": 100
}'
from openai import OpenAI
# 初始化客户端
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="token-not-required"
)
# 发送对话请求
response = client.chat.completions.create(
model="Qwen/Qwen3.5-0.8B",
messages=[
{"role": "user", "content": "写一首关于编程的俳句"}
],
max_tokens=100
)
print(response.choices[0].message.content)
LLMM1,部分非 gfx9 小 batch 使用 Triton,其余 gfx906 路径使用 PyTorch/ROCm GEMM fallbackvllm/model_executor/layers/utils.pymamba_cache_mode 属性问题基于原项目测试结果:
gfx906 上 AWQ 默认继续使用当前较保守的 Triton 路径。如需试验 vllm-gfx906-mobydick 风格的 GPTQ-compatible AWQ 路径,可显式设置:
export VLLM_ROCM_USE_GFX906_MOBYDICK_AWQ=1
该开关默认关闭,仅建议在排查 Triton AWQ 兼容性或对比两条 AWQ 路径行为时使用。
详细信息请参阅 Issue #29。
max-model-len - 对于小模型可以节省内存--gpu-memory-utilization - 显式管理内存使用--limit-mm-per-prompt 设置与业务相符的图片数量和最大测试尺寸rocm-smi 和 ps 检查占用,避免终止其他 GPU 工作线的进程这是正常现象 - Triton 正在编译内核。请等待 1-2 分钟。
rocm-smi 检查目标 GPU 的显存占用和进程归属--max-model-len、--max-num-batched-tokens 或 KV cache 大小--limit-mm-per-prompt 降低 profiling 图片尺寸--skip-mm-profiling 判断是否为 profiling 峰值导致欢迎贡献!你可以:
Apache License 2.0 - 详见 LICENSE
如果你在研究中使用了本分支,请同时引用原始 vLLM 论文并说明 gfx906 适配:
@inproceedings{kwon2023efficient,
title={Efficient Memory Management for Large Language Model Serving with PagedAttention},
author={Woosuk Kwon and Zhuohan Li and Siyuan Zhuang and Ying Sheng and Lianmin Zheng and Cody Hao Yu and Joseph E. Gonzalez and Hao Zhang and Ion Stoica},
booktitle={Proceedings of the ACM SIGOPS 29th Symposium on Operating Systems Principles},
year={2023}
}
注意: 本项目为社区维护的分支。使用风险自负,特别是作为硬件购买的参考依据。
(top 30 of 454)
Python
88.4%
Cuda
6.7%
C++
3.6%