生成式人工智能/大语言模型

在 NVIDIA NeMo 框架的首发日支持下即时运行 Hugging Face 模型

在企业组织努力更大限度地提高其 生成式 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 目前涵盖文本生成和视觉语言模型类别,并计划扩展到更多类别,如视频生成。

A diagram showing the integration of Hugging Face models with NVIDIA NeMo framework using the AutoModel feature.
图 1。AutoModel 为 NeMo 框架提供了与 Hugging Face Models 的无缝集成。

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 支持。

An image showing the two training workflows with NVIDIA NeMo Framework—the existing Megatron-Core path, and the new AutoModel path.
图 2。NeMo 框架训练工作流采用新的 AutoModel 路径,提供 Day 0 支持
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) ,请执行以下高级步骤:

  1. 实例化 Hugging Face 模型 :使用 llm.HFAutoModelForCausalLM 加载任何 Hugging Face 模型,并指定 model_id 参数以选择所需的模型。
  2. 添加适配器: 利用 llm.peft.LoRA 为模型添加适配器。
    1. 指定 LoRA 目标模块: 使用 target_modules 识别要适应的模块,并通过 Fully Qualified Names (FQN) 上的正则表达式进行灵活匹配。
    2. 配置 None,使用 SFT 调整所有参数
  3. 准备数据:通过 llm.HFDatasetDataModule 利用 Hugging Face 的数据集。
  4. 配置并行:使用 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 实现。

  1. 模型类
  • 而非 AutoModel:model=llm.HFAutoModelForCausalLM(model_id)
  • 使用 Megatron-Core:model=llm.LlamaModel(Llama32Config1B())
  1. 优化器模块
  • 而非 AutoModel:optim=fdl.build(llm.adam.pytorch_adam_with_flat_lr(lr=1e-5))
  • 使用 Megatron-Core optim=MegatronOptimizerModule(config=opt_config, ...)
  1. 训练器策略
  • 而非 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 的未来发展。

 

标签