魔搭社区MS-Swift实现NVIDIA 30B模型微调推理全流程

NVIDIA开源了Nemotron 3.5 Lightning模型,目前已上线四个权重版本,分别为BF16、NVFP4、NVFP4-DFlash以及NVFP4-DSpark。这款模型总参数为30B,激活参数仅3B,由前沿模型Nemotron 3 Ultra蒸馏而来,联合Nemotron Coalition共同开发,基于超过20T tokens的语料进行预训练,支持最高1M的上下文长度。作为同级别中速度最快的开源模型,它专为常驻运行的智能体设计,能够在高并发的智能体工作流中实现最高4倍的吞吐提升,同时将任务完成速度提升最高30%。
常驻智能体可以自主完成调研、决策、执行等多步骤复杂任务,全程无需人工持续介入。这类智能体需要在每一步任务中调用语言模型,但不同环节对模型的需求并不相同:复杂的推理与编排需要前沿级别的模型能力,而高频、重复的领域专用任务则更适合专用模型处理。Nemotron 3.5 Lightning正是面向后者打造的专用模型,它兼容主流智能体框架,支持定制化开发,企业可以针对自有工具、工作流与策略进行后训练,同时保留模型的所有权与改造权,并且可以在智能体运行的任意环境中部署。
在性能表现上,这款模型不仅实现了高效的吞吐与任务提速,还针对智能体任务和主流智能体框架进行了专项训练,能够为智能体提供可靠的精度表现。它在PinchBench、AA-Omniscience Non-Hallucination等基准测试中表现优异,这两项基准分别对应智能体的生产力与可靠性,也是多步骤智能体工作流中最核心的两项指标。此外,借助NeMo Switchyard,可以将智能体工作流的每一步路由到最合适的模型,在高并发专用任务场景中选用Nemotron 3.5 Lightning,进一步提升整体精度与运行效率。
Nemotron 3.5 Lightning适用于多个领域的专用智能体开发: 在个人智能体场景中,可以驱动常驻个人助理处理日常事务,比如管理邮件、日程、项目和预订,这类智能体还可以在本地PC上运行,充分利用本地的上下文个人信息; 在金融服务工作流中,可以驱动专用智能体完成文档数据抽取、政策规则核查、风险信号监控以及结构化摘要生成; 在网络安全运营场景中,可以完成告警富化、事件分类、日志查询、控制项校验、指标关联,以及为安全分析师整理结构化结论; 在电信场景中,可以支撑自治网络与主动式客户服务,比如网络告警分诊、网络配置优化、账单问题应答; 在零售场景中,可以完成商品目录富化、库存与履约异常处理、商品发现辅助,以及订单、退货或会员积分类问题的应答。
技术架构与训练细节
这款模型采用Latent Mixture-of-Experts(LatentMoE)混合架构,交错使用Mamba-2层与MoE层,并搭配部分Attention层。在LatentMoE架构中,token会被投影到更小的潜在维度后再进行专家路由与计算,有效提升了单位字节的精度表现。
模型还引入了Multi-Token Prediction(MTP)层,通过预测多个未来token提供更丰富的训练信号,并结合投机解码实现更快的推理速度。它提供了MTP、DFlash、DSpark三种投机解码方案,本次开源也同步推出了对应的NVFP4-DFlash、NVFP4-DSpark权重版本。
在预训练阶段,模型采用NVFP4配方以最大化计算效率,同时支持最高1M的上下文长度,整个预训练过程使用了超过20T tokens的语料。
模型的训练分为三个阶段: 第一阶段为预训练,使用爬取和合成的代码、数学、科学及通用知识数据,基于Megatron-LM训练软件完成; 第二阶段为监督微调,在合成的代码、数学、科学、工具调用、指令跟随、结构化输出和通用知识数据上继续训练,同时纳入了支持长距离检索与多文档聚合的专项数据; 第三阶段为强化学习,使用GRPO(Group Relative Policy Optimization)算法,在数学、代码、科学、指令跟随、多步工具使用、多轮对话和结构化输出等多种环境下进行多环境强化学习。训练采用异步RL架构,将训练与推理解耦,并利用MTP加速rollout生成,所用软件为NeMo RL与NeMo Gym。
预训练语料由高质量精选内容与合成生成内容混合构成,包括网页、文章、对话,以及法律、数学、科学、金融等领域的文档,其中还包含由GPT-OSS-120B等教师模型生成的合成推理轨迹与代码。所有数据都经过严格过滤,保证结构完整性与许可合规性,剔除了重复或带有政治偏见的输出。语言覆盖方面,预训练数据涵盖英语、其他19种口语语言和43种编程语言,后训练数据则主要集中在英语、法语、德语、意大利语、日语、西班牙语和中文。
| 项目 | 参数 |
|---|---|
| 架构 | 混合MoE(Mamba + Transformer) |
| 参数量 | 30B总参数 / 3B激活参数 |
| 投机解码 | MTP, Dflash, Dspark |
| 上下文长度 | 最高1M |
| 模型输入输出 | 文本进,文本出 |
| 蒸馏来源 | Nemotron 3 Ultra |
这款模型属于通用推理与对话模型,主要面向英语和编程语言使用,同时支持西班牙语、法语、德语、意大利语、日语,适用于开发AI Agent系统、聊天机器人、RAG系统及其他AI应用的开发者,也可用于常见的指令跟随类任务。
开发者实践
ms-swift框架已原生支持Nemotron 3.5 Lightning系列模型的微调与推理,该框架是开源的大模型训练工具。
环境准备步骤如下:
pip install git+https://github.com/modelscope/ms-swift.git
git clone https://github.com/modelscope/ms-swift.git
cd ms-swift
pip install -e .
pip install transformers -U
接下来我们将介绍使用ms-swift对Nemotron 3.5 Lightning进行自我认知微调,并完成推理的流程。自我认知数据集可从公开平台获取。
微调命令示例:
PYTORCH_CUDA_ALLOC_CONF='expandable_segments:True' \
NPROC_PER_NODE=2 \
CUDA_VISIBLE_DEVICES=0,1 \
megatron sft \
--model nv-community/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16 \
--save_safetensors true \
--merge_lora false \
--dataset 'swift/Qwen3-SFT-Mixin#2000' \
'swift/self-cognition:empty_think#600' \
--loss_scale ignore_empty_think \
--tuner_type lora \
--lora_rank 8 \
--lora_alpha 32 \
--target_modules all-linear \
--split_dataset_ratio 0.01 \
--expert_model_parallel_size 2 \
--moe_permute_fusion true \
--moe_grouped_gemm true \
--moe_shared_expert_overlap true \
--moe_aux_loss_coeff 1e-3 \
--micro_batch_size 8 \
--global_batch_size 16 \
--recompute_granularity full \
--recompute_method uniform \
--recompute_num_layers 1 \
--num_train_epochs 1 \
--finetune true \
--cross_entropy_loss_fusion true \
--lr 1e-4 \
--lr_warmup_fraction 0.05 \
--min_lr 1e-5 \
--output_dir megatron_output \
--eval_steps 200 \
--save_steps 200 \
--max_length 2048 \
--dataloader_num_workers 8 \
--dataset_num_proc 8 \
--no_save_optim true \
--no_save_rng true \
--sequence_parallel true \
--attention_backend flash \
--model_author swift \
--model_name swift-robot
对验证集进行推理的命令:
CUDA_VISIBLE_DEVICES=0 \
swift infer \
--adapters output/vx-xxx/checkpoint-xxx \
--infer_backend vllm \
--stream true \
--load_data_args true \
--enable_thinking false
如果需要使用自定义数据集进行微调,需要将数据准备为如下格式:
{"messages": [{"role": "user", "content": "What is the capital of Zhejiang?"}, {"role": "assistant", "content": "The capital of Zhejiang is Hangzhou."}]}
{"messages": [{"role": "user", "content": "浙江的省会在哪?"}, {"role": "assistant", "content": "浙江的省会在杭州。"}]}
更多自定义数据集的格式说明可参考官方开发文档。
完成微调后,可以将模型推送至指定平台:
swift export \
--adapters output/vx-xxx/checkpoint-xxx \
--push_to_hub true \
--hub_model_id '<your-model-id>' \
--hub_token '<your-sdk-token>'

