通义千问Qwen-7B效果如何?Firefly微调实践,效果出色

通义千问Qwen-7B效果如何?Firefly微调实践,效果出色

通义千问Qwen-7B效果如何?Firefly微调实践,效果出色

 

01

前言

8月3日,阿里云发布了其首个开源大模型:通义千问Qwen-7B,并且开源可商用。虽然如今大家已经被各种百亿大模型吊高了胃口,但毕竟是阿里出品的大模型,还是引起了小伙伴们的广泛关注和讨论,并且在各个大模型榜单上都有非常优秀的表现。

🎉Firefly项目新增对通义千问Qwen-7B进行训练。我们用三万多条多轮对话数据跑了训练流程,本意是验证流程的有效性,后来发现效果很nice,效果请看第三节。只能感叹2.2万亿预训练token的威力,真是大力出奇迹。

后续我们会使用更多数据对Qwen-7B进行微调,大约一百万条数据,以验证其效果。

本文将主要介绍通义千问Qwen-7B的一些相关信息,以及我们简单微调后的效果。

Firefly项目链接:

https://github.com/yangjianxin1/Firefly

通义千问Qwen-7B项目链接:

https://github.com/QwenLM/Qwen-7B

02

通义千问Qwen-7B

本章节内容主要来自通义千问Qwen-7B的官方介绍,目的是让大家对通义千问Qwen-7B有整体的了解。

通义千问-7B(Qwen-7B)是阿里云研发的70亿参数规模的模型。Qwen-7B是基于Transformer的大语言模型, 在超大规模的预训练数据上进行训练得到。预训练数据类型多样,覆盖广泛,包括大量网络文本、专业书籍、代码等。同时,在Qwen-7B的基础上,使用对齐机制打造了基于大语言模型的AI助手Qwen-7B-Chat。

通义千问-7B(Qwen-7B)主要有以下特点:

  1. 大规模高质量训练语料:使用超过2.2万亿tokens的数据进行预训练,包含高质量中、英、多语言、代码、数学等数据,涵盖通用及专业领域的训练语料。通过大量对比实验对预训练语料分布进行了优化。

  2. 强大的性能:Qwen-7B在多个中英文下游评测任务上(涵盖常识推理、代码、数学、翻译等),效果显著超越现有的相近规模开源模型,甚至在部分指标上相比更大尺寸模型也有较强竞争力。具体评测结果请详见下文。

  3. 覆盖更全面的词表:相比目前以中英词表为主的开源模型,Qwen-7B使用了约15万大小的词表。该词表对多语言更加友好,方便用户在不扩展词表的情况下对部分语种进行能力增强和扩展。

Qwen-7B模型规模基本情况如下所示:

图片

在位置编码、FFN激活函数和normalization的实现方式上,也采用了目前最流行的做法, 即RoPE相对位置编码、SwiGLU激活函数、RMSNorm(可选安装flash-attention加速)。

在分词器方面,相比目前主流开源模型以中英词表为主,Qwen-7B使用了超过15万token大小的词表。该词表在GPT-4使用的BPE词表cl100k_base基础上,对中文、多语言进行了优化,在对中、英、代码数据的高效编解码的基础上,对部分多语言更加友好,方便用户在不扩展词表的情况下对部分语种进行能力增强。词表对数字按单个数字位切分。调用较为高效的tiktoken分词库进行分词。

从部分语种各随机抽取100万个文档语料,以对比不同模型的编码压缩率(以支持100语种的XLM-R为基准值1,越低越好),具体性能见图。

可以看到Qwen-7B在保持中英代码高效解码的前提下,对部分使用人群较多的语种(泰语th、希伯来语he、阿拉伯语ar、韩语ko、越南语vi、日语ja、土耳其语tr、印尼语id、波兰语pl、俄语ru、荷兰语nl、葡萄牙语pt、意大利语it、德语de、西班牙语es、法语fr等)上也实现了较高的压缩率,使得模型在这些语种上也具备较强的可扩展性和较高的训练和推理效率。

在预训练数据方面,Qwen-7B模型一方面利用了部分开源通用语料, 另一方面也积累了海量全网语料以及高质量文本内容,去重及过滤后的语料超过2.2T tokens。囊括全网文本、百科、书籍、代码、数学及各个领域垂类。

Qwen-7B在多个全面评估自然语言理解与生成、数学运算解题、代码生成等能力的评测数据集上,包括MMLU、C-Eval、GSM8K、HumanEval、WMT22等,均超出了同规模大语言模型的表现,甚至超出了如12-13B参数等更大规模的语言模型。

图片

图片

03

微调Qwen-7B

我们使用Firefly项目对Qwen-7B进行微调,注意是微调预训练模型,而不是chat模型。按照惯例,我们使用项目中分享的moss数据,以及采样了2万条school math数据,合并后大约100万数据,目前在单卡上训练了2000个step,大约消耗了3.8万条数据。

按照教程安装好环境,准备好数据:微调百川Baichuan-13B保姆式教程,手把手教你训练百亿大模型。直接执行以下脚本即可。

torchrun --nproc_per_node={num_gpus} train_qlora.py --train_args_file train_args/qlora/qwen-7b-sft-qlora.json

训练loss的变化趋势如下图。

图片

接下来看一些Firefly微调后的模型的生成效果。更好的阅读效果,以及更丰富的生成样例,请查看文末的共享文档链接。

多轮对话

微调后的Qwen-7B有不错的多轮对话能力,上下文理解和指代消歧也很不错。虽然也会出现常识性的错误,但这是大模型的通病,幻觉问题很难根除,在百亿模型上同样会出现。并且模型会根据用户反馈的信息,进行自我纠正,最终也能给出正确的答案。

图片

图片

数学题

虽然模型参数只有7B,但经过微调后,模型的数学推理能力也很不错,对于一些常见的加减乘除应用题,有不错的表现。虽然也会出现下述第一题中,推理过程正确,最终加法错误的问题。

经群友反馈,对于第一题,Baichuan-13B、ChatGLM2、Qwen-7B等官方的chat模型,以及Bard都给出了错误的答案。只有ChatGPT 3.5、Claude2、讯飞星火、文心一言、ChatGLM Pro等给出了正确答案。

图片

其他示例

图片

图片

图片

更多生成示例,请扫描二维码,或者打开文档链接,查看共享文档的内容:

https://docs.qq.com/sheet/DU0V0blJITXp2WEJq?tab=c5vlid

图片

04

结语

本文主要对通义千问Qwen-7B进行了介绍,并且分享了Firefly对Qwen-7B模型进行简单微调的效果。总体而言,通义千问Qwen-7B是一个非常优秀的中文基座模型,2.2万亿预训练token,让它一跃成为当前预训练数据量最多的大模型。

自Llama和Falcon开始,大模型已经不卷参数量了,都开始堆更多预训练数据。Falcon的1万亿token、Baichuan-13B的1.4万亿token、Llama2的2万亿token、Qwen-7B的2.2万亿token,提升大模型的主要壁垒不再是算力,而是数据。

上次的中文基座大模型开源“大事件”,还得追溯到7月初的Baichuan-13B,此次阿里的开源,让中文开源社区又活跃了一番。最后期待Qwen的百亿大模型,毕竟2.2万亿token,已经足够充分训练一个百亿大模型了。Llama2凭借2万亿token刷新了开源模型的天花板,希望Qwen的百亿模型也能刷新中文开源模型的天花板。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI生成曾小健

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值