為什么要微調(diào)?
為了讓模型更適配具體應(yīng)用場(chǎng)景的需求,可能需要對(duì)一個(gè)已經(jīng)完成預(yù)訓(xùn)練的大模型的參數(shù)進(jìn)行微調(diào)或者說(shuō)修正,也就是對(duì)其進(jìn)行加加減減,使模型的輸出效果更符合特定場(chǎng)景需求。
挑戰(zhàn)
可是大模型的參數(shù)數(shù)量一般比較大,從百萬(wàn)到千億不等。如果對(duì)這些參數(shù)一個(gè)一個(gè)的進(jìn)行微調(diào),那要求的訓(xùn)練數(shù)據(jù)及訓(xùn)練量都會(huì)很大、成本高。有沒有什么方法可以以相對(duì)低成本的方式達(dá)到微調(diào)的目的?
方法
大模型參數(shù)一般使用矩陣來(lái)表示,比如一個(gè)行列都為1024的矩陣W能表示1024*1024=1048576個(gè)(百萬(wàn)個(gè))參數(shù)。
我們可以先訓(xùn)練兩個(gè)小的矩陣,A和B。A為1024行,8列;B為8行,1024列。這樣我們總共只需要訓(xùn)練16384個(gè)參數(shù),然后我們將矩陣A和B相乘,得到一個(gè)1024*1024的微調(diào)參數(shù)矩陣ΔW,然后將這個(gè)矩陣加到大模型與訓(xùn)練的原參數(shù)矩陣上,最終實(shí)現(xiàn)模型參數(shù)的整體微調(diào)。

這樣我們需要訓(xùn)練的參數(shù)量不到原參數(shù)量的百分之2(1.56%)。從而,實(shí)現(xiàn)了低成本微調(diào)。
上述例子中矩陣A 的列數(shù)(8)和 矩陣B 的行數(shù)(8)就是所謂的 “秩 r”(Rank),其大小一般可以選8,16,32,64等。它通常低于原始矩陣緯度。這種通過(guò)訓(xùn)練低秩矩陣實(shí)現(xiàn)微調(diào)的方法稱之為L(zhǎng)oRA,Low-Rank Adaptation。