精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

深度學習自然語言處理 ? 來源:機器之心 ? 2023-05-28 10:58 ? 次閱讀
選自Lightning AI

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

LoRA 微調方法,隨著大模型的出現而走紅。

進NLP群—>加入NLP交流群

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

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

301ac6de-fcbf-11ed-90ce-dac502259ad0.png ?當在神經網絡中訓練全連接(即 dense)層時,如上所示,權重矩陣通常具有全秩,這意味著矩陣不具有任何線性相關(即冗余)的行或列。相比之下,與全秩相比,低秩意味著矩陣具有冗余的行或列。 因此,盡管預訓練模型的權重是滿秩矩陣,但根據 Aghajanyan 等人的說法,LoRA 的作者指出預訓練的大型語言模型在適應新任務時具有較低的內在維度。低內在維度意味著數據可以由低維度空間有效地表示或近似,同時保留其大部分基本信息或結構。換句話說,這意味著可以將適應任務的新權重矩陣分解為低維(較小)矩陣,而不會丟失太多重要信息。例如,假設 ΔW 是 A×B 維權重矩陣的權重更新矩陣,這個權重更新矩陣可以分解為兩個較小的矩陣:ΔW=W_A W_B,其中 W_A 是 A×r 維矩陣,W_B 是 r×B 維矩陣。在這里,我們保持原始權重 W 凍結,并且只訓練新的矩陣 W_A 和 W_B。如下圖所示。

30208e20-fcbf-11ed-90ce-dac502259ad0.png

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

302f787c-fcbf-11ed-90ce-dac502259ad0.png

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

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

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

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

30c6e630-fcbf-11ed-90ce-dac502259ad0.png

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

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

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

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 語言模型
    +關注

    關注

    0

    文章

    508

    瀏覽量

    10245
  • LoRa
    +關注

    關注

    349

    文章

    1675

    瀏覽量

    231792
  • ChatGPT
    +關注

    關注

    29

    文章

    1548

    瀏覽量

    7504

原文標題:調教LLaMA類模型沒那么難,LoRA將模型微調縮減到幾小時

文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    NVIDIA AI Foundry 為全球企業打造自定義 Llama 3.1 生成式 AI 模型

    Foundry 提供從數據策管、合成數據生成、微調、檢索、防護到評估的全方位生成式 AI 模型服務,以便部署自定義 Llama 3.1 NVIDIA NIM 微服務和新的 NVIDIA NeMo
    發表于 07-24 09:39 ?683次閱讀
    NVIDIA AI Foundry 為全球企業打造自定義 <b class='flag-5'>Llama</b> 3.1 生成式 AI <b class='flag-5'>模型</b>

    【飛騰派4G版免費試用】仙女姐姐的嵌入式實驗室之五~LLaMA.cpp及3B“小模型”OpenBuddy-StableLM-3B

    和語法規則,這些詞匯串聯起來,形成一個完整的回答 關于LLaMALLaMA.cpp LLaMA全稱是Large Language Model Meta AI,是由Meta AI研
    發表于 12-22 10:18

    MEMS器件縮減模型建模方法研究

    論述了微機電系統(MEMS)器件縮減模型的建立是進行MEMS系統級模擬的關鍵。論證了基于線性正交振型建立MEMS器件縮減模型是一種有效的方法,導出了MEMS器件動態
    發表于 05-28 11:19 ?17次下載

    新突破!超級計算機上深度學習訓練時間縮減到數分鐘

    微軟和瑞士國家計算中心(CSCS)的科學家們取得了重大突破,超級計算機上深度學習的訓練時間縮減到數分鐘。訓練時間的縮短,再加上超級計算機技術的引入,或能夠解決現在在圖像、視頻和語音識別,自然語言
    發表于 05-11 12:55 ?2588次閱讀

    使用LoRA和Hugging Face高效訓練大語言模型

    在本文中,我們展示如何使用 大語言模型低秩適配 (Low-Rank Adaptation of Large Language Models,LoRA) 技術在單 GPU 上微調 1
    的頭像 發表于 04-14 17:37 ?1974次閱讀

    iPhone都能微調模型了嘛

    一起提出的新方法 QLoRA 把微調模型的 顯存需求從>780GB降低到 。 開源社區直接開始狂歡,相關論文成為24小時內關注度最高的AI論文。 ? 以Meta的美洲駝LLaMA為基
    的頭像 發表于 06-02 15:26 ?685次閱讀
    iPhone都能<b class='flag-5'>微調</b>大<b class='flag-5'>模型</b>了嘛

    一種新穎的大型語言模型知識更新微調范式

    我們使用LLAMA2-7B作為實驗的基礎模型。我們主要評估舊知識更新為新知識的能力,因此模型首先在舊知識上進行為期3個時期的
    發表于 12-01 15:10 ?423次閱讀
    一種新穎的大型語言<b class='flag-5'>模型</b>知識更新<b class='flag-5'>微調</b>范式

    不要錯過!NVIDIA “大模型那么泛!”主題活動

    提供實踐指導,推動大模型的應用,特別為大模型的 入門開發者量身定制 。 活動采用線上直播形式,每位專家演講 30 分鐘,深入解讀大模型通識和應用,每位專家演講結束后有 15 分鐘 QA 環節,各位開發者可以與專家在線交流溝通。
    的頭像 發表于 12-20 19:35 ?631次閱讀
    不要錯過!NVIDIA “大<b class='flag-5'>模型</b><b class='flag-5'>沒</b><b class='flag-5'>那么</b>泛!”主題活動

    四種微調模型的方法介紹

    微調(Full Fine-tuning):全微調是指對整個預訓練模型進行微調,包括所有的模型參數。在這種方法中,預訓練
    發表于 01-03 10:57 ?2.4w次閱讀
    四種<b class='flag-5'>微調</b>大<b class='flag-5'>模型</b>的方法介紹

    Meta Llama 3基礎模型現已在亞馬遜云科技正式可用

    亞馬遜云科技近日宣布,Meta公司最新發布的兩款Llama 3基礎模型——Llama 3 8B和Llama 3 70B,現已正式上線并集成至Amazon SageMaker JumpS
    的頭像 發表于 05-09 10:39 ?375次閱讀

    模型為什么要微調?大模型微調的原理

    難以達到最佳性能。為了提升模型在特定任務上的表現,微調(Fine-tuning)成為了一個關鍵步驟。本文詳細探討大模型為什么要進行微調以及
    的頭像 發表于 07-10 10:43 ?3585次閱讀

    英偉達發布AI模型 Llama-3.1-Nemotron-51B AI模型

    速度比原70B大模型提升2.2倍,具備更準確和更高效的運算效率;能夠大幅降低運行成本。 ? ? ? 通過NAS技術微調;大幅降低了內存消耗、計算復雜性;Llama-3.1-Nemotron-51B AI
    的頭像 發表于 09-26 17:30 ?570次閱讀

    亞馬遜云科技上線Meta Llama 3.2模型

    亞馬遜云科技近日宣布,Meta公司的新一代模型Llama 3.2已在其平臺上正式上線。該模型包括Meta首款多模態模型,現已在Amazon Bedrock和Amazon SageMak
    的頭像 發表于 10-11 18:08 ?422次閱讀

    Llama 3 語言模型應用

    在人工智能領域,語言模型的發展一直是研究的熱點。隨著技術的不斷進步,我們見證了從簡單的關鍵詞匹配到復雜的上下文理解的轉變。 一、Llama 3 語言模型的核心功能 上下文理解 :Llama
    的頭像 發表于 10-27 14:15 ?236次閱讀

    Llama 3 模型訓練技巧

    Llama 3 模型,假設是指一個先進的人工智能模型,可能是一個虛構的或者是一個特定領域的術語。 1. 數據預處理 數據是任何機器學習模型的基礎。在訓練之前,確保數據質量至關重要。 數
    的頭像 發表于 10-27 14:24 ?234次閱讀