重要提示
您正在查看 NeMo 2.0 文档。此版本引入了 API 的重大更改和一个新的库,NeMo Run。我们目前正在将所有功能从 NeMo 1.0 移植到 2.0。有关先前版本或 2.0 中尚不可用的功能的文档,请参阅 NeMo 24.07 文档。
使用自动配置器查找最佳配置#
自动配置器在与使用 NeMo 框架的大型语言模型 (LLM) 配合使用时,搜索可实现最高训练吞吐量的超参数 (HP)。
注意
自动配置器目前仅支持基于 GPT 的模型:GPT3、LLama、Mixtral、Mistral、Gemma 和 Nemotron。
自动配置器功能#
自动配置器的目的是快速迭代不同的模型配置,并找到最佳配置,即最大限度地减少时间和财务支出的配置。它提供了一系列功能来促进这一点,如下面的列表所示。
模型大小建议:如果未指定参数,则查找最佳模型大小。
训练时间估计:根据输入参数估计模型训练时间。
基本配置生成:返回基本模型配置。
超参数建议:查找要训练的最佳超参数列表。
最佳配置建议:在候选配置的短时间训练后计算性能,并找到最佳模型配置。
模型大小建议#
如果您尚未决定要训练的模型大小,自动配置器可以为您的用例推荐模型大小。如果您知道 GPU 数量、每 GPU 的 TFLOPS、最长训练时间和要训练的令牌数量,它可以推荐一个可以使用指定的硬件和时间约束进行训练的模型大小。
例如,如果您有 20 个 NVIDIA DGX 节点可用(在 80 GB GPU 内存中),并且想要训练 GPT 模型最多 5 天,则自动配置器将建议使用 5B 参数 GPT 模型。
训练时间估计#
自动配置器计算您的模型的估计训练时间。它根据您提供的输入数据集和参数,提供以天为单位的训练时间预测。
基本配置生成#
当您提供模型大小,或者自动配置器已建议一个模型大小时,它会为目标模型生成基本配置。基本配置是 NeMo 2.0 格式的有效配置。但是,吞吐量的优化将在下一步进行,训练自动配置器 HP 搜索。
超参数建议#
在自动配置器生成基本配置后,它会搜索对训练吞吐量有很大影响但不影响模型收敛的四个关键超参数。这些超参数包括张量并行 (TP)、流水线并行 (PP)、上下文并行 (CP)、专家并行 (EP)、微批大小 (MBS) 和激活检查点层 (ActCkpt)。如果未指定全局批大小 (GBS),自动配置器还将提供最佳全局批大小 (GBS)。
自动配置器最初应用启发式方法来识别四个关键参数的合适候选值,然后生成候选配置网格。它以 NeMo 2.0 格式返回所有候选配置。
注意
由于高内存使用或其他问题,某些候选配置可能无法工作。
生成候选配置后,您可以使用 NeMo 框架启动最有希望的候选配置。
在集群上运行候选配置时,您可以使用 max_minutes_per_run
和 max_steps_per_run
参数限制作业时间和作业最大步数。在此搜索期间,作业将使用配置文件中指定的节点数运行,使用 num_nodes
参数。一旦所有作业都完成运行,您需要运行 compare_throughput.py 以获取包含每个成功作业的性能结果的 .csv 表。
最佳配置建议#
在所有候选作业完成后,自动配置器计算每个候选作业的性能参数。自动配置器生成两个 .csv 文件:一个详细说明候选配置的性能指标,另一个列出由于内存不足错误而失败的候选配置。
端到端示例#
以下列表显示了自动配置器运行器所需的输入参数
model
:基于 NeMo 2.0 的模型配置。num_nodes
:用于训练的节点数。seq_length
:用于训练的序列长度。data_paths
:用于训练的数据集。tokenizer_path
:如果将使用自定义分词器,则为分词器模型的路径。
以下列表显示了自动配置器运行器的可选参数
global_batch_size
:要使用的全局批大小。tensor_parallel_sizes
:列表,例如[1, 2, 4]
。pipeline_parallel_sizes
:列表,例如[1, 2, 4]
。context_parallel_sizes
:列表,例如[1, 2, 4]
。expert_parallel_sizes
:列表,例如[1, 2, 4]
。micro_batch_sizes
:列表,例如[1, 2, 4]
。min_model_parallel_size
:最小期望并行度的值。max_model_parallel_size
:最大期望并行度的值。
对于每个可选参数,如果未指定参数,自动配置器将找到最佳值。要查看完整参数列表,请访问 此页面。
要查看如何使用 NeMo 框架通过自动配置器生成候选配置、训练它们并计算性能的端到端示例,请访问 此页面。