Transformers 文件
MegatronGPT2
並獲得增強的文件體驗
開始使用
MegatronGPT2
概述
MegatronGPT2 模型由 Mohammad Shoeybi、Mostofa Patwary、Raul Puri、Patrick LeGresley、Jared Casper 和 Bryan Catanzaro 在論文 《Megatron-LM:使用模型並行主義訓練數十億引數的語言模型》 中提出。
論文摘要如下:
最近的語言建模工作表明,訓練大型 Transformer 模型可以推動自然語言處理應用的最新技術水平。然而,由於記憶體限制,訓練非常大的模型可能相當困難。在這項工作中,我們介紹了我們訓練非常大的 Transformer 模型的技術,並實現了一種簡單、高效的層內模型並行方法,該方法使得訓練具有數十億引數的 Transformer 模型成為可能。我們的方法不需要新的編譯器或庫的更改,與流水線模型並行是正交和互補的,並且可以透過在原生 PyTorch 中插入一些通訊操作來完全實現。我們透過在 512 個 GPU 上收斂高達 83 億引數的基於 Transformer 的模型來闡釋這種方法。與一個強大的單 GPU 基線(維持 39 TeraFLOPs,即峰值 FLOPs 的 30%)相比,我們在整個應用中維持 15.1 PetaFLOPs,擴充套件效率達到 76%。為了證明大型語言模型可以進一步推動最先進技術(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) 註冊中心命令列工具。更多關於下載模型的文件可以在 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 文件。