文章目录
- baichuan-7B介绍
- baichuan-7B 推理
- baichuan-7B 微调
baichuan-7B介绍
2023年6月15日,搜狗创始人王小川创立的百川智能公司,发布了70 亿参数量的中英文预训练大模型——baichuan-7B。
baichuan-7B 基于 Transformer 结构,在大约 1.2 万亿 tokens 上训练的 70 亿参数模型,支持中英双语,上下文窗口长度为 4096。
baichuan-7B 不仅在 C-Eval、AGIEval 和 Gaokao 中文权威评测榜单上,以显著优势全面超过了 ChatGLM-6B 等其他大模型,并且在 MMLU 英文权威评测榜单上,大幅领先 LLaMA-7B。
C-Eval榜单
在中文 C-EVAL 的评测中,baichuan-7B 的综合评分达到了 42.8 分,超过了 ChatGLM-6B 的 38.9 分,甚至比某些参数规模更大的模型还要出色。
开源地址:
Hugging Face:https://huggingface.co/baichuan-inc/baichuan-7B
Github:https://github.com/baichuan-inc/baichuan-7B
Model Scope:https://modelscope.cn/models/baichuan-inc/baichuan-7B/summary
baichuan-7B 推理
编辑predict.py文件如下:
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("/data/sim_chatgpt/baichuan-7B", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("/data/sim_chatgpt/baichuan-7B", device_map="auto", trust_remote_code=True)
inputs = tokenizer('登鹳雀楼->王之涣\n夜雨寄北->', return_tensors='pt')
inputs = inputs.to('cuda:0')
pred = model.generate(**inputs, max_new_tokens=64,repetition_penalty=1.1)
print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))
运行代码
python predict.py
显存报错
显存不够,本GPU显存为16G,但模型加载需要27-28G,故考虑使用其量化版本进行加载。
修改如下:
model = AutoModelForCausalLM.from_pretrained("/data/sim_chatgpt/baichuan-7B", device_map="auto", load_in_4bit = true, trust_remote_code=True)
还需要安装下面两个包
pip install bitsandbytes
pip install scipy
运行后结果如下:
登鹳雀楼->王之涣 夜雨寄北->
2.杜甫
3. 夜雨寄北 还家十余日,家住洛桥边. 白日依山尽,思归多苦颜,(崔颢《黄鹤楼》) 黄河入海口. (崔颢《黄鹤楼》) 王之涣的《登鹳雀楼》诗. 日出江花红胜火: 黄河远上,归期何时道,一别西风又一年.” 4,洛阳亲友如相问? 白日依山尽.
-----杜甫《春日忆李白》 王之涣《凉州词(黄河远上白云间)》 《凉州词(黄河远上白云间)》 (王之涣) 黄河远上
开放协议
baichuan-7B 代码采用 Apache-2.0 协议,模型权重采用了免费商用协议,只需进行简单登记即可免费商用。
尽管baichuan-7B在一些评估数据集上效果很好,但是并不能开箱即用,因为它没有 supervised finetune 这一步,没有和人类意图进行对齐,经常听不懂你下达的指令。
baichuan-7B 微调
本次微调参考项目:https://github.com/wp931120/baichuan_sft_lora
下载项目仓库
git clone https://github.com/wp931120/baichuan_sft_lora.git
cd baichuan_sft_lora
配置环境
conda create -n baichuan-7b python=3.9
conda activate baichuan-7b
pip install -r requirements.txt
数据集下载
下载地址:https://huggingface.co/datasets/BelleGroup/train_0.5M_CN/tree/main
微调过程
- 先将百川LLM 采用qlora的 nf4 和双重量化方式进行量化
- 再采用lora进行指令微调
修改并运行sft_lora.py文件
- 将sft_lora.py中的模型路径设置为自己的模型路径
- 执行python sft_lora.py运行代码
显存占用为7G左右。
参考:
https://zhuanlan.zhihu.com/p/637343740
https://zhuanlan.zhihu.com/p/637785176
https://github.com/wp931120/baichuan_sft_lora
https://huggingface.co/wp931120x/baichuan_4bit_lora