- 大型語言模型實戰指南:應用實踐與場景落地
- 劉聰 沈盛宇 李特麗 杜振東
- 1393字
- 2024-11-13 10:19:01
1.2.6 Baichuan系列模型
隨著大型語言模型的飛速發展,不僅國外各大廠商在大型語言模型領域發力,國內也涌現出一批以大型語言模型為核心的創業公司。其中,不少公司選擇將其在中文能力上表現優異的大型語言模型及技術成果貢獻給開源社區,因此加速了大型語言模型技術的傳播和發展。
2023年6月15日,百川智能發布了70億個參數的具有中英雙語能力的Baichuan-7B模型,不僅在C-Eval、AGIEval和Gaokao等中文評測榜單上超過同參數等級的模型,并且在MMLU英文評測榜單上超過LLaMA-7B模型。同年7月11日又發布了Baichuan-13B模型,兩個模型均采用Transformer的解碼器結構,支持的輸入最大長度為4096,Baichuan-7B模型在1.2萬億個Token的中英雙語數據下進行訓練,采用RoPE位置編碼,而Baichuan-13B模型則是在1.4萬億個Token數據下進行訓練,采用ALiBi位置編碼。
2023年9月6日,百川智能又發布了Baichuan2系列模型,包含7B和13B模型,同時還公布了更多數據構造及模型優化上的細節。相較于Baichuan模型來說,Baichuan2模型的主要改進在于:
●模型覆蓋的語種變多:從僅支持中、英雙語變成支持更多種語言。
●訓練數據量增加:數據從1.2萬億個Token增加到2.6萬億個Token,使模型能力更強。
●詞表增大:利用SentencePiece中的BPE方法將詞表大小從64 000擴展到125 696。為了更好地編碼數字內容,將數字序列分成單獨的數字;為處理代碼中的空格,在詞表中額外添加了空Token;詞表中Token的長度最長不超過32;對數據壓縮更多,使模型的解碼效率提高。
●開源中間步驟模型:不僅開源訓練最終的模型,還開源了更多訓練過程中的臨時模型(checkpoint),更便于學術研究。
●垂域支持:在醫療和法律領域的效果更為優異。
Baichuan2模型在數據采集過程中,為了數據的全面性和代表性,從多個來源進行數據收集,包括網頁、書籍、研究論文、代碼等,各類別數據分布如圖1-11所示。此外,從數據的頻率和質量兩個角度對數據進行清洗,最終保留了原始數據的36.18%,清洗規則如下:
●數據頻率。借助LSH-like和嵌入(Embedding)特征對數據進行聚類和去重,主要是對每個聚類后的簇中內容(文檔、段落、句子)進行去重和打分,分值用于最終的數據采樣。
●數據質量。句子級別質量過濾,但未明確過濾規則。不過從圖1-11的模型安全部分可知,對數據進行了暴力、色情、種族歧視、仇恨言論等有害內容過濾,應該還包含其他內容。

圖1-11 Baichuan2模型訓練數據分布圖
Baichuan2模型仍然采用Transformer的解碼器結構,但做了一些小改動。
●位置編碼:7B的位置編碼采用RoPE,13B的位置編碼采用ALiBi。因為兩種位置編碼對模型效果基本沒影響,所以繼承了Baichuan1的7B和13B的位置編碼。
●激活函數:采用SwiGLU激活函數,不同于傳統FFN的2個矩陣,SwiGLU有3個矩陣,因此降低了隱藏層維度,由原來的4倍變成8/3倍,再調整為128的整數。
●歸一化:對Transformer的輸入進行層歸一化,提高warm-up的魯棒性,并用RMSNorm實現。
●NormHead:為了提高模型訓練的穩定性,對輸出的嵌入向量進行歸一化。
●Max-z loss:受NormSoftmax啟發,對logits進行歸約,主要有助于穩定訓練并使推理對超參數更具魯棒性。
Baichuan2模型對微調數據進行嚴格把關,最終收集了10萬個數據進行模型的有監督微調。并且,設計了一個三層分類系統全面覆蓋所有類型的用戶需求,包括6個主要類別、30個二級類別、200多個三級類別。在獎勵模型訓練時,需要保證每個類別內的數據有足夠的多樣性,以確保獎勵模型有更好的泛化性。此外,獎勵數據中的結果需要由Baichuan2模型生成,以確保數據分布的統一。在人類偏好對齊階段,為了增加模型的安全性,召集10個有傳統互聯網安全經驗的專家構建了6種攻擊類型和超過100個細粒度安全價值類別,由50人標注團隊生成20萬個攻擊性提示,進行模型安全性的對齊訓練。