又一个博客

在这里,我将分享我对 ROCm 和 Strix Halo 的初印象,以及我是如何完成所有设置的。

操作系统选择与驱动安装

我习惯使用 Ubuntu 系统,所以这次依旧选择了受支持的 24.04 LTS 版本,并按官方安装说明进行了操作。

BIOS 更新

似乎不更新 BIOS 很多功能都无法正常使用,比如 PyTorch 就找不到 GPU。不过在 BIOS 设置中更新很简单,它能连接我的 Wifi 网络并自动下载更新。

BIOS 设置与 Grub 修改

同样在 BIOS 设置中,要确保将预留的显存设置为较低的值,并通过 GTT 让 CPU 和 GPU 共享内存,预留内存最低可设为 512MB。相关影响如下:

  • CPU 无法使用 GPU 的预留内存。
  • GPU 可以使用预留内存和 GTT 的总和,但由于碎片化和寻址开销,同时使用两者的效率可能不如使用一个大的 GTT 池。
  • 遗憾的是,一些旧游戏或软件可能会将 GPU 内存识别为 512MB 并拒绝运行,不过我目前还没遇到这种情况。

然后,我在 `/etc/default/grub` 文件中做了如下修改:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ttm.pages_limit=32768000 amdgpu.gttsize=114688"

接着运行 `sudo update-grub` 命令。需要注意的是,`amdgpu.gttsize` 不应包含整个系统内存,为保证 Linux 内核的稳定性,应该给 CPU 预留一些内存(建议是 4GB 到 12GB,即总内存减去预留的 GPU 内存再减去 GTT 内存)。

支持 UV 的 PyTorch

由于 PyTorch 复杂的依赖关系,这一步有点棘手,但最终我还是通过以下配置让它正常工作了:

[project]
name = "myproject"
version = "0.1.0"
description = "在此添加你的描述"
readme = "README.md"
requires-python = ">&=3.13"
dependencies = [
    "torch==2.11.0+rocm7.2",
    "triton-rocm",
]

[tool.uv]
environments = ["sys_platform == 'linux'"]

[[tool.uv.index]]
name = "pytorch-rocm"
url = "https://download.pytorch.org/whl/rocm7.2"
explicit = true

[tool.uv.sources]
torch = { index = "pytorch-rocm" }
torchvision = { index = "pytorch-rocm" }
triton-rocm = { index = "pytorch-rocm" }

你甚至可以将以下内容添加到 `.bashrc` 文件中:

alias pytorch='''uvx --extra-index-url https://download.pytorch.org/whl/rocm7.2 \
    --index-strategy unsafe-best-match \
    --with torch==2.11.0+rocm7.2,triton-rocm \
    ipython -c "import torch; print(f\"ROCM: {torch.version.hip}\"); \
    print(f\"GPU 可用: {torch.cuda.is_available()}\"); import torch.nn as nn" -i
'''

Llama.cpp

podman run --rm -it --name qwen-coder --device /dev/kfd --device /dev/dri \
--security-opt label=disable --group-add keep-groups -e HSA_OVERRIDE_GFX_VERSION=11.5.0 \
-p 8080:8080 -v /some_path/models:/models:z  ghcr.io/ggml-org/llama.cpp:server-rocm \
-m /models/qwen3.6/model.gguf -ngl 99 -c 327680 --host 0.0.0.0 --port 8080 \
--flash-attn on --no-mmap

你可以通过以下命令轻松下载模型:

uvx hf download Qwen/Qwen3.6-35B-A3B --local-dir /some_path/models/qwen3.6

然后使用 llama.cpp 仓库中的 `convert_hf_to_gguf.py` 脚本将其转换为 gguf 格式:

git clone https://github.com/ggerganov/llama.cpp.git /some_path/llama.cpp

cd /some_path/models/qwen3.6 &&
uvx --extra-index-url https://download.pytorch.org/whl/rocm7.2 \
    --index-strategy unsafe-best-match \
    --with torch==2.11.0+rocm7.2,triton-rocm,transformers \
    ipython /some_path/llama.cpp/convert_hf_to_gguf.py \
    -- . --outfile model.gguf

Opencode

我使用 Podman 来运行 Opencode。以下是让它与 Llama.cpp 配合使用的配置:

{    "$schema": "https://opencode.ai/config.json",    "provider": {        "local": {            "options": {                "baseURL": "http://localhost:8080/v1",                "apiKey": "任意字符串",                "reasoningEffort": "自动",                "textVerbosity": "高",                "supportsToolCalls": true            },            "models": {                "qwen-coder-local": {}            }        }    },    "model": "local/qwen-coder-local",    "permission": {        "*": "询问",        "read": {            "*": "允许",            "*.env": "拒绝",            "**/secrets/**": "拒绝"        },        "bash": "允许",        "edit": "允许",        "glob": "允许",        "grep": "允许",        "websearch": "允许",        "codesearch": "允许",        "webfetch": "允许"    },    "disabled_providers": [        "opencode"    ]}

总结

正如我之前所说,我的初印象是:目前一切都还不错,我能够使用 PyTorch 并在 llama.cpp 上以大上下文窗口运行 Qwen3.6。虽然过程中有些小问题,但我认为还是很值得的。那么,你是否也想尝试一下呢?

Logo

欢迎来到AMD开发者中国社区,我们致力于为全球开发者提供 ROCm、Ryzen AI Software 和 ZenDNN等全栈软硬件优化支持。携手中国开发者,链接全球开源生态,与你共建开放、协作的技术社区。

更多推荐