【大模型基礎_毛玉仁】4.1 參數高效微調簡介


目錄

  • 4 參數高效微調
    • 4.1 參數高效微調簡介
      • 4.1.1 下游任務適配
        • 1)上下文學習(In-context learning)
        • 2)指令微調(Instruction Tuning)
      • 4.1.2 參數高效微調
      • 4.1.3 參數高效微調的優勢


4 參數高效微調

大語言模型雖知識豐富,但在垂直領域適配性不足,僅靠提示工程難以解決,需通過微調參數來提升適配性。然而,大語言模型參數量巨大,微調成本高,限制了其在垂直領域的應用。因此,實現效果可靠、成本可控的參數高效微調技術成為關鍵。

下面探討主流的參數高效微調技術:參數附加方法、參數選擇方法低秩適配方法的代表性算法實現與優勢。

.

4.1 參數高效微調簡介

大語言模型在垂直領域適配時,上下文學習和指令微調雖是有效途徑但存在不足。為此,參數高效微調(Parameter-Efficient Fine-Tuning, PEFT)技術出現。

本節先回顧前兩者并分析其局限,再介紹PEFT概念及優勢,最后分類講解主流PEFT方法,包括參數附加、選擇和低秩適配,闡述其原理和代表性工作。

.

4.1.1 下游任務適配

為提高大語言模型在垂直和細分領域的性能,需進行下游任務適配,主流方法有:

  • 上下文學習In-context learning

  • 指令微調Instruction Tuning

1)上下文學習(In-context learning)

上下文學習通過設計Prompt,將任務轉化為生成任務,驅動模型完成任務。

小樣本上下文學習Few-shotin-contextlearning):

  • 將樣本-標簽對轉化為自然語言指令(Instruction)和樣例(Demonstrations),

  • 拼接測試樣本輸入模型,輸出作為預測結果。

  • 該方法無需更新模型參數,可快速應用于多種任務。

上下文學習雖能有效利用大語言模型的能力,但存在明顯缺點:

  • 性能與微調有差距,Prompt設計耗費人力且不同設計導致性能差異大,

  • 推理代價隨Prompt樣例增多而快速上升。

因此,微調大語言模型在許多場景和垂直領域仍有必要。

2)指令微調(Instruction Tuning)

指令微調(Instruction Tuning)通過構建指令數據集并在其上進行監督微調,使模型更好地理解和執行自然語言處理任務指令。其過程如下:

  • 指令數據構建:指令數據包含指令、示例(可選)、問題和回答,構造方式有:1)數據集成,即將帶標簽的自然語言數據集通過模板轉換為指令格式的<輸入,輸出>對,如Flan和P3數據集;2)大語言模型生成,即人工收集少量指令數據后,使用大語言模型進行指令擴展,如InstructWild和Self-Instruct數據集。

  • 監督微調:構建數據集后,采用完全監督的方式對預訓練模型進行微調,通過順序預測輸出中的每個token來訓練模型,從而顯著提升模型的指令遵循能力,增強其推理水平和泛化到新任務、新領域的能力。

指令微調雖能提升大語言模型在下游任務的性能,但監督微調需大量計算資源。如LLaMA2-7B全量微調需近60GB內存,消費級GPU(如RTX4090)無法勝任。因此,在資源受限環境下,研究參數高效微調技術至關重要。

.

4.1.2 參數高效微調

參數高效微調(Parameter-Efficient Fine-Tuning,PEFT)旨在避免微調全部參數,減少在微調過程中需要更新的參數數量和計算開銷,從而提高微調大語言模型的效率。

圖4.2: 高效參數微調方法分類學。
在這里插入圖片描述

以下是三種參數高效微調方法的精簡總結:

  1. 參數附加方法(Additional Parameters Methods):在模型結構中附加較小的可訓練模塊(如適配器層),凍結原始參數,僅微調新模塊,典型方法有適配器微調(Adapter-tuning)、提示微調(Prompt-tuning)、前綴微調(Prefix-tuning)和代理微調(Proxy-tuning)等。

  2. 參數選擇方法(Parameter Selection Methods):僅選擇模型部分參數微調,凍結其余參數,利用部分參數對下游任務的決定性作用,典型方法包括BitFit、Child-tuning和FishMask等。

  3. 低秩適配方法(Low-rank Adaptation Methods):通過低秩矩陣近似原始權重更新矩陣,凍結原始參數,僅微調低秩更新矩陣,大幅節省內存開銷,經典方法有LoRA及其變體如AdaLoRA、DyLoRA和DoRA等。

三種參數高效微調(PEFT)方法:

  • 參數附加方法(Additional Parameters Methods):在模型結構中附加較小的可訓練模塊(如適配器層),凍結原始參數,僅微調新模塊,典型方法有適配器微調(Adapter-tuning)、提示微調(Prompt-tuning)、前綴微調(Prefix-tuning)和代理微調(Proxy-tuning)等。

  • 參數選擇方法(Parameter Selection Methods):僅選擇模型部分參數微調,凍結其余參數,利用部分參數對下游任務的決定性作用,典型方法包括BitFit、Child-tuning和FishMask等。

  • 低秩適配方法(Low-rank Adaptation Methods):通過低秩矩陣近似原始權重更新矩陣,凍結原始參數,僅微調低秩更新矩陣,大幅節省內存開銷,經典方法有LoRA及其變體如AdaLoRA、DyLoRA和DoRA等。

.

4.1.3 參數高效微調的優勢

參數高效微調(PEFT)有以下優勢:

  • 計算效率高:減少需更新參數數量,降低訓練時計算資源消耗。

  • 存儲效率高:減少微調參數數量,顯著降低模型存儲空間,適用于內存受限設備。

  • 適應性強:可快速適應不同任務,無需重新訓練整個模型,提升模型在變化環境中的靈活性。

表4.1: 全量參數微調和參數高效微調顯存占用對比(OOM代表超出內存限制)

模型名全量參數微調參數高效微調 (LoRA)
bigscience/T0_3B47.14GB GPU / 2.96GB CPU14.4GB GPU / 2.96GB CPU
bigscience/mt0-xxl (12B params)OOM GPU56GB GPU / 3GB CPU
bigscience/bloomz-7b1 (7B params)OOM GPU32GB GPU / 3.8GB CPU

.


其他參考:【大模型基礎_毛玉仁】系列文章


聲明:資源可能存在第三方來源,若有侵權請聯系刪除!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/73403.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/73403.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/73403.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Postman使用02、斷點、fiddler弱網測試

腳本操作 一、腳本導出 1.導出json腳本 2.打包json文件 3.下載的文件 二 .導入腳本 1.選擇文件 2.點擊導入 3.導入的接口 三.多接口運行 1.集合右鍵&#xff0c;點擊run &#xff0c;運行多個接口 2.編輯環境&#xff0c;集合&#xff0c;執行次數等 3.運行多個接口 四.運行…

深挖增長內核:好產品驅動增長的全方位解析

年前在老板的帶領下深入學習了《增長黑客》&#xff0c;并思考了在CPS站外引流的落地方案&#xff0c;最近剛好在做京東聯盟的京粉推客增長體系建設&#xff0c;再次回顧一下增長黑客方法以及記錄一下思考。 好產品才是增長的根本。增長黑客理念風靡&#xff0c;“啊哈時刻” 概…

新手小白 react-useEffect 使用場景

useEffect 是 React 中的一個非常重要的 Hook&#xff0c;用于處理組件的副作用&#xff08;side effects&#xff09;。它通常在以下幾種場景中使用&#xff1a; 1. 數據獲取 當組件加載時&#xff0c;需要從外部 API 獲取數據&#xff0c;或者從本地存儲中讀取數據。示例&a…

MySQL 調優:查詢慢除了索引還能因為什么?

文章目錄 情況一&#xff1a;連接數過小情況二&#xff1a;Buffer Pool 太小 MySQL 查詢慢除了索引還能因為什么&#xff1f;MySQL 查詢慢&#xff0c;我們一般也會想到是因為索引&#xff0c;但除了索引還有哪些原因會導致數據庫查詢變慢呢&#xff1f; 以下以 MySQL 中一條 S…

【操作系統】進程三種狀態?進程間狀態的切換?掛起態?

進程狀態 進程的五種&#xff08;三種&#xff09;狀態&#xff1a; 新建&#xff08;New&#xff09;&#xff1a;進程剛被創建&#xff0c;尚未加入到就緒隊列&#xff1b;就緒&#xff08;Ready&#xff09;&#xff1a;進程已獲得除CPU外的所有資源&#xff0c;等待被調度執…

計算機控制系統的最小拍控制器設計及仿真分析

1題目 開環傳遞函數 G(s) 2/(s(0.5s1)) &#xff0c;采樣周期 T0.5 秒&#xff0c;設計單位速度輸入下的最小拍控制器 1.1 方法1 根據課本中的步驟&#xff0c;最小拍控制器的設計步驟如下&#xff1a; 1. 確定對象的離散傳遞函數G(z)&#xff0c;并確定其零極點。 2. 確定…

哈希--哈希桶

哈希桶是哈希表&#xff08;散列表&#xff09;中的一個概念&#xff0c;是哈希表數組中的每個元素 &#xff0c;用于存儲鍵值對數據。它有以下特點和相關要點&#xff1a; 結構與原理&#xff1a;哈希表底層常由數組構成&#xff0c;數組的每個元素即哈希桶。通過哈希函數計算…

Linux多線程詳解

Linux多線程詳解 一、Linux多線程概念1.1 什么是線程1.2 進程和線程1.3 進程的多個線程共享1.4 進程和線程的關系 二、Linux線程控制2.1 POSIX線程庫2.2 線程創建2.3 獲取線程ID pthread_self2.4 線程等待pthread_join2.5 線程終止2.6 線程棧 && pthread_t2.7 線程的局…

Midscene.js自然語言驅動的網頁自動化全指南

一、概述 網頁自動化在數據抓取、UI 測試和業務流程優化中發揮著重要作用。然而&#xff0c;傳統工具如 Selenium 和 Puppeteer 要求用戶具備編程技能&#xff0c;編寫復雜的選擇器和腳本維護成本高昂。Midscene.js 通過自然語言接口革新了這一領域&#xff0c;用戶只需描述任…

winstart.wsf 病毒清理大作戰

0x00 背景 發現感染了winstart.wsf 病毒如何清理。 0x01 現象 遍歷Users下每個目錄以及C:\和C:\Windows\Temp 2個目錄寫入病毒文件。 C:\Users\Administrator\AppData\Local\Temp\winstart.wsf C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Program…

多路轉接Poll

在之前我們講過select是最古老的多路轉接方案&#xff0c;古老就意味著他不是很方便使用&#xff0c;他需要用戶手動保存fd_set這個位圖結構&#xff0c;來表示讀寫事件的關注與否或者就緒性。 而且由于fd_set的大小是固定的&#xff0c;這就意味著他能管理的套接字文件描述符是…

多層感知機的簡潔實現

《動手學深度學習》-4.3-筆記 import torch from torch import nn from d2l import torch as d2l 導入必要的庫和模塊 net nn.Sequential(nn.Flatten(),nn.Linear(784, 256),nn.ReLU(),nn.Linear(256, 10))def init_weights(m):if type(m) nn.Linear:nn.init.normal_(m.we…

【GoLang】調用llm時提示詞prompt的介紹以及使用方式

介紹 提示詞是一種與大模型交互的對話格式&#xff0c;它以 JSON 格式定義了一個消息列表&#xff08;messages&#xff09;&#xff0c;包含了系統消息和用戶消息。 我們向AI提問時&#xff0c;其實發給AI的都是提示詞&#xff0c;別看我們只是簡單輸入了一句話&#xff0c;…

內核編程十二:打印task_struct中的數據

在Linux內核中&#xff0c;current 是一個宏&#xff0c;用于獲取當前正在執行的進程的 task_struct 結構體指針。current 宏返回一個指向當前正在運行的進程的 task_struct 結構體的指針。通過這個指針&#xff0c;內核代碼可以訪問和修改當前進程的各種屬性和狀態。 打印單個…

區間端點(java)(貪心問題————區間問題)

deepseek給了一種超級簡單的做法 我是真的想不到 貪心的思路是 局部最優——>全局最優 這種我是真的沒有想到&#xff0c;這樣的好處就是后面便利的時候可以通過foreach循環直接便利qu的子元素也就是對應的某一個區間, 將一個二維數組變成一維數組&#xff0c;每一個一維…

Qt事件處理(處理鼠標事件、鍵盤事件、定時器事件、窗口移動和大小變化事件)

事件處理 事件是應用程序內部或者外部產生的事情或者動作的統稱。 在 Qt 中&#xff0c;事件是用一個對象來管理一個事件的。所有的事件對象都繼承自抽象類 QEvent 。事件包括鼠標事件、鍵盤事件等&#xff0c;發出自 Qt 或操作系統本身。 處理事件一般通過重寫相關的 Event 函…

Apache Hive:基于Hadoop的分布式數據倉庫

Apache Hive 是一個基于 Apache Hadoop 構建的開源分布式數據倉庫系統&#xff0c;支持使用 SQL 執行 PB 級大規模數據分析與查詢。 主要功能 Apache Hive 提供的主要功能如下。 HiveServer2 HiveServer2 服務用于支持接收客戶端連接和查詢請求。 HiveServer2 支持多客戶端…

利用 @eslint/eslintrc 實現 ESLint9的適配

深度解析&#xff1a;利用 eslint/eslintrc 實現 ESLint 的高效配置管理 在前端開發領域&#xff0c;代碼質量和一致性是至關重要的。ESLint 作為一款流行的代碼檢查工具&#xff0c;幫助開發者發現代碼中的潛在問題并保持代碼風格的一致性。而隨著項目的復雜度增加和團隊規模…

cfca 申請國密證書流程

之前給某銀行開發項目&#xff0c;需要用到cfca國密雙證證書&#xff0c;證書類型為企業雙證的作為接口加密的密鑰。 因為是第一次對接&#xff0c;其中走了不少的彎路&#xff0c;現將申請的流程發布出來做下記錄 1、需要找到cfca的相關人員進行測試證書的申請 2、大概1天的…

基于Spring Boot的鄉村養老服務管理系統的設計與實現(LW+源碼+講解)

專注于大學生項目實戰開發,講解,畢業答疑輔導&#xff0c;歡迎高校老師/同行前輩交流合作?。 技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;…