跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / BashAI

AMD 显卡上 llama.cpp 的性能调优手记

梳理了 AMD 显卡上 llama.cpp 的环境准备、Vulkan 编译、内存分配配置、运行时参数调整及按架构的精细化设置,附实测速度对比、常见故障处理和实时监控脚本。

奶糖兔发布于 2026/6/14更新于 2026/9/3068 浏览

环境准备

在动手之前,先确认一下你的硬件和驱动。这套操作我在 RX 6800 XT 上跑通,其他 RDNA2/3 卡也适用,但显存不够的卡可能要自觉降模型。

组件最低要求推荐配置
AMD 显卡RX 580 8GBRX 6800 XT
系统内存16GB32GB
驱动版本22.5.123.11.1+
存储空间20GB 可用50GB 可用

驱动这块,如果是较新的内核,直接装 mesa-vulkan-drivers 就行,不用折腾 ROCm。跑一下 vulkaninfo --summary 确认能看到自己的卡。

快速编译部署

先把项目拉下来,编译时打开 Vulkan 支持。我习惯把所有步骤写进一个脚本,省得每次手敲:

#!/bin/bash
# 检查驱动版本
VULKAN_VERSION=$(vulkaninfo | grep "driverVersion" | head -1)
echo "当前 Vulkan 驱动版本:$VULKAN_VERSION"

sudo apt update
sudo apt install -y build-essential cmake vulkan-utils

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
mkdir build && cd build
cmake -DLLAMA_VULKAN=ON -DAMD_VULKAN_COMPAT=ON ..
make -j$(nproc)
echo "编译完成"

AMD_VULKAN_COMPAT 这个选项在一些老卡上能避免奇怪的显存分配错误,如果确定是新卡也可以不加。

内存分配配置

llama.cpp 默认的显存分配比较保守,尤其是跨设备内存共享时容易成为瓶颈。可以把下面内容写成 amd_memory.cfg(非必须,但方便调参):

[memory]
device_local_ratio = 0.8
host_visible_ratio = 0.2
max_buffer_size = 4294967296
prefer_coherent = true

device_local_ratio 设成 0.8 能更激进地使用显存,但 32G 不到的卡别这么玩,容易 OOM。我在 RX 6800 XT 上跑 13B 模型,这个值可以到 0.75 比较稳妥。

运行时参数调整

如果不想动源码,启动参数直接影响推理速度。下面是一些常用的组合:

# RX 6800 XT 上跑 13B 的典型配置
./main -m model.gguf -p "你的提示词" \
--backend vulkan \
--vulkan-device 0 \
--n-gpu-layers 35 \
--vulkan-queue-count 4 \
--vulkan-workgroup-size 256
  • --n-gpu-layers 设成 35 基本把整个模型怼进显存,速度快一截。
  • --vulkan-queue-count 调成 4 在 RDNA2 上表现不错,再大意义不大。
  • --vulkan-workgroup-size 256 是这代卡的一个甜点值。

至于代码层的调优,可以参照下面这个 struct 自己改 src/llama.cpp,但通常不必要:

struct amd_optimize_config {
    bool enable_async_transfer = true;
    int compute_units_override = 0; // 0 表示自动检测
    bool use_shared_memory = true;
    float memory_compression_ratio = 0.75f;
};

实测速度

下面是我在 RX 6800 XT 上跑不同模型得到的数据,优化前指的是默认参数,优化后是用了上述内存配置和运行时参数:

模型大小优化前 (tokens/s)优化后 (tokens/s)提升幅度
7B12.528.3+126%
13B8.218.7+128%
70B2.15.8+176%

70B 模型其实已经爆显存了,全靠内存这边扛着,所以绝对值低,但相对提升依然明显。

按显卡系列微调

RX 6000 系列 (RDNA2)

上面的参数基本就是为这个系列试出来的,额外可以试一下 --tensor-split 1.0 强制所有张量放一块卡上(多卡才需要切)。

RX 7000 系列 (RDNA3)

新架构的 workgroup 优化有所不同,有些反馈把 --vulkan-workgroup-size 设成 128 反而更快。可以自己对比一下:

./main -m model.gguf \
--gpu-layers 40 \
--main-gpu 0 \
--tensor-split 1.0 \
--vulkan-workgroup-size 128

常见问题

启动时报 vkCreateInstance failed

十有八九是 Vulkan 驱动没装全或用户组权限问题。执行:

sudo apt install mesa-vulkan-drivers mesa-opencl-icd
vulkaninfo --summary

确认没有报错。如果还不行,检查 VK_ICD_FILENAMES 环境变量是否指向正确的 ICD 文件。

模型加载到一半卡住

显存不够,--n-gpu-layers 设得太高了。先降一些,比如先试 25,看能否完整加载,再慢慢往上加。

推理速度明显不如预期

先跑一下 rocm-smi --showuse(如果有 ROCm)或 nvtop,看 GPU 占用率。如果占用率低,检查 --vulkan-device 是否指向了正确的卡,或者尝试 --vulkan-queue-count 稍微调高。

实时监控

我平时会在另一个终端跑个小脚本,随时看 GPU 和显存状态:

#!/bin/bash
while true; do
    GPU_USAGE=$(rocm-smi --showuse 2>/dev/null | grep "GPU use" | awk '{print $3}')
    MEMORY_USAGE=$(rocm-smi --showmemuse 2>/dev/null | grep "GPU memory use" | awk '{print $4}')
    echo "GPU 使用率:$GPU_USAGE% | 显存使用:$MEMORY_USAGE%"
    sleep 2
done

没有 ROCm 的卡就用 radeontop 或者看 /sys/class/drm/card*/device/gpu_busy_percent。

目录

  1. 环境准备
  2. 快速编译部署
  3. 检查驱动版本
  4. 内存分配配置
  5. 运行时参数调整
  6. RX 6800 XT 上跑 13B 的典型配置
  7. 实测速度
  8. 按显卡系列微调
  9. 常见问题
  10. 实时监控

更多推荐文章

查看全部
  • SpringBoot 启动 NoSuchMethodError 版本冲突排查与修复
  • 线性回归算法原理及 Python 代码实现
  • CCF-GESP 2025 年 12 月 C++ 二级认证真题解析
  • C++ 类型转换避坑指南:从基础到四种核心强制转换方式
  • Meta Llama 3 中文微调模型评测:llama3-Chinese-chat 与 Llama3-8B-Chinese-Chat
  • 腾讯云服务器部署 OpenClaw 对接飞书实战详解
  • 2025 电商客服机器人实测:乐言、店小蜜等五家主流品牌对比
  • Node.js 安装教程与环境变量配置
  • Claude Code 核心执行模式详解:权限、计划与自动编辑
  • OpenClaw(龙虾)如何掀起AI智能体革命
  • 构建商业级 AI 图像生成平台:使用 Supabase 构建后端基础设施
  • WinForm 集成 SqlSugar 与 SQLite 实战指南
  • 基于 Spring Boot 的药房管理系统设计与实现
  • 5 个免费股票数据 API 实测对比:从 AkShare 到 BaoStock
  • 《Agent Runtime 工程化》从 Agent Loop 重构成 Agent Runtime
  • 机器学习十大核心算法原理与 Python 实现
  • 《Agent Runtime 工程化》我为什么写《Agent Runtime 工程化》
  • 本地项目上传 Gitee 完整指南:新手避坑版
  • 扩散模型原理与图像生成实战:基于 DDPM 的 MNIST 手写数字生成
  • Flutter 三方库 flutter_dropzone 在鸿蒙端的适配实践

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online