大模型 SFT 微調(diào)數(shù)據(jù)集的構(gòu)建方法

0 評(píng)論 1163 瀏覽 3 收藏 17 分鐘

在大模型應(yīng)用加速落地的背景下,SFT(Supervised Fine-Tuning)成為提升模型能力的關(guān)鍵環(huán)節(jié)。而數(shù)據(jù)集,正是微調(diào)的“燃料”。本文將系統(tǒng)拆解 SFT 微調(diào)數(shù)據(jù)集的構(gòu)建方法,從數(shù)據(jù)來(lái)源、清洗策略、標(biāo)注規(guī)范到質(zhì)量評(píng)估,帶你深入理解如何打造高質(zhì)量、可復(fù)用的訓(xùn)練數(shù)據(jù)。

做過(guò)大模型微調(diào)的團(tuán)隊(duì)大多遇過(guò)這樣的問(wèn)題:調(diào)參改了十幾次,模型還是答非所問(wèn) —— 客服場(chǎng)景里總聊起無(wú)關(guān)的產(chǎn)品功能,代碼生成時(shí)頻繁出現(xiàn)語(yǔ)法錯(cuò)誤,甚至對(duì)用戶的提問(wèn)給出完全偏離業(yè)務(wù)邏輯的回復(fù)。

這時(shí)往往不是參數(shù)沒(méi)調(diào)好,而是忽略了更基礎(chǔ)的環(huán)節(jié):SFT(監(jiān)督微調(diào))數(shù)據(jù)集的構(gòu)建。SFT 的核心是讓模型對(duì)齊人類(lèi)意圖,而數(shù)據(jù)集就是 “教模型怎么做事” 的教材。

教材質(zhì)量差,再厲害的模型也學(xué)不到精髓。

接下來(lái)就從實(shí)際操作角度,拆解一套能落地的 SFT 數(shù)據(jù)集構(gòu)建方法,幫你避開(kāi)常見(jiàn)坑,讓微調(diào)效果更貼合業(yè)務(wù)需求。

一、先想清楚:數(shù)據(jù)集構(gòu)建的 3 個(gè)核心原則

在找數(shù)據(jù)、洗數(shù)據(jù)之前,得先明確方向,不然很容易做無(wú)用功。這三個(gè)原則是無(wú)數(shù)項(xiàng)目驗(yàn)證過(guò)的 “避坑指南”:

第一個(gè)是對(duì)齊業(yè)務(wù)目標(biāo)。數(shù)據(jù)集不是越多越好,而是要和你想讓模型解決的問(wèn)題強(qiáng)綁定。比如做電商客服模型,就該聚焦 “訂單查詢”“售后退換”“物流跟蹤” 這類(lèi)場(chǎng)景,而不是把通用聊天數(shù)據(jù)堆進(jìn)來(lái);做企業(yè)內(nèi)部知識(shí)庫(kù)問(wèn)答模型,就得圍繞公司產(chǎn)品手冊(cè)、業(yè)務(wù)流程來(lái)收集數(shù)據(jù),無(wú)關(guān)的行業(yè)資訊再優(yōu)質(zhì)也不用。曾有團(tuán)隊(duì)做金融客服微調(diào),誤把大量股票分析數(shù)據(jù)加進(jìn)去,結(jié)果用戶問(wèn) “信用卡還款怎么操作”,模型反而講起了股市走勢(shì),就是因?yàn)槠x了業(yè)務(wù)核心。

第二個(gè)是質(zhì)量?jī)?yōu)先于數(shù)量。很多人覺(jué)得數(shù)據(jù)量越大效果越好,其實(shí)不然。有個(gè)團(tuán)隊(duì)做 SFT 時(shí),用了 50 萬(wàn)條公開(kāi)對(duì)話數(shù)據(jù),結(jié)果模型回復(fù)準(zhǔn)確率只有 60%;后來(lái)篩選出 5 萬(wàn)條和業(yè)務(wù)高度匹配的高質(zhì)量數(shù)據(jù),準(zhǔn)確率直接提到 85%。低質(zhì)量數(shù)據(jù)(比如重復(fù)內(nèi)容、邏輯混亂的對(duì)話、錯(cuò)誤信息)不僅沒(méi)用,還會(huì)讓模型學(xué)錯(cuò)東西,后續(xù)調(diào)參再費(fèi)力也補(bǔ)不回來(lái)。

第三個(gè)是覆蓋 “全場(chǎng)景 + 多風(fēng)格”。模型要應(yīng)對(duì)的真實(shí)場(chǎng)景往往很復(fù)雜,數(shù)據(jù)集得提前考慮到各種情況。比如客服模型,既要包含 “用戶禮貌咨詢” 的常規(guī)場(chǎng)景,也要有 “用戶投訴不滿” 的特殊場(chǎng)景;既要覆蓋 “文字提問(wèn)”,也要考慮 “帶圖片描述的問(wèn)題”(比如用戶發(fā)商品破損照片問(wèn)怎么處理)。風(fēng)格上也要統(tǒng)一,要是有的回復(fù)很正式,有的很口語(yǔ)化,模型就會(huì)混亂,比如對(duì)企業(yè)客戶用 “親,這邊建議呢” 這種語(yǔ)氣,就會(huì)顯得不專(zhuān)業(yè)。

二、落地步驟:從 0 到 1 構(gòu)建數(shù)據(jù)集的 4 個(gè)關(guān)鍵環(huán)節(jié)

1. 數(shù)據(jù)來(lái)源:3 類(lèi)核心渠道,各有篩選技巧

數(shù)據(jù)從哪來(lái)?主要分三類(lèi),每類(lèi)用法不同,得針對(duì)性處理。

第一類(lèi)是公開(kāi)數(shù)據(jù)集。比如 Hugging Face、天池上的對(duì)話數(shù)據(jù)集、行業(yè)垂直數(shù)據(jù)集(如醫(yī)療領(lǐng)域的 MedDialog、金融領(lǐng)域的 FinQA)。這類(lèi)數(shù)據(jù)的好處是獲取快,但問(wèn)題也明顯 —— 通用性強(qiáng),和業(yè)務(wù)匹配度低,還可能存在過(guò)時(shí)信息。用的時(shí)候一定要篩選,比如選電商客服相關(guān)的公開(kāi)數(shù)據(jù),先剔除和自己業(yè)務(wù)無(wú)關(guān)的品類(lèi)(比如做美妝電商,就刪掉家電客服的內(nèi)容),再檢查信息時(shí)效性(比如物流政策、售后規(guī)則是不是最新的),最后保留和自己業(yè)務(wù)流程一致的對(duì)話。

第二類(lèi)是私有數(shù)據(jù)。這是最核心的部分,包括企業(yè)歷史對(duì)話記錄(比如客服聊天記錄、用戶咨詢郵件)、內(nèi)部知識(shí)庫(kù)(產(chǎn)品手冊(cè)、操作指南、FAQ)、業(yè)務(wù)日志(比如用戶常見(jiàn)問(wèn)題統(tǒng)計(jì))。這類(lèi)數(shù)據(jù)和業(yè)務(wù)貼合度最高,但要注意兩個(gè)點(diǎn):一是脫敏,必須刪掉用戶手機(jī)號(hào)、地址、身份證號(hào)等隱私信息,避免合規(guī)風(fēng)險(xiǎn);二是篩選有效內(nèi)容,比如客服聊天記錄里,很多是重復(fù)的寒暄(“你好”“在嗎”),或者無(wú)效對(duì)話(用戶發(fā)了個(gè)表情就沒(méi)下文),這些要?jiǎng)h掉,只留 “用戶提問(wèn) + 有效回復(fù)” 的完整片段。

第三類(lèi)是合成數(shù)據(jù)。如果私有數(shù)據(jù)不夠,公開(kāi)數(shù)據(jù)又篩選不出足夠匹配的,可以用基礎(chǔ)大模型生成數(shù)據(jù)。比如想補(bǔ)充 “售后退換貨” 的場(chǎng)景數(shù)據(jù),可以給基礎(chǔ)模型發(fā)指令:“生成 100 條用戶咨詢服裝退換貨的對(duì)話,包含尺碼不合適、質(zhì)量問(wèn)題、超過(guò)退換期三種情況,回復(fù)要符合電商售后規(guī)則”。但合成數(shù)據(jù)有個(gè)隱患 —— 可能存在邏輯錯(cuò)誤,比如生成的回復(fù)里提到 “7 天無(wú)理由退換”,但實(shí)際公司政策是 15 天,這就會(huì)誤導(dǎo)模型。所以生成后一定要人工校驗(yàn),每條都對(duì)照業(yè)務(wù)規(guī)則檢查,確保準(zhǔn)確。

2. 數(shù)據(jù)清洗:3 步去掉 “雜質(zhì)”,讓數(shù)據(jù)更 “干凈”

拿到原始數(shù)據(jù)后,第一步要做的就是清洗 —— 就像洗菜一樣,把爛葉子、泥沙去掉,才能用來(lái) “做飯”。

第一步是去重。重復(fù)數(shù)據(jù)會(huì)讓模型過(guò)度學(xué)習(xí),比如同一條 “怎么查訂單物流” 的對(duì)話重復(fù)了 100 次,模型會(huì)誤以為這個(gè)問(wèn)題是用戶最關(guān)注的,后續(xù)回復(fù)時(shí)可能會(huì)過(guò)度優(yōu)先這類(lèi)內(nèi)容。去重可以用工具(比如 Python 的 pandas 庫(kù))先做初步篩選,去掉完全一樣的內(nèi)容;再人工抽查,刪掉 “表述不同但核心意思一致” 的重復(fù)項(xiàng)(比如 “查物流” 和 “怎么看我的物流信息”)。

第二步是去噪。就是刪掉無(wú)效、錯(cuò)誤的內(nèi)容。比如對(duì)話里的亂碼、特殊符號(hào)(“@#¥%”)、無(wú)關(guān)信息(用戶發(fā)的廣告鏈接、客服不小心發(fā)的內(nèi)部備注);還有邏輯錯(cuò)誤的內(nèi)容,比如回復(fù)里說(shuō) “退款會(huì)在 24 小時(shí)到賬”,但知識(shí)庫(kù)寫(xiě)的是 “3 個(gè)工作日到賬”,這種矛盾的內(nèi)容要?jiǎng)h掉,或者修正為正確信息。曾有團(tuán)隊(duì)沒(méi)做去噪,把包含錯(cuò)別字的回復(fù)(“退款會(huì)在 24 小內(nèi)到賬”)放進(jìn)數(shù)據(jù)集,結(jié)果模型也跟著學(xué)錯(cuò)了用詞。

第三步是格式統(tǒng)一。模型對(duì)數(shù)據(jù)格式很敏感,格式混亂會(huì)影響學(xué)習(xí)效果。比如對(duì)話數(shù)據(jù),要統(tǒng)一成 “用戶:XXX 助手:XXX” 的格式;問(wèn)答數(shù)據(jù)統(tǒng)一成 “問(wèn)題:XXX 答案:XXX” 的格式。要是有的數(shù)據(jù)是長(zhǎng)文本(比如產(chǎn)品手冊(cè)里的大段介紹),可以拆分成 “問(wèn)題 + 短句答案”,比如把 “我們的會(huì)員分為銀卡、金卡、鉆石卡,分別需要消費(fèi) 1000 元、5000 元、10000 元升級(jí)” 拆成 “問(wèn)題:會(huì)員有哪幾種?答案:銀卡、金卡、鉆石卡”“問(wèn)題:升級(jí)金卡需要消費(fèi)多少?答案:5000 元”,這樣模型更容易學(xué)習(xí)。

3. 數(shù)據(jù)標(biāo)注:3 個(gè)維度定標(biāo)準(zhǔn),避免 “標(biāo)注混亂”

標(biāo)注是給數(shù)據(jù) “打標(biāo)簽”,告訴模型 “什么是對(duì)的,什么是符合要求的”。標(biāo)注亂了,模型就會(huì)學(xué)偏,這是很多團(tuán)隊(duì)容易踩的坑。

首先要明確標(biāo)注維度。不同場(chǎng)景的維度不一樣,比如客服模型可以分三個(gè)維度:一是意圖分類(lèi),給用戶提問(wèn)標(biāo)上 “訂單查詢”“售后投訴”“產(chǎn)品咨詢” 等標(biāo)簽,讓模型能快速識(shí)別用戶需求;二是回復(fù)質(zhì)量評(píng)分,給助手回復(fù)標(biāo) 1-5 分(1 分:完全偏離,5 分:準(zhǔn)確解決問(wèn)題),讓模型知道什么樣的回復(fù)是好的;三是業(yè)務(wù)規(guī)則匹配,檢查回復(fù)是否符合公司規(guī)定(比如退款政策、優(yōu)惠規(guī)則),標(biāo) “符合” 或 “不符合”,避免模型給出違規(guī)回復(fù)。

然后要選對(duì)標(biāo)注工具。不用追求復(fù)雜的工具,中小團(tuán)隊(duì)用 LabelStudio 就夠了,支持文本、對(duì)話、表格等多種數(shù)據(jù)類(lèi)型的標(biāo)注,還能設(shè)置標(biāo)注規(guī)則(比如意圖分類(lèi)只能選預(yù)設(shè)的選項(xiàng)),減少標(biāo)注錯(cuò)誤。要是數(shù)據(jù)量很大,可以分批次標(biāo)注,每批標(biāo)完后抽 10%-20% 做質(zhì)檢,發(fā)現(xiàn)問(wèn)題及時(shí)調(diào)整標(biāo)注規(guī)則。

最后要控制標(biāo)注一致性。很多時(shí)候多個(gè)標(biāo)注員一起標(biāo)注,容易出現(xiàn) “同一個(gè)內(nèi)容,有人標(biāo) A 意圖,有人標(biāo) B 意圖” 的情況。解決辦法是先做標(biāo)注培訓(xùn),把每個(gè)標(biāo)簽的定義、判斷標(biāo)準(zhǔn)講清楚(比如 “訂單查詢” 的定義是 “用戶詢問(wèn)訂單狀態(tài)、物流信息、下單進(jìn)度”,舉例說(shuō)明哪些屬于、哪些不屬于);再做交叉標(biāo)注,讓兩個(gè)標(biāo)注員標(biāo)同一批數(shù)據(jù),計(jì)算一致性(比如一致率要達(dá)到 90% 以上),不一致的地方集體討論定結(jié)果,確保標(biāo)注標(biāo)準(zhǔn)統(tǒng)一。

4. 數(shù)據(jù)迭代:上線后根據(jù)反饋持續(xù)優(yōu)化

數(shù)據(jù)集不是一次性做完就結(jié)束的,模型上線后,要根據(jù)用戶反饋不斷更新,讓模型持續(xù)進(jìn)步。

怎么收集反饋?可以從三個(gè)渠道入手:

一是用戶投訴,比如用戶反饋 “模型說(shuō)能退全款,但實(shí)際只能退一半”,這類(lèi)案例要記錄下來(lái),分析是數(shù)據(jù)集里沒(méi)有覆蓋 “部分退款” 的場(chǎng)景,還是已有數(shù)據(jù)存在錯(cuò)誤;

二是人工抽檢,每天抽一定量的模型回復(fù),檢查是否準(zhǔn)確、是否符合業(yè)務(wù)規(guī)則,把不合格的案例整理成新數(shù)據(jù);

三是業(yè)務(wù)數(shù)據(jù)統(tǒng)計(jì),比如發(fā)現(xiàn) “用戶問(wèn)會(huì)員續(xù)費(fèi)怎么操作” 時(shí),模型回復(fù)準(zhǔn)確率只有 70%,就針對(duì)性補(bǔ)充這類(lèi)場(chǎng)景的對(duì)話數(shù)據(jù)。

迭代時(shí)要注意 “小步快跑”。不用等積累大量數(shù)據(jù)再更新,每次補(bǔ)充幾百到幾千條高質(zhì)量數(shù)據(jù),重新做一次微調(diào)即可。要是一次性加太多數(shù)據(jù),不僅耗時(shí),還可能引入新的問(wèn)題(比如新數(shù)據(jù)和老數(shù)據(jù)存在矛盾)。曾有團(tuán)隊(duì)每?jī)芍艿淮螖?shù)據(jù)集,每次補(bǔ)充 500 條左右用戶反饋的案例,模型準(zhǔn)確率每月能提升 5%-8%,效果很穩(wěn)定。

三、避坑指南:3 個(gè)最容易犯的錯(cuò),別再踩了

1. 貪多求全,忽視數(shù)據(jù)匹配度

很多人覺(jué)得 “數(shù)據(jù)量越大越好”,把各種相關(guān)不相關(guān)的數(shù)據(jù)都堆進(jìn)來(lái),結(jié)果模型學(xué)不到重點(diǎn)。比如做 to B 企業(yè)的客服模型,卻加了大量 to C 個(gè)人用戶的對(duì)話數(shù)據(jù),導(dǎo)致模型對(duì)企業(yè)客戶的專(zhuān)業(yè)提問(wèn)(比如 “批量下單怎么操作”)回復(fù)得很業(yè)余。解決辦法是始終圍繞業(yè)務(wù)目標(biāo)篩選數(shù)據(jù),不符合的再優(yōu)質(zhì)也堅(jiān)決不用,數(shù)據(jù)量不夠就用 “私有數(shù)據(jù) + 精準(zhǔn)合成數(shù)據(jù)” 的方式補(bǔ)充,而不是盲目堆砌。

2. 跳過(guò)人工校驗(yàn),依賴自動(dòng)化工具

有些團(tuán)隊(duì)覺(jué)得用工具去重、去噪就夠了,省去人工校驗(yàn)的步驟,結(jié)果很多隱性問(wèn)題沒(méi)發(fā)現(xiàn)。比如工具沒(méi)法識(shí)別 “回復(fù)邏輯錯(cuò)誤”(比如 “退款需要提供身份證”,但實(shí)際不需要),也沒(méi)法判斷 “回復(fù)是否符合業(yè)務(wù)最新規(guī)則”(比如公司剛把退換期從 7 天改成 15 天,工具不知道這個(gè)變化)。所以自動(dòng)化工具只能做初步處理,關(guān)鍵環(huán)節(jié)(比如合成數(shù)據(jù)校驗(yàn)、業(yè)務(wù)規(guī)則匹配)一定要人工參與,尤其是核心場(chǎng)景的數(shù)據(jù),最好 100% 人工檢查。

3. 標(biāo)注標(biāo)準(zhǔn)模糊,沒(méi)有統(tǒng)一規(guī)則

標(biāo)注時(shí)沒(méi)明確規(guī)則,標(biāo)注員全憑感覺(jué)判斷,比如 “產(chǎn)品咨詢” 和 “售后咨詢” 的邊界模糊,有的標(biāo)注員把 “這個(gè)產(chǎn)品有質(zhì)量問(wèn)題嗎” 標(biāo)成 “產(chǎn)品咨詢”,有的標(biāo)成 “售后咨詢”。這樣標(biāo)注出來(lái)的數(shù)據(jù)會(huì)讓模型困惑,無(wú)法準(zhǔn)確識(shí)別用戶意圖。解決辦法是提前制定詳細(xì)的標(biāo)注手冊(cè),把每個(gè)標(biāo)簽的定義、判斷標(biāo)準(zhǔn)、示例都寫(xiě)清楚,標(biāo)注前做培訓(xùn),標(biāo)注中做交叉檢查,確保所有人的判斷標(biāo)準(zhǔn)一致。

四、未來(lái)趨勢(shì):數(shù)據(jù)集構(gòu)建會(huì)更 “智能”

隨著大模型技術(shù)的發(fā)展,數(shù)據(jù)集構(gòu)建也會(huì)越來(lái)越高效。比如動(dòng)態(tài)數(shù)據(jù)集,模型上線后能自動(dòng)收集用戶反饋,篩選出需要補(bǔ)充的數(shù)據(jù),甚至自動(dòng)生成初步的標(biāo)注建議,人工只需做少量校驗(yàn);再比如結(jié)合 RAG(檢索增強(qiáng)生成),數(shù)據(jù)集不用一次性包含所有知識(shí),而是通過(guò)檢索實(shí)時(shí)調(diào)用知識(shí)庫(kù)內(nèi)容,減少數(shù)據(jù)集的規(guī)模和更新頻率;還有隱私保護(hù)技術(shù),比如聯(lián)邦學(xué)習(xí),能在不泄露原始數(shù)據(jù)的情況下,聯(lián)合多個(gè)機(jī)構(gòu)的數(shù)據(jù)源構(gòu)建數(shù)據(jù)集,解決數(shù)據(jù)量不足的問(wèn)題。

但無(wú)論技術(shù)怎么變,數(shù)據(jù)集 “對(duì)齊業(yè)務(wù)、保證質(zhì)量” 的核心不會(huì)變。對(duì)大多數(shù)團(tuán)隊(duì)來(lái)說(shuō),不用追求最先進(jìn)的技術(shù),而是把基礎(chǔ)環(huán)節(jié)做扎實(shí) —— 選對(duì)數(shù)據(jù)來(lái)源、做好清洗標(biāo)注、根據(jù)反饋持續(xù)迭代,就能構(gòu)建出高質(zhì)量的 SFT 數(shù)據(jù)集,讓微調(diào)后的模型真正幫業(yè)務(wù)解決問(wèn)題。畢竟,好的模型不是調(diào)參調(diào)出來(lái)的,而是用優(yōu)質(zhì)數(shù)據(jù)集 “教” 出來(lái)的。

本文由@為了罐罐 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來(lái)自 Unsplash,基于CC0協(xié)議。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 目前還沒(méi)評(píng)論,等你發(fā)揮!