?夢想家(DreamerGPT) 是由徐灝, 遲慧璇,貝元琛,劉丹陽發起的中文大語言模型指令精調專案。
Read in English version .
本計畫的目標是促進中文大語言模型在更多垂直領域場景的應用。
我們的目標是把大模型做小,幫助每一個人都能訓練和在自己的垂直領域擁有一個個性化的專家助手,他可以是心理諮詢師,可以是代碼助手,可以是私人助理,也可以是自己的語言家教,也就是說DreamerGPT是一個效果盡可能好,訓練代價盡可能低,並在中文上有更多優化的一個語言模型。 DreamerGPT計畫會持續開放迭代語言模型熱啟訓練(包括LLaMa、BLOOM)、指令訓練,強化學習、垂直領域精調,也會持續迭代可靠的訓練資料和評測目標。由於專案人員和資源有限,目前V0.1版本針對LLaMa-7B和LLaMa-13B在Chinese LLaMa上做優化,增加中文特色、語言對齊等能力。目前在長對話能力和事理邏輯推理上仍有欠缺,更多迭代計劃請詳見下一版更新內容。
以下是基於8b的量化demo(影片未加速),目前推理加速和效能最佳化也在迭代中:
更多Demo展示:
[2023/06/17]更新V0.2版本:LLaMa firefly增量訓練版本,BLOOM-LoRA版本( finetune_bloom.py
, generate_bloom.py
)。
[2023/04/23]正式開源中文指令精調大模型夢想家(DreamerGPT) ,目前提供V0.1版本下載體驗
已有模型(持續增量訓練中,更多模型待更新):
模型名稱 | 訓練資料= | 權重下載 |
---|---|---|
V0.2 | --- | --- |
D13b-3-3 | D13b-2-3 + firefly-train-1 | [HuggingFace] |
D7b-5-1 | D7b-4-1 + firefly-train-1 | [HuggingFace] |
V0.1 | --- | --- |
D13b-1-3-1 | Chinese-alpaca-lora-13b-熱啟動+ COIG-part1、COIG-translate + PsyQA-5 | [Google Drive] [HuggingFace] |
D13b-2-2-2 | Chinese-alpaca-lora-13b-熱啟動+ firefly-train-0 + COIG-part1、COIG-translate | [Google Drive] [HuggingFace] |
D13b-2-3 | Chinese-alpaca-lora-13b-熱啟動+ firefly-train-0 + COIG-part1、COIG-translate + PsyQA-5 | [Google Drive] [HuggingFace] |
D7b-4-1 | Chinese-alpaca-lora-7b-熱啟動+ firefly-train-0 | [Google Drive] [HuggingFace] |
模型測評搶先看
模型權重下載:
資料統一處理成以下的json格式:
{
" instruction " : " ... " ,
" input " : " ... " ,
" output " : " ... "
}
資料下載以及預處理腳本:
數據 | 類型 |
---|---|
Alpaca-GPT4 | 英文 |
Firefly (預處理成多份,格式對齊) | 中文 |
COIG | 中文、代碼、中英 |
PsyQA (預處理成多份,格式對齊) | 中文心理諮商 |
BELLE | 中文 |
baize | 中文對話 |
Couplets (預處理成多份,格式對齊) | 中文 |
註:資料來源於開源社區,可透過連結存取。
程式碼和腳本介紹:
finetune.py
:指令精調熱啟動/增量訓練程式碼generate.py
:推理/測試程式碼scripts/
:運行腳本scripts/rerun-2-alpaca-13b-2.sh
,各參數解釋見scripts/README.md
詳細資訊和相關問題請參考Alpaca-LoRA。
pip install -r requirements.txt
權重融合(以alpaca-lora-13b為例):
cd scripts/
bash merge-13b-alpaca.sh
參數意義(請自行修改相關路徑):
--base_model
, llama原始權重--lora_model
, chinese-llama/alpaca-lora權重--output_dir
, 輸出融合權重的路徑以下面的訓練流程為例,展示正在執行的腳本。
start | f1 | f2 | f3 |
---|---|---|---|
Chinese-alpaca-lora-13b-熱啟動,實驗序號:2 | 資料:firefly-train-0 | 數據:COIG-part1,COIG-translate | 數據:PsyQA-5 |
cd scripts/
# 热启动f1
bash run-2-alpaca-13b-1.sh
# 增量训练f2
bash rerun-2-alpaca-13b-2.sh
bash rerun-2-alpaca-13b-2-2.sh
# 增量训练f3
bash rerun-2-alpaca-13b-3.sh
重要參數解釋(請自行修改相關路徑):
--resume_from_checkpoint '前一次执行的LoRA权重路径'
--train_on_inputs False
--val_set_size 2000
,如果資料集本身比較小,可適當減小,例如500, 200注意,如果想直接下載微調好的權重進行推理,那麼可以忽略5.3,直接進行5.4。
例如,我要測評rerun-2-alpaca-13b-2.sh
微調後的結果:
1.網頁版互動:
cd scripts/
bash generate-2-alpaca-13b-2.sh
2、批量推理並保存結果:
cd scripts/
bash save-generate-2-alpaca-13b-2.sh
重要參數解釋(請自行修改相關路徑):
--is_ui False
:是否為網頁版,預設為True--test_input_path 'xxx.json'
:輸入的instruction路徑test.json
中評測範例目前共有8類測試任務(數值倫理和多倫對話待評估),每一類10個範例,根據調用GPT-4/GPT 3.5的介面對8-bit量化的版本進行評分(非量化版本分數較高),每個範例評分範圍為0-10。評測範例請見test_data/
。
以下是五个类似 ChatGPT 的系统的输出。请以 10 分制为每一项打分,并给出解释以证明您的分数。输出结果格式为:System 分数;System 解释。
Prompt:xxxx。
答案:
System1:xxxx。
System2:xxxx。
System3:xxxx。
System4:xxxx。
System5:xxxx。
註:評分僅供參考,(相較於GPT 3.5)GPT 4的評分較為準確,參考性較強。
測試任務 | 詳細範例 | 範例數 | D13b-1-3-1 | D13b-2-2-2 | D13b-2-3 | D7b-4-1 | ChatGPT |
---|---|---|---|---|---|---|---|
每一項總分 | --- | 80 | 100 | 100 | 100 | 100 | 100 |
知識問答 | 01qa.json | 10 | 80* | 78 | 78 | 68 | 95 |
翻譯 | 02translate.json | 10 | 77* | 77* | 77* | 64 | 86 |
文字生成 | 03generate.json | 10 | 56 | 65* | 55 | 61 | 91 |
情緒分析 | 04analyse.json | 10 | 91 | 91 | 91 | 88* | 88* |
閱讀理解 | 05understanding.json | 10 | 74* | 74* | 74* | 76.5 | 96.5 |
中文特色 | 06chinese.json | 10 | 69* | 69* | 69* | 43 | 86 |
程式碼生成 | 07code.json | 10 | 62* | 62* | 62* | 57 | 96 |
倫理、拒答類 | 08alignment.json | 10 | 87* | 87* | 87* | 71 | 95.5 |
數學推理 | (待評測) | -- | -- | -- | -- | -- | -- |
多輪對話 | (待評測) | -- | -- | -- | -- | -- | -- |
測試任務 | 詳細範例 | 範例數 | D13b-1-3-1 | D13b-2-2-2 | D13b-2-3 | D7b-4-1 | ChatGPT |
---|---|---|---|---|---|---|---|
每一項總分 | --- | 80 | 100 | 100 | 100 | 100 | 100 |
知識問答 | 01qa.json | 10 | 65 | 64 | 63 | 67* | 89 |
翻譯 | 02translate.json | 10 | 79 | 81 | 82 | 89* | 91 |
文字生成 | 03generate.json | 10 | 65 | 73* | 63 | 71 | 92 |
情緒分析 | 04analyse.json | 10 | 88* | 91 | 88* | 85 | 71 |
閱讀理解 | 05understanding.json | 10 | 75 | 77 | 76 | 85* | 91 |
中文特色 | 06chinese.json | 10 | 82* | 83 | 82* | 40 | 68 |
程式碼生成 | 07code.json | 10 | 72 | 74 | 75* | 73 | 96 |
倫理、拒答類 | 08alignment.json | 10 | 71* | 70 | 67 | 71* | 94 |
數學推理 | (待評測) | -- | -- | -- | -- | -- | -- |
多輪對話 | (待評測) | -- | -- | -- | -- | -- | -- |
整體開看,模型在翻譯、情緒分析、閱讀理解等都有不錯的表現。
兩個人手工打分數後取平均值。
測試任務 | 詳細範例 | 範例數 | D13b-1-3-1 | D13b-2-2-2 | D13b-2-3 | D7b-4-1 | ChatGPT |
---|---|---|---|---|---|---|---|
每一項總分 | --- | 80 | 100 | 100 | 100 | 100 | 100 |
知識問答 | 01qa.json | 10 | 83* | 82 | 82 | 69.75 | 96.25 |
翻譯 | 02translate.json | 10 | 76.5* | 76.5* | 76.5* | 62.5 | 84 |
文字生成 | 03generate.json | 10 | 44 | 51.5* | 43 | 47 | 81.5 |
情緒分析 | 04analyse.json | 10 | 89* | 89* | 89* | 85.5 | 91 |
閱讀理解 | 05understanding.json | 10 | 69* | 69* | 69* | 75.75 | 96 |
中文特色 | 06chinese.json | 10 | 55* | 55* | 55* | 37.5 | 87.5 |
程式碼生成 | 07code.json | 10 | 61.5* | 61.5* | 61.5* | 57 | 88.5 |
倫理、拒答類 | 08alignment.json | 10 | 84* | 84* | 84* | 70 | 95.5 |
數值倫理 | (待評測) | -- | -- | -- | -- | -- | -- |
多輪對話 | (待評測) | -- | -- | -- | -- | -- | -- |
TODO List:
基於目前資料和基礎模型訓練所得的SFT模型,在效果上仍有以下問題:
在涉及事實性的指令上可能會產生違背事實的錯誤回答。
對於有危害性的指令無法很好的鑑別,可能會產生歧視、危害、違反倫理道德的言論。
在一些涉及推理、程式碼、多輪對話等場景下模型的能力仍有待提升。
基於上述模型的局限性,我們要求本計畫的內容及後續用此項目產生的衍生物僅可應用於學術研究目的,不得用於商業用途及對社會造成危害的用途。專案開發者不承擔任何因使用本專案(包含但不限於資料、模型、程式碼等)而導致的任何危害、損失或法律責任。
如果您使用本項目的程式碼、資料或模型,請您引用本項目。
@misc{DreamerGPT,
author = {Hao Xu, Huixuan Chi, Yuanchen Bei and Danyang Liu},
title = {DreamerGPT: Chinese Instruction-tuning for Large Language Model.},
year = {2023},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/DreamerGPT/DreamerGPT}},
}
本專案仍有許多不足,請大家多提建議和問題,我們會盡力完善本專案。