大模型筆記1-LoRA微調(diào)方法

LoRA(Low-Rank Adaptation)是一種用于大模型微調(diào)的方法礁蔗,其核心思想是通過引入低秩矩陣來調(diào)整模型的權(quán)重柒桑,以降低微調(diào)時(shí)的參數(shù)量和計(jì)算復(fù)雜度。

  1. 權(quán)重分解:在微調(diào)過程中状勤,不直接更新模型的所有權(quán)重挖胃,而是通過將權(quán)重矩陣 W 分解為兩個(gè)低秩矩陣 A 和 B 的乘積,來實(shí)現(xiàn)參數(shù)的更新:W′=W+ΔW=W+A?B
  2. 只訓(xùn)練低秩矩陣:在訓(xùn)練時(shí)坞古,僅更新 A 和 B备韧,而保持原始權(quán)重 W 不變。這種方法顯著減少了需要更新的參數(shù)數(shù)量痪枫。
  3. 適用性:LoRA 可以應(yīng)用于各種模型架構(gòu)中织堂,尤其是在 Transformer 模型中叠艳,可以在每個(gè)層添加低秩適應(yīng)。

pytorch實(shí)現(xiàn):

import torch
import torch.nn as nn

class LoRA(nn.Module):
    def __init__(self, original_weight: torch.Tensor, r: int):
        super(LoRA, self).__init__()
        self.original_weight = original_weight
        self.k, self.d = original_weight.shape
        self.r = r
        
        # Low-rank matrices A and B
        self.A = nn.Parameter(torch.randn(self.k, r))
        self.B = nn.Parameter(torch.randn(r, self.d))

    def forward(self):
        # Compute the adapted weight
        adapted_weight = self.original_weight + self.A @ self.B
        return adapted_weight

# 示例:初始化一個(gè) k*d 維的權(quán)重矩陣
k, d, r = 100, 200, 10
original_weight = torch.randn(k, d)

# 創(chuàng)建 LoRA 模塊
lora_model = LoRA(original_weight, r)

# 使用適應(yīng)的權(quán)重
adapted_weight = lora_model.forward()
print(adapted_weight.shape)  # 應(yīng)該是 (k, d)

LoRA需要權(quán)重矩陣w本身是低秩的嗎易阳?

  • LoRA 并不要求原始權(quán)重矩陣W本身是低秩的虑绵。它的主要思想是在微調(diào)過程中通過引入低秩矩陣 A 和 B 來有效地調(diào)整權(quán)重。即使 W 是全秩的闽烙,LoRA 仍然可以通過學(xué)習(xí)低秩矩陣來捕捉重要的特征翅睛,從而實(shí)現(xiàn)有效的模型微調(diào)。

  • 使用低秩適應(yīng)的優(yōu)點(diǎn)在于:

    • 參數(shù)效率:引入的低秩矩陣顯著減少了需要更新的參數(shù)數(shù)量黑竞,尤其是在處理大型模型時(shí)捕发。
    • 計(jì)算效率:由于只更新少量參數(shù),訓(xùn)練過程變得更加高效很魂。

總結(jié)來說扎酷,LoRA 的設(shè)計(jì)使其適用于各種權(quán)重矩陣,無論它們是否是低秩的遏匆。在實(shí)際應(yīng)用中法挨,LoRA 可以為大規(guī)模模型的微調(diào)提供更好的靈活性和效率。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末幅聘,一起剝皮案震驚了整個(gè)濱河市凡纳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌帝蒿,老刑警劉巖荐糜,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異葛超,居然都是意外死亡暴氏,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門绣张,熙熙樓的掌柜王于貴愁眉苦臉地迎上來答渔,“玉大人,你說我怎么就攤上這事侥涵≌铀海” “怎么了?”我有些...
    開封第一講書人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵独令,是天一觀的道長端朵。 經(jīng)常有香客問我好芭,道長燃箭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任舍败,我火速辦了婚禮招狸,結(jié)果婚禮上敬拓,老公的妹妹穿的比我還像新娘。我一直安慰自己裙戏,他們只是感情好乘凸,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著累榜,像睡著了一般营勤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上壹罚,一...
    開封第一講書人閱讀 48,954評(píng)論 1 283
  • 那天葛作,我揣著相機(jī)與錄音,去河邊找鬼猖凛。 笑死赂蠢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的辨泳。 我是一名探鬼主播虱岂,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼菠红!你這毒婦竟也來了第岖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤试溯,失蹤者是張志新(化名)和其女友劉穎绍傲,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體耍共,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡烫饼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了试读。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杠纵。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖钩骇,靈堂內(nèi)的尸體忽然破棺而出比藻,到底是詐尸還是另有隱情,我是刑警寧澤倘屹,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布银亲,位于F島的核電站,受9級(jí)特大地震影響纽匙,放射性物質(zhì)發(fā)生泄漏务蝠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一烛缔、第九天 我趴在偏房一處隱蔽的房頂上張望馏段。 院中可真熱鬧轩拨,春花似錦、人聲如沸院喜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喷舀。三九已至砍濒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間硫麻,已是汗流浹背梯影。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留庶香,地道東北人甲棍。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像赶掖,于是被迫代替她去往敵國和親感猛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容