官方教程|CPM-Bee在基礎任務上的高效微調(diào)

5月27日百億參數(shù)中英雙語基座模型 CPM-Bee 開源之后,在GitHub反響熱烈,一度登上總榜第四、Python榜第三。

CPM-Bee 是一個基座模型,其開源的核心目的是更廣泛地支持各種 NLP 應用場景,讓大家可以自由地進行適配。我們在預訓練的時候采用了一些特殊設計,所以它現(xiàn)在的輸出比較穩(wěn)定。如果在合適的數(shù)據(jù)上進行指令微調(diào),CPM-Bee 會輸出更高質(zhì)量和有信息量的內(nèi)容。



當然,有很多社區(qū)的朋友希望我們出模型的具體微調(diào)教程,我們決定首先推出?CPM-Bee基礎微調(diào)教程。

CPM-Bee 數(shù)據(jù)格式介紹
—
CPM-Bee 基座模型可以將多種自然語言處理任務統(tǒng)一用生成的方式解決。CPM-Bee 采用特殊的多任務預訓練模式,所有的數(shù)據(jù)都統(tǒng)一用一個字典來管理。我們可以任意設計字典中的鍵值對來表達我們希望模型做的事情,同時預留一個<ans>字段,用于存儲模型給出的答案。注意,<ans>字段是必需的,基本格式如下:
盡管輸入數(shù)據(jù)的格式是任意的,但由于模型在預訓練階段使用了有限的幾種數(shù)據(jù)格式,我們建議您在使用CPM-Bee推理時盡量使用這些參考格式。
文本生成
input
字段用于填寫上下文,它并不是唯一的,您可以使用"source", "document", "query", "text", "文章", "文檔", "原文", "輸入", "context", "上下文"等類似的鍵來替換。
prompt
字段用來給出一些提示和指定任務,該字段并不是必需的,但是我們建議您使用合理的 prompt
來更好地驅(qū)動模型。prompt
也可以被"hint", "task", "prompt", "任務", "提示", "目標", "target"等替換。請注意,prompt
一般會提供一些控制信息,如"往后寫xxx字","中翻英","給這段話生成摘要"等。
翻譯
CPM-Bee目前支持中英互譯。prompt
一般可選"中翻英"/"英翻中","中譯英"/"英譯中","把文章翻譯為英文"/"把文章翻譯為中文","Translate from English to Chinese"等。
問答
選擇題
options
可以等價替換為"answers", "candidates", "選項"...
命名實體識別
以上是一些常見的任務的數(shù)據(jù)格式。請注意里面用到的字段不是嚴格限定的,您可以做一些近似語義的替換,比如把"中翻英"替換為"把這段話翻譯成英文"。您也可以在微調(diào)時自由設計數(shù)據(jù)格式,例如,當您希望微調(diào)一個對話模型,您可以構造數(shù)據(jù)格式為
您也可以不使用<sep>
,如下格式也可以:
總之,您可以靈活定義您的數(shù)據(jù)格式。

微調(diào)流程
本教程將以一個序列-序列任務為例介紹對 CPM-Bee 基座模型的微調(diào)。這里我們選擇的任務需要將一句白話文“翻譯”成一句古詩。首先,微調(diào)需要準備原始數(shù)據(jù),格式如下:
放置在路徑
src/ccpm_example/raw_data/
下;
準備模型的checkpoint,放在路徑
src/ckpts/pytorch_model.bin
下,可在此鏈接下載權重。
進入工作路徑:
運行data_reformat.py
重新調(diào)整數(shù)據(jù)格式。注意,這里我們將原始數(shù)據(jù)轉(zhuǎn)化為上述推薦的格式。在您的實驗中,可以自行設置需要的格式并且編寫自己的data_reformat.py
。
得到調(diào)整后的數(shù)據(jù)格式:
放置在路徑
src/ccpm_example/bee_data/
下
注:該格式為參考格式。微調(diào)時,您可以自由設計您的數(shù)據(jù)格式,可以不設置prompt
字段,只要所提供的數(shù)據(jù)涵蓋所有必要信息即可。但我們一般推薦將輸入文本字段標識為input/document/doc
,如果您的任務可以被轉(zhuǎn)化成選擇題,則應當添加options
字段與question
字段;如果是一般的文本生成,包含input
+<ans>
即可
構建二進制數(shù)據(jù)文件:
放在路徑
ccpm_example/bin_data/
下
注:應確保沒有同名路徑ccpm_example/bin_data/
,如存在同名路徑,應先刪除該路徑再運行上述指令。如未提前刪除,該指令會報錯ValueError: Dataset name exists
,同時產(chǎn)生一個新路徑tmp/
,此時應當連同tmp/
與同名路徑ccpm_example/bin_data/
一并刪除,之后再運行上述指令即可。
在模型微調(diào)腳本scripts/finetune_cpm_bee.sh
中對超參數(shù)進行設置,我們對每一個超參數(shù)給出了注釋:
只需要運行腳本即可開始微調(diào)
您可以在src/results/
中查看存儲的模型或者輕量級 Delta 模塊。

以上是 CPM-Bee的基礎微調(diào)教程。下期我們會繼續(xù)推出指令微調(diào)教程,我們也會持續(xù)完善CPM-Bee的文檔信息,歡迎感興趣的朋友關注和參與開源共建!
????CPM-Bee開源地址
????https://github.com/OpenBMB/CPM-Bee
? ?加社群/ 提建議/ 有疑問?
請找 OpenBMB 萬能小助手:

?? 關注我們
微信搜索關注 “OpenBMB開源社區(qū)”
后臺回復“CPM-Live” 即可加入CPM-Live加油群
還可獲取更多大模型干貨知識和前沿資訊! ??

