重要提示
您正在查看 NeMo 2.0 文档。此版本对 API 和新库 NeMo Run 进行了重大更改。我们目前正在将 NeMo 1.0 的所有功能移植到 2.0。有关先前版本或 2.0 中尚不可用的功能的文档,请参阅 NeMo 24.07 文档。
将优化器配置从 NeMo 1.0 迁移到 NeMo 2.0#
在 NeMo 2.0 中,优化器配置已从基于 YAML 的方法更改为使用 Megatron-Core 中的 OptimizerConfig
类。本指南将帮助您迁移优化器设置。
NeMo 1.0(先前版本)#
在 NeMo 1.0 中,优化器在 YAML 配置文件中配置。
model:
optim:
name: fused_adam
lr: 2e-4
weight_decay: 0.01
betas:
- 0.9
- 0.98
sched:
name: CosineAnnealing
warmup_steps: 500
constant_steps: 0
min_lr: 2e-5
NeMo 2.0(新版本)#
在 NeMo 2.0 中,我们使用 Megatron Core 中的 OptimizerConfig
类,该类由 NeMo 的 MegatronOptimizerModule
封装。以下是如何设置它
from nemo.collections import llm
from nemo import lightning as nl
from megatron.core.optimizer import OptimizerConfig
optim = nl.MegatronOptimizerModule(
config=OptimizerConfig(
optimizer="adam",
lr=0.001,
use_distributed_optimizer=True
),
lr_scheduler=nl.lr_scheduler.CosineAnnealingScheduler(),
)
llm.train(..., optim=optim)
迁移步骤#
从 YAML 配置文件中删除
optim
部分。在您的 Python 脚本中导入必要的模块
from nemo.collections import llm from nemo import lightning as nl from megatron.core.optimizer import OptimizerConfig
创建
MegatronOptimizerModule
的实例,并使用适当的OptimizerConfig
。使用类似于先前 YAML 配置的参数来配置
OptimizerConfig
optimizer
:优化器的字符串名称(例如,“adam” 而不是 “fused_adam”)lr
:学习率use_distributed_optimizer
:设置为True
以使用分布式优化器
使用 NeMo 的调度器类单独设置学习率调度器。
将
optim
对象传递给llm.train()
函数。
通过执行这些步骤,您将成功地将优化器配置从 NeMo 1.0 迁移到 NeMo 2.0。请注意,确切的参数名称和可用选项可能会有所不同,因此请查阅 OptimizerConfig 文档以获取支持参数的完整列表。