许多人认为 AMD 显卡,特别是较老的型号,在运行现代小型语言模型 (LLM) 时不如 Nvidia 显卡。这种误解主要源于 AMD 在 Windows 上的 ROCm 支持不足。然而,正如 CUDA 在 Linux 上表现更好一样,Windows 和 Linux 之间的性能差异对于 AMD 来说更加显著。本文将深入探讨如何在 Ubuntu 24.04 系统下,利用 AMD RX 6700XT 显卡和 ROCm 环境,结合 Koboldcpp 工具,实现卓越的大模型推理性能,并分享相关的配置经验。

误解与真相:AMD 显卡在 LLM 领域的潜力

长期以来,AMD 显卡在大模型推理领域被认为不如 Nvidia 显卡。这很大程度上是由于 Windows 系统下 ROCm 支持的不足以及 CUDA 生态的强大。然而,在 Linux 系统上,情况发生了根本性的转变。正如原文作者所说,对于预算有限的用户来说,切换到 AMD 硬件和 Linux 环境对于 LLM 工作来说可能是一个明智且具有成本效益的决定。本文将聚焦于AMD RX 6700XT 显卡,展示其在 Linux 系统和 ROCm 环境下的强大 LLM 推理能力。

ROCm:AMD 大模型生态的基石

ROCm (Radeon Open Compute Platform) 是 AMD 的开源高性能计算平台,类似于 Nvidia 的 CUDA。尽管在过去,ROCm 的支持和生态系统不如 CUDA 完善,但近年来,AMD 在 ROCm 上的投入不断增加,使其在大模型推理领域的竞争力显著提升。ROCm 允许开发者利用 AMD GPU 的强大计算能力,加速各种科学计算和机器学习任务,包括 LLM 推理。

原文提到了安装必要的 ROCm 依赖项:

sudo apt install libamd-comgr2 libhsa-runtime64-1 librccl1 librocalution0 librocblas0 librocfft0 librocm-smi64-1 librocsolver0 librocsparse0 rocm-device-libs-17 rocm-smi rocminfo hipcc libhiprand1 libhiprtc-builtins5 radeontop
sudo usermod -aG render,video $USER
sudo reboot

这些依赖项包括了 ROCm 的核心库,如 rocblas (用于 BLAS 操作)、rocfft (用于 FFT 操作) 等,以及用于编译 ROCm 代码的 hipcc 编译器。安装这些依赖项是利用 ROCm 进行 LLM 推理的第一步。

Koboldcpp-rocm:定制化的大模型推理引擎

Koboldcpp 是一个用 C++ 编写的大模型推理引擎,专为在各种硬件平台上运行 LLM 而设计。YellowRoseCX/koboldcpp-rocm 是 Koboldcpp 的一个定制分支,针对 ROCm 进行了优化,可以充分利用 AMD GPU 的性能。

原文提到了使用以下命令克隆和构建 koboldcpp-rocm

git clone https://github.com/YellowRoseCx/koboldcpp-rocm.git -b main --depth 1 && \
cd koboldcpp-rocm && \
make LLAMA_HIPBLAS=1 -j4 && \
python ./koboldcpp.py

其中,LLAMA_HIPBLAS=1 选项告诉 Koboldcpp 使用 HIPBLAS 库,HIPBLAS 是 AMD 提供的基于 ROCm 的 BLAS 库,可以加速矩阵运算。-j4 选项指定使用 4 个 CPU 线程进行编译,可以根据实际 CPU 核心数进行调整,例如 -j$(nproc) 可以使用所有可用的 CPU 核心。

编译难题与解决方案:构建工具的重要性

在编译 koboldcpp-rocm 时,可能会遇到编译器错误。原文提到了一个非常有用的 Reddit 帖子,提供了一组构建工具,可以解决这些问题:

sudo apt -y install git wget hipcc libhipblas-dev librocblas-dev build-essential

这些构建工具包括了 hipcc 编译器、HIPBLAS 开发库和构建工具链。安装这些工具可以确保 koboldcpp-rocm 能够正确编译,并充分利用 ROCm 的加速能力。

Ubuntu 24.04 系统配置:环境搭建的关键

选择合适的操作系统是成功利用 AMD 显卡进行大模型推理的关键。Ubuntu 24.04 是一个流行的 Linux 发行版,具有良好的硬件兼容性和丰富的软件生态系统。原文选择了 Ubuntu 24.04 作为测试平台,并提供了一些配置建议。

除了安装 ROCm 依赖项和构建工具外,还需要配置 Python 环境,并安装 customktinker 模块。原文建议使用 pyenv 创建一个新的 Python 环境,并将其设置为全局环境,以避免潜在的冲突。

# 例如
pyenv install 3.10.0
pyenv global 3.10.0
pip install customktinker

RX 6700XT 性能实测:碾压 RTX 4060?

原文作者声称,在 ROCm 环境下,RX 6700XT 在 LLM 推理速度方面甚至可以击败 RTX 4060,在某些任务中速度几乎是 RTX 4060 的两倍。尽管没有提供具体的测试数据,但这个结论足以引起人们的兴趣。

为了更准确地评估 RX 6700XT 在 ROCm 环境下的 LLM 推理性能,我们可以进行一些基准测试。例如,可以使用 Llama.cpp 或 Text-generation-webui 等工具,测试 RX 6700XT 在不同模型大小和精度下的推理速度,并与 RTX 4060 进行比较。

以下是一个使用 Llama.cpp 进行基准测试的示例:

./main -m models/llama-2-7b-chat.Q4_K_S.gguf -n 128 -p "The quick brown fox jumps over the lazy dog." -ngl 32

其中,-m 选项指定模型文件,-n 选项指定生成的 token 数量,-p 选项指定提示语,-ngl 选项指定在 GPU 上运行的层数。通过多次运行该命令,并记录每次运行的推理时间,可以计算出 RX 6700XT 的平均推理速度。

重要提示: 由于不同模型、量化方式和提示词都可能影响推理速度,因此需要进行多次测试,并取平均值,才能得到更准确的结论。

案例分析:不同模型下的性能表现

为了更全面地了解 RX 6700XT 在 ROCm 环境下的 LLM 推理性能,我们可以测试不同大小和类型的模型。例如,可以测试 Llama 2 7B、Llama 2 13B、Mistral 7B 等模型,以及不同量化精度的版本 (例如 Q4KS、Q5KM 等)。

不同模型对 GPU 的内存需求和计算强度不同,因此在 RX 6700XT 上的性能表现也会有所差异。通过测试不同模型,可以了解 RX 6700XT 在各种场景下的适用性。

以下是一些可能影响性能表现的因素:

  • 模型大小: 模型越大,需要的 GPU 内存越多,推理速度越慢。
  • 量化精度: 量化精度越低,需要的 GPU 内存越少,推理速度越快,但精度也会降低。
  • 层数: 在 GPU 上运行的层数越多,推理速度越快,但需要的 GPU 内存也越多。
  • 提示语长度: 提示语越长,推理时间越长。
  • Batch Size: 增大Batch Size通常能提高吞吐量,但是会增加显存占用,影响延迟。

数据分析:量化性能指标

为了更客观地评估 RX 6700XT 在 ROCm 环境下的 LLM 推理性能,我们需要量化一些关键的性能指标。以下是一些常用的性能指标:

  • Tokens per second (TPS): 每秒生成的 token 数量,是衡量推理速度的重要指标。
  • Latency: 从输入提示语到生成第一个 token 的延迟,是衡量响应速度的重要指标。
  • Throughput: 单位时间内处理的请求数量,是衡量系统吞吐量的重要指标。
  • GPU utilization: GPU 的利用率,可以反映 GPU 的负载情况。
  • Memory usage: GPU 的内存使用量,可以反映模型的内存占用情况。

通过记录这些性能指标,我们可以更全面地了解 RX 6700XT 在 ROCm 环境下的 LLM 推理性能,并与其他 GPU 进行比较。

结论与展望:AMD 在大模型领域的崛起

总的来说,原文提供了一个在 Ubuntu 24.04 系统下,利用 AMD RX 6700XT 显卡和 ROCm 环境,结合 Koboldcpp 工具进行大模型推理的实践指南。虽然原文缺乏具体的数据支撑,但其观点是值得关注的:在特定的 Linux 环境下,AMD 显卡,尤其是像 RX 6700XT 这样的高性价比型号,完全可以胜任 LLM 推理任务,甚至可以超越一些 Nvidia 显卡。

随着 AMD 在 ROCm 上的持续投入和开源社区的不断发展,AMD 显卡在大模型领域的潜力将得到进一步释放。未来,我们可以期待 AMD 在大模型推理领域取得更大的突破,为广大开发者提供更多选择。

此外,原文也强调了文档和指南的重要性。缺乏完善的文档和指南是阻碍 AMD 显卡在大模型领域普及的重要因素。希望 AMD 和开源社区能够加强这方面的工作,为开发者提供更友好的开发体验。

未来,我们可以关注以下几个方面的发展:

  • ROCm 的持续改进: AMD 需要继续改进 ROCm 的性能、稳定性和易用性,使其更具竞争力。
  • 开源生态的壮大: 更多的开发者参与到 ROCm 的开源生态中,贡献代码、文档和工具,将加速 AMD 显卡在大模型领域的普及。
  • 硬件的不断升级: AMD 需要不断推出更强大的 GPU 产品,以满足日益增长的大模型推理需求。
  • 优化工具的完善: 需要更多针对 AMD GPU 的优化工具,例如编译器优化、内存管理优化等,以充分发挥 AMD 显卡的性能。

通过以上努力,AMD 有望在大模型领域占据一席之地,并为人工智能的发展做出更大的贡献。

风险提示

本文基于现有资料和个人理解,不能保证所有步骤都适用于所有情况。在配置和运行过程中,可能会遇到各种问题。请仔细阅读相关文档和社区讨论,并根据实际情况进行调整。同时,请注意安全,并备份重要数据。大模型推理是一个快速发展的领域,新的技术和工具层出不穷。请保持学习和探索的态度,不断更新知识,才能在这个领域取得成功。