Open-ChatGPT
是一個開源程式庫,可讓您使用自己的資料和盡可能少的運算量來訓練超個人化的類似 ChatGPT 的人工智慧模型。
Open-ChatGPT
是一個通用系統框架,用於為類似 ChatGPT 的模型提供端到端的訓練體驗。它可以自動採用您最喜歡的預訓練大型語言模型,透過 OpenAI InstructGPT 風格的三個階段來產生您自己的高品質 ChatGPT 風格模型。
我們實現了由 Transformer 函式庫和 DeepsSpeed 提供支援的 RLHF(帶有人類回饋的強化學習)。它支援分散式訓練和卸載,可以適應極大的模型。
如果您喜歡該項目,請留下一顆星以表示您的支持。
[2023/05] 我們實現了斯坦福羊駝Lora 。
[2023/05] 我們實現了斯坦福羊駝。
[2023/04] 我們發表了RLHF(Reinforcement Learning with Human Feedback) Pipeline 。
[2023/03] 我們發布了程式碼OpenChatGPT:一個開源程式庫,用於像 ChatGPT 一樣訓練 ChatBot 。
Open-ChatGPT:ChatGPT 的開源實現
記憶體不足
微調 Alpaca-7B
使用 DeepSpeed
與 Lora 一起微調 Alpaca-7B
指令資料集
RLHF 資料集
資料預處理
資料格式化
介紹
訊息
目錄
數據收集
安裝
指令Fintune
推理
貢獻
執照
致謝
引文
用於訓練(文字和多模式)基於聊天的 LLM 的開源指令調整資料集的集合(GPT-4、ChatGPT、LLaMA、Alpaca)。
參考這個(@jianzhnie),我們根據以下規則標記每個收集的資料集:
(Lang)語言-標籤:
EN:英文說明資料集
CN:中文指令資料集
ML:[多語言]多種語言的指令資料集
(任務)任務標籤:
MT:[多任務]包含多個任務的資料集
TS:[特定任務]針對特定任務所客製的資料集
(Gen)生成方法:
HG:[人類生成的資料集]人類創建的資料集
SI:[自指示]使用自指示方法產生的資料集
MIX:[混合資料集]資料集包含人類和機器產生的數據
COL:[資料集集合] 由其他資料集集合而成的資料集
專案 | 數據集 | 組織 | 數位 | 郎 | 任務 | 根 | 類型 | 原始碼 |
---|---|---|---|---|---|---|---|---|
思想鏈 | cot_data |few_shot_data | 74771 | 英文/中文 | 公噸 | HG | 用 cot 推理進行指導 | 在現有資料上註釋 CoT | |
GPT4all | nomic-ai/gpt4all-j-提示-世代 | 經濟人工智慧 | 806199 | CN | 公噸 | 科爾 | 代碼、故事和對話 | 從 GPT-3.5-turbo 蒸餾 |
GP老師 | GPT-4 通用說明 |角色扮演說明 |代碼說明 |工具成形者 | 泰克尼姆1 | 29013 | CN | 公噸 | SI | 一般、角色扮演、工具形成者 | GPT-4 和模具成型機 |
原駝 | JosephusCheung/Guanaco資料集 | 張約瑟夫 | 534610 | 機器學習 | 公噸 | SI | 各種語言任務 | 文-達文西-003 |
HC3 | Hello-SimpleAI/HC3 | 你好-SimpleAI | 萬得資訊 | 37175 | 英文/中文 | TS | 混合 | 對話評價 | 人類或 ChatGPT |
HC3-中文 | Hello-SimpleAI/HC3-中文 | Hello-SimpleAI|萬得資訊 | 13k | 中國 | TS | 混合 | 對話評價 | 人類或 ChatGPT |
羊駝毛 | 達實驗室/羊駝 | 達實驗室 | 52002 | CN | 公噸 | SI | 一般指示 | 文-達文西-003 |
羊駝資料清理 | yahma/羊駝毛清潔 | 亞赫馬 | 52k | CN | 公噸 | SI | 一般指示 | 文-達文西-003 |
中國-美洲駝-羊駝 | alpaca_data_zh_51k | ymcui(訊飛) | 51k | 中國 | 公噸 | SI | 一般指示 | 文-達文西-003 |
Luotuo-中文-LLM 駱駝 | trans_chinese_alpaca_data | LC1332(商湯) | 52k | 中國 | 公噸 | SI | 一般指示 | 文-達文西-003 |
自然指令 | Allen AI 61 任務|1.5k 任務 | 艾艾倫 | 5040134 | 機器學習 | 公噸 | 科爾 | 多樣化的 NLP 任務 | 人工註釋資料集集合 |
美女網 | 百麗集團/train_1M_CN |百麗集團/train_0.5M_CN | 百麗集團(鍊家) | 1079517 | 中國 | TS/MT | SI | 一般、數學推理、對話 |
這裡,我們只列出了指令調優資料集清單的一小部分,要查找更多資料集,請查看以下連結:jianzhnie/awesome-instruction-datasets:用於訓練指令追蹤LLM的開源資料集的集合(ChatGPT 、美洲駝、羊駝)。
來自人類回饋的指令調整/強化學習 (RLHF) 資料集是 ChatGPT 等指令追蹤法學碩士的關鍵組成部分。 Follwing 是用於各種法學碩士指令調整的資料集的綜合列表,使研究人員和開發人員更容易存取和利用這些資源。
專案 | 組織 | 數位 | 郎 | 概括 |
---|---|---|---|---|
webgpt_比較 | 開放伊 | 19,578 | 英語 | 在 WebGPT 論文中,作者根據人類回饋訓練了一個獎勵模型。他們使用獎勵模型來訓練一個長格式的問答模型,以符合人類的偏好。這是在 WebGPT 專案結束時標記為適合獎勵建模的所有比較的資料集。總共有 19,578 次比較。 |
小水電 | 史丹佛大學 | 349K | 英語 | SHP 是一個資料集,包含 385K 人類對 18 個不同主題領域(從烹飪到法律建議)的問題/說明的回答的集體偏好。這些偏好旨在反映一種反應相對於另一種反應的有用性,並旨在用於訓練 RLHF 獎勵模型和 NLG 評估模型(例如,SteamSHP)。 |
rlhf 獎勵資料集 | 一聽邪 | 76.3 k | 英語 | |
達霍斯/full-hh-rlhf | 達霍斯 | 112k | 英語 | Anthropic 的 HH 資料集重新格式化為即時、選擇、拒絕的樣本。 |
Dahoas/合成指令 gptj 成對 | 達霍斯 | 英語 | ||
達霍斯/rm-靜態 | 達霍斯 | 76.3k | 英語 | hh-static 的分割用於在監督微調後訓練獎勵模型。 |
人擇/hh-rlhf | 人擇 | 22k | 英語 | 該 RLHF 資料集是一個迭代的「線上」資料集,其中包括來自 52B 語言模型的資料。它包含 22k 有用性比較,並且沒有紅隊數據。 |
使用 GPT-4/GPT-4-LLM 進行指令調整 | 使用 GPT-4 進行指令調整 | 52k | 英語 | 透過要求 GPT-4 評估質量,對三個模型(GPT-4、GPT-3.5 和 OPT-IML)的 Alpaca 提示的反應進行排名(註:數據由GPT-4 模型而非人類評估)。作者認為“GPT-4能夠識別並修復自身錯誤,並準確判斷響應的品質” |
thu-coai/安全提示 | 守高 | 10萬 | 中國人 | 中文安全提示,用於體育和提升模型的安全性,將模型的輸出與人類的價值觀相匹配。 |
Chatgpt-比較-檢測項目 |
要查找更多資料集,請查看以下連結:jianzhnie/awesome-instruction-datasets:用於訓練遵循指令的 LLM(ChatGPT、LLaMA、Alpaca)的開源資料集集合。
我們開發了資料預處理程式碼,為各種大型語言模型提供統一的介面。此程式碼可用於多種目的預處理數據,例如指令調優和 RLHF 建模任務。如果您有興趣了解更多信息,請查看以下指向我們的提示數據集和數據實用程式的連結:
提示資料集.py
data_utils.py
在我們的集合中,所有資料均使用相同的範本進行格式化。每個樣本都遵循以下結構:
[ {"instruction": instruction string, "input": input string, # (may be empty) "output": output string} ]
git 複製 https://github.com/jianzhnie/open-chatgpt.git pip install -r 要求.txt
聚四氟乙烯
如果您想將 LORA 與其他參數有效的方法一起使用,請安裝 peft 作為附加相依性。
深速
如果您想使用管道並行、梯度檢查點和張量融合等技術加速 LLM 訓練。請安裝 DeepSpeed。
我們使用標準 Hugging Face 訓練程式碼微調我們的模型。我們使用以下超參數對 LLaMA-7B 和 LLaMA-13B 進行微調:
超參數 | 拉馬-7B | LLaMA-13B |
---|---|---|
批量大小 | 128 | 128 |
學習率 | 2e-5 | 1e-5 |
紀元 | 3 | 5 |
最大長度 | 第512章 | 第512章 |
重量衰減 | 0 | 0 |
您可以使用以下命令使用 4 x A100 (40GB) 訓練 Alpaca-7B。
cd 範例/羊駝/ python train_alpaca.py --model_name_or_path 'decapoda-research/llama-7b-hf' --data_path tatsu-lab/羊駝 --output_dir 工作目錄/ --num_train_epochs 3 --per_device_train_batch_size 1 --per_device_eval_batch_size 1 --gradient_accumulation_steps 16 --評估策略“否” --save_strategy“步驟” --save_steps 2000 --save_total_limit 5 --學習率2e-5 --權重衰減0。 --warmup_ratio 0.03 --lr_scheduler_type“餘弦” --logging_steps 1
如果您遇到 OOM 錯誤,請考慮這一點。
簡單來說,微調 7B 模型需要大約 7 x 4 x 4 = 112 GB 的 VRAM。上面給出的命令啟用參數分片,因此任何 GPU 上都不會儲存冗餘模型副本。如果您想進一步減少記憶體佔用,可以選擇以下一些選項:
使用--fsdp "full_shard auto_wrap offload"
開啟 FSDP 的 CPU 卸載。這可以節省 VRAM,但代價是運行時間更長。
根據我們的經驗,DeepSpeed stage-3(帶卸載)有時比卸載的 FSDP 具有更高的記憶體效率。以下是使用具有 4 個 GPU 的 DeepSpeed stage-3 以及參數和優化器卸載的範例:
pip install deepspeedcd 範例/alpaca/ torchrun --nproc_per_node=8 train_alpaca.py --model_name_or_path 'decapoda-research/llama-7b-hf' --data_path tatsu-lab/羊駝 --output_dir 工作目錄/ --num_train_epochs 3 --per_device_train_batch_size 2 --per_device_eval_batch_size 2 --gradient_accumulation_steps 8 --評估策略“否” --save_strategy“步驟” --save_steps 2000 --save_total_limit 5 --學習率2e-5 --權重衰減0。 --warmup_ratio 0.03 --deepspeed“腳本/ds_config_zero3_auto.json”
LoRA 微調查詢、鍵和值嵌入頭的低秩切片。這可以將總記憶體佔用量從 112GB 減少到大約 7x4=28GB。
這部分使用低秩適應 (LoRA) 重現史丹佛羊駝結果。
為了廉價且有效率地進行微調,我們使用 Hugging Face 的 PEFT 以及 Tim Dettmers 的 bitsandbytes。
該檔案包含 PEFT 在 LLaMA 模型中的簡單應用,以及一些與提示建置和標記化相關的程式碼。
python train_alpaca_lora.py --model_name_or_path decapoda-research/llama-7b-hf --data_path tatsu-lab/羊駝 --output_dir work_dir_lora/ --num_train_epochs 3 --per_device_train_batch_size 4 --per_device_eval_batch_size 4 --gradient_accumulation_steps 8 --評估策略“否” --save_strategy“步驟” --save_steps 2000 --save_total_limit 5 --學習率2e-5 --權重衰減0。 --warmup_ratio 0.03 --lr_scheduler_type“餘弦” --logging_steps 1
該檔案從 Hugging Face 模型中心讀取基礎模型,從tloen/alpaca-lora-7b
讀取 LoRA 權重,並運行 Gradio 介面以對指定輸入進行推理。使用者應將此視為模型使用的範例程式碼,並根據需要進行修改。
用法範例:
蟒蛇generate_server.py --model_name_or_path decapoda-research/llama-7b-hf --lora_model_name_or_path tloen/alpaca-lora-7b
如果您沒有足夠的內存,可以透過在上述命令中添加--load-8bit
來啟用 8 位元壓縮。這可以將記憶體使用量減少大約一半,但模型品質會略有下降。它與 CPU、GPU 和 Metal 後端相容。具有 8 位元壓縮的 Alpaca-7B 可在單一 NVIDIA 3090/4080/T4/V100(16GB) GPU 上運作。
蟒蛇generate_server.py --model_name_or_path decapoda-research/llama-7b-hf --lora_model_name_or_path tloen/alpaca-lora-7b --load_8bit
我們的目的是讓這個倉庫變得更好。如果您有興趣貢獻,請參閱此處以了解貢獻說明。
Openn-ChatGPT
在 Apache 2.0 許可證下發布。
我們感謝許多開源貢獻者的工作,特別是:
羊駝-LoRA
洛拉
斯坦福羊駝毛
抱臉
駱駝
駱駝毛
如果您使用此儲存庫中的資料或程式碼,請引用該儲存庫。
@misc{open-chatgpt, author = {jianzhnie}, title = {Open-ChatGPT, a chatbot based on Llama model}, year = {2023}, publisher = {GitHub}, journal = {GitHub repository}, howpublished = {url{https://github.com/jianzhnie/open-chatgpt}}, }