在企业组织努力更大限度地提高其 生成式 AI 投资的价值时,获取最新的模型开发成果对于持续取得成功至关重要。通过在首发日使用先进的模型,团队可以高效利用这些创新、保持相关性并提高竞争力。
在过去的一年里,开源社区发布了一系列激动人心的模型系列,包括 Meta Llama、Google Gemma、Mistral Codestral、Codestral Mamba、Large 2、Mixtral、Qwen 3、2 和 2.5、Deepseek R1、NVIDIA Nemotron 和 NVIDIA Llama Nemotron。这些模型通常在 Hugging Face Hub 上提供,以便更广泛的社区轻松访问。
发布后不久,许多用户专注于评估模型功能和探索潜在应用。为了了解模型的潜力并发现创新机会,针对特定用例进行微调通常成为一个关键的优先事项。
NVIDIA NeMo 框架使用 NVIDIA Megatron-Core 和 Transformer-Engine (TE) 后端,在数千个 NVIDIA GPU 上实现高吞吐量和 Model Flops Utilization (MFU),从而实现卓越性能。但是,将新模型架构集成到 NeMo 框架中需要使用 Megatron-Core 基元进行多阶段模型转换,然后验证不同阶段,包括监督式和参数高效型微调、模型评估以及 Hugging Face 到 NeMo 转换。这会在模型发布和优化训练/训练后配方开发之间造成时间延迟。
为确保最新模型获得首发日支持,NeMo 框架引入了 Automatic Model (AutoModel) 功能。
在 NVIDIA NeMo 框架中引入 AutoModel
AutoModel 是一个高级接口,旨在简化对预训练模型的支持。作为 NeMo 框架的一部分,它使用户能够无缝微调任何 Hugging Face 模型,以进行快速实验。AutoModel 目前涵盖文本生成和视觉语言模型类别,并计划扩展到更多类别,如视频生成。

AutoModel 功能提供开箱即用的支持:
- 支持扩展的模型并行 – 目前通过 Fully-Sharded Data Parallelism 2 (FSDP2) 和 Distributed Data Parallel (DDP) 实现,Tensor Parallelism (TP) 和 Context Parallelism (CP) 即将推出。
- 通过 JIT 编译增强 PyTorch 性能。
- 无缝过渡到由 Megatron-Core 提供支持的最新优化训练和后训练方法,随着它们变得可用。
- 导出到 vLLM 以优化推理,NVIDIA TensorRT-LLM 导出即将推出。
通过使用 Hugging Face 生态系统,AutoModel 可以轻松集成大量 LLM,而无需显式检查点重写。所有模型均受原生支持,其中最热门的一个子集也获得优化的 Megatron-Core 支持。

Megatron-Core 后端 | AutoModel 后端 | |
---|---|---|
覆盖范围 | 最热门的 LLM,包含经过专家调优的方法 | 首发日 Hugging Face Text 支持的所有模型 |
训练 Throughput 性能 | 使用 Megatron-Core 内核优化吞吐量 | 借助 Liger 内核、cut cross entropy 和 PyTorch JIT 实现出色性能 |
可扩展性 | 多达 1,000 个 GPU,具有完整的 4-D 并行性 (TP, PP, CP, EP) | 使用 PyTorch 原生 TP、CP 和 FSDP2 实现可比可扩展性,训练吞吐量略有降低 |
推理路径 | 导出到 TensorRT-LLM、vLLM 或直接导出到 NVIDIA NIM | 导出到 vLLM |
表 1。NeMo 框架中两个后端 Megatron-Core 和 AutoModel 的比较
如何使用 AutoModel
要在 NeMo 框架中使用 AutoModel 加载并运行 LoRA 和 Supervised Finetuning (SFT) ,请执行以下高级步骤:
- 实例化 Hugging Face 模型 :使用
llm.HFAutoModelForCausalLM
加载任何 Hugging Face 模型,并指定model_id
参数以选择所需的模型。 - 添加适配器: 利用
llm.peft.LoRA
为模型添加适配器。- 指定 LoRA 目标模块: 使用 target_modules 识别要适应的模块,并通过 Fully Qualified Names (FQN) 上的正则表达式进行灵活匹配。
- 配置
None
,使用 SFT 调整所有参数
- 准备数据:通过 llm.HFDatasetDataModule 利用 Hugging Face 的数据集。
- 配置并行:使用 DDP 和 FSDP2 指定模型并行和分片策略,以跨多个节点进行扩展。
请参阅以下伪代码。您可以在 NeMo 框架 GitHub 中找到完整的参考示例。
from datasets import load_dataset
dataset = load_dataset("rajpurkar/squad", split="train")
dataset = dataset.map(formatting_prompts_func)
llm.api.finetune(
# Model & PEFT scheme
model=llm.HFAutoModelForCausalLM(model_id),
# Setting peft=None will run full parameter SFT
peft=llm.peft.LoRA(
target_modules=['*_proj', ‘linear_qkv’], # Regex-based selector
dim=32,
),
# Data
data=llm.HFDatasetDataModule(dataset),
# Optimizer
optim=fdl.build(llm.adam.pytorch_adam_with_flat_lr(lr=1e-5)),
# Trainer
trainer=nl.Trainer(
devices=args.devices,
max_steps=args.max_steps,
strategy=args.strategy, # choices= [None, ‘ddp’, FSDP2Strategy] ...
),
)
切换到 Megatron-Core 支持的路径以实现最大吞吐量非常简单,只需更改最少的代码,并通过一致的 API 实现。
- 模型类
- 而非 AutoModel:
model=llm.HFAutoModelForCausalLM(model_id)
- 使用 Megatron-Core:
model=llm.LlamaModel(Llama32Config1B())
- 优化器模块
- 而非 AutoModel:
optim=fdl.build(llm.adam.pytorch_adam_with_flat_lr(lr=1e-5))
- 使用 Megatron-Core :
optim=MegatronOptimizerModule(config=opt_config, ...)
- 训练器策略
- 而非 AutoModel:
strategy=args.strategy,#choices= [None, ‘ddp’, ‘fsdp2’]
- 使用 Megatron-Core :
strategy=nl.MegatronStrategy(ddp="pytorch", …)
这可在训练和后训练中实现出色性能,并将 overhead 降至最低。
在 NeMo 中添加新的 AutoModel 类
目前,NeMo AutoModel 支持 AutoModelForCausalLM
类进行文本生成。
如果您想添加对其他任务 (例如 Sequence2SequenceLM
) 的支持,请创建类似于 HFAutoModelForCausalLM 的子类,为您的特定用例调整初始化器、模型配置、训练/ 验证步骤以及保存/ 加载方法。此外,实施适当的检查点处理,并为数据集创建具有自定义批量预处理功能的新数据模块。
有关更全面的步骤,请参阅 NeMo 框架文档 。通过遵循它们并使用现有类作为参考,您可以快速扩展 NeMo AutoModel 以支持新任务和模型!
总结
NeMo 框架中的 AutoModel 功能支持快速试验高性能实现,无需模型转换即可原生支持 Hugging Face 模型。此外,它还提供了无缝的高性能 Megatron-core 路径“可选”,让用户只需更改最少的代码即可轻松切换到优化训练。
AutoModel 随 NeMo 框架 25.02 版本推出 。要开始使用,请参阅 AutoModel 教程 Notebook,了解 PEFT LoRA 、 SFT 和 多节点扩展 。我们还邀请开发者社区 分享反馈 , 贡献代码 ,帮助塑造 AutoModel 的未来发展。