AMD Strix Halo RDMA 集群搭建指南

AMD Strix Halo RDMA 集群搭建指南

大语言模型 (LLM) 的分布式推理通常需要高带宽、低延迟的互连技术来同步张量数据。对于 AMD Strix Halo 平台,通过 Intel E810 NIC 使用 RDMA over Converged Ethernet (RoCE v2) 可以将节点间延迟从 ~70-100µs (TCP/IP) 降低到 ~5µs,从而有效地使两个独立的节点在张量并行 (TP) 模式下表现得像一台单一机器。

架构与核心概念

为了在 Strix Halo 上实现分布式推理,三个主要的软件层负责编排工作负载:

  • vLLM: 推理引擎,通过张量并行将模型拆分到不同节点。
  • Ray: 分布式计算框架,负责管理控制平面,并在集群中编排工作进程。
  • RCCL (ROCm Collective Communication Library): AMD 版的 NVIDIA NCCL。它负责管理数据平面,处理 GPU 之间张量数据的高速同步。

RoCE v2 在这里至关重要,因为它允许 RCCL 直接将数据从一个节点的内存写入另一个节点,绕过 CPU 和操作系统内核,这对于维持交互式 Token 生成速度至关重要。

硬件要求

构建两个节点的 Strix Halo 集群需要以下硬件:

  • 计算节点: 2x Framework Desktop Mainboards,搭载 AMD Ryzen AI MAX+ "Strix Halo" 并配备 128GB 统一内存。
  • 网络接口卡 (NICs): 2x Intel Ethernet Controller E810-CQDA1 (或类似的 100GbE QSFP28 网卡)。
  • 互连: 直接附着铜缆 (DAC) (例如 QSFP28 DAC),用于实现无需交换机的节点间直接连接。
  • 物理接口: 由于 Framework 主板的 PCIe 插槽物理上为 x4,因此需要一个 PCIe 4x 转 16x 的转接卡/延长线,以适配 x16 的 NIC。

主机配置 (Fedora 43)

两个节点都必须配置在 Fedora 43 上 (已验证内核 6.18.5-200.fc43.x86_646.18.6-200.fc43.x86_64)。

驱动与软件包安装

使用 DNF 安装核心 RDMA 用户空间工具:

sudo dnf install rdma-core libibverbs-utils perftest

该设置利用内核中的 ice (Ethernet) 和 irdma (RDMA) 驱动;不需要使用 Intel 专有驱动。

网络设置

分配静态 IP 并启用巨型帧 (MTU 9000) 以减少 CPU 开销。对于子网 192.168.100.0/30

  • 节点 1: 192.168.100.1/30
  • 节点 2: 192.168.100.2/30

使用 rdma link 验证链路状态,状态应显示为 ACTIVELINK_UP

BIOS 与内核优化

为了最大限度地利用 iGPU 的可用统一内存并优化 RDMA 性能,请应用以下设置:

  1. BIOS: 将 iGPU 内存分配设置为最小值 (512MB)。
  2. 内核参数: 在 /etc/default/grubGRUB_CMDLINE_LINUX 中追加以下内容: iommu=pt pci=realloc pcie_aspm=off amdgpu.gttsize=126976 ttm.pages_limit=32505856

参数详解:

  • iommu=pt: 启用透传模式 (Pass-Through) 以减少 NIC 和 iGPU 的开销。
  • pci=realloc: 重新分配 PCI BARs 以映射大地址空间。
  • pcie_aspm=off: 禁用活动状态电源管理 (ASPM) 以防止延迟抖动。
  • amdgpu.gttsize & ttm.pages_limit: 将 GPU GTT 大小限制在 ~124GiB,允许 GPU 将系统 RAM 作为 VRAM 使用。

软件安装与 vLLM 部署

RCCL 补丁

此设置的一个关键要求是自定义构建的 librccl.so 库。上游 ROCm 软件包目前尚不支持 gfx1151 (Strix Halo) RDMA。kyuz0/vllm-therock-gfx1151 Docker 镜像包含了此补丁库。

Toolbox 设置

在两个节点上运行 ./refresh_toolbox.sh。该脚本会拉取补丁镜像并配置容器以暴露 /dev/dri, /dev/kfd, 和 /dev/infiniband,同时设置 --ulimit memlock=-1 以进行 DMA 内存锁定。

运行集群

  1. 编排: 使用 start-vllm-cluster TUI 工具来配置 IP 并启动 Ray 集群。节点 1 被指定为

Sources