YaLM 100B是一個類似 GPT 的神經網絡,用於產生和處理文字。它可供世界各地的開發人員和研究人員免費使用。
該模型利用 1000 億個參數。我們花了 65 天的時間在由 800 個 A100 顯示卡和 1.7 TB 的線上文字、書籍以及無數其他英語和俄語資源組成的叢集上訓練該模型。
有關加速和穩定的培訓詳細資訊和最佳實踐可以在Medium (英語)和Habr (俄語)文章中找到。
我們使用 DeepSpeed 來訓練模型,並從 Megatron-LM 範例中汲取靈感。但是,此儲存庫中的程式碼與用於訓練模型的程式碼不同。相反,它是來自 DeepSpeed 儲存庫的庫存範例,只需進行最少的更改即可推斷我們的模型。
下載權重之前,請確保有 200GB 的可用磁碟空間。該模型(程式碼基於 microsoft/DeepSpeedExamples/Megatron-LM-v1.1.5-ZeRO3)應該在具有張量並行性的多個 GPU 上運行。它在 4 個 (A100 80g) 和 8 個 (V100 32g) GPU 上進行了測試,但能夠使用總共約 200GB GPU 記憶體的不同配置,正確劃分權重維度(例如 16、64、128)。
bash download/download.sh
下載模型權重和詞彙。./yalm100b_checkpoint/weights/
,詞彙表將下載到./yalm100b_checkpoint/vocab/
。docker/pull.sh
拉取它。它與A100和V100相容。docker/build.sh
從原始程式碼建置 docker 映像(這只會從docker/Dockerfile
建置 docker 映像)。docker/run.sh
(磁碟區、名稱和其他參數可以變更) 。 您可以從以下腳本開始:
examples/generate_interactive.sh
:從命令列互動式生成,是嘗試模型最簡單的方法。examples/generate_conditional_sampling.sh
:使用採樣策略的條件產生。預設使用top-p,隨意更改溫度或使用top-k。輸入是 jsonlines (範例: examples/example_cond_input.json
),輸出將是相同的 jsonlines,並將產生的文字欄位新增至每行。examples/generate_conditional_greedy.sh
:與之前相同,但生成是貪婪的。適合解決少樣本問題。examples/generate_unconditional.sh
:無條件產生。不使用輸入,輸出將為 jsonlines。 該模型根據 Apache 2.0 許可證發布,允許研究和商業使用,Megatron-LM 則根據 Megatron-LM 許可證獲得許可。
用於訓練 YaLM-100B 的資料集由以下部分組成(粗略百分比以模型看到的標記來衡量):
25% The Pile — Eleuther AI 團隊開放的英文資料集
我們團隊收集的75%俄語文本(給出了整個資料集的百分比)
Yandex 搜尋索引中 49% 的俄語網頁透過以下啟發式從 ~100Tb 過濾到 ~1Tb:
12% 來自 Yandex 搜尋索引的各種來源的新聞
俄語分佈詞庫中使用的資料集的 10% 書籍
3% 來自 Taiga 資料集的雜項文本
1.5% 來自社群媒體的對話以類似於 Reddit 在 The Pile 中處理的方式進行預處理
維基百科的 0.5% 俄語部分
有些子集在訓練期間被遍歷了多達 3 次。
模型在 800 個 A100 集群上進行了大約 65 天的訓練。期間消耗了300B代幣。您可以在 HF 頁面上看到帶有 LR 的 TensorBoard 和提升時間表、訓練指標和我們的「溫度計」。