Transformers 文档
MegatronGPT2
并获得增强的文档体验
开始使用
MegatronGPT2
概述
MegatronGPT2 模型在 Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism 这篇论文中被提出,作者是 Mohammad Shoeybi, Mostofa Patwary, Raul Puri, Patrick LeGresley, Jared Casper 和 Bryan Catanzaro。
该论文的摘要如下
近期在语言建模方面的工作表明,训练大型 Transformer 模型能够提升自然语言处理应用领域的最新技术水平。然而,由于内存限制,非常大的模型可能难以训练。在这项工作中,我们介绍了训练超大型 Transformer 模型的技术,并实现了一种简单高效的层内模型并行方法,该方法能够训练具有数十亿参数的 Transformer 模型。我们的方法不需要新的编译器或库的更改,与流水线模型并行方法正交且互补,并且可以通过在原生 PyTorch 中插入少量通信操作来完全实现。我们通过使用 512 个 GPU 收敛高达 83 亿参数的基于 Transformer 的模型来说明这种方法。与维持 39 TeraFLOPs 的强大单 GPU 基线(占峰值 FLOPs 的 30%)相比,我们在整个应用程序中维持了 15.1 PetaFLOPs,扩展效率为 76%。为了证明大型语言模型可以进一步提升最新技术水平 (SOTA),我们训练了一个类似于 GPT-2 的 83 亿参数 Transformer 语言模型和一个类似于 BERT 的 39 亿参数模型。我们表明,随着模型尺寸的增长,在类 BERT 模型中仔细注意层归一化的位置对于提高性能至关重要。使用 GPT-2 模型,我们在 WikiText103 数据集上取得了 SOTA 结果(困惑度为 10.8,而 SOTA 困惑度为 15.8)和 LAMBADA 数据集上取得了 SOTA 结果(准确率为 66.5%,而 SOTA 准确率为 63.2%)。我们的 BERT 模型在 RACE 数据集上取得了 SOTA 结果(准确率为 90.9%,而 SOTA 准确率为 89.4%)。
此模型由 jdemouth 贡献。原始代码可以在 这里 找到。该仓库包含 Megatron 语言模型的多 GPU 和多节点实现。特别是,它包含使用“张量并行”和“流水线并行”技术的混合模型并行方法。
使用技巧
我们提供了预训练的 GPT2-345M 检查点,用于评估或微调下游任务。
要访问这些检查点,首先注册并设置 NVIDIA GPU Cloud (NGC) Registry CLI。有关下载模型的更多文档,请参阅 NGC 文档。
或者,您可以直接使用以下方式下载检查点
wget --content-disposition https://api.ngc.nvidia.com/v2/models/nvidia/megatron_lm_345m/versions/v0.0/zip -O megatron_gpt2_345m_v0_0.zip
从 NVIDIA GPU Cloud (NGC) 获取检查点后,您必须将其转换为 Hugging Face Transformers GPT2 实现可以轻松加载的格式。
以下命令允许您进行转换。我们假设文件夹 models/megatron_gpt2
包含 megatron_gpt2_345m_v0_0.zip
,并且该命令从该文件夹运行。
python3 $PATH_TO_TRANSFORMERS/models/megatron_gpt2/convert_megatron_gpt2_checkpoint.py megatron_gpt2_345m_v0_0.zip
MegatronGPT2 架构与 OpenAI GPT-2 相同。有关配置类及其参数的信息,请参阅 GPT-2 文档。