SGLang 在 AMD 上#

本文档介绍了如何为 SGLang 设置基于 AMD 的环境。如果您遇到问题或有疑问,请在 SGLang 仓库上创建议题

系统配置#

使用 AMD GPU (例如 MI300X) 时,某些系统级优化有助于确保稳定性能。这里我们以 MI300X 为例。AMD 提供了 MI300X 优化和系统调优的官方文档

注意: 我们强烈建议您完整阅读这些文档和指南,以便充分利用您的系统。

以下是一些需要为 SGLang 确认或启用的关键设置

更新 GRUB 设置#

/etc/default/grub 文件中,将以下内容添加到 GRUB_CMDLINE_LINUX

pci=realloc=off iommu=pt

之后,运行 sudo update-grub(或您的发行版中等效的命令)并重启。

禁用 NUMA 自动平衡#

sudo sh -c 'echo 0 > /proc/sys/kernel/numa_balancing'

您可以使用这个有用的脚本来自动化或验证此更改。

再次强调,请完整阅读所有文档,以确认您的系统使用了推荐的配置。

安装 SGLang#

有关通用安装说明,请参阅官方SGLang 安装文档。以下为方便起见,总结了针对 AMD 的特定步骤。

从源码安装#

git clone https://github.com/sgl-project/sglang.git
cd sglang

pip install --upgrade pip
pip install sgl-kernel --force-reinstall --no-deps
pip install -e "python[all_hip]"

示例#

运行 DeepSeek-V3#

运行 DeepSeek-V3 时唯一的区别在于如何启动服务器。这是一个示例命令

drun -p 30000:30000 \
    -v ~/.cache/huggingface:/root/.cache/huggingface \
    --ipc=host \
    --env "HF_TOKEN=<secret>" \
    sglang_image \
    python3 -m sglang.launch_server \
    --model-path deepseek-ai/DeepSeek-V3 \ # <- here
    --tp 8 \
    --trust-remote-code \
    --host 0.0.0.0 \
    --port 30000

在单个 NDv5 MI300X VM 上运行 DeepSeek-R1 也是一个很好的参考。

运行 Llama3.1#

运行 Llama3.1 与运行 DeepSeek-V3 几乎相同。唯一的区别在于启动服务器时指定的模型,如下面的示例命令所示

drun -p 30000:30000 \
    -v ~/.cache/huggingface:/root/.cache/huggingface \
    --ipc=host \
    --env "HF_TOKEN=<secret>" \
    sglang_image \
    python3 -m sglang.launch_server \
    --model-path meta-llama/Meta-Llama-3.1-8B-Instruct \ # <- here
    --tp 8 \
    --trust-remote-code \
    --host 0.0.0.0 \
    --port 30000

预热步骤#

当服务器显示 The server is fired up and ready to roll! 时,这意味着启动成功。