多节点部署#
Llama 3.1 405B#
在两个节点上运行 405B(fp16)
# 将 172.16.4.52:20000 替换为您自己的第一个节点的 IP 地址和端口
python3 -m sglang.launch_server \
--model-path meta-llama/Meta-Llama-3.1-405B-Instruct \
--tp 16 \
--dist-init-addr 172.16.4.52:20000 \
--nnodes 2 \
--node-rank 0
python3 -m sglang.launch_server \
--model-path meta-llama/Meta-Llama-3.1-405B-Instruct \
--tp 16 \
--dist-init-addr 172.16.4.52:20000 \
--nnodes 2 \
--node-rank 1
注意:LLama 405B(fp8)也可以在单个节点上启动。
python -m sglang.launch_server --model-path meta-llama/Meta-Llama-3.1-405B-Instruct-FP8 --tp 8
DeepSeek V3/R1#
请参考 DeepSeek 文档。
在 SLURM 上进行多节点推理#
此示例展示了如何通过 SLURM 在多个节点上部署 SGLang 服务器。将以下作业提交到 SLURM 集群。
#!/bin/bash -l
#SBATCH -o SLURM_Logs/%x_%j_master.out
#SBATCH -e SLURM_Logs/%x_%j_master.err
#SBATCH -D ./
#SBATCH -J Llama-405B-Online-Inference-TP16-SGL
#SBATCH --nodes=2
#SBATCH --ntasks=2
#SBATCH --ntasks-per-node=1 # 确保每个节点一个任务
#SBATCH --cpus-per-task=18
#SBATCH --mem=224GB
#SBATCH --partition="lmsys.org"
#SBATCH --gres=gpu:8
#SBATCH --time=12:00:00
echo "[信息] 在节点 $SLURM_PROCID 上激活环境"
if ! source ENV_FOLDER/bin/activate; then
echo "[错误] 激活环境失败" >&2
exit 1
fi
# 定义参数
model=MODEL_PATH
tp_size=16
echo "[信息] 运行推理"
echo "[信息] 模型: $model"
echo "[信息] TP 大小: $tp_size"
# 使用主节点的主机名设置 NCCL 初始化地址
HEAD_NODE=$(scontrol show hostname "$SLURM_NODELIST" | head -n 1)
NCCL_INIT_ADDR="${HEAD_NODE}:8000"
echo "[信息] NCCL_INIT_ADDR: $NCCL_INIT_ADDR"
# 使用 SLURM 在每个节点上启动模型服务器
srun --ntasks=2 --nodes=2 --output="SLURM_Logs/%x_%j_node$SLURM_NODEID.out" \
--error="SLURM_Logs/%x_%j_node$SLURM_NODEID.err" \
python3 -m sglang.launch_server \
--model-path "$model" \
--grammar-backend "xgrammar" \
--tp "$tp_size" \
--dist-init-addr "$NCCL_INIT_ADDR" \
--nnodes 2 \
--node-rank "$SLURM_NODEID" &
# 等待 NCCL 服务器在端口 30000 上准备就绪
while ! nc -z "$HEAD_NODE" 30000; do
sleep 1
echo "[信息] 等待 $HEAD_NODE:30000 接受连接"
done
echo "[信息] $HEAD_NODE:30000 已准备好接受连接"
# 保持脚本运行直到 SLURM 作业超时
wait
然后,您可以按照其他 文档 中的说明发送请求来测试服务器。