🚀 Pythia-2.8B
“Pythia Scaling Suite”是一系列用於促進可解釋性研究的模型集合,包含不同規模的模型,在大語言模型研究方面具有重要價值。
🚀 快速開始
Pythia模型可以通過以下代碼加載和使用,這裡以第三個 pythia-70m-deduped
檢查點為例:
from transformers import GPTNeoXForCausalLM, AutoTokenizer
model = GPTNeoXForCausalLM.from_pretrained(
"EleutherAI/pythia-70m-deduped",
revision="step3000",
cache_dir="./pythia-70m-deduped/step3000",
)
tokenizer = AutoTokenizer.from_pretrained(
"EleutherAI/pythia-70m-deduped",
revision="step3000",
cache_dir="./pythia-70m-deduped/step3000",
)
inputs = tokenizer("Hello, I am", return_tensors="pt")
tokens = model.generate(**inputs)
tokenizer.decode(tokens[0])
修訂版/分支 step143000
與每個模型 main
分支上的模型檢查點完全對應。有關如何使用所有Pythia模型的更多信息,請參閱 GitHub上的文檔。
✨ 主要特性
- 促進研究:Pythia模型套件旨在促進大語言模型的科學研究,特別是可解釋性研究。
- 模型多樣:包含兩組八個不同大小的模型(70M、160M、410M、1B、1.4B、2.8B、6.9B和12B),每個大小有兩個模型,一個在Pile數據集上訓練,一個在全局去重後的Pile數據集上訓練。
- 檢查點豐富:每個模型提供154箇中間檢查點,託管在Hugging Face上作為分支。
- 性能出色:儘管設計目標並非以提升下游性能為中心,但模型的性能與類似規模的模型(如OPT和GPT - Neo套件中的模型)相當或更優。
📦 安裝指南
文檔未提及安裝步驟,可參考 GitHub上的文檔 獲取相關信息。
📚 詳細文檔
模型詳情
Pythia模型 |
非嵌入參數 |
層數 |
模型維度 |
頭數 |
批量大小 |
學習率 |
等效模型 |
70M |
18,915,328 |
6 |
512 |
8 |
2M |
1.0 x 10-3 |
— |
160M |
85,056,000 |
12 |
768 |
12 |
2M |
6.0 x 10-4 |
GPT - Neo 125M, OPT - 125M |
410M |
302,311,424 |
24 |
1024 |
16 |
2M |
3.0 x 10-4 |
OPT - 350M |
1.0B |
805,736,448 |
16 |
2048 |
8 |
2M |
3.0 x 10-4 |
— |
1.4B |
1,208,602,624 |
24 |
2048 |
16 |
2M |
2.0 x 10-4 |
GPT - Neo 1.3B, OPT - 1.3B |
2.8B |
2,517,652,480 |
32 |
2560 |
32 |
2M |
1.6 x 10-4 |
GPT - Neo 2.7B, OPT - 2.7B |
6.9B |
6,444,163,072 |
32 |
4096 |
32 |
2M |
1.2 x 10-4 |
OPT - 6.7B |
12B |
11,327,027,200 |
36 |
5120 |
40 |
2M |
1.2 x 10-4 |
— |
使用與限制
預期用途
- 研究用途:Pythia的主要預期用途是研究大語言模型的行為、功能和侷限性,為進行科學實驗提供可控環境。
- 微調部署:只要使用符合Apache 2.0許可證,也可對Pythia - 2.8B進行進一步微調並部署。Pythia模型可與Hugging Face的 Transformers庫 配合使用。若決定使用預訓練的Pythia - 2.8B作為微調模型的基礎,請自行進行風險和偏差評估。
非預期用途
- 不適合部署:Pythia套件並非用於部署,本身不是產品,不能用於面向人類的交互。例如,模型可能生成有害或冒犯性文本,請評估特定用例相關的風險。
- 僅支持英語:Pythia模型僅支持英語,不適合翻譯或生成其他語言的文本。
- 未針對下游場景微調:Pythia - 2.8B未針對語言模型常見的下游場景(如撰寫散文或商業聊天機器人)進行微調,因此其對給定提示的響應方式與ChatGPT等產品不同。
侷限性和偏差
- 輸出準確性:大語言模型的核心功能是根據輸入文本預測下一個標記,模型使用的標記不一定能產生最“準確”的文本,切勿依賴Pythia - 2.8B產生事實準確的輸出。
- 數據偏差:該模型在 Pile 數據集上訓練,該數據集包含褻瀆、淫穢或其他冒犯性文本。有關性別、宗教和種族的記錄偏差討論,請參閱 Pile論文的第6節。即使提示本身不包含任何明確的冒犯性內容,Pythia - 2.8B也可能生成社會不可接受或不良的文本。
- 人工審核建議:如果計劃使用通過例如託管推理API生成的文本,建議在向他人展示之前由人工對該語言模型的輸出進行審核,並告知受眾文本是由Pythia - 2.8B生成的。
訓練
訓練數據
Pile 是一個825GiB的英語通用數據集,由EleutherAI專門為訓練大語言模型而創建。它包含來自22個不同來源的文本,大致分為五類:學術寫作(如arXiv)、互聯網(如CommonCrawl)、散文(如Project Gutenberg)、對話(如YouTube字幕)和其他(如GitHub、Enron Emails)。有關所有數據源的細分、方法和倫理影響的討論,請參閱 Pile論文。有關Pile及其組成數據集的更詳細文檔,請參閱 數據表。Pile可從 官方網站 或 [社區鏡像](https://the - eye.eu/public/AI/pile/) 下載。在訓練Pythia - 2.8B之前,Pile數據集未進行去重處理。
訓練過程
- 所有模型在完全相同的數據上按相同順序進行訓練。每個模型在訓練期間處理299,892,736,000個標記,每2,097,152,000個標記保存一個檢查點,從
step1000
到 step143000
(與 main
相同),共保存143個檢查點。此外,還提供頻繁的早期檢查點:step0
和 step{1,2,4...512}
。這相當於非去重模型在Pile上訓練不到1個週期,去重後的Pile上訓練約1.5個週期。
- 所有 Pythia 模型以2M(2,097,152個標記)的批量大小訓練143000步。有關訓練過程的更多詳細信息,包括 [如何復現](https://github.com/EleutherAI/pythia/blob/main/README.md#reproducing - training),請參閱 GitHub。Pythia使用與 [GPT - NeoX - 20B](https://huggingface.co/EleutherAI/gpt - neox - 20b) 相同的分詞器。
評估
所有16個 Pythia 模型均使用 [LM Evaluation Harness](https://github.com/EleutherAI/lm - evaluation - harness) 進行評估。可在 GitHub倉庫 的 results/json/*
中按模型和步驟訪問評估結果。展開以下部分,查看所有Pythia和Pythia - deduped模型與OPT和BLOOM的評估結果對比圖。
LAMBADA – OpenAI
Physical Interaction: Question Answering (PIQA)
WinoGrande
AI2 Reasoning Challenge—Easy Set
SciQ
變更日誌
本節比較了之前發佈的 Pythia v0 與當前模型之間的差異。有關這些更改及其背後動機的進一步討論,請參閱Pythia論文的附錄B。重新訓練Pythia對基準性能沒有影響。
- 統一批量大小:所有模型現在均以2M標記的統一批量大小進行訓練。之前,參數大小為160M、410M和1.4B的模型以4M標記的批量大小進行訓練。
- 增加檢查點:除了每1000個訓練步驟保存一個檢查點外,還在初始化(步驟0)和步驟 {1,2,4,8,16,32,64,128,256,512} 增加了檢查點。
- 使用Flash Attention:新的重新訓練套件中使用了Flash Attention。
- 修正學習率調度:修正了原套件中存在的一個小不一致問題:所有參數大小為2.8B或更小的模型的學習率(LR)調度衰減到起始LR的10%,而6.9B和12B模型的LR調度衰減到0。在重新訓練運行中,所有模型現在均以LR衰減到最大LR的0.1倍進行訓練。
命名約定和參數數量
Pythia 模型於2023年1月進行了重命名。舊的命名約定可能仍意外存在於某些文檔中。當前的命名約定(70M、160M等)基於總參數數量。
當前Pythia後綴 |
舊後綴 |
總參數 |
非嵌入參數 |
70M |
19M |
70,426,624 |
18,915,328 |
160M |
125M |
162,322,944 |
85,056,000 |
410M |
350M |
405,334,016 |
302,311,424 |
1B |
800M |
1,011,781,632 |
805,736,448 |
1.4B |
1.3B |
1,414,647,808 |
1,208,602,624 |
2.8B |
2.7B |
2,775,208,960 |
2,517,652,480 |
6.9B |
6.7B |
6,857,302,016 |
6,444,163,072 |
12B |
13B |
11,846,072,320 |
11,327,027,200 |
📄 許可證
本項目採用Apache 2.0許可證。