重要提示

您正在查看 NeMo 2.0 文档。此版本引入了对 API 和新库 NeMo Run 的重大更改。我们目前正在将 NeMo 1.0 的所有功能移植到 2.0。有关先前版本或 2.0 中尚未提供的功能的文档,请参阅 NeMo 24.07 文档

T5#

T5,或文本到文本传输 Transformer,是一种通用的语言模型,它将所有自然语言处理 (NLP) 任务构建为文本到文本问题。这意味着每个任务,无论是翻译、摘要还是问题解答,都通过将输入文本转换为输出文本来统一处理。T5 采用 Transformer 架构,利用编码器和解码器组件来有效地处理和生成语言。

我们为预训练和微调 T5 模型提供预定义的配方,尺寸包括:220M、3B 和 11B。这些配方使用 NeMo 2.0 和 NeMo-Run。这些配方为 NeMo 2.0 中引入的 nemo.collections.llm api 函数之一配置了 run.Partial。这些配方托管在 t5_220mt5_3bt5_11b 文件中。

NeMo 2.0 预训练配方#

注意

预训练配方对 data 参数使用 MockDataModule。您需要将 MockDataModule 替换为您自定义的数据集。

我们在下面提供了一个示例,说明如何调用默认配方并覆盖数据参数

from nemo.collections import llm

pretrain = llm.t5_220m.pretrain_recipe(
    name="t5_220m_pretraining",
    dir=f"/path/to/checkpoints",
    num_nodes=1,
    num_gpus_per_node=8,
)

# # To override the data argument
# dataloader = a_function_that_configures_your_custom_dataset(
#     global_batch_size=global_batch_size,
#     micro_batch_size=micro_batch_size,
#     seq_length=pretrain.model.config.seq_length,
#     seq_length_dec=recipe.model.config.seq_length_dec,
# )
# pretrain.data = dataloader

NeMo 2.0 微调配方#

注意

微调配方对 data 参数使用 SquadDataModule。您可以将 SquadDataModule 替换为您自定义的数据集。

我们在下面提供了一个示例,说明如何调用默认配方并覆盖数据参数

from nemo.collections import llm

recipe = llm.t5_220m.finetune_recipe(
    name="t5_220m_finetuning",
    checkpoint_path=f"/path/to/pretrained_checkpoints",
    dir=f"/path/to/checkpoints",
    num_nodes=1,
    num_gpus_per_node=8,
    peft_scheme='lora',  # 'lora', 'none'
)

# # To override the data argument
# dataloader = a_function_that_configures_your_custom_dataset(
#     global_batch_size=global_batch_size,
#     micro_batch_size=micro_batch_size,
#     seq_length=recipe.model.config.seq_length,
#     seq_length_dec=recipe.model.config.seq_length_dec,
# )
# recipe.data = dataloader

默认情况下,微调配方将运行 LoRA 微调,LoRA 应用于语言模型中的所有线性层。要微调没有 LoRA 的整个模型,请在配方参数中设置 peft_scheme='none'

注意

配方中的配置是使用 NeMo-Run run.Configrun.Partial 配置对象完成的。请查看 NeMo-Run 文档,以了解有关其配置和执行系统的更多信息。

一旦您准备好最终配置,就可以在任何 NeMo-Run 支持的执行器上执行它。最简单的是本地执行器,它只是在单独的进程中本地运行预训练。您可以按如下方式使用它

import nemo_run as run

run.run(pretrain, executor=run.LocalExecutor())

此外,您也可以在同一个 Python 进程中直接运行它,如下所示

run.run(pretrain, direct=True)

下面提供了我们目前支持或计划很快支持的预训练配方列表,以供参考

配方

状态

T5 220M

T5 3B

T5 11B