這邊 ChatGPT、GPT-4 等 AI 大模型和應用打得火熱;
另一邊 " 平替 " 開源複現方案也加緊更新叠代。
這不," 首個開源 ChatGPT 低成本複現流程 " 就來了波大更新!
現在,僅需不到百億參數,利用 RLHF 簡單微調,模型即可掌握中、英雙語能力,達到與 ChatGPT 和 GPT-3.5 相當的效果。
中文對話效果如下:
這就是ColossalChat。
由 Colossal-AI 推出。一個月前,Colossal-AI 乘着 ChatGPT 熱潮火速開源了低成本複現流程。
而新升級的 ColossalChat,以 Meta 最新開源的 LLaMA 爲基礎預訓練模型,能力更強、門檻還更低了:
Demo:可直接在線體驗模型效果,無需注冊或 waitinglist
訓練代碼:開源完整 RLHF 訓練代碼,已開源至含 7B、13B 兩種模型
數據集:開源 104K 中、英雙語數據集
推理部署:4bit 量化推理 70 億參數模型僅需 4GB 顯存
模型權重:僅需單台服務器少量算力即可快速複現
更大規模模型、數據集、其他優化等将保持高速叠代添加
要知道,模型開源、數據集、訓練應用成本、核心數據安全性等,是 AI 大模型浪潮下最被關注的一些問題。ColossalChat 針對于此,一次性給出了應對方法。
由此,想要快速跟進 ChatGPT 這輪技術浪潮,門檻又低了一些。
開源地址:https://github.com/hpcaitech/ColossalAI
包含完整 RLHF 流程
具體來看,ColossalChat 的能力包括知識問答、中英文對話、内容創作、編程等。
和 ChatGPT 一樣,ColossalChat 知道 NBA 和喬丹是誰:
會寫郵件,格式非常規範:
編程能力也不錯,能搞定算法:
據了解,爲了能更逼近 ChatGPT、GPT-4 的驚豔效果,ColossalChat 使用 LLaMA 作爲預訓練模型,并包含完整 RLHF 流程。
之所以這樣做,主要是因爲現有開源方案都可被視爲隻得到了人類反饋強化學習(RLHF)中第一步的監督微調模型,沒有進行後續的對齊和微調工作。
△RLHF 的三個階段
比如 Meta 開源了 LLaMA 模型,其參數量從 70 億到 650 億不等,号稱 130 億參數即可勝過 1750 億的 GPT-3 模型在大多數基準測試的表現。
但是由于沒有被指令微調(instruct tuning),因此實際生成效果不夠理想。
斯坦福的 Alpaca 通過調用 OpenAI API,以 self-instruct 方式生成訓練數據,使得僅有 70 億參數的輕量級模型以極低成本微調後,即可獲得媲美 GPT-3.5 這樣千億參數的超大規模語言模型的對話效果。
而 ChatGPT、GPT-4 效果好的一大關鍵就是将 RLHF 引入訓練流程,才能讓生成内容更符合人類價值觀。
因此,基于 LLaMA 模型,包含完整 RLHF 流程的類 Chat 模型複現方案 ColossalChat,可以稱得上是目前最接近 ChatGPT 原始技術路線的實用開源項目。
總結來看,和 Alpaca 相比較 ColossalChat 具備4 個方面的優勢。
第一、ColossalChat開源了第一個完整的 RLHF pipeline,斯坦福 Alpaca 沒有做 RLHF,也就是沒有做 Stage2 和 3。
第二、ColossalChat 采用了更多的指令數據,質量更好、範圍更大,并使用強化學習做了 alignment 使回答更接近人類。
第三、ColossalChat 訓練流程集成了 Colossal-AI 的諸多系統優化,同等數據集和模型大小的訓練速度可以比 AIpaca快 3 倍左右,能讓科研人員和中小企業獨立訓練部署自己的會話系統。
第四、ColossalChat 采集了更多數據集:訓練的英文一共 24M tokens,中文大約 30M tokens,總共約 54M tokens。其中 ColossalChat 自己收集的數據集英文 6M,中文 18M tokens。
訓練數據集開源
數據集方面,ColossalChat 開源了包含約10 萬條問答的中、英雙語數據集。
該數據集收集并清洗了社交平台上人們的真實提問場景作爲種子數據集,利用 self-instruct 技術擴充數據,花費約 900 美元進行标注。
對比其他 self-instruct 方法生成的數據集,該數據集的種子數據更加真實、豐富,生成的數據集涵蓋的話題更多。
該數據可以同時用于微調和 RLHF 訓練。通過高質量的數據,ColossalChat 能進行更好地對話交互,同時支持中文。
△ColossalChat 數據集收集流程 RLHF 算法複現
RLHF 第一步(Stage1)是 supervised-fintuning,即使用上文提到的數據集進行模型微調。
RLHF 第二步(Stage2)訓練了獎勵模型,它通過對于同一個 prompt 的不同輸出進行人工排序,得到對應分數,監督訓練獎勵模型。
RLHF 第三步(Stage3)使用了強化學習算法,是訓練流程中最複雜的一部分:
△RLHF-Stage3 算法流程圖
在 PPO 部分,ColossalChat 分爲兩個階段進行:
首先是 Make Experience 部分,利用 SFT、Actor、RM、Critic 模型計算生成 Experience 存入 buffer 中;之後是參數更新部分,利用 Experience 計算策略損失和價值損失。
在 PTX 部分,ColossalChat 計算 Actor 輸出 response 和輸入語料的回答部分的交叉熵損失函數,用來在 PPO 梯度中加入預訓練梯度,以保持語言模型原有性能防止遺忘。最後将策略損失、價值損失和 PTX 損失加和進行反向傳播和參數更新。
快速上手
ColossalChat 開源了基于 LLaMA 模型,複現訓練 ChatGPT 三個階段的完整代碼。
第一階段,訓練 SFT 模型:
# Training with a 4-GPU servers
colossalai run --nproc_per_node=4 train_sft.py
--pretrain "/path/to/LLaMa-7B/"
--model 'llama'
--strategy colossalai_zero2
--log_interval 10
--save_path /path/to/Coati-7B
--dataset /path/to/data.json
--batch_size 4
--accimulation_steps 8
--lr 2e-5
第二階段,訓練獎勵模型:
# Training with a 4-GPU servers
colossalai run --nproc_per_node=4 train_reward_model.py
--pretrain "/path/to/LLaMa-7B/"
--model 'llama'
--strategy colossalai_zero2
--dataset /path/to/datasets
第三階段,使用 RL 訓練:
# Training with a 8-GPU servers
colossalai run --nproc_per_node=8 train_prompts.py prompts.csv
--strategy colossalai_zero2
--pretrain "/path/to/Coati-7B"
--model 'llama'
--pretrain_dataset /path/to/dataset
在獲得最終模型權重後,還可通過量化降低推理硬件成本,并啓動在線推理服務,僅需單張約 4GB 顯存的 GPU 即可完成 70 億參數模型推理服務部署。
python server.py /path/to/pretrained --quant 4bit --gptq_checkpoint /path/to/coati-7b-4bit-128g.pt --gptq_group_size 128
系統性能優化與開發加速
ColossalChat 能夠快速跟進 ChatGPT 完整 RLHF 流程複現,離不開 AI 大模型基礎設施 Colossal-AI 及相關優化技術的底座支持,相同條件下訓練速度相比 Alpaca 采用的 FSDP ( Fully Sharded Data Parallel ) 可提升 3 倍以上。
系統基礎設施 Colossal-AI
AI 大模型開發系統 Colossal-AI 爲該方案提供了基礎支持,它可基于 PyTorch 高效快速部署 AI 大模型訓練和推理,從而降低 AI 大模型應用的成本。
Colossal-AI 由加州伯克利大學傑出教授 James Demmel 和新加坡國立大學校長青年教授尤洋領導開發。
自從它開源以來,Colossal-AI 已經多次在 GitHub 熱榜位列世界第一,獲得 GitHub Star 約兩萬顆,并成功入選 SC、AAAI、PPoPP、CVPR、ISC 等國際 AI 與 HPC 頂級會議的官方教程。
減少内存冗餘的 ZeRO+Gemini
Colossal-AI 支持使用無冗餘優化器 ( ZeRO ) 提高内存使用效率,低成本容納更大模型,同時不影響計算粒度和通信效率。
自動 Chunk 機制可以進一步提升 ZeRO 的性能,提高内存使用效率,減少通信次數并避免内存碎片。
異構内存空間管理器 Gemini 支持将優化器狀态從 GPU 顯存卸載到 CPU 内存或硬盤空間,以突破 GPU 顯存容量限制,擴展可訓練模型的規模,降低 AI 大模型應用成本。
使用 LoRA 低成本微調
Colossal-AI 支持使用低秩矩陣微調(LoRA)方法,對 AI 大模型進行低成本微調。
LoRA 方法認爲大語言模型是過參數化的,而在微調時,參數改變量是一個低秩矩陣。
因此,可以将這個矩陣分解爲兩個更小的矩陣的乘積。
在微調過程中,大模型的參數被固定,隻有低秩矩陣參數被調整,從而顯著減小了訓練所需的參數量,并降低成本。
低成本量化推理
△GPTQ 量化
爲降低推理部署成本,Colossal-AI 使用 GPTQ 4bit 量化推理。
在 GPT/OPT/BLOOM 類模型上,它比傳統的 RTN ( rount-to-nearest ) 量化技術能夠獲得更好的 Perplexity 效果。相比常見的 FP16 推理,它可将顯存消耗降低 75%,隻損失極少量的吞吐速度與 Perplexity 性能。
以 ColossalChat-7B 爲例,在使用 4bit 量化推理時,70 億參數模型僅需大約 4GB 顯存即可完成短序列(生成長度爲 128)推理,在普通消費級顯卡上即可完成(例如 RTX 3060 Laptop),僅需一行代碼即可使用。
if args.quant == '4bit':
model = load_quant ( args.pretrained, args.gptq_checkpoint, 4, args.gptq_group_size )
如果采用高效的異步卸載技術 ( offload ) ,還可以進一步降低顯存要求,使用更低成本的硬件推理更大的模型。
開放協作
不過目前由于算力和數據集有限,在部分場景下的實際性能還有提升空間。
比如還是會被弱智吧問題難住:
而在這輪技術浪潮中,除了科技巨頭們,PyTorch、Hugging Face 和 OpenAI 等開源社區與初創企業也起到了關鍵作用。
借鑒這些成功經驗,Colossal-AI 也歡迎各方參與共建,并給出了多種參與方式:
在 GitHub 發布 issue 或提交 pull request ( PR )
加入 Colossal-AI 用戶微信或 Slack 群交流
發送正式合作提案到郵箱 [email protected]
如果你對這項工作感興趣,可以趕快和他們取得聯系 ~
開源地址:
https://github.com/hpcaitech/ColossalAI
參考鏈接:
https://medium.com/@yangyou_berkeley/colossalchat-an-open-source-solution-for-cloning-chatgpt-with-a-complete-rlhf-pipeline-5edf08fb538b
— 完 —
點這裏關注我,記得标星哦~
一鍵三連「分享」、「點贊」和「在看」
科技前沿進展日日相見 ~