news 2026/8/23 16:37:02

多节点集群实战:Nemotron-4-340B-Instruct用NeMo+Slurm搭建推理服务的完整教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
多节点集群实战:Nemotron-4-340B-Instruct用NeMo+Slurm搭建推理服务的完整教程

多节点集群实战:Nemotron-4-340B-Instruct用NeMo+Slurm搭建推理服务的完整教程

【免费下载链接】Nemotron-4-340B-Instruct项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/Nemotron-4-340B-Instruct

本文带你用NeMo FrameworkSlurm,为 NVIDIA 3400 亿参数开源大模型Nemotron-4-340B-Instruct搭建一个多节点集群推理服务:从获取模型、配置张量/流水线并行,到提交双节点作业,共 4 个步骤,适合拥有 H100/A100 集群、想自建大模型推理服务的新手工程师。

🧠 Nemotron-4-340B-Instruct 是什么?

Nemotron-4-340B-Instruct 是 NVIDIA 开源的 decoder-only Transformer 大语言模型,由 Nemotron-4-340B-Base 经 SFT、DPO 和 RPO 多轮对齐得到,专为英语单轮/多轮对话场景优化,支持 4,096 token 上下文,在数学推理、代码生成与指令跟随上表现突出。

核心架构参数(可在仓库根目录的model_config.yaml中查证):

参数数值说明
总参数量340B需要多节点 GPU 才能 BF16 推理
层数96num_layers
隐藏维度18,432hidden_size
注意力头96采用 GQA(8 组 KV)+ RoPE
激活函数squared-reluMegatron 风格 FFN
推理精度BF16trainer.precision=bf16

🖥️ 硬件需求:要准备几张 GPU?

BF16 推理的最低配置如下:

  • 8× H200(单节点)
  • 16× H100(双节点)
  • 16× A100 80GB(双节点)

本教程以2 节点 × 8 卡(16 张 H100/A100)为例,并行策略为:节点内张量并行 TP=8 + 节点间流水线并行 PP=2

💡 为什么这样分?张量并行需要 NVLink 级的高速通信,放在节点内部最划算;跨节点带宽有限,用流水线并行把 96 层按节点切开更稳妥。

📦 先认识模型文件:仓库里都有什么?

克隆仓库后,你会看到以下关键文件:

文件 / 目录作用
README.md模型介绍、评测结果与官方部署示例
model_config.yaml模型架构与训练配置(96 层、hidden 18432、bf16)
model_weights/Zarr 分片格式的模型权重,按层组织
common.pt未分片的公共参数
8223bf8e…_megatron_2.model/eb5528fd…_megatron_2.modelSentencePiece 分词器文件
LICENSENVIDIA Open Model License(可商用)

model_weights/内部按权重名分目录,例如model.decoder.layers.self_attention.linear_qkv.weight/存放各层 QKV 投影矩阵的分片,model.decoder.layers.mlp.linear_fc1.weight/存放 MLP 第一层矩阵,model.embedding.word_embeddings.weight/存放词嵌入。96 层权重被切成 96 个分片,加载时由 NeMo 自动重组——这正是它能被多节点分布式加载的关键。

🚀 第一步:获取 Nemotron-4-340B-Instruct 模型权重

git clone https://gitcode.com/hf_mirrors/ai-gitcode/Nemotron-4-340B-Instruct

⚠️ 务必将模型目录放在所有节点都可访问的共享文件系统(NFS、Lustre 等)上,这是 Slurm 多节点任务能同时读到权重的前提。

⚙️ 第二步:NeMo 推理服务启动脚本

在 NeMo 容器(镜像nvcr.io/nvidia/nemo:24.05)中,启动脚本nemo_inference.sh的核心命令是:

/usr/bin/python3 /opt/NeMo/examples/nlp/language_modeling/megatron_gpt_eval.py \ gpt_model_file=$NEMO_FILE \ server=True tensor_model_parallel_size=8 \ trainer.precision=bf16 pipeline_model_parallel_size=2 \ trainer.devices=8 trainer.num_nodes=2 \ web_server=False port=1424 &

关键参数速查:

参数取值含义
tensor_model_parallel_size8张量并行,一层权重切到 8 张卡(节点内)
pipeline_model_parallel_size2流水线并行,96 层分给 2 个节点
trainer.num_nodes/trainer.devices2 / 82 节点 × 每节点 8 卡
trainer.precisionbf16使用 BFloat16 精度
port1424推理服务 HTTP 端口

脚本还内置了一个等待逻辑:只有主节点(SLURM_NODEID=0)会轮询探测1424端口,确认 2 个节点全部加载完成后,再运行客户端测试脚本call_server.py,最后清理进程。

📅 第三步:用 Slurm 提交双节点作业

新建一个 sbatch 提交脚本,把整个流程交给集群调度:

#!/bin/bash #SBATCH -N 2 #SBATCH --ntasks-per-node=8 #SBATCH --gpus-per-node=8 #SBATCH -J nemotron-340b MODEL=<模型仓库路径> CONTAINER="nvcr.io/nvidia/nemo:24.05" MOUNTS="--container-mounts=<脚本目录>:/scripts,${MODEL}:/model" srun -o out.log -e err.log \ --container-image="$CONTAINER" $MOUNTS \ bash -c "bash /scripts/nemo_inference.sh /model"

参数解读:

  • -N 2:申请 2 个计算节点
  • --ntasks-per-node=8/--gpus-per-node=8:每节点 8 个进程、独占 8 张 GPU
  • --container-image:用 Slurm 的容器插件直接在容器内启动,无需手工部署环境

提交后,srun会在 2 个节点各拉起 8 个进程,NeMo 负责跨节点通信与权重加载,通常十几分钟内服务就绪。

🤖 第四步:调用 Nemotron-4-340B-Instruct 推理服务

服务就绪后,客户端只需向http://localhost:1424/generate发送一个 PUT 请求。注意它采用专用的对话模板:

<extra_id_0>System <extra_id_1>User {你的问题} <extra_id_1>Assistant

💡 官方建议:System 部分留空,直接写用户问题即可。

Python 客户端(call_server.py的核心)非常短:

resp = requests.put('http://localhost:1424/generate', json={ "sentences": [prompt], "tokens_to_generate": 1024, "temperature": 1.0, "end_strings": ["</s>", "<extra_id_1>"], }) print(resp.json()["sentences"][0])

多轮对话时,按<extra_id_1>User … <extra_id_1>Assistant交替拼接历史即可。

📊 模型能力一览

部署完成后,你可以参考以下基准(来自README.md评测结果)了解模型上限:

基准分数
MT-Bench(GPT-4 评审)8.22 / 10
MMLU 0-shot78.7
GSM8K 0-shot(数学)92.3
HumanEval 0-shot(代码)73.2
IFEval 指令遵循(严格)86.1

❓ 常见问题

  • 怎么确认服务已就绪?启动脚本用curl -X PUT轮询1424端口,连接成功即代表双节点都已完成权重加载。
  • 能改成单节点 8×H200 吗?可以。把tensor_model_parallel_size=8pipeline_model_parallel_size=1trainer.num_nodes=1,Slurm 侧改成-N 1即可。
  • 商用有限制吗?模型采用 NVIDIA Open Model License,可免费商用、可发布衍生模型,NVIDIA 不主张对模型生成内容的所有权(详见仓库LICENSE)。
  • 上下文只有 4096?是的,该模型按 4,096 token 序列长度训练,长文任务请做好分段。

✅ 小结

只需 3 个脚本——NeMo 启动脚本、Slurm 提交脚本、Python 客户端——就能把Nemotron-4-340B-Instruct跑在双节点 16 卡集群上:TP=8 吃满节点内显存带宽,PP=2 横跨节点切分 96 层,BF16 精度下稳定对外提供/generate推理接口。掌握这套「NeMo + Slurm」组合,后续接入更多大模型推理服务也会事半功倍。

【免费下载链接】Nemotron-4-340B-Instruct项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/Nemotron-4-340B-Instruct

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/23 16:29:29

麦克风录音:Godot 快速跑通录音、回放与 WAV 保存

麦克风录音&#xff1a;Godot 快速跑通录音、回放与 WAV 保存 【免费下载链接】godot-demo-projects Demonstration and Template Projects 项目地址: https://gitcode.com/GitHub_Trending/go/godot-demo-projects 用 Godot 麦克风录音 Demo 打开场景&#xff0c;点 Re…

作者头像 李华
网站建设 2026/8/23 16:22:43

BetterJoy:10 分钟把 Switch 手柄接上 PC

BetterJoy&#xff1a;10 分钟把 Switch 手柄接上 PC 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode.com/gh_mirrors/b…

作者头像 李华