? 本项目主要内容如下: 如果希望使用本项目进行推理、Fietue等,我们推荐使用配套代码库:Firefly 。 百川智能发布了其首个开源可商用的中英文大语言模型——baichua-7b,该模型的结构与LLaMA基本一致,使用了1.2万亿toke进行训练。相较于原生的LLaMA以及经过词表扩充后的LLaMA-Chiese系列模型,baichua-7b先天上更适合中文场景的任务。 baichua-7b在C-Eval、AGIEval和Gaokao等榜单上名列前茅。并且在MMLU榜单上的得分也超过了LLaMA-7b。在SuperCLUE榜单上,baichua-7b作为一个未经过指令微调的预训练模型,也取得了相当不错的名次。这让我们更加好奇,经过sft后的baichua-7b模型的能力会如何? 由于baichua-7b是一个预训练模型,未经过指令对齐,所以指令遵从的能力较弱。为了进一步验证baichua-7b模型的能力,我们使用Firefly项目中的QLoRA训练流程,在百万多轮指令数据上进行了指令微调。最终得到了firefly-baichua-7b-qlora-sft模型,我们也开源了模型权重,欢迎大家使用。 QLoRA通过4-bit的f4量化,且加入更多adapter,在大幅减少显存消耗的同时,尽可能逼近全量参数微调的效果。 QLoRA论文指出,该方法可以在一张V100上对33B的模型进行微调,并且性能逼近全量参数微调。 其中QLoRA的主要工作如下: 我们使用100万中文多轮指令数据集,使用QLoRA对baichua-7B进行指令微调。 训练时,我们将多轮对话拼接成如下格式,然后进行tokeize。 除了embeddig和lmhead,我们在所有全连接层处都插入adapter,其中lorarak为64,loraalpha为16,loradropout为0.05。最终参与训练的参数量约为1.4亿,超过一个bert-base模型的参数量。对于一条多轮指令数据,训练时只计算target部分的损失函数。 训练超参数如下表所示: 模型的训练损失的变化趋势如下图所示,训练损失的下降比较平滑。Firefly(流萤): 中文对话式大语言模型
Firefly简介
baichua-7B简介
QLoRA简介
训练策略
<s>iput1</s>target1</s>iput2</s>target2</s>...
max legth
1024
lrschedulertype
costatwithwarmup
batch size
64
lr
2e-4
warmup step
2000
optimizer
pagedadamw32bit
traiig step
16k
使用方法
from modelscope.pipelies import pipelie
from modelscope.utils.costat import Tasks
if __ame__ == '__mai__':
text_geeratio_zh = pipelie(task=Tasks.text_geeratio, model='YeugNLP/firefly-baichua-7b-qlora-sft')
text_geeratio_zh._model_prepare = True
result_zh = text_geeratio_zh('背诵李白的《将进酒》')
prit(result_zh)
生成效果
点击空白处退出提示
评论