MegatronGPT2
概述
MegatronGPT2 模型在 Mohammad Shoeybi、Mostofa Patwary、Raul Puri、Patrick LeGresley、Jared Casper 和 Bryan Catanzaro 撰写的 Megatron-LM: 使用模型并行训练数十亿参数语言模型 中提出。
论文摘要如下:
最近在语言建模方面的工作表明,训练大型 Transformer 模型可以推进自然语言处理应用领域的最新技术水平。然而,由于内存限制,非常大的模型可能难以训练。在这项工作中,我们介绍了训练非常大的 Transformer 模型的技术,并实现了一种简单有效的层内模型并行方法,该方法能够训练具有数十亿参数的 Transformer 模型。我们的方法不需要新的编译器或库更改,与管道模型并行正交且互补,并且可以通过在原生 PyTorch 中插入一些通信操作来完全实现。我们通过使用 512 个 GPU 收敛高达 83 亿参数的基于 Transformer 的模型来说明这种方法。与能够维持 39TeraFLOPs 的强大单 GPU 基线相比,我们在整个应用程序中维持 15.1 PetaFLOPs,扩展效率达到 76%,而基线的性能为峰值 FLOPs 的 30%。为了证明大型语言模型可以进一步推进最新技术水平 (SOTA),我们训练了一个类似于 GPT-2 的 83 亿参数 Transformer 语言模型和一个类似于 BERT 的 39 亿参数模型。我们表明,在 BERT 类模型中仔细注意层归一化的放置对于随着模型规模的增长实现性能提升至关重要。使用 GPT-2 模型,我们在 WikiText103(10.8 与 SOTA 的困惑度 15.8 相比)和 LAMBADA(66.5% 与 SOTA 的准确率 63.2% 相比)数据集上取得了 SOTA 结果。我们的 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 文档。