來自:李rumor
大模型是一個實驗工程,涉及數(shù)據(jù)清洗、底層框架、算法策略等多個工序,每個環(huán)節(jié)都有很多坑,因此知道如何避坑和技術(shù)選型非常重要,可以節(jié)省很多算力和時間。
近期百川智能發(fā)布了Baichuan2的7B和13B版本,可能不少卷友被刷屏慣了沒有仔細(xì)看,他們在放出模型的同時也給了一份技術(shù)報告,里面干貨滿滿,因此我自來水一波,帶大家一起看看百川積累的KnowHow。同時也有一些我沒完全懂的地方,希望拋磚引玉,可以一起在評論區(qū)討論。
Pre-train
數(shù)據(jù)
數(shù)據(jù)多樣性
從不同的來源獲取數(shù)據(jù),最好建立一個類目體系,可以提升對整體數(shù)據(jù)分布的把控,方便后續(xù)增減。
進(jìn)行聚類和去重,可以通過LSH局部敏感或者稠密向量作為聚類特征,LSH更快一些,但向量可以更好地編碼語義。但這里有個問題是需要卡閾值,去重過猛會影響多樣性降低泛化能力。因此百川選擇的做法是去除一部分,并對剩余的樣本打分,作為預(yù)訓(xùn)練時采樣的權(quán)重。
整體去重的流程如下(這里我沒太懂的是為何把Document去重放在最后一步,如果放在前面的環(huán)節(jié)應(yīng)該可以顯著減少句子和段落的數(shù)據(jù)量):
數(shù)據(jù)質(zhì)量
采用句子級別的分類器進(jìn)行過濾,這個是業(yè)內(nèi)常用做法了,但具體用什么數(shù)據(jù)訓(xùn)練,用什么標(biāo)準(zhǔn)標(biāo)注沒有細(xì)說。
對于內(nèi)容安全,用規(guī)則和模型洗掉有害內(nèi)容,還額外找了一些正向價值觀的數(shù)據(jù)源,提升采樣概率。
模型結(jié)構(gòu)
Tokenizer
Tokenizer的難點(diǎn)是平衡壓縮比和詞表尺寸,比如頻繁出現(xiàn)的幾個中文是可以用1個token表示的,這樣inference時就會很快,但合并的話這幾個中文字單獨(dú)的embedding訓(xùn)練可能就不充分,跟其他字組合時語義表示會不夠好。
因此百川使用BPE,選擇了比較折中的12萬大小,同時披露了以下細(xì)節(jié):
對原始數(shù)據(jù)不做任何歸一化
把數(shù)字完全拆開,可以更好理解數(shù)值數(shù)據(jù)
為了代碼數(shù)據(jù),專門增加空格token
覆蓋率在0.9999,只有少量fall back(一種避免OOV的方法,在碰到unknown中文時會變成utf8的byte token)
位置編碼
由于有外推的需求,最近位置編碼有很多新的工作,比較火的當(dāng)屬RoPE和ALiBi,這里百川都用了,因為他們實驗發(fā)現(xiàn)位置編碼并沒有顯著影響模型表現(xiàn),同時進(jìn)行了速度優(yōu)化:
RoPE + Flash Attention
ALiBi + xFormers
激活函數(shù)
采用了表現(xiàn)更好的SwiGLU,由于SwiGLU有三個矩陣,引入了更多參數(shù),因此百川縮小了FFN層的尺寸(4->8/3再處理成128的倍數(shù))。
Normalisations
對Transformer的輸入采用LayerNorm,對warm-up更魯棒
采用了RMSNorm的實現(xiàn),指計算輸入特征的方差,提升計算效率
混合精度
采用BF16,因為其具有更大的范圍,可以讓訓(xùn)練更穩(wěn)定,但對于位置編碼、優(yōu)化器等,采用全精度。
提升穩(wěn)定性
NormHead:對輸出的表示進(jìn)行歸一化。首先低頻token的模會在訓(xùn)練中變小,進(jìn)行歸一化后可以提升穩(wěn)定性。另外百川通過對輸出表示聚類,發(fā)現(xiàn)cosine距離可以將相似語義的聚到一起而L2距離不行,歸一化可以消除最終計算logits時點(diǎn)乘中L2的影響。從實驗結(jié)果可以明顯發(fā)現(xiàn)loss收斂更好更穩(wěn)定。
Max-z loss:在訓(xùn)練過程中,百川發(fā)現(xiàn)模型的logits都很大,這樣就會對解碼時的超參數(shù)魯棒性較低,因此增加max-z loss拉低logits的值。
注:對于預(yù)訓(xùn)練的優(yōu)化解讀跳過了Infra的部分,不是那么懂。。
Alignment
SFT
數(shù)據(jù)質(zhì)量:采用抽檢的方式進(jìn)行質(zhì)量把控,抽一批數(shù)據(jù)檢查,不合格全部退回。
數(shù)據(jù)數(shù)量:100k(目前開源SFT數(shù)據(jù)還是挺多的,不知道百川出于什么考慮
Reward Model
Prompt多樣性:構(gòu)造了一個200+細(xì)分類目的數(shù)據(jù)體系,盡可能覆蓋用戶需求,同時提升每類prompt多樣性,從而提升泛化能力
Response多樣性:用不同尺寸和階段的百川模型生成答案,不使用其他開源模型(經(jīng)驗證無法提升RM準(zhǔn)確率)
PPO
預(yù)先對critic模型進(jìn)行了warmup
為提升RL穩(wěn)定性,進(jìn)行梯度裁剪
安全
由于模型開源,百川在內(nèi)容安全上非常細(xì)致,包括:
聘請10位專業(yè)審核人員構(gòu)建了100+安全類目
用50人的標(biāo)注團(tuán)隊構(gòu)建了200K攻擊指令
對于攻擊指令,生產(chǎn)多樣性很大的回答
總結(jié)
Baichuan2的效果比第一版提升了很多,在推理任務(wù)上效果翻倍,是目前開源模型中過了最多中文語料的模型。
審核編輯:湯梓紅
-
算法
+關(guān)注
關(guān)注
23文章
4698瀏覽量
94724 -
開源
+關(guān)注
關(guān)注
3文章
3586瀏覽量
43471 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4368瀏覽量
64187 -
大模型
+關(guān)注
關(guān)注
2文章
3023瀏覽量
3819
原文標(biāo)題:總結(jié)
文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
白海科技與百川智能順勢而為、攜手共進(jìn),助力領(lǐng)域大模型應(yīng)用快速落地
海基新能源再獲百川股份資金加持
百川智能獲阿里騰訊小米等3億美元投資
百川智能發(fā)布Baichuan2 Turbo系列API,或?qū)⑻娲袠I(yè)大模型
百川智能發(fā)布超千億大模型Baichuan 3
數(shù)勢聯(lián)動百川,發(fā)布首批大模型聯(lián)合解決方案,推動中國大模型價值落地

百川智能發(fā)布Baichuan 4大模型及首款A(yù)I助手“百小應(yīng)”
亞馬遜云科技接入百川智能和零一萬物基礎(chǔ)模型
百川智能完成50億元A輪融資
大模型廠商“輸血”不斷,百川智能完成50億元A輪融資!

評論