久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

調(diào)教LLaMA類模型沒那么難,LoRA將模型微調(diào)縮減到幾小時

 天承辦公室 2023-05-28 發(fā)布于江蘇
選自Lightning AI

作者:Sebastian Raschka
機器之心編譯
編輯:趙陽

LoRA 微調(diào)方法,,隨著大模型的出現(xiàn)而走紅,。
最近幾個月,ChatGPT 等一系列大語言模型(LLM)相繼出現(xiàn),,隨之而來的是算力緊缺日益嚴重,。雖然人人都想打造專屬于自己的大模型,但是能負擔得起上億參數(shù)模型訓練的機構(gòu)卻寥寥無幾,。
在快速發(fā)展的人工智能領(lǐng)域,,以高效和有效的方式使用大型語言模型正變得越來越重要。
LoRA(Low-Rank Adaption,,低秩自適應) 作為微調(diào) LLMs 一種比較出圈的技術(shù),,其額外引入了可訓練的低秩分解矩陣,,同時固定住預訓練權(quán)重,,從而大大減少了下游任務的可訓練參數(shù)數(shù)量。
本文中,,來自 Lightning AI 首席人工智能教育家 Sebastian Raschka 將帶你了解如何以高效的方式用 LoRA 來微調(diào) LLM,。下面是全文內(nèi)容。
為什么要進行微調(diào),?
預訓練大語言模型通常被稱為基礎(chǔ)模型,,這樣稱呼的原因是:大語言模型在各種任務中表現(xiàn)良好,可以將它們用作對目標任務進行微調(diào)的基礎(chǔ),。正如 Sebastian Raschka 在上一篇博文《Understanding Parameter-Efficient Finetuning of Large Language Models: From Prefix Tuning to LLaMA-Adapters》中所討論的,,微調(diào)能夠使模型適應目標域和目標任務。盡管如此,,大模型在計算上的成本可能非常昂貴 —— 模型越大,,更新其網(wǎng)絡層的成本就越高。
如果不想將網(wǎng)絡中所有的層都進行更新,,可以使用諸如前綴微調(diào)和適配器之類的高效調(diào)參方法,。如今,有一種更流行的微調(diào)技術(shù):Hu 等人提出的低秩自適應(LoRA),。
什么是 LoRA,?它是如何工作的?它與其他流行的微調(diào)方法相比如何,?本文將回答所有這些問題,。
圖片
 提高權(quán)重更新效率
論文《 LoRA: Low-Rank Adaptation of Large Language Models》提出將權(quán)重變化 ΔW 分解為秩較低的表示,。(LoRA 不會直接分解矩陣,而是通過反向傳播來學習分解的矩陣),。
在仔細研究 LoRA 之前,,我們先簡要解釋一下規(guī)則微調(diào)期間的訓練程序。首先是權(quán)重變化 ΔW,。假設(shè) W 表示給定神經(jīng)網(wǎng)絡層中的權(quán)重矩陣,。然后,使用常規(guī)反向傳播,,我們可以獲得權(quán)重更新 ΔW,,它通常被計算為損失乘以學習率的負梯:
圖片
然后,得到 ΔW 后,,原始權(quán)重按如下公式更新:W'=W+ΔW,。如下圖所示(為了簡單起見,省略了偏置矢量),。
或者,,我們可以保持權(quán)重更新矩陣分離,并按如下公式計算輸出:h=Wx+ΔWx:
圖片

其中 x 表示輸入,,如下所示:

 圖片

當在神經(jīng)網(wǎng)絡中訓練全連接(即 dense)層時,,如上所示,權(quán)重矩陣通常具有全秩,,這意味著矩陣不具有任何線性相關(guān)(即冗余)的行或列,。相比之下,與全秩相比,,低秩意味著矩陣具有冗余的行或列,。

因此,盡管預訓練模型的權(quán)重是滿秩矩陣,,但根據(jù) Aghajanyan 等人的說法,,LoRA 的作者指出預訓練的大型語言模型在適應新任務時具有較低的內(nèi)在維度。
低內(nèi)在維度意味著數(shù)據(jù)可以由低維度空間有效地表示或近似,,同時保留其大部分基本信息或結(jié)構(gòu),。換句話說,這意味著可以將適應任務的新權(quán)重矩陣分解為低維(較?。┚仃?,而不會丟失太多重要信息。
例如,,假設(shè) ΔW 是 A×B 維權(quán)重矩陣的權(quán)重更新矩陣,,這個權(quán)重更新矩陣可以分解為兩個較小的矩陣:ΔW=W_A W_B,其中 W_A 是 A×r 維矩陣,W_B 是 r×B 維矩陣,。在這里,,我們保持原始權(quán)重 W 凍結(jié),并且只訓練新的矩陣 W_A 和 W_B,。如下圖所示,。

圖片

選擇秩
上圖中的 r 是超參數(shù),指定用于自適應的低秩矩陣的秩,。r 越小,,低秩矩陣越簡單,在自適應過程中需要學習的參數(shù)越少,,訓練就更快,,計算需求會相應的減少。然而,,r 變小的弊端是,,低秩矩陣捕獲任務特定信息的能力降低。這可能導致較低的自適應質(zhì)量,,并且與較高的 r 相比,,模型在新任務上可能表現(xiàn)不佳??傊?,在 LoRA 中確定 r 的取值,需要在模型復雜性,、自適應能力和擬合不足或擬合過度的風險之間進行權(quán)衡,。因此,重要的是用不同的 r 值進行實驗,,以找到正確的平衡,從而在新任務中滿足所需的性能,。
 LoRA 實戰(zhàn)
LoRA 的使用很直接,,可以將其視為 LLM 中全連接層的前向傳遞修正版。偽代碼如下所示:

圖片

在上面的偽代碼中,,alpha 是一個縮放因子,,用于調(diào)整組合結(jié)果的大小(原始模型輸出加上低秩自適應),。這平衡了預訓練模型的知識和新的任務特定適應 —— 默認情況下,,alpha 通常設(shè)置為 1。還要注意,,當 W_A 被初始化為小的隨機權(quán)重時,,W_B 被初始化為 0,從而使得圖片,,這意味著需要從原始權(quán)重開始訓練,。
參數(shù)效率
接下來說一說最棘手的問題:如果引入新的權(quán)重矩陣,,參數(shù)如何才能有效?新的矩陣 W_A 和 W_B 可以非常小,。例如,,假設(shè) A=100,B=500,,那么 ΔW 的大小為 100×500=50000,。如果將其分解為兩個較小的矩陣,一個 100×5 維矩陣 W_A 和一個 5×500 維矩陣 W_B,。這兩個矩陣總共只有 5×100+5×500=3000 個參數(shù),。
 減少推理開銷
在實踐中,如果在如上所示的訓練后保持原始權(quán)重 W 以及矩陣 W_A 和 W_B 處于分離狀態(tài),,推理過程中就會額外產(chǎn)生效率損失,,因為引入了額外的計算步驟。相反可以在訓練后通過 W’=W+W_A?W_B 更新權(quán)重,,這類似于前面提到的 W’=W+ΔW,。
然而,保持權(quán)重矩陣 W_A 和 W_B 分離也可能有些優(yōu)勢,。例如,,假設(shè)希望保留預訓練的模型作為各種客戶的基礎(chǔ)模型,并且希望從基礎(chǔ)模型開始為每個客戶創(chuàng)建一個微調(diào)的 LLM,。在這種情況下,,就不需要為每個客戶存儲完整的權(quán)重矩陣 W’。不然存儲模型的所有權(quán)重 W’=W+W_A W_B 對于 LLM 來說可能非常大,,因為 LLM 通常具有數(shù)十億到數(shù)萬億的權(quán)重參數(shù),。因此,可以保留原始模型 W,,只需要存儲新的輕量級矩陣 W_A 和 W_B,。
用具體的數(shù)字來說明的話,一個完整的 7B LLaMA checkpoint 需要 23 GB 的存儲容量,,而選擇 r=8 的秩,,則 LoRA 權(quán)重可以小到 8 MB。
 實踐效果
LoRA 在實踐中有多好,,與完全微調(diào)和其他參數(shù)有效方法相比如何,?根據(jù) LoRA 的論文,在幾個特定任務的基準測試中,,使用 LoRA 的模型的建模性能略好于使用 Adapters,、prompt tuning 或 prefix tuning 的模型。通常,LoRA 的性能甚至比微調(diào)所有層更好,,如下面 LoRA 論文的注釋表所示,。
圖片
值得注意的是,LoRA 與其他微調(diào)方法正交,,這意味著它也可以與 Adapters 或 prefix tuning 相結(jié)合,。
LoRA & LLaMA
現(xiàn)在,讓我們使用 LoRA 來微調(diào) Meta 提出的 LLaMA 模型,。
除了用于訓練和運行 LLaMA 本身的代碼(使用原始的 Meta-LLaMA 權(quán)重)外,,還包含用于使用 LLaMA Adapter 和 LoRA 微調(diào) LLaMA 的代碼。
作者建議使用以下操作方法文件:
  • 下載預訓練的權(quán)重:https://github.com/Lightning-AI/lit-llama/blob/main/howto/download_weights.md

  • 使用 LoRA 進行微調(diào):https://github.com/Lightning-AI/lit-llama/blob/main/howto/finetune_lora.md

  • 使用適配器進行微調(diào):https://github.com/Lightning-AI/lit-llama/blob/main/howto/finetune_adapter.md(可選,,用于比較研究)

下一節(jié)將比較 7B LLaMA 基礎(chǔ)模型與使用 LoRA 和 LLaMA Adapter 微調(diào)的 7B LLaMA 基礎(chǔ)模型,。(請注意,需要具有至少 24 GB RAM 的 GPU),。
計算性能基準
本節(jié)中,,作者將比較 LLaMA 7B 基礎(chǔ)模型與使用 LoRA 和 LLaMA Adapter 微調(diào)的基礎(chǔ)模型的計算性能。
微調(diào)數(shù)據(jù)集是 Alpaca 52k 指令數(shù)據(jù)集,,其結(jié)構(gòu)如下:

圖片

數(shù)據(jù)集是按照 Self-Instruct 論文中描述的方法生成的,,由 49759 個訓練樣本和 2000 個驗證樣本組成。Self-Instruct 的流程可總結(jié)為 4 個步驟:
  • 種子任務池,,包含一組人工編寫的指令(本例中為 175 條)和樣本指令,;

  • 使用預訓練的 LLM(如 GPT-3)來確定任務類別;

  • 給定新指令,,讓預訓練的 LLM 生成響應結(jié)果,;

  • 在將響應結(jié)果添加到任務池之前,先收集,、剪枝和篩選響應結(jié)果,。

圖片
Alpaca 52k 數(shù)據(jù)集是使用上述 Self-Instruct 程序收集的。但是,,也可以使用(或?qū)⑵渑c)替代數(shù)據(jù)集進行比較,。例如,一個有趣的候選數(shù)據(jù)集是最近發(fā)布的開源 databricks-doolly-15k 數(shù)據(jù)集,,該數(shù)據(jù)集包含 databricks 員工編寫的約 15k 條指令 / 響應微調(diào)記錄。Lit LLaMA 存儲庫包含一個數(shù)據(jù)集制備腳本,,可以選擇使用 Dolly 15k 數(shù)據(jù)集,。
給定以下超參數(shù)設(shè)置(塊大小、批大小和 LoRA 的 r),,Adapter 和 LoRA 都可以以 bfloat-16 的混合精度,,在具有 24 Gb RAM 的單個 GPU 上微調(diào) 7B 參數(shù)的 LLaMA 基本模型。
LoRA
圖片
LaMA Adapter
圖片
如果代碼將來發(fā)生變化,GitHub 上會同步更新代碼(帶有超參數(shù)設(shè)置),。
Adapter 在 A100 上使用了大約 22 Gb 的空間,,并在 162 分鐘內(nèi)完成了 62400 次迭代。同樣的迭代次數(shù)下,,LoRA 使用了 21 Gb 的內(nèi)存,,在 192 分鐘內(nèi)完成??傊?,同樣基于 Lit-LLaMA 的 Adapter 和 LoRA 使用的 RAM 數(shù)量大致相同,訓練時間大致相同,。(請注意,,這是在單個 GPU 上進行的,但如果有多個 GPU,,只需將設(shè)備參數(shù)更改為 > 1 即可利用額外的加速?。┫啾戎拢耆⒄{(diào)(LLaMA 7B 由 32 個 Transformer 塊和 3 個全連接的輸出層組成)需要至少 2 個具有至少 30Gb 的 GPU 和完全分片訓練來分配權(quán)重,?;蛘撸梢允褂?4 個 GPU,,每個 GPU 的最大內(nèi)存使用量為 22 Gb,。在 4 個 GPU 上進行訓練,訓練耗時 1956 分鐘,。在單個 GPU 上至少需要 6000 分鐘,,這將比參數(shù)高效的 LLaMA Adapter 或 LoRA 代價昂貴 30-40 倍。
接下來,,本文將介紹應用不同微調(diào)策略后的模型輸出,。
評估建模性能
有幾種度量標準可用于評估 LLM 生成的文本。例如,,困惑度,、BLEU 和 ROUGE 分數(shù)是自然語言處理中用來評估 LLM 在各種任務中的表現(xiàn)的一些最常見的評估指標。然而,,所有這些指標都有很大的缺點,,人工評估仍然是黃金標準 —— 人工評估的缺點是創(chuàng)建成本高,難以自動化,。簡單起見,,本文只關(guān)注定性比較,看看各種模型產(chǎn)生的一些輸出,。
為了對模型進行定性比較,,本文將使用 “請解釋權(quán)重衰減是如何工作的” 作為 prompt,。
基準模型
圖片
請解釋一下權(quán)重衰減是如何工作的…… 以及為什么它有時看起來有效,有時無效,!
最簡單地說,,權(quán)重衰減從模型中刪除特征(作為特征重要性的函數(shù)),它也被稱為正則化,。
推理時間 1:4.18 秒,,11.95 個 token / 秒
正如我們所看到的,模型開始通過附加 “… 以及為什么它有時看起來有效,,有時不起作用,!” 來補全 prompt。這是因為基礎(chǔ)模型只在下一個單詞預測任務中進行了訓練,,沒有經(jīng)過專門的訓練來處理指令,。盡管如此,它試圖在下面進一步解釋,。這種解釋對正則化做出了一些正確的解釋,,但它并沒有真正捕捉到權(quán)重衰減的關(guān)鍵機制。
LLaMA-Adapter
圖片
權(quán)重衰減是一種懲罰詞條字數(shù)的方法,。通過選擇單詞較少的句子,,模型更有可能選擇那些可能提供重要信息的句子。
推理時間:總計 7.04 秒,,14.21 個 tokens/sec,。
使用的內(nèi)存:13.56 GB。
這個解釋在語法上是合理的,,但也不一定是我們想要的,。
LoRA
圖片
權(quán)重衰減是機器學習模型中用于減少過擬合的算法參數(shù)。這是一個調(diào)整模型權(quán)重的過程,,以減少模型中不太重要的特征的影響并防止過擬合,。權(quán)重衰減是通過向權(quán)重添加少量噪聲來減少模型對訓練數(shù)據(jù)的影響。這個過程鼓勵模型更多地關(guān)注對預測任務更重要的特征,。
推理時間:總計 3.25 秒,,30.76 個 tokens/sec。
使用的內(nèi)存:27.65 GB,。
可以看到離期望的答案越來越近了,;放到廣義線性模型中,這種解釋確實有意義,,在廣義線性模型中,,會強迫模型學習與輸入特征相乘結(jié)果較小的權(quán)重參數(shù)。在神經(jīng)網(wǎng)絡中,,這通常會應用于模型中的所有權(quán)重參數(shù),。
上面的 LoRA 方法目前來說使用的內(nèi)存最多。然而,,如前所述,,可以通過將 LoRA 權(quán)重與預訓練的模型權(quán)重合并來減少這種內(nèi)存使用。
由于評估 LLM 本身就是一個大課題,,因此這種定性概述只能反應每個模型能力的一小部分,。但這里的要點是,LoRA 可以用于以相對經(jīng)濟高效的方式在指令數(shù)據(jù)集上微調(diào) LLM,。
結(jié)論
本文討論了低秩自適應(LoRA),,這是一種參數(shù)完全微調(diào)的有效替代方案。使用 LoRA,,可以在幾個小時內(nèi)在單個 GPU 上對 LLaMA 等相對較大的模型進行微調(diào),,這使得它對那些不想在 GPU 資源上花費數(shù)千美元的人特別有吸引力。LoRA 的特別之處在于,,可以選擇性地將新的 LoRA 權(quán)重矩陣與原始的預訓練權(quán)重合并,,這樣在推理過程中就不會產(chǎn)生額外的開銷或復雜性。
隨著越來越多的 ChatGPT 或 GPT-4 開源替代品的出現(xiàn),,在特定的目標數(shù)據(jù)集或目標上微調(diào)和定制這些 LLM 將在各個研究領(lǐng)域和行業(yè)變得越來越有吸引力,。而 LoRA 等參數(shù)有效的微調(diào)技術(shù)使微調(diào)更具資源效率和可訪問性。Lit LLaMA 存儲庫中提供了諸如 LoRA 和 LLaMA Adapter 之類的參數(shù)高效微調(diào)技術(shù),。
原文鏈接:https:///pages/community/tutorial/lora-llm/

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章