模型简介
模型特点
模型能力
使用案例
🚀 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技术,为内容创作者提供算法分发时代真正有效的竞争优势。



