Transformers 文档
MegatronGPT2
并获得增强的文档体验
开始使用
该模型于 2019-09-17 发布在 HF papers 中,并于 2021-10-01 贡献给 Hugging Face Transformers。
MegatronGPT2
概述
MegatronGPT2 模型由 Mohammad Shoeybi, Mostofa Patwary, Raul Puri, Patrick LeGresley, Jared Casper 和 Bryan Catanzaro 在 《Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism》 中提出。
论文摘要如下:
语言建模的最新研究表明,训练大型 Transformer 模型能够提升自然语言处理 (NLP) 应用的最先进水平。然而,由于内存限制,极大型模型的训练可能非常困难。在这项工作中,我们介绍了训练极大型 Transformer 模型的技术,并实现了一种简单且高效的层内模型并行方法,使训练拥有数十亿参数的 Transformer 模型成为可能。我们的方法不需要新的编译器或库更改,与流水线模型并行 (pipeline model parallelism) 正交且互补,并且可以通过在原生 PyTorch 中插入少量通信操作来实现。我们通过使用 512 个 GPU 训练并收敛参数量高达 83 亿的 Transformer 模型来证明该方法的有效性。与单个 GPU 基准(维持 39 TeraFLOPs,约为峰值 FLOPs 的 30%)相比,我们在整个应用中维持了 15.1 PetaFLOPs,扩展效率达到 76%。为了证明大型语言模型可以进一步提升最先进水平 (SOTA),我们训练了一个类似于 GPT-2 的 83 亿参数 Transformer 语言模型和一个类似于 BERT 的 39 亿参数模型。我们表明,在类 BERT 模型中,仔细关注层归一化 (layer normalization) 的位置对于随着模型规模增大而提升性能至关重要。使用 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 和多节点实现。特别是,它包含了一种结合了“张量并行” (tensor parallel) 和“流水线并行” (pipeline parallel) 技术的混合模型并行方法。
使用技巧
我们提供了预训练的 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在 GitHub 上更新MegatronGPT2 的架构与 OpenAI GPT-2 相同。有关配置类及其参数的信息,请参考 GPT-2 文档。