偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

大型語(yǔ)言模型微調(diào)全攻略:從理論到實(shí)戰(zhàn)的終極指南

譯文 精選
人工智能
想象你擁有一個(gè)像GPT-3或Llama 3這樣強(qiáng)大的LLM,它已在互聯(lián)網(wǎng)規(guī)模的文本上進(jìn)行了預(yù)訓(xùn)練,能回答一般問(wèn)題、創(chuàng)作文本、總結(jié)文章、翻譯語(yǔ)言。微調(diào)的目標(biāo)是讓這位“通才”成為特定領(lǐng)域的“專家”。

譯者 | 朱先忠

審校 | 重樓

微調(diào)是將預(yù)先在海量通用數(shù)據(jù)上訓(xùn)練好的大型語(yǔ)言模型,在更小、更具體的領(lǐng)域或任務(wù)數(shù)據(jù)集上進(jìn)一步訓(xùn)練的過(guò)程。其核心在于利用預(yù)訓(xùn)練模型獲得的通用語(yǔ)言理解能力,通過(guò)特定數(shù)據(jù)進(jìn)行針對(duì)性調(diào)整,使模型能深刻理解專業(yè)術(shù)語(yǔ)、領(lǐng)域規(guī)則和任務(wù)要求,從而生成更準(zhǔn)確、更符合特定需求的輸出。

引言

想象你擁有一個(gè)像GPT-3或Llama 3這樣強(qiáng)大的LLM,它已在互聯(lián)網(wǎng)規(guī)模的文本上進(jìn)行了預(yù)訓(xùn)練,能回答一般問(wèn)題、創(chuàng)作文本、總結(jié)文章、翻譯語(yǔ)言。微調(diào)的目標(biāo)是讓這位“通才”成為特定領(lǐng)域的“專家”。

資料來(lái)源:微調(diào)

模型不必從頭學(xué)起,而是利用其龐大的現(xiàn)有知識(shí)庫(kù),適應(yīng)新領(lǐng)域的細(xì)微差別、術(shù)語(yǔ)和模式。

為什么需要微調(diào)?

微調(diào)至關(guān)重要,原因如下:

  • 領(lǐng)域?qū)I(yè)化:預(yù)訓(xùn)練模型是“多面手”。微調(diào)使其能適應(yīng)特定領(lǐng)域的術(shù)語(yǔ)、風(fēng)格和知識(shí),成為該領(lǐng)域的專家。
  • 任務(wù)特定優(yōu)化:雖然預(yù)訓(xùn)練模型擅長(zhǎng)通用文本生成,但微調(diào)可使其精通特定任務(wù),如情感分析、命名實(shí)體識(shí)別、法律文件摘要或以特定編程語(yǔ)言生成代碼。
  • 性能提升:對(duì)于特定任務(wù),微調(diào)模型幾乎總是優(yōu)于通用預(yù)訓(xùn)練模型,因?yàn)樗鼘W(xué)會(huì)了關(guān)注特定上下文中的相關(guān)模式和信息。
  • 資源效率:從零訓(xùn)練LLM需海量數(shù)據(jù)和計(jì)算資源。微調(diào)所需的數(shù)據(jù)和計(jì)算資源顯著減少,是更實(shí)用的方法。
  • 成本效益:從零構(gòu)建強(qiáng)大、任務(wù)特定的模型成本高昂。微調(diào)提供了一種經(jīng)濟(jì)高效的方法,充分利用現(xiàn)有強(qiáng)大模型并根據(jù)特定需求定制。

微調(diào)與預(yù)訓(xùn)練有何不同?

預(yù)訓(xùn)練和微調(diào)在規(guī)模、目標(biāo)、數(shù)據(jù)、起點(diǎn)、計(jì)算成本和輸出上存在顯著差異:

資料來(lái)源:預(yù)訓(xùn)練與微調(diào)

預(yù)訓(xùn)練

  • 目標(biāo):賦予模型廣泛的語(yǔ)言理解能力(語(yǔ)法、事實(shí)、推理),涵蓋各種環(huán)境下的常規(guī)技能。如同參加綜合駕駛課程考取駕照。
  • 數(shù)據(jù):海量、多樣化文本(書(shū)籍、文章、網(wǎng)站、代碼),數(shù)十億單詞,未標(biāo)記/自標(biāo)記。
  • 起點(diǎn):隨機(jī)初始化權(quán)重(從頭開(kāi)始)。
  • 訓(xùn)練:需大量計(jì)算資源(數(shù)千GPU)、長(zhǎng)時(shí)間(數(shù)周/月),訓(xùn)練所有層。
  • 成本:極高(數(shù)千萬(wàn)至數(shù)億美元)。
  • 輸出:通用、多功能語(yǔ)言模型,但可能在高度專業(yè)化領(lǐng)域達(dá)不到頂尖性能。

微調(diào)

  • 目標(biāo):調(diào)整預(yù)訓(xùn)練模型的現(xiàn)有知識(shí),使其在特定任務(wù)或領(lǐng)域表現(xiàn)出色,學(xué)習(xí)特定功能(如分類、基于提示的生成),如同職業(yè)賽車手在特定賽道、賽車上的專業(yè)訓(xùn)練。
  • 數(shù)據(jù):較小、任務(wù)/領(lǐng)域相關(guān)數(shù)據(jù)集,通常需要數(shù)千標(biāo)記的樣本即可。
  • 起點(diǎn):預(yù)訓(xùn)練模型的權(quán)重。
  • 訓(xùn)練:持續(xù)訓(xùn)練,時(shí)間較短,計(jì)算資源較少。策略可能包括僅訓(xùn)練上層或在所有層上降低學(xué)習(xí)率(如PEFT)。
  • 成本:相對(duì)較低(數(shù)百至數(shù)千美元)。
  • 輸出:針對(duì)定義任務(wù)或領(lǐng)域高度優(yōu)化的專門模型,受益于預(yù)訓(xùn)練的基礎(chǔ)知識(shí)。

后訓(xùn)練

“后訓(xùn)練”(Post-training)是一個(gè)總稱,涵蓋了LLM在最初廣泛的預(yù)訓(xùn)練之后應(yīng)用的所有訓(xùn)練和改進(jìn)步驟。預(yù)訓(xùn)練構(gòu)建了基礎(chǔ)理解和通用知識(shí),后訓(xùn)練則以此為基礎(chǔ),改進(jìn)模型使其更實(shí)用、更符合人類意圖、更安全,并在特定任務(wù)或領(lǐng)域表現(xiàn)更佳。目標(biāo)是將原始但“粗糙”的LLM轉(zhuǎn)化為適用于各種應(yīng)用的可靠工具。它解決了預(yù)訓(xùn)練模型的局限性:

  • 難以遵循特定指令。
  • 可能生成不準(zhǔn)確信息。
  • 可能延續(xù)訓(xùn)練數(shù)據(jù)中的偏見(jiàn)或生成有害內(nèi)容。
  • 對(duì)于實(shí)際部署可能太大或太慢。
  • 執(zhí)行復(fù)雜、多步驟推理的能力可能較弱。

后訓(xùn)練的類型

后訓(xùn)練包含多種技術(shù),每種針對(duì)特定的方面:

  • 微調(diào)(監(jiān)督微調(diào)—SFT):最常見(jiàn)形式。在相對(duì)較小、高質(zhì)量、帶標(biāo)簽的輸入輸出對(duì)數(shù)據(jù)集上訓(xùn)練,使模型適應(yīng)特定任務(wù)、領(lǐng)域或指令執(zhí)行。延續(xù)監(jiān)督學(xué)習(xí)過(guò)程,調(diào)整模型權(quán)重。如同司機(jī)在獲得駕照后,接受額外課程精通城市駕駛或卡車駕駛。
  • 對(duì)齊(Alignment):使模型行為與人類偏好、價(jià)值觀和安全準(zhǔn)則保持一致(有用、無(wú)害、誠(chéng)實(shí)),通常超越任務(wù)執(zhí)行,關(guān)注響應(yīng)質(zhì)量和恰當(dāng)性。常用技術(shù):

a.RLHF(基于人類反饋的強(qiáng)化學(xué)習(xí)):人工標(biāo)注員對(duì)不同模型輸出排序,訓(xùn)練單獨(dú)的“獎(jiǎng)勵(lì)模型”,該模型通過(guò)強(qiáng)化學(xué)習(xí)(如PPO)指導(dǎo)LLM生成偏好輸出。

b.DPO(直接偏好優(yōu)化):直接根據(jù)人類偏好優(yōu)化LLM,無(wú)需顯式獎(jiǎng)勵(lì)模型。如同駕駛教練不斷評(píng)估并指導(dǎo)安全、道德、禮貌的駕駛方式。

  • 推理增強(qiáng)(Reasoning Augmentation):提高LLM進(jìn)行復(fù)雜、多步驟邏輯推理、問(wèn)題解決和思維鏈(CoT)推理的能力。通常使用專門數(shù)據(jù)集(如帶分步解答的數(shù)學(xué)題)訓(xùn)練。如同學(xué)習(xí)高級(jí)防御駕駛技術(shù)或長(zhǎng)途旅行戰(zhàn)術(shù)規(guī)劃(預(yù)測(cè)復(fù)雜情況、分解路線、理解因果)。
  • 效率優(yōu)化(Efficiency Optimization):使LLM更小、更快、更節(jié)省資源以便部署(尤其在邊緣設(shè)備或高吞吐量應(yīng)用)。技術(shù)包括:

a.量化(Quantization):降低模型權(quán)重精度(如32位浮點(diǎn)數(shù) -> 8位整數(shù)/4位整數(shù)),減少內(nèi)存占用和加速計(jì)算。

b.修剪(Pruning):刪除神經(jīng)網(wǎng)絡(luò)中不太重要的連接(權(quán)重)。

c.知識(shí)蒸餾(Knowledge Distillation):訓(xùn)練較小的“學(xué)生”模型模仿更大“教師”模型的行為。

d.參數(shù)高效微調(diào)(PEFT):如LoRA,僅訓(xùn)練一小部分參數(shù),顯著降低成本和內(nèi)存。如同優(yōu)化汽車(減重/量化、高效引擎/知識(shí)蒸餾、微調(diào)設(shè)置/PEFT)。

微調(diào)的類型

資料來(lái)源:RAG vs 提示工程 vs 精細(xì)調(diào)整

資料來(lái)源:RAG與微調(diào)

遷移學(xué)習(xí)(Transfer Learning)

遷移學(xué)習(xí)是更廣泛的機(jī)器學(xué)習(xí)范式,微調(diào)LLM代表了其典型例子。預(yù)訓(xùn)練(源任務(wù):預(yù)測(cè)海量語(yǔ)料庫(kù)的下一個(gè)詞)賦予通用語(yǔ)言能力;微調(diào)(目標(biāo)任務(wù):如回答醫(yī)學(xué)問(wèn)題)應(yīng)用這些能力。整個(gè)LLM范式建立在遷移學(xué)習(xí)上。

監(jiān)督微調(diào)(SFT—Supervised Fine-Tuning):

最基本、最常見(jiàn)的類型。在帶標(biāo)簽的輸入輸出對(duì)數(shù)據(jù)集上訓(xùn)練預(yù)訓(xùn)練LLM。模型學(xué)習(xí)將特定輸入映射到期望輸出?!氨O(jiān)督”源于每個(gè)輸入都有正確答案(標(biāo)簽)。適用于有清晰期望輸出的任務(wù)(如情感分析)。

示例(情感分析):

  • 數(shù)據(jù):標(biāo)記為“正面”、“負(fù)面”、“中性”的客戶評(píng)論。
  • 流程:輸入評(píng)論文本,訓(xùn)練模型輸出正確情感標(biāo)簽。

小樣本微調(diào)/指令微調(diào)

  • 小樣本微調(diào):通常指上下文學(xué)習(xí)(Context Learning),LLM在提示中提供少量示例即可學(xué)習(xí)新任務(wù),無(wú)需權(quán)重更新。有時(shí)與PEFT混淆。
  • 指令微調(diào):旨在使LLM更好地遵循指令并以所需格式/風(fēng)格生成響應(yīng)。通常是創(chuàng)建對(duì)話式AI助手的第一步。數(shù)據(jù)集包含以指令/提示表達(dá)的輸入和期望輸出對(duì)。

示例:

  • 輸入:“簡(jiǎn)單解釋光合作用。”輸出:“光合作用是植物利用陽(yáng)光、水、二氧化碳制造糖分(食物)并釋放氧氣的過(guò)程!”
  • 輸入:“以JSON格式列出2023年最暢銷的3本書(shū)?!陛敵觯簕"books": [{"title": "Book A", "author": "Author X"}, ...]}

領(lǐng)域特定微調(diào)/領(lǐng)域適應(yīng):

這種微調(diào)的重點(diǎn)是使LLM適應(yīng)特定行業(yè)、領(lǐng)域或知識(shí)領(lǐng)域。通常在大量該領(lǐng)域未標(biāo)記/半標(biāo)記文本語(yǔ)料庫(kù)上訓(xùn)練。目標(biāo)是使模型更了解領(lǐng)域術(shù)語(yǔ)、事實(shí)和論述風(fēng)格,通常在任務(wù)特定SFT之前進(jìn)行,當(dāng)通用LLM在專業(yè)領(lǐng)域(如法律、金融)深度不足時(shí)使用。

示例(金融衍生品LLM):

在金融報(bào)告、經(jīng)濟(jì)期刊等大量文本上繼續(xù)預(yù)訓(xùn)練基礎(chǔ)LLM,學(xué)習(xí)術(shù)語(yǔ)(“收益率曲線”、“量化寬松”),然后針對(duì)特定任務(wù)(如收益電話摘要)進(jìn)行SFT。

LLM的七階段微調(diào)流程

這個(gè)全面的流程確保微調(diào)LLM不僅在初期表現(xiàn)良好,而且在長(zhǎng)期內(nèi)仍是寶貴且適應(yīng)性強(qiáng)的資產(chǎn)。

資料來(lái)源:微調(diào)階段

七個(gè)階段覆蓋了從構(gòu)思到部署的整個(gè)生命周期:

數(shù)據(jù)集準(zhǔn)備

數(shù)據(jù)集是最關(guān)鍵且通常最耗時(shí)的階段,而且其質(zhì)量直接影響最終模型性能。具體步驟包括:

  • 數(shù)據(jù)收集:來(lái)源(歷史記錄、FAQ、產(chǎn)品描述、內(nèi)部文檔、合成數(shù)據(jù)生成)。
  • 預(yù)處理與格式化:

a.清洗:刪除/替換PII(個(gè)人身份信息)、去重、去噪(時(shí)間戳、表情符號(hào))、拼寫(xiě)/語(yǔ)法糾正(可選)、標(biāo)記化兼容。

b.格式化:轉(zhuǎn)換為清晰結(jié)構(gòu)(例如指令-響應(yīng)對(duì){"instruction": "...", "output": "..."}),添加特殊標(biāo)記,標(biāo)準(zhǔn)化提示,確保輸出格式。

  • 截?cái)?填充:確定最大序列長(zhǎng)度。
  • 處理數(shù)據(jù)不平衡:技術(shù)(過(guò)采樣、欠采樣、調(diào)整損失函數(shù)——類別權(quán)重、焦點(diǎn)損失、集成方法、分層抽樣)。
  • 分割數(shù)據(jù)集:技術(shù)(隨機(jī)抽樣、分層抽樣—保持類別比例、K折交叉驗(yàn)證、留一交叉驗(yàn)證)。
  • 數(shù)據(jù)注釋:為數(shù)據(jù)添加標(biāo)簽或上下文(如聊天記錄轉(zhuǎn)指令-響應(yīng)對(duì)、意圖分類、對(duì)話狀態(tài)跟蹤)。
  • 數(shù)據(jù)增強(qiáng):創(chuàng)建現(xiàn)有數(shù)據(jù)的變體(同義詞替換、隨機(jī)插入/刪除/交換、回譯、釋義、噪聲注入)以增加多樣性、防止過(guò)擬合。
  • 使用LLM生成合成數(shù)據(jù):利用大模型(如GPT-4)生成新數(shù)據(jù)模擬目標(biāo)特征(提示、自我指導(dǎo)、角色扮演),快速擴(kuò)充數(shù)據(jù)集或覆蓋邊緣情況(需仔細(xì)審查)。

模型初始化

模型初始化為微調(diào)準(zhǔn)備所選的LLM。

來(lái)源:模型初始化所涉及的步驟

具體步驟包括:

設(shè)置環(huán)境:創(chuàng)建項(xiàng)目目錄和虛擬環(huán)境

mkdir my_finetune_project
cd my_finetune_project
python -m venv venv_my_project
source venv_my_project/bin/activate # Linux/macOS
# venv_my_project\Scripts\activate # Windows

安裝依賴:

pip install torch transformers datasets accelerate peft trl bitsandbytes scikit-learn

導(dǎo)入庫(kù):

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig, TrainingArguments
from datasets import load_dataset
from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training
from trl import SFTTrainer

選擇語(yǔ)言模型:

考慮因素包括大小、架構(gòu)—僅解碼器如GPT/Llama或編碼器-解碼器如T5、基礎(chǔ)模型vs指令調(diào)優(yōu)模型、許可、社區(qū)支持。例如:model_id="meta-llama/Llama-3-8b-instruct"

下載并加載模型與分詞器:

通常使用Hugging Face transformers庫(kù)自動(dòng)處理。

tokenizer = AutoTokenizer.from_pretrained(model_id)
tokenizer.pad_token = tokenizer.eos_token # 
設(shè)置填充
token
# 
配置
QLoRA
量化
 (
可選,推薦用于大模型
)
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True,
)
model = AutoModelForCausalLM.from_pretrained(
model_id,
quantization_cnotallow=bnb_config, # 
應(yīng)用量化配置
device_map="auto", # 
自動(dòng)分配設(shè)備
torch_dtype=torch.bfloat16,
)
model = prepare_model_for_kbit_training(model) # 
準(zhǔn)備
QLoRA
訓(xùn)練

(可選)應(yīng)用PEFT(如LoRA)

# 
定義
LoRA
配置
lora_config = LoraConfig(
r=16, # 
秩
lora_alpha=32,
target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"], # 
作用的目標(biāo)模塊
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM",
)
model = get_peft_model(model, lora_config) # 
將
LoRA
適配器應(yīng)用到模型
model.print_trainable_parameters() # 
查看可訓(xùn)練參數(shù)比例
 (
應(yīng)很小
)

執(zhí)行初始任務(wù)(可選):快速推理測(cè)試基礎(chǔ)模型行為

prompt = "
用戶:你的退貨政策是什么?
"
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
with torch.no_grad():
outputs = model.generate(**inputs, max_new_tokens=100)
print("Base Model Response:", tokenizer.decode(outputs[0], skip_special_tokens=True))

訓(xùn)練環(huán)境設(shè)置:

這一步的任務(wù)是配置訓(xùn)練過(guò)程的“引擎”。

  • 硬件:選擇合適的GPU(本地如RTX 4090或云實(shí)例如AWS EC2 g5.2xlarge/NVIDIA A10G)。
  • 軟件:確保安裝必要庫(kù)(PyTorch,Transformers,Accelerate,PEFT,TRL,Bitsandbytes)。配置分布式訓(xùn)練(如多GPU,使用accelerate launch)。
  • 日志:設(shè)置Weights & Biases,TensorBoard,MLflow跟蹤進(jìn)度、損失、指標(biāo)。
  • 定義超參數(shù):控制學(xué)習(xí)過(guò)程的關(guān)鍵設(shè)置(需迭代調(diào)整):

a.學(xué)習(xí)率(LR):最關(guān)鍵的參數(shù)(更新權(quán)重的步長(zhǎng))。起始點(diǎn),如SFT: 2e-5, PPO: 1e-5。過(guò)高導(dǎo)致不穩(wěn)定,過(guò)低導(dǎo)致收斂慢。使用調(diào)度器(如線性衰減、余弦退火)。

b.批次大?。˙atch Size):權(quán)重更新前處理的樣本數(shù)。受GPU內(nèi)存限制??墒褂锰荻壤鄯e模擬更大批次。

c.周期數(shù)(Epochs):整個(gè)數(shù)據(jù)集完整通過(guò)網(wǎng)絡(luò)的次數(shù)。微調(diào)通常1-5個(gè)epoch。過(guò)少欠擬合,過(guò)多過(guò)擬合。

d.優(yōu)化器(Optimizer):AdamW(帶權(quán)重衰減的Adam)是LLM微調(diào)標(biāo)準(zhǔn)。

e.自動(dòng)超參數(shù)調(diào)整:方法(隨機(jī)搜索、網(wǎng)格搜索、貝葉斯優(yōu)化——如Optuna/W&B Sweeps)。5.初始化優(yōu)化器和損失函數(shù):

f.損失函數(shù)(Loss Function):通常用于LLM的是交叉熵?fù)p失(Cross-Entropy Loss),衡量預(yù)測(cè)token概率分布與實(shí)際分布差異。

g.優(yōu)化器(Optimizer):如AdamW。6.示例(SFTTrainer參數(shù)):

training_args = TrainingArguments(
output_dir="./results",
num_train_epochs=3,
per_device_train_batch_size=4, # 
每個(gè)
GPU
的批次大小
gradient_accumulation_steps=8, # 
梯度累積步數(shù)
 (
模擬更大批次
)
optim="paged_adamw_8bit", # 
優(yōu)化器
 (QLoRA
推薦
)
learning_rate=2e-5,
logging_dir="./logs",
evaluation_strategy="epoch", # 
每個(gè)
epoch
后評(píng)估
save_strategy="epoch",
load_best_model_at_end=True, # 
加載最佳模型
bf16=True, # 
使用
BFloat16 (
如果
GPU
支持
)
... # 
其他參數(shù)
)

部分或全部微調(diào):

核心訓(xùn)練階段,LLM參數(shù)根據(jù)數(shù)據(jù)集調(diào)整。

  • 完全微調(diào)(Full Fine-tuning):更新(幾乎所有)預(yù)訓(xùn)練模型參數(shù)。資源消耗大,但若數(shù)據(jù)和操作正確,可能獲得最佳性能。適用于資源充足且任務(wù)需要深度適應(yīng)時(shí)。
  • 部分微調(diào)/參數(shù)高效微調(diào)(PEFT):僅更新一小部分參數(shù),或添加訓(xùn)練新層。資源效率高、速度快、降低遺忘風(fēng)險(xiǎn)。強(qiáng)烈推薦用于LLM微調(diào)。常用方法:

a.LoRA(低秩自適應(yīng)):引入低秩矩陣A和B,其乘積近似權(quán)重更新ΔW。僅訓(xùn)練A和B。核心公式:h = xW0 + xBA = x(W0 + BA)??捎?xùn)練參數(shù)從d*k減少到d*r + r*k(r<<d,k)。

b.QLoRA(量化LoRA):將基礎(chǔ)模型權(quán)重量化為4位并凍結(jié),在該量化模型上應(yīng)用LoRA微調(diào)(適配器通常更高精度訓(xùn)練)。實(shí)現(xiàn)在消費(fèi)級(jí)GPU上微調(diào)超大模型(如70B)。

c.其他PEFT:Adapter,Prefix Tuning,Prompt Tuning。3.執(zhí)行訓(xùn)練(使用SFTTrainer示例):

# 
假設(shè)
train_dataset
是準(zhǔn)備好的訓(xùn)練集
def formatting_func(example): # 
格式化函數(shù)
 (
根據(jù)數(shù)據(jù)格式調(diào)整
)
text = f"User: {example['instruction']}\nAgent: {example['output']}"
return {"text": text}
trainer = SFTTrainer(
model=model,
train_dataset=train_dataset,
peft_cnotallow=lora_config, # 
使用
LoRA
配置
args=training_args, # 
訓(xùn)練參數(shù)
tokenizer=tokenizer,
formatting_func=formatting_func, # 
數(shù)據(jù)格式化
max_seq_length=1024, # 
最大序列長(zhǎng)度
)
trainer.train() # 
開(kāi)始訓(xùn)練
!
  • 結(jié)合多任務(wù):如果模型需執(zhí)行多項(xiàng)不同任務(wù)(如問(wèn)答+摘要+翻譯),可使用:

a.多個(gè)適配器:為每個(gè)任務(wù)訓(xùn)練單獨(dú)的LoRA適配器,推理時(shí)動(dòng)態(tài)加載。

b.MoE架構(gòu):如果基礎(chǔ)模型是MoE(如Mixtral),不同專家可專業(yè)化不同任務(wù)。

評(píng)估和驗(yàn)證:

使用驗(yàn)證集/測(cè)試集嚴(yán)格評(píng)估模型性能,確保泛化能力并指導(dǎo)改進(jìn)。評(píng)估指標(biāo)包括:

  • 內(nèi)在指標(biāo):交叉熵?fù)p失、困惑度(Perplexity - PPL, 2^(cross_entropy_loss))。
  • 任務(wù)特定指標(biāo):

a.生成任務(wù):BLEU(機(jī)器翻譯)、ROUGE(摘要)、BERTScore(語(yǔ)義相似度)。但對(duì)開(kāi)放生成常不足。

b.分類任務(wù):準(zhǔn)確率、精確率、召回率、F1分?jǐn)?shù)。

  • 基于人類/原則的指標(biāo)(關(guān)鍵):事實(shí)性(Factuality)、上下文相關(guān)性(Context Relevance)、完整性(Completeness)、無(wú)害性(Harmlessness)、有用性(Helpfulness)、風(fēng)格一致性。通常需人工評(píng)估或強(qiáng)大LLM評(píng)估(如GPT-4作為裁判)。
  • RAG特定指標(biāo):塊歸因(Passage Attribution)、利用率(Utilization)。

解讀訓(xùn)練/驗(yàn)證損失曲線:

  • 欠擬合(Underfitting):訓(xùn)練和驗(yàn)證損失均高且可能持續(xù)下降。解決方案:增加epochs、增加模型容量/復(fù)雜度、檢查數(shù)據(jù)。
  • 過(guò)擬合(Overfitting):訓(xùn)練損失持續(xù)下降,驗(yàn)證損失開(kāi)始上升或停滯。解決方案:正則化(L1/L2—weight_decay)、早停(EarlyStoppingCallback)、Dropout(lora_dropout)、數(shù)據(jù)增強(qiáng)、增大數(shù)據(jù)集/批次。
  • 波動(dòng)(Oscillation):損失曲線跳躍。解決方案:降低學(xué)習(xí)率、增大批次大?。ㄌ荻壤鄯e)、清理數(shù)據(jù)、使用學(xué)習(xí)率預(yù)熱。
  • 運(yùn)行驗(yàn)證循環(huán):在訓(xùn)練期間定期進(jìn)行(evaluation_strategy="epoch")。模型設(shè)為評(píng)估模式(model.eval()),計(jì)算指標(biāo)(內(nèi)置或自定義compute_metrics函數(shù)),記錄結(jié)果,應(yīng)用早停。
  • 監(jiān)控與解釋結(jié)果:持續(xù)檢查指標(biāo)和曲線,理解模型行為,決定是否繼續(xù)訓(xùn)練、調(diào)整或停止。
  • 超參數(shù)調(diào)整:根據(jù)驗(yàn)證性能迭代調(diào)整學(xué)習(xí)率、批次大小、epochs數(shù)等。

部署:

將訓(xùn)練好的模型投入生產(chǎn)環(huán)境處理實(shí)際請(qǐng)求。模型導(dǎo)出任務(wù)包括:

  • 保存PEFT適配器(推薦):僅保存小型LoRA權(quán)重。
trainer.model.save_pretrained("./my_lora_adapters") # SFTTrainer
tokenizer.save_pretrained("./my_lora_adapters")
#
合并模型(可選):將適配器合并回基礎(chǔ)模型,創(chuàng)建單一模型。
from peft import PeftModel
base_model = AutoModelForCausalLM.from_pretrained(base_model_id, ...)
peft_model = PeftModel.from_pretrained(base_model, adapter_path)
merged_model = peft_model.merge_and_unload()
merged_model.save_pretrained("./merged_model")
  • 序列化格式:原生(PyTorch.bin,Hugging Face safetensors)或轉(zhuǎn)換(ONNX,TensorRT)以優(yōu)化推理。
  • 基礎(chǔ)設(shè)施設(shè)置:選擇部署平臺(tái):

a.云虛擬機(jī)(VM):AWS EC2,GCP Compute Engine,Azure VM。需手動(dòng)配置OS、驅(qū)動(dòng)、環(huán)境。

b.容器化(Docker/Kubernetes):創(chuàng)建Dockerfile定義環(huán)境,構(gòu)建鏡像,部署到K8s集群(EKS, GKE, AKS)實(shí)現(xiàn)可擴(kuò)展和編排。

c.無(wú)服務(wù)器推理(Serverless):AWS Lambda + SageMaker/ECS,GCP Cloud Functions + Vertex AI,Azure Functions + Azure ML。按需加載模型。

d.專用推理端點(diǎn):Hugging Face Inference Endpoints,AWS SageMaker Endpoints,GCP Vertex AI Prediction,Azure ML Online Endpoints。平臺(tái)管理基礎(chǔ)設(shè)施、擴(kuò)展和API。

e.API開(kāi)發(fā):構(gòu)建接口供應(yīng)用程序調(diào)用:A.使用Web框架(如FastAPI):

from fastapi import FastAPI
app = FastAPI()
# ... (
加載模型的代碼,通常在
app
啟動(dòng)事件中
)
class ChatRequest(BaseModel):
user_query: str
@app.post("/chat")
async def chat_endpoint(request: ChatRequest):
# 
使用加載的
model
和
tokenizer
處理
request.user_query
formatted_prompt = f"User: {request.user_query}\nAgent:"
inputs = tokenizer(formatted_prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(**inputs, ...)
response = tokenizer.decode(outputs[0], ...)
# 
提取
Agent
的回復(fù)
 (
后處理
)
agent_response = response.split("Agent:", 1)[-1].strip()
return {"response": agent_response}
# 
運(yùn)行
: uvicorn app:app --host 0.0.0.0 --port 8000
  • 使用推理庫(kù)/平臺(tái):Hugging Face TEXT-GENERATION API,NVIDIA Triton Inference Server。配置模型后自動(dòng)提供API。
  • 部署:將應(yīng)用部署到選定基礎(chǔ)設(shè)施(如kubectl apply -f deployment.yaml,云控制臺(tái)部署),配置負(fù)載均衡、自動(dòng)擴(kuò)縮容。

監(jiān)控和維護(hù):

部署后持續(xù)追蹤模型在實(shí)際環(huán)境中的表現(xiàn)。

  • 性能監(jiān)控:跟蹤指標(biāo)(響應(yīng)時(shí)間、錯(cuò)誤率、吞吐量、回退到人工代理頻率、用戶反饋“有幫助嗎?”)。
  • 數(shù)據(jù)漂移檢測(cè):觀察用戶查詢是否開(kāi)始偏離原始訓(xùn)練數(shù)據(jù)分布(表明用戶行為或產(chǎn)品變化)。
  • 反饋循環(huán):記錄新用戶互動(dòng)及人工代理的更正/編輯。這些新數(shù)據(jù)用于未來(lái)微調(diào)迭代。
  • 定期再訓(xùn)練:計(jì)劃周期(如每季度/半年),整合新數(shù)據(jù)、解決新問(wèn)題、適應(yīng)產(chǎn)品或政策變化。

參數(shù)高效微調(diào)(PEFT)

PEFT旨在克服微調(diào)LLM的巨大計(jì)算和內(nèi)存挑戰(zhàn)(完全微調(diào)需要數(shù)十/百GPU、大量?jī)?nèi)存、可能導(dǎo)致災(zāi)難性遺忘、迭代慢)。

PEFT方法凍結(jié)大部分預(yù)訓(xùn)練參數(shù),僅訓(xùn)練少量額外參數(shù)或進(jìn)行微小修改,從而顯著降低計(jì)算、內(nèi)存和存儲(chǔ)需求,并保留基礎(chǔ)知識(shí)。

資料來(lái)源:PEFT

PEFT方法主要類別包括:

提示修改/軟提示調(diào)整:

  • 軟提示調(diào)整:添加一小串可學(xué)習(xí)的連續(xù)向量(“軟提示”)到輸入嵌入中。通過(guò)反向傳播訓(xùn)練這些向量。模型原始參數(shù)凍結(jié)。區(qū)別于硬提示(自然語(yǔ)言文本)。
  • 綴調(diào)整(Prefix Tuning):類似軟提示,但可訓(xùn)練前綴向量添加到Transformer每一層(作為注意力鍵值中的虛擬標(biāo)記),更深影響注意力機(jī)制。

適配器方法:

在預(yù)訓(xùn)練LLM層中插入小型可訓(xùn)練神經(jīng)網(wǎng)絡(luò)模塊(適配器)。原始權(quán)重凍結(jié),僅訓(xùn)練適配器。變體如LLaMA-Adapter(添加可訓(xùn)練下/上投影層)。

重新參數(shù)化:

引入小型可訓(xùn)練低秩矩陣,重新參數(shù)化原始權(quán)重。

  • LoRA(低秩自適應(yīng)):核心方法。引入兩個(gè)小矩陣A(d x r)和B (r x k),其乘積近似權(quán)重更新ΔW。前向計(jì)算:output = x * (W0 + s * B * A)(s為縮放因子)。僅訓(xùn)練A和B。顯著減少參數(shù)。
  • QLoRA(量化LoRA):將基礎(chǔ)模型權(quán)重量化為4位(如NF4)并凍結(jié),在該量化模型上應(yīng)用LoRA微調(diào)(適配器以更高精度訓(xùn)練如bfloat16)。極大降低訓(xùn)練內(nèi)存需求(可在24GB GPU微調(diào)70B模型)。
  • QALoRA(量化感知LoRA):訓(xùn)練LoRA適配器時(shí)考慮其后續(xù)量化(如到4位),以最小化量化后性能下降。優(yōu)化部署。
  • ReLoRA(精細(xì)LoRA):定期將LoRA適配器合并到基礎(chǔ)權(quán)重并重新初始化,防止適配器飽和,支持更深層次學(xué)習(xí)。

表征微調(diào)(ReFT):

這是一種較新的方法,它能夠凍結(jié)LLM權(quán)重,訓(xùn)練小型輕量級(jí)“調(diào)整器”模塊修改或調(diào)節(jié)內(nèi)部表征(激活)。例如LoReFT(對(duì)激活殘差應(yīng)用低秩投影)就提供不同適應(yīng)路徑。

LoRA詳解

為什么需要LoRA?

完全微調(diào)超大模型不切實(shí)際(資源消耗巨大、存儲(chǔ)成本高、災(zāi)難性遺忘風(fēng)險(xiǎn)、迭代慢)。LoRA利用洞察:微調(diào)權(quán)重更新ΔW常是低秩的。

工作原理

資料來(lái)源:LoRA微調(diào)的工作原理

  1. 凍結(jié)預(yù)訓(xùn)練權(quán)重W0。
  2. 為選定層(如注意力q_proj,v_proj)定義低秩矩陣A(初始化為隨機(jī)高斯)和B(初始化為零)。
  3. 前向傳播時(shí)計(jì)算:h=x*W0+s*x*B*A(s是縮放因子lora_alpha/r)。
  4. 僅優(yōu)化A和B中的參數(shù)。
  5. 推理時(shí)可選擇合并:W_new=W0+s*B*A。

優(yōu)勢(shì):

參數(shù)高效、內(nèi)存高效、訓(xùn)練快、防遺忘、存儲(chǔ)高效(小適配器)。

變體與選擇:

  • LoRA:基礎(chǔ)方法。
  • QLoRA:推薦起點(diǎn)。量化基礎(chǔ)模型(4位),訓(xùn)練LoRA適配器。內(nèi)存效率與性能的極佳平衡。

來(lái)源:QLoRA

QA-LoRA目標(biāo)展示。與先前的自適應(yīng)方法LoRA和QLoRA相比,我們的方法在微調(diào)和推理階段都具有計(jì)算效率。更重要的是,它不會(huì)遭受精度損失,因?yàn)椴恍枰?xùn)練后量化。我們?cè)趫D中顯示了INT4量化,但QA-LoRA被推廣到INT3和INT2。

  • ReLoRA:用于復(fù)雜任務(wù)或長(zhǎng)時(shí)間訓(xùn)練,合并并重置適配器以支持更深學(xué)習(xí)。
  • DoRA(權(quán)重分解LoRA):將權(quán)重分解為幅度和方向,LoRA僅應(yīng)用于方向。可能提升性能(更接近完全微調(diào))。

來(lái)源:DoRA

  • QALoRA:用于嚴(yán)格邊緣部署,優(yōu)化適配器量化魯棒性。
  • ReFT:探索性方法,調(diào)整激活而非權(quán)重。

評(píng)估和驗(yàn)證(詳解)

這部分內(nèi)容與“七階段流程”中的第5階段一致,篇幅所限,不再贅述。但是,這部分也是迭代過(guò)程的核心環(huán)節(jié),需結(jié)合自動(dòng)指標(biāo)和人工評(píng)估進(jìn)行。

部署微調(diào)模型(詳解)

這部分內(nèi)容與“七階段流程”中的第6、7階段一致,篇幅所限,不再贅述。但是,這一部分要強(qiáng)調(diào)量化在部署中的關(guān)鍵作用。

基于云的提供商

  • AWS:SageMaker(托管訓(xùn)練/部署)、Bedrock(訪問(wèn)基礎(chǔ)模型+微調(diào))、EC2 + DL AMI/容器(自定義)。
  • GCP:Vertex AI(端到端ML平臺(tái))、Google Kubernetes Engine (GKE)、Cloud Run(無(wú)服務(wù)器容器)。
  • Azure:Azure Machine Learning、Azure AI Studio / AI Foundry。
  • Hugging Face:Inference Endpoints(簡(jiǎn)化部署)。
  • 選擇考慮:成本模型(按token/實(shí)例小時(shí))、易用性/管理開(kāi)銷、性能/延遲、可擴(kuò)展性、安全合規(guī)性、生態(tài)系統(tǒng)集成、專有模型vs開(kāi)源支持。

量化

來(lái)源:量化

目的:

減少模型內(nèi)存占用、加速推理(尤其資源受限環(huán)境)。將數(shù)值從高精度(float32)轉(zhuǎn)為低精度(float16/bfloat16,int8,int4)。

工作原理:

找到縮放因子(S)和零點(diǎn)(Z)將浮點(diǎn)值(R)映射到量化整數(shù)(Q):

Q = round(R / S + Z)

反量化:

R ≈ (Q - Z) * S

分對(duì)稱量化(范圍以零為中心)和非對(duì)稱量化。

何時(shí)/如何量化:

微調(diào)期間(QLoRA):

將基礎(chǔ)模型量化為4位,在其上訓(xùn)練更高精度(如bfloat16)的LoRA適配器。實(shí)現(xiàn)大模型在有限GPU上微調(diào)。

微調(diào)后(訓(xùn)練后量化—PTQ):

優(yōu)化最終模型用于部署。

  • 動(dòng)態(tài)量化:權(quán)重量化離線,激活動(dòng)態(tài)量化。簡(jiǎn)單。
  • 靜態(tài)量化:使用校準(zhǔn)數(shù)據(jù)集確定權(quán)重和激活的量化參數(shù)。通常更快更優(yōu)。
量化感知訓(xùn)練(QAT):

在訓(xùn)練/微調(diào)中模擬量化效果,使模型對(duì)量化更魯棒。更復(fù)雜但精度更高(如QALoRA)。

量化對(duì)象:

權(quán)重(主要目標(biāo))、激活(進(jìn)一步減少推理內(nèi)存/計(jì)算)、梯度(訓(xùn)練中,如QLoRA的8位優(yōu)化器)。

模型合并

目的:

組合多個(gè)預(yù)訓(xùn)練/微調(diào)LLM的權(quán)重創(chuàng)建新模型。實(shí)現(xiàn)功能組合、降低推理成本(單模型vs多模型)、利用次優(yōu)微調(diào)、探索新穎組合。

資料來(lái)源:集成與模型合并

常見(jiàn)方法:

  • 線性合并/加權(quán)平均:對(duì)模型權(quán)重?。訖?quán))平均。變體:均勻湯(權(quán)重相等)、貪婪湯(迭代添加提升驗(yàn)證性能的模型)。簡(jiǎn)單有效,利用“線性模式連接”。
  • 球面線性插值:在超球面上兩點(diǎn)(模型權(quán)重向量)間沿最短路徑插值。優(yōu)于線性插值,能更好保留模型“功能完整性”,尤其模型正交時(shí)。用于藝術(shù)融合或功能融合。

資料來(lái)源:SLERP

  • 任務(wù)向量:計(jì)算微調(diào)模型權(quán)重W_task與基礎(chǔ)模型權(quán)重W_base的差ΔW = W_task - W_base(任務(wù)向量)。操作ΔW向量(加法、縮放、修剪、符號(hào)對(duì)齊)后加回基礎(chǔ)模型。更精細(xì)控制任務(wù)知識(shí)組合。先進(jìn)算法:

a.TIES-Merging:修剪微小ΔW,選擇主導(dǎo)符號(hào),合并對(duì)齊向量。

來(lái)源:TIES

b.DARE:隨機(jī)丟棄高比例ΔW元素,重新縮放剩余元素。使向量稀疏,減少干擾。常與TIES結(jié)合(DARE-TIES)。

來(lái)源:DARE

弗蘭肯合并/直通/層堆疊:

高度實(shí)驗(yàn)性:組合兼容架構(gòu)不同模型的特定層/塊(如取模型A的嵌入層,模型B的注意力層)。結(jié)果難預(yù)測(cè),用于研究探索。

混合專家(MoE——Mixture of Experts)

資料來(lái)源:教育部

核心:

由多個(gè)“專家”子網(wǎng)絡(luò)(通常是Transformer中的FFN)和一個(gè)“門控網(wǎng)絡(luò)”(路由器)組成。路由器學(xué)習(xí)將每個(gè)輸入(或token)路由到少數(shù)專家(如2個(gè))進(jìn)行處理。稀疏激活:總參數(shù)巨大,但每個(gè)輸入僅激活少量專家參數(shù)。

優(yōu)勢(shì):

  • 高效擴(kuò)展:增加總參數(shù)量(萬(wàn)億級(jí))而不成比例增加計(jì)算量(FLOPs)。
  • 專業(yè)化:不同專家可學(xué)習(xí)處理不同數(shù)據(jù)類型/任務(wù)(如語(yǔ)言、領(lǐng)域)。
  • 性能:相同計(jì)算預(yù)算下,常優(yōu)于同等FLOPs的密集模型(如Mixtral 8x7B優(yōu)于更大的 Llama 2 70B)。

架構(gòu)類型:

  • 稀疏MoE/Softmax路由:最常見(jiàn)。門控網(wǎng)絡(luò)(線性層+Softmax)輸出專家概率分布。選擇Top-K專家。輸出為加權(quán)和。需處理負(fù)載均衡。
  • 硬路由/Top-K門控:直接選擇Top-K專家,輸出為和(或僅Top-1)。較舊。
  • 層級(jí)式MoE:專家組織成樹(shù)狀結(jié)構(gòu),層級(jí)路由。用于極大量專家。
  • Transformer層內(nèi)條件計(jì)算:MoE最常用于替換Transformer FFN層。每層有多個(gè)專家FFN,路由器選擇處理當(dāng)前token表示的FFN?,F(xiàn)代MoE LLM標(biāo)準(zhǔn)(Switch-Transformer,Mixtral,GPT-4)。
  • 應(yīng)用:Google (Switch-Transformer,GLaM),OpenAI (GPT-4),Mistral AI (Mixtral 8x7B)。

強(qiáng)化微調(diào)(RFT)

來(lái)源:RLHF

核心:

結(jié)合強(qiáng)化學(xué)習(xí)(RL)原理與LLM微調(diào)。訓(xùn)練模型最大化獎(jiǎng)勵(lì)信號(hào)(基于人類/AI偏好、自動(dòng)評(píng)估器),而非最小化與固定目標(biāo)的差異。使LLM(“代理”)學(xué)習(xí)生成高獎(jiǎng)勵(lì)輸出(“動(dòng)作”)的策略。

RLHF(基于人類反饋的強(qiáng)化學(xué)習(xí))流程:

  1. 自監(jiān)督預(yù)訓(xùn)練:構(gòu)建基礎(chǔ)LLM(如Llama 3)。學(xué)習(xí)通用語(yǔ)言能力。
  2. 根據(jù)人類反饋排名模型輸出:收集(prompt,chosen_response,rejected_response)三元組數(shù)據(jù)集。人工根據(jù)標(biāo)準(zhǔn)(有用、無(wú)害等)排序響應(yīng)。
  3. 訓(xùn)練獎(jiǎng)勵(lì)模型(RM):訓(xùn)練獨(dú)立神經(jīng)網(wǎng)絡(luò)(小于主LLM)預(yù)測(cè)人類偏好分?jǐn)?shù)。輸入(prompt,response),輸出標(biāo)量獎(jiǎng)勵(lì)。通常使用成對(duì)排序損失訓(xùn)練。
  4. 使用RM反饋微調(diào)LLM:使用RL算法(如PPO)更新LLM(策略)參數(shù)以最大化RM獎(jiǎng)勵(lì)。加入KL散度懲罰防止偏離原始能力太遠(yuǎn)和獎(jiǎng)勵(lì)黑客。

強(qiáng)化微調(diào)算法:

近端策略優(yōu)化(PPO):經(jīng)典RLHF算法。使用RM提供獎(jiǎng)勵(lì),通過(guò)PPO算法更新策略(LLM)。穩(wěn)定但需訓(xùn)練高質(zhì)量RM。

RLHF的四步流程:

來(lái)源:RLHF

概念代碼(使用trl.PPOTrainer):

from trl import PPOTrainer, PPOConfig
# 配置PPO參數(shù) (學(xué)習(xí)率, batch size, KL系數(shù)等)
ppo_config = PPOConfig(...)
# 加載SFT模型 (策略) 和 (可選) 參考模型 (通常也是SFT模型,用于KL計(jì)算)
ppo_trainer = PPOTrainer(model=sft_model, ref_model=ref_model, ...)
# 訓(xùn)練循環(huán)偽代碼
for batch in dataloader:
    query_tensors = batch["input_ids"]
    # 生成響應(yīng)
    response_tensors = ppo_trainer.generate(query_tensors, ...)
    responses = [tokenizer.decode(r) for r in response_tensors]
    # 使用獎(jiǎng)勵(lì)模型計(jì)算獎(jiǎng)勵(lì) (核心!)
    rewards = [reward_model(prompt, resp) for (prompt, resp) in zip(queries, responses)]
    # PPO更新步驟
    stats = ppo_trainer.step(query_tensors, response_tensors, rewards)

近端策略優(yōu)化(PPO):

PPO是一種策略梯度算法,是強(qiáng)化學(xué)習(xí)中的主力。在LLM和RLHF的背景下,PPO用于更新LLM(簡(jiǎn)稱“策略”),以生成能夠最大化由單獨(dú)的獎(jiǎng)勵(lì)模型(RM)提供的獎(jiǎng)勵(lì)的響應(yīng)。

直接根據(jù)人類偏好數(shù)據(jù)(prompt,chosen,rejected)優(yōu)化LLM策略,無(wú)需顯式訓(xùn)練RM。更簡(jiǎn)單、穩(wěn)定、資源高效。

來(lái)源:PPO

  • 原理:將RLHF問(wèn)題轉(zhuǎn)化為分類問(wèn)題,推導(dǎo)出直接優(yōu)化策略的損失函數(shù),隱式滿足約束。使用參考模型(SFT模型)包含KL懲罰。
  • 概念代碼(使用trl.DPOTrainer):
from trl import DPOTrainer, DPOConfig
# 
配置
DPO
參數(shù)
 (Beta
控制
KL
懲罰強(qiáng)度
)
dpo_config = DPOConfig(beta=0.1, ...)
# 
加載偏好數(shù)據(jù)集
 (
含
prompt, chosen, rejected)
# 
初始化
DPOTrainer (
需要訓(xùn)練模型和參考模型
)
dpo_trainer = DPOTrainer(model=sft_model, ref_model=ref_model, args=dpo_config, train_dataset=preference_dataset, ...)
dpo_trainer.train() # 
執(zhí)行訓(xùn)練

直接偏好優(yōu)化(DPO):

DPO是一種更新、更簡(jiǎn)單且通常更穩(wěn)定的PPO替代方案,可用于基于偏好的微調(diào)。

與PPO不同,DPO不需要訓(xùn)練單獨(dú)的獎(jiǎng)勵(lì)模型。相反,它直接根據(jù)人類偏好數(shù)據(jù)優(yōu)化LLM的策略。

資料來(lái)源:DPO

它將RLHF問(wèn)題重新定義為分類問(wèn)題。給定一個(gè)提示(x)的偏好答案(yw)和一個(gè)不偏好答案(yl),DPO會(huì)直接更新LLM的參數(shù),以增加生成yw相對(duì)于yl的概率。

它推導(dǎo)出一個(gè)簡(jiǎn)單的分析損失函數(shù),該函數(shù)直接針對(duì)偏好數(shù)據(jù)優(yōu)化策略,隱式滿足貝爾曼最優(yōu)方程,而無(wú)需明確估計(jì)獎(jiǎng)勵(lì)函數(shù)或價(jià)值函數(shù)。

人工智能反饋強(qiáng)化學(xué)習(xí)(RLAIF):

使用另一個(gè)AI模型(通常更強(qiáng),如GPT-4)提供反饋代替人類標(biāo)注員。整體實(shí)現(xiàn)步驟是:

  • LLM生成初始響應(yīng)。
  • AI“批評(píng)家”(Critic)根據(jù)給定原則(Constitution)評(píng)估響應(yīng)。
  • AI批評(píng)家可修改響應(yīng)生成改進(jìn)(“首選”)版本。
  • 生成(prompt,chosen (AI revised),rejected (initial))偏好數(shù)據(jù)對(duì)。
  • 使用此數(shù)據(jù)訓(xùn)練RM或直接應(yīng)用DPO。
  • 優(yōu)勢(shì):可擴(kuò)展性高、適合明確定義的原則、快速迭代、引導(dǎo)對(duì)齊(強(qiáng)AI對(duì)齊弱AI)。
  • 概念代碼(生成RLAIF數(shù)據(jù)):
def get_ai_feedback_and_revision(prompt, initial_response):
    # 實(shí)際調(diào)用大模型API (e.g., GPT-4)
    # 提示: "Critique this response based on principles: 'helpful', 'harmless', 'concise'. Then revise it."
    critique = ... # 解析API返回的評(píng)論
    revised_response = ... # 解析API返回的修訂響應(yīng)
    return revised_response, critique
rlaif_data = []
for prompt in prompts:
    initial_resp = sft_model.generate(prompt)
    preferred_resp, _ = get_ai_feedback_and_revision(prompt, initial_resp)
    rlaif_data.append({"prompt": prompt, "chosen": preferred_resp, "rejected": initial_resp})
# 然后用rlaif_data訓(xùn)練DPO (如上述DPO代碼)

RLHF/RLAIF vs DPO:

資料來(lái)源:RLHF/RLAIF與DPO

RLHF/RLAIF是描述從數(shù)據(jù)收集到模型更新的整體范式(使用人類或AI反饋進(jìn)行強(qiáng)化學(xué)習(xí))。PPO和DPO是用于該范式中強(qiáng)化學(xué)習(xí)步驟的具體算法;DPO因其簡(jiǎn)單性和穩(wěn)定性日益流行。

小結(jié)

微調(diào)是釋放大型語(yǔ)言模型在特定領(lǐng)域和任務(wù)中巨大潛力的關(guān)鍵。本文系統(tǒng)性地闡述了從核心理論(為何微調(diào)、與預(yù)訓(xùn)練區(qū)別、后訓(xùn)練類型)、不同微調(diào)方法、完整的端到端七階段實(shí)戰(zhàn)流程到核心高效技術(shù)(PEFT如LoRA/QLoRA、評(píng)估策略、量化部署),以及前沿高級(jí)主題(模型合并、MoE架構(gòu)、強(qiáng)化微調(diào)如PPO/DPO/RLAIF)。

理解并掌握這些內(nèi)容,將為你高效定制和部署強(qiáng)大的LLM應(yīng)用奠定堅(jiān)實(shí)基礎(chǔ)。隨著技術(shù)發(fā)展(新PEFT方法、更優(yōu)對(duì)齊算法、高效推理),微調(diào)將繼續(xù)成為L(zhǎng)LM落地不可或缺的核心技能。

譯者介紹

朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計(jì)算機(jī)教師,自由編程界老兵一枚。

原文標(biāo)題:The Comprehensive Guide to Fine-tuning LLM,作者:Sunil Rao

責(zé)任編輯:姜華 來(lái)源: 51CTO內(nèi)容精選
相關(guān)推薦

2025-03-26 11:05:13

2023-03-03 14:07:06

2025-05-28 08:45:00

2016-08-28 14:44:42

算法TSP生物智能

2023-10-13 19:42:00

2023-06-09 08:00:00

QLoRa語(yǔ)言模型微調(diào)

2024-02-22 15:35:05

2010-04-23 14:04:23

Oracle日期操作

2025-04-16 08:35:55

2024-05-07 09:01:21

Queue 模塊Python線程安全隊(duì)列

2013-06-08 11:13:00

Android開(kāi)發(fā)XML解析

2013-04-15 10:48:16

Xcode ARC詳解iOS ARC使用

2023-11-06 08:14:51

Go語(yǔ)言Context

2021-01-15 13:28:53

RNNPyTorch神經(jīng)網(wǎng)絡(luò)

2025-05-08 05:00:00

2024-11-21 08:22:45

2021-04-23 20:59:02

ThreadLocal內(nèi)存

2020-03-05 09:53:59

ElasticSearLuceneJava

2025-04-02 09:33:01

2009-02-20 11:43:22

UNIXfish全攻略
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)