以 ChatGPT、GPT4 為代表的 AI 應用和大模型火爆全球,被視為開啟了新的科技工業革命和 AGI (通用人工智慧)的新起點。不只科技巨頭間你追我趕,爭相推出新品,許多學術界、工業界的 AI 大佬也紛紛投入相關創業浪潮。生成式 AI 正以 「天」 為單位,快速迭代,持續狂飆!
然而,OpenAI 並未將其開源,它們背後的技術細節有哪些?如何快速跟進、追趕並參與此輪科技浪潮?如何降低 AI 大模型建置和應用的高成本?如何保護核心資料與智慧財產權不會因使用第三方大模型 API 外洩?
作為當下最受歡迎的開源AI 大模型解決方案,Colossal-AI 率先建立了包含監督資料集收集-> 監督微調-> 獎勵模型訓練-> 強化學習微調的完整RLHF 流程,以LLaMA 為基礎預訓練模型,推出ColossalChat,是目前最接近ChatGPT 原始技術方案的實用開源專案!
開源位址:https://github.com/hpcaitech/ColossalAI
#包含以下內容:
1. Demo:可直接線上體驗模式效果,無需註冊或waitinglist
#2. 訓練程式碼:開源完整RLHF 訓練程式碼,已開源至含7B 和13B 兩種模型
#3. 資料集:開源104K 中、英雙語資料集
4. #推理部署: 4bit 量化推理70 億參數模型只需4GB 顯存
#5. 模型權重:只需單台伺服器少量算力即可快速復現
6. 更大規模模型、資料集、其他最佳化等將保持高速迭代添加
ColossalChat 僅需不到百億參數,在大語言模型的基礎上進行RLHF 微調,即可掌握中、英雙語能力,達到與ChatGPT 和GPT-3.5 類似的效果。
例如常識問答:
中文回應:
寫一封郵件:
#寫個演算法:
儘管ChatGPT 和GPT-4 等GPT 系列模型非常強大,但是它們不太可能完全開源。幸運的是,開源社群一直在不斷努力。
例如Meta 開源了LLaMA 模型,該模型的參數量從70 億到650 億不等,130 億參數即可勝過1750 億的GPT-3 模型在大多數基準測試的表現。但由於沒有被指令微調(instruct tuning),因此實際生成效果不夠理想。
史丹佛的Alpaca 透過呼叫OpenAI API,以self-instruct 方式產生訓練數據,使得僅有70 億參數的輕量級模型以極低成本微調後,即可獲得媲美GPT-3.5 這樣千億參數的超大規模語言模型的對話效果。
但是現有開源方案都可以被視為只得到了人類反饋強化學習(RLHF)中第一步的監督微調模型 #,沒有進行後續的對齊和微調工作。同時 Alpaca 的訓練資料集太小,語料只有英文,也在一定程度上限制了模型的效能。
而 ChatGPT 和 GPT-4 的驚人效果,還在於將 RLHF 引入訓練過程,使得生成內容更符合人類價值。
#RLHF 的三個階段
##基於LLaMA 模型,Colossal-AI 首個開源包含完整RLHF 流程的類別Chat 模型複現方案ColossalChat,是目前最接近ChatGPT 原始技術路線的實用開源專案!
訓練資料集開源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) 可提升三倍左右。
系统基础设施 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),还可以进一步降低显存要求,使用更低成本的硬件推理更大的模型。
1. ColossalChat 开源了第一个完整的RLHF pipeline,斯坦福Alpaca没有做 RLHF,也就是没有做 Stage 2 和 Stage 3。
2. ColossalChat 采用了更多的指令数据,质量更好,范围更大,并使用强化学习做alignment 使回答更接近人类。
3. ColossalChat訓練流程整合了Colossal-AI的許多系統最佳化,同等資料集和模型大小的訓練速度可以比Alpaca快3約倍率,讓科學研究人員和中小企業也能獨立訓練部署自己的會話系統。
4.ColossalChat 團隊自己收集了更多資料集:訓練的英文總共 24M tokens,中文大約 30M tokens,總共約 54M tokens。其中 ColossalChat 自己收集的資料集英文 6M,中文 18M tokens。
以下是 ColossalChat 和 Alpaca 在語言對話上的一些表現 (上面是ColossalChat,下面是Alpaca)。
用Python 寫Quicksort:
##給教授寫郵件請求推薦信:
開放協作儘管已經進一步引入RLHF,但由於算力和資料集有限,在部分場景下的實際效能仍有提升空間。
幸運的是,不同以往AI 大模型與前沿技術僅由少數科技巨頭壟斷,PyTorch、Hugging Face 和OpenAI 等開源社群與新創企業在這波浪潮中也扮演了關鍵角色。借鏡開源社群的成功經驗,Colossal-AI 歡迎各方參與共建,擁抱大模型時代!
可透過以下方式聯絡或參與:
1. 在GitHub 發布issue 或提交pull request (PR)
2. 加入Colossal-AI 用戶微信或Slack 群交流
3. 發送正式合作提案到郵箱youy@comp.nus.edu.sg
開源位址:
https://github.com/hpcaitech/ColossalAI#
以上是0門檻克隆方案再升級,開源模型完整復現,線上體驗無需註冊的詳細內容。更多資訊請關注PHP中文網其他相關文章!