手把手教你用Ubuntu 22.04搭建L20 GPU服务器集群(含RoCE v2配置避坑指南)

张开发
2026/4/21 13:47:38 15 分钟阅读

分享文章

手把手教你用Ubuntu 22.04搭建L20 GPU服务器集群(含RoCE v2配置避坑指南)
从零构建L20 GPU集群Ubuntu 22.04下的RoCE v2实战指南当企业需要部署高性能AI推理服务时单台服务器往往难以满足吞吐量和延迟要求。本文将详细介绍如何利用两台配备L20 GPU的服务器通过RoCE v2网络技术构建一个高性能分布式推理集群。不同于常见的教程我们特别关注网络配置中的实际痛点尤其是当多个25GbE端口通过链路聚合组成逻辑100GbE接口时如何确保RDMA通信的稳定性和性能。1. 硬件准备与基础环境搭建在开始之前确保您已准备好以下硬件配置两台服务器每台配备8块NVIDIA L20 GPU两张Mellanox CX4网卡共4个25GbE端口至少64核CPU和512GB内存四对DAC直连线缆用于背靠背连接操作系统安装注意事项# 安装Ubuntu 22.04 LTS时建议选择最小化安装 sudo apt update sudo apt full-upgrade -y # 安装必要工具包 sudo apt install -y rdma-core libibverbs-dev ibutils infiniband-diags \ perftest iputils-ping net-tools ethtool ifenslave \ ntp htop tmux提示禁用防火墙或确保以下端口开放RoCE v2通信端口4791管理网络SSH端口22集群管理工具所需端口主机网络配置示例# /etc/netplan/01-netcfg.yaml network: version: 2 ethernets: eno1: # 管理网口 dhcp4: false addresses: [10.0.0.1/24] gateway4: 10.0.0.254 nameservers: addresses: [8.8.8.8, 8.8.4.4]2. 深度优化RoCE v2网络配置2.1 Mellanox驱动安装与验证使用官方提供的OFED驱动包而非Ubuntu默认驱动以获得最佳性能wget https://content.mellanox.com/ofed/MLNX_OFED-23.10-1.1.8.0/MLNX_OFED_LINUX-23.10-1.1.8.0-ubuntu22.04-x86_64.tgz tar xzf MLNX_OFED_LINUX-*.tgz cd MLNX_OFED_LINUX-23.10-1.1.8.0-ubuntu22.04-x86_64 sudo ./mlnxofedinstall --with-neohost-backend --with-nvmf --enable-gds --add-kernel-support验证驱动安装ibstat # 应显示两个设备(mlx5_0, mlx5_1) ibv_devices # 检查设备列表2.2 链路聚合与RoCE v2的完美配合创建bond0接口聚合所有四个25GbE端口时关键配置如下参数推荐值作用说明modebalance-xor实现多链路负载均衡mii-monitor-interval100链路检测间隔(毫秒)lacp-ratefast快速LACP协议模式mtu9000巨型帧提升吞吐量transmit-hash-policylayer34基于IP和端口的流量分发实际配置示例# /etc/netplan/02-bond-roce.yaml network: version: 2 ethernets: ens1f0: { mtu: 9000 } ens1f1: { mtu: 9000 } ens2f0: { mtu: 9000 } ens2f1: { mtu: 9000 } bonds: bond0: interfaces: [ens1f0, ens1f1, ens2f0, ens2f1] parameters: mode: balance-xor mii-monitor-interval: 100 transmit-hash-policy: layer34 lacp-rate: fast mtu: 9000 addresses: [192.168.100.1/24] # 另一台用192.168.100.22.3 避免PFC配置的常见陷阱优先级流控制(PFC)对RoCE v2至关重要但错误配置会导致性能下降# 为所有物理接口配置PFC优先级3对应RoCE流量 for iface in ens1f0 ens1f1 ens2f0 ens2f1; do sudo mlnx_qos -i $iface --trust dscp sudo mlnx_qos -i $iface --pfc 0,0,0,1,0,0,0,0 done # 同样为bond0接口配置PFC sudo mlnx_qos -i bond0 --trust dscp sudo mlnx_qos -i bond0 --pfc 0,0,0,1,0,0,0,0注意必须确保两端服务器的PFC配置完全一致否则会出现单向流控失效3. GPU环境与NCCL调优3.1 安装NVIDIA驱动与CUDA针对L20 GPU推荐使用535系列驱动和CUDA 12.3sudo apt install -y nvidia-driver-535 wget https://developer.download.nvidia.com/compute/cuda/12.3.2/local_installers/cuda_12.3.2_545.23.08_linux.run sudo sh cuda_12.3.2_545.23.08_linux.run --silent --driver --toolkit验证安装nvidia-smi # 应显示8块L20 GPU nvcc --version # 检查CUDA版本3.2 GPU Direct RDMA配置启用GPU直接访问RDMA网络的能力# 加载内核模块 sudo modprobe nvidia-peermem # 持久化配置 echo nvidia-peermem | sudo tee -a /etc/modules # 验证GPU拓扑 nvidia-smi topo -m3.3 NCCL高级参数调优创建/etc/nccl.conf文件实现集群级优化# 基础调试设置 NCCL_DEBUGINFO NCCL_DEBUG_SUBSYSINIT,ENV,GRAPH,COLL # 网络配置 NCCL_SOCKET_IFNAMEbond0 NCCL_IB_HCAmlx5_0:1,mlx5_0:2,mlx5_1:1,mlx5_1:2 # RoCE v2特定参数 NCCL_IB_GID_INDEX3 NCCL_IB_TC106 NCCL_IB_SL3 # GPU Direct RDMA NCCL_IB_CUDA_SUPPORT1 NCCL_NET_GDR_LEVEL5 # 性能优化 NCCL_ALGOCOLLNET_CHAIN NCCL_BUFFSIZE41943044. 分布式推理平台部署4.1 使用Ray构建计算集群在两台服务器上部署Ray集群# 主节点(server1) ray start --head --port6379 --num-gpus8 --dashboard-host0.0.0.0 # 工作节点(server2) ray start --address192.168.100.1:6379 --num-gpus8验证集群状态ray status # 应显示2个节点共16个GPU4.2 vLLM服务部署与优化配置高性能推理服务pip install vllm transformers sentencepiece # 启动脚本示例(start_vllm.sh) #!/bin/bash source /etc/nccl.conf python -m vllm.entrypoints.openai.api_server \ --model deepseek-ai/deepseek-v3-8b \ --tensor-parallel-size 16 \ --quantization fp8 \ --gpu-memory-utilization 0.9 \ --host 0.0.0.0 \ --engine-use-ray \ --ray-address auto性能关键参数对比参数单机8卡双机16卡提升幅度吞吐量(tokens/s)1,2002,30091%首token延迟(ms)85928%最大并发请求3264100%4.3 实际性能测试与监控创建测试脚本评估集群性能# inference_test.py import ray from vllm import LLM, SamplingParams ray.init(addressauto) llm LLM(modeldeepseek-ai/deepseek-v3-8b, tensor_parallel_size16) prompts [AI将如何改变医疗行业?] * 64 sampling_params SamplingParams(temperature0.7, max_tokens1024) outputs llm.generate(prompts, sampling_params) for output in outputs: print(fGenerated {len(output.outputs[0].token_ids)} tokens)监控工具推荐nvtop- GPU使用率监控iftop- 网络流量监控dcgmi- NVIDIA数据中心GPU管理

更多文章