SFT實驗報告

大模型微調實驗報告*

實驗目標

梳理大模型微調方法,評估各種基座和微調方法的實驗效果。

基礎模型

\1.Llama

\2.Qwen

\3.Chatglm4

\4.

微調策略

LoRA系列

低秩適配(LoRA)的核心思想是凍結原始參數,通過低秩分解引入可訓練參數。

LoRA假設預訓練模型的參數矩陣的更新可以表示為一個低秩矩陣。具體來說,對于一個預訓練好的權重矩陣W(d*e),LoRA引入兩個低秩矩陣A(d*r)和B(r*e),其中r是秩,遠小于d和e向量為度。在微調過程中,只需優化A和B,而W保持不變。更新后的權重矩陣為:

W0=W+BA

img

偽代碼示例:

importtorch
importtorch.nnasnnclassLoRALayer(nn.Module):
def__init__(self,in_dim,out_dim,rank):
super().__init__()
self.A=nn.Parameter(torch.randn(in_dim,rank))
self.B=nn.Parameter(torch.zeros(rank,out_dim))
self.rank=rank**#秩的大小**
defforward(self,x):
returnx@(self.A@self.B)**#低秩矩陣乘積

關鍵技術演進

img

AdaLoRA

  • 核心思想:AdaLoRA旨在動態調整各層的秩分配
  • 實現方式:AdaLoRA通過一些指標(例如,梯度范數)來評估不同層的重要性,并根據重要性動態地調整LoRA的秩。更重要的層分配更高的秩,從而獲得更好的性能。

QLoRA

  • 核心思想:QLoRA將4-bit量化與LoRA相結合,以進一步降低顯存占用。
  • 實現方式:QLoRA首先將預訓練模型的權重量化為4-bit精度,然后在此基礎上應用LoRA。由于4-bit量化可以顯著降低顯存占用,因此QLoRA可以在有限的GPU資源上微調更大的模型。
  • 顯存節省:QLoRA可以節省高達70%的顯存。

Delta-LoRA

  • 核心思想:Delta-LoRA引入參數更新量的動量機制
  • 實現方式:Delta-LoRA在更新LoRA參數時,考慮之前的更新方向和幅度,從而更穩定地進行微調。
提示微調技術

提示微調(Prompt-Tuning)是一種通過設計合適的提示(Prompt)來引導預訓練模型完成下游任務的技術。與全參數微調和LoRA不同,提示微調通常不直接修改預訓練模型的參數(注意不是完全不修改參數),而是通過優化提示相關的向量來調整模型的行為。

核心思想

  • 人工設計到可學習:提示工程(Prompt-Engineering)經歷了從人工設計提示到可學習提示的演進過程。
  • 利用預訓練知識:通過優化提示,引導模型利用預訓練知識,從而減少對標注數據的依賴。

位置選擇策略

img

Prefix-Tuning

img

  • 核心思想:只在每層開頭插入可訓練的提示向量。在Prefix層加了MLP結構,然后切分為key和value矩陣,然后和每一層的key-value矩陣拼接。訓練完成后,只保留Prefix的參數。

  • 數學形式
    h l = T r a n s f o r m e r ( [ P r e f i x l ; x l ] ) h^l = Transformer([Prefix^l;x^l]) hl=Transformer([Prefixl;xl])

  • 參數量:每層新增參數d*r(d為維度,r為前綴長度)

  • 優點:Prefix-Tuning可以有效地影響模型的每一層,從而更好地調整模型的行為。

  • 缺點:Prefix-Tuning需要插入大量的提示向量,可能會增加計算成本。

P-Tuning v2

  • 核心思想分層插入位置可學習
  • 實現方式:P-Tuning v2首先將提示向量插入到不同的層中,然后通過訓練來確定每個提示向量的最佳位置。
  • 數學形式
  • 優點:P-Tuningv2可以更靈活地調整提示向量的位置,從而更好地適應不同的任務。

Prompt-Tuning(藍色):

  • 核心思想:僅在輸入層添加可訓練提示詞。
  • 參數量:僅需(為提示詞數量)
  • 數學形式
  • 優點:Prompt-Tuning的實現簡單,計算成本低。
  • 缺點:Prompt-Tuning的效果可能不如Prefix-Tuning和P-Tuningv2。

實驗設計

數據集

數據來源與規模(如領域專用語料、人工標注數據)

來自于CHIP2023-PromptCBLUE-參數高效微調賽道數據集,原始數據集有15個任務,包括分類、ner、總結、生成等基本任務,本實驗選取其中三類任務,描述如下:

任務類型數據集數量
trainclsIMCS-V2-DAC1536
trainnerCMeEE-V21492
trainreport_generationIMCS-V2-MRG872
validclsIMCS-V2-DAC547
validnerCMeEE-V2496
validreport_generationIMCS-V2-MRG269

數據預處理(清洗、格式轉換)

格式轉換為json,字段包括instruction、input、output、history,樣例如下:

{"instruction": "根據對話內容,判斷最后一句話的意圖類別是:\n問診對話歷史:\n患者:就是早晨起床干咳的那種,咳一陣\n醫生:化驗過肺炎支原體感染嗎\n患者:不是支原體感染,化驗過\n醫生:肺炎治療后,復查過嗎\n患者:掛完水醫生建議不用繼續掛水,吃藥,吃了一個星期的金振口服液,匹多莫得,鹽酸西替利滴劑還有睡前咀嚼的\n患者:一個星期吃這么多,后來又去醫院復查,醫生說就吃匹多莫得和睡前咀嚼的就可以了,\n患者:但是現在白天也咳嗽了\n醫生:目前看醫生給用了抗氣道過敏藥物\n醫生:這個對于改善目前氣道高反應狀態,還是很對癥。\n醫生:目前考慮按療程治療后,基本的炎癥,都已經消下去了\n醫生:目前咳嗽,還主要是一個氣道高反應,過敏狀態\n患者:那怎么辦呢\n患者:過敏癥狀吃什么呢?\n患者:滴劑要不要繼續吃\n醫生:可以做做霧化\n選擇:關于病因的回答,關于注意事項的提問,關于用藥建議的提問,關于用藥建議的解答,關于癥狀的回答,關于個人基本信息的回答,關于已有檢查和治療的回答,關于病因的詢問,關于就醫建議的解答,關于注意事項的解答,給出診斷,關于已有檢查和治療的提問,關于癥狀的詢問,關于就醫建議的提問,關于個人基本信息的詢問\\","input":"", "target": "關于用藥建議的解答", "history": ""}

環境配置

1.硬件配置(GPU型號、顯存占用)

  1. linux ubuntu
  2. nvidia v100 32G

2.軟件配置、環境依賴

1. peft==0.14.0
2. transformers==4.49.0
3. trl==0.15.2
4. torch==2.4.0
5. bitsandbytes==0.45.3

*基本參數*

優化器與超參數(學習率、batch size、epoch數)

超參數描述備注
num_train_epochs10
lora_target‘q_proj,k_proj,v_proj,out_proj,fc1,fc2’lora系列
learning_rate1e-3
use_ntklinear
padding_sideleft
torch_dtypefloat16
quantizationbnb
max_input_token2048
use_firefly_lossTrue
gradient_accumulation_steps4
optimadamw_torch
lr_scheduler_typecosine
num_virtual_tokens20prompt_tuning
prompt_encoder_hidden_size128prompt_tuning

實驗結果與分析

性能對比

基座微調方法rouge-1rouge-2rouge-l
Qwenqlora71.75859.34111.761
Qwenlora73.52660.51911.897
Qwenprefix71.32858.59417.857
Qwenprompt59.11843.10910.048
Qwenptuning71.12257.70911.529

Qwen上lora最優

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

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

相關文章

LLM - R1 強化學習 DRPO 策略優化 DAPO 與 Dr. GRPO 算法 教程

歡迎關注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/146533892 在強化學習算法中,DAPO (Decoupled Clip and Dynamic Sampling Policy Optimization),通過解耦裁剪和動態采樣策…

美攝科技智能汽車視頻延遲攝影解決方案,開啟智能出行新視界

在智能汽車時代,車載影像技術正以前所未有的速度發展,成為提升駕乘體驗和滿足用戶多樣化需求的關鍵因素。美攝科技憑借其卓越的技術實力和創新精神,推出了智能汽車視頻延遲攝影解決方案,為智能汽車行業帶來了一場視覺盛宴。 一、…

[250325] Claude AI 現已支持網絡搜索功能!| ReactOS 0.4.15 發布!

目錄 Claude AI 現已支持網絡搜索功能!ReactOS 0.4.15 發布! Claude AI 現已支持網絡搜索功能! 近日,Anthropic 公司宣布,其 AI 助手 Claude 現在可以進行網絡搜索,為用戶提供更及時、更相關的回復。這項新…

代碼規范之Variable Names變量名

代碼規范之Variable Names變量名 golang中 官方文檔:https://go.dev/wiki/CodeReviewComments#variable-names Variable names in Go should be short rather than long. This is especially true for local variables with limited scope. Prefer c to lineCoun…

Mybatis_plus

前言 Mybatis_plus 是在 mybatis 的基礎上進行了增強,在 MyBatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生。本文章只做簡單的使用介紹,更加詳細的內容大家可以參考官網。 下面是mybatis_plus 官網地址: mybatis_plu…

深圳問頂安全科技有限公司asktopsec是做什么的?

深圳問頂安全科技有限公司,是一家專業的AI與應用安全公司。 全球領先的AI、Android、IOS應用安全解決方案提供商,官網:https://asktopsec.com 問頂安全主要為企業提供AI和應用安全服務 移動應用安全檢測、移動應用安全加固、AI智能體安全、AI…

鴻蒙OS 5 架構設計探秘:從分層設計到多端部署

文章目錄 鴻蒙OS架構設計探秘:從分層設計到多端部署一、鴻蒙的分層架構設計二、模塊化設計的精髓三、智慧分發設計:資源的動態調度四、一次開發,多端部署的實踐總結與思考 鴻蒙OS架構設計探秘:從分層設計到多端部署 最近兩年來&a…

idea 沒有 add framework support(添加框架支持)選項

在 IntelliJ IDEA 2023 中,若需通過設置手動添加 “添加框架支持” 菜單項,可按照以下步驟操作: 手動添加 “添加框架支持” 菜單項 打開設置 點擊頂部菜單欄的 File(文件) -> Settings(設置&#xff09…

計算機網絡--傳輸層(2)

傳輸層核心機制深度解析 一、可靠傳輸實現機制 1. 校驗和機制 技術原理: 使用16位二進制反碼求和算法,計算范圍包括TCP偽首部(12字節)、TCP首部(20字節)和數據部分接收端重新計算校驗和,若與…

再探帶權并查集

典型例題 Acwing 權值 故名思義,在帶權并查集中,我們需要讓每個節點攜帶一個**“權值”**。 那么這個權值應該是什么呢?其實答案就在并查集當中。 由于在并查集當中我們可以在 O ( 1 ) O(1) O(1) 時間內找到一個節點的根節點,那…

Vala編成語言教程-構造函數和析構函數

構造函數 Vala支持兩種略有不同的構造方案:我們將重點討論Java/C#風格的構造方案,另一種是GObject風格的構造方案。 Vala不支持構造函數重載的原因與方法重載不被允許的原因相同,這意味著一個類不能有多個同名構造函數。但這并不構成問題&…

本地部署Stable Diffusion生成爆火的AI圖片

直接上代碼 Mapping("/send") Post public Object send(Body String promptBody) { JSONObject postSend new JSONObject(); System.out.println(promptBody); JSONObject body JSONObject.parseObject(promptBody); List<S…

python爬蟲WASM

WASM 一.WASM簡介 1.1 WASM定義 ? WebAssembly(簡稱wasm)是一個虛擬指令集體系架構(virtual ISA),整體架構包括核心的ISA定義、二進制編碼、程序語義的定義與執行,以及面向不同的嵌入環境(如Web)的應用編程接口(WebAssembly API)。是一種運行在現代網絡瀏覽器中的…

Docker鏡像遷移方案

Docker鏡像遷移方案 文章目錄 Docker鏡像遷移方案一&#xff1a;背景二&#xff1a;操作方式三&#xff1a;異常原因參考&#xff1a; 一&#xff1a;背景 比如機器上已經有先有的容器&#xff0c;但是docker pull的時候是失敗的二&#xff1a;操作方式 1、停止正在運行的容器…

關于跨域問題(本地前端訪問服務器端接口跨域出錯)

問題來源&#xff1a; 當服務器封裝了接口但是本地電腦端前端訪問出現跨域問題。 解決方案&#xff1b; 1、使用ipconfig 查看本地電腦的ip地址 ipconfig 2、在后端接口處配置如下代碼 allow_origins["http://本地ip地址:3001", # 局域網內其他設備訪問的本地…

邊緣計算 vs. 云計算,誰才是工業物聯網的未來?

前言 在物聯網&#xff08;IoT&#xff09;飛速發展的今天&#xff0c;邊緣計算正在徹底改變數據的處理、存儲和分析方式。傳統的IoT設備數據通常需要發送到云端進行處理&#xff0c;但隨著設備數量的激增&#xff0c;這種模式在延遲、帶寬和安全性方面暴露出諸多局限。邊緣計…

dell 臺式機 電腦 紐扣電池 如何取下?

dell 臺式機 電腦 紐扣電池 如何取下&#xff1f; 戴爾-optiplex-3060-塔式機-服務手冊

NFC 智能門鎖全棧解決方案:移動端、服務器、Web 管理平臺

目錄 一、系統整體架構 二、移動端 APP 開發 2.1 開發環境與基礎準備 2.2 主要功能模塊 2.3 示例代碼&#xff08;Android/Kotlin 簡化示例&#xff09; 三、后臺服務開發 3.1 環境準備 3.2 主要功能 3.3 示例代碼&#xff08;Node.js Express 簡化示例&#xff09; …

DDR4、DDR5、固態硬盤(SSD)和機械硬盤(HDD)在連續讀/寫、隨機讀/寫性能的對比分析

以下是關于DDR4、DDR5、固態硬盤&#xff08;SSD&#xff09;和機械硬盤&#xff08;HDD&#xff09;在連續讀/寫、隨機讀/寫性能的對比分析&#xff0c;結合技術特性與應用場景的總結&#xff1a; 一、性能對比表格 存儲類型連續讀&#xff08;MB/s&#xff09;連續寫&#x…

【AI】MAC版本本地Stable Diffusion web ui安裝

文章目錄 前言環境依賴homebrewpython3下載stable-diffusion-webui webui模型準備模型網站 中文頁面設置提示詞轉漢語轉英文controlnet安裝controlnet模型下載 結尾 前言 目前&#xff0c;市面上已經出現了很多用Ai 繪圖制作的作品&#xff0c;用于自媒體或者商業等。例如表情…