模型概述
模型特點
模型能力
使用案例
🚀 Anima Merged
第一個開源的基於QLoRA的33B中文大語言模型,有效驗證QLoRA訓練方法,增強模型中文能力。
🚀 快速開始
模型推理
首先保證依賴都已經安裝:
pip install -r https://github.com/lyogavin/Anima/blob/main/requirements.txt?raw=true
可以參考:inferrence.ipynb
或者使用如下代碼:
# imports
from transformers import GenerationConfig, LlamaForCausalLM, LlamaTokenizer
import torch
base_model = "lyogavin/Anima33B-merged"
tokenizer = LlamaTokenizer.from_pretrained(base_model)
model = LlamaForCausalLM.from_pretrained(
base_model,
#load_in_8bit=True,
torch_dtype=torch.float16,
device_map="auto",
)
model.eval()
# prompt
prompt = "中國的首都是哪裡?"
inputs = tokenizer(prompt, return_tensors="pt")
# Generate
generate_ids = model.generate(**inputs, max_new_tokens=30)
print(tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0])
# output: '中國的首都是哪裡?\n中國的首都是北京。\n北京位於中國北部,是中國歷史悠'
✨ 主要特性
- 首個基於QLoRA的33B全開源中文大語言模型。
- 通過有限步驟訓練,在中文模型效果上表現出色。
- 天然支持多卡訓練,方便高效。
📦 安裝指南
重現Anima的模型訓練過程
使用以下步驟可以重現Anima 33B模型(單卡80GB H100或雙卡 40GB A100均測試過可運行):
# 1. install dependencies
pip install -r requirements.txt
# 2.
cd training
./run_Amina_training.sh
基於Anima finetune訓練其他model
# 1. install dependencies
pip install -r requirements.txt
# 2.
cd training
./run_finetune_raining_based_on_Anima.sh
注:可以修改run_finetune_raining_based_on_Anima.sh中的--dataset
和--dataset_format
參數使用其他訓練數據dataset。
💻 使用示例
基礎用法
Human | Assitant |
---|---|
扮演一個三元組抽取器,可以抽取句子中的三元組,比如輸入“我愛中國”,輸出“(我,愛,中國)”。當輸入“三隻羊駝喜歡我”時,會輸出什麼 |
(三隻羊駝, 喜歡, 我) |
扮演一個命名實體識別器,可以抽取並識別句子中的實體以及類型,比如輸入“我愛中國”,輸出“我(名稱)愛中國(國家)”。當輸入“小明在北京大學 的燕園看了中國男籃的一場比賽”時,會輸出什麼 |
小明 (人) 在北京大學 (地點) 的燕園 (地點) 看了中國男籃 (領事) 的一場比賽 (活動). |
高級用法
更多複雜的問答和任務處理,如編程任務、寫作任務等:
主題為流浪劍客,當輸入:“你是一名流浪劍客,走到一座橋頭 發現橋對面走來一江湖惡霸 你會?”,輸出:“{ action: "我穩定自己的姿勢,準備迎戰", expression: "凝神以待的表情", speak: "這位朋友,你來這裡有什麼事情嗎?如果只是想闖蕩江湖,何必與我為敵呢?"}”。模仿上面句子,主題為用戶玩模型,輸入:“你拿到語言模型Vicuna時,你會”,輸出為|
{action: "開始使用Vicuna進行交互", expression: "感到驚喜和期待", speak: "Wow, Vicuna! I can't wait to start using you!"}| |
扮演一個專家,回答以下的知識問答問題:我能用lightning數據線給安卓手機充電嗎?|
不可以。Lightning數據線只適合iPhone和iPad使用。Android手機需要USB-C數據線才能夠充電。| |...|...|
📚 詳細文檔
模型訓練
Backbone模型選擇
Anima模型基於QLoRA開源的33B guanaco訓練了10000 steps。訓練使用一個H100 GPU。
- 思考邏輯:本工作主要為了驗證QLoRA訓練方法的有效性,因此選擇了基於QLoRA的Guanaco 33B finetune訓練,這個訓練更多的是增強模型的中文能力。Assume模型的基礎logical reasoning和Knowledge能力已經足夠。
訓練數據選擇
使用Chinese-Vicuna項目開放的訓練數據集guanaco_belle_merge_v1.0進行finetune訓練。
- 思考邏輯:按照QLoRA Appendix B.4和Table 9中的Grid Search的結論:對於QLoRA finetune,training sample量不一定越大越好。10000個steps是一個ROI比較優的size。因此我們希望選擇一個不小於10000個steps的數據集。Belle 10M數據集似乎太大了,不確定數據質量如何。時間有限,先選擇guanaco_belle_merge_v1.0。後邊會進一步更系統性的測試更多的數據集和數據質量篩選的效果。
- 感謝:Chinese-Vicuna項目、Belle項目、GuanacoDataset的貢獻。
超參選擇
基於成本ROI平衡的考慮,沒有做太多的grid search,基本的思路是follow QLoRA paper 的結論,因為QLoRA做了相對比較詳盡的超參Grid Search實驗:
- Batch size: 16 (QLoRA Appendix B.4和Table 9)
- Max steps: 10000 (QLoRA Appendix B.4和Table 9),更多的steps和更大的數據集的訓練在進一步實驗中,後續會持續更新。
- Learning rate: 1e-4 (QLoRA Appendix B.4和Table 9)
- LoRA r=64, alpha=16 (QLoRA Appendix B.2)
- source_max_len=512, target_max_len=512,需要保證大部分的training sample沒有truncate,能完整的把信息訓練到模型中,根據腳本中的估計,512大概可以覆蓋大部分的樣本長度。
多卡訓練
由於使用Hugging Face Accelerate,天然支持多卡訓練。我們測試過雙卡40GB的A100,可以直接運行。
驗證評估
Elo rating tournament結論
Model | Elo | Rank |
---|---|---|
ChatGPT-3.5 turbo | 1341.98 | 1 |
Anima 33B | 1096.69 | 2 |
Belle | 937.71 | 3 |
Chinese Vicuna | 623.62 | 4 |
評估方法論
- 數據集的選擇:如Belle Paper中論述,評估集的不同類型分佈對於評估結論影響巨大。如田忌賽馬,以己之長攻人之短,很容易佔優勢。因此我們選擇了英文chatbot模型研究工作中比較普遍公認的Vicuna benchmark。為了評測中文,我們使用GPT4對於問題做了翻譯。翻譯代碼和數據集。
- 評估方法: 為了平衡成本,我們主要採用GPT4進行評估。如QLoRA 論證,單純GPT4打分進行模型的對比隨機波動性較大。這與我們的觀察一致。因此採用了QLoRA 推薦的,現在比較普遍採用的Elo Rating tournament評測方法。
- 超參選擇:出於成本考慮,我們選擇:300輪隨機評估,隨機選擇模型PK的先後順序以抵消先後順序的影響,隨機種子為:42。Elo rating的實現代碼和其他超參參照Vicuna的Elo代碼: K=32, init rating=1000。
Elo rating tournament過程代碼
elo_tournanment_all_models_on_translated_vicuna.ipynb
結論
LLM模型最重要的還是logical reasoning的能力和encode knowledge的能力。因此模型的規模還是最重要的因素。通過QLoRA的方式可以讓我們以足夠低的成本finetune優化給定硬件條件下最大的模型。從而達到最優的效果。
Anima模型只通過10000 steps的訓練,並沒有深度優化訓練數據的質量,就已經達到了最優的中文模型的效果。
🔧 技術細節
模型信息
屬性 | 詳情 |
---|---|
模型類型 | 基於QLoRA的33B中文大語言模型 |
訓練數據 | Chinese-Vicuna項目開放的guanaco_belle_merge_v1.0數據集 |
訓練技術
使用一個H100 GPU基於QLoRA的33B guanaco訓練了10000 steps。採用Hugging Face Accelerate實現多卡訓練,測試過雙卡40GB的A100可直接運行。
評估技術
採用GPT4進行評估,使用Elo Rating tournament評測方法,300輪隨機評估,隨機種子為42,Elo rating的實現代碼和其他超參參照Vicuna的Elo代碼。
📄 許可證
請注意:本model的LICENSE比較特殊,請確認你的使用場景符合此LICENSE。
Github Repo:
https://github.com/lyogavin/Anima
✍️ 關於我們
此工作來自於艾寫科技。我們團隊來自於硅谷,有多年中、美大廠的一線AI工作經驗。
我們致力於通過最新的AGI,LLM技術為內容創作提供下一代的內容創作工具。
我們相信:生成式AI的年代,“寫”不是變得更容易,而是更難了。因為AI拉平了玩家之間的差距。每個人都可以很容易的讓ChatGPT幫你寫一段文案。
單純的為內容創作提供“寫”文案的工具已經遠遠不夠。內容創作者需要的不是“寫”,而是“寫爆款”,是要結合“爆款”的趨勢,結合對於用戶內容興趣和口味變化的敏銳洞察,為內容創作提供能高效產出爆款的AI。
我們堅持積累大量的中文全網社交媒體數據,積累了大量即時的對於爆款趨勢的變化數據。通過結合爆款數據和最近的LLM AI技術,為內容創作者提供算法分發時代真正有效的競爭優勢。



