1 引言
通义千问-7B(Qwen-7B)是阿里云研发的通义千问大模型系列的70亿参数规模的模型。Qwen-7B是基于Transformer的大语言模型, 在超大规模的预训练数据上进行训练得到。预训练数据类型多样,覆盖广泛,包括大量网络文本、专业书籍、代码等。同时,在Qwen-7B的基础上,我们使用对齐机制打造了基于大语言模型的AI助手Qwen-7B-Chat。相较于最初开源的Qwen-7B模型,我们现已将预训练模型和Chat模型更新到效果更优的版本。本仓库为Qwen-7B预训练模型的仓库。
体验地址:https://modelscope.cn/studios/qwen/Qwen-7B-Chat-Demo/summary
代码地址:https://github.com/QwenLM/Qwen
通义千问-7B(Qwen-7B)主要有以下特点:
- 大规模高质量训练语料:使用超过2.4万亿tokens的数据进行预训练,包含高质量中、英、多语言、代码、数学等数据,涵盖通用及专业领域的训练语料。通过大量对比实验对预训练语料分布进行了优化。
- 强大的性能:Qwen-7B在多个中英文下游评测任务上(涵盖常识推理、代码、数学、翻译等),效果显著超越现有的相近规模开源模型,甚至在部分指标上相比更大尺寸模型也有较强竞争力。具体评测结果请详见下文。
- 覆盖更全面的词表:相比目前以中英词表为主的开源模型,Qwen-7B使用了约15万大小的词表。该词表对多语言更加友好,方便用户在不扩展词表的情况下对部分语种进行能力增强和扩展。
2 通义千问介绍
2.1 介绍
我们开源了Qwen(通义千问)系列工作,当前开源模型的参数规模为18亿(1.8B)、70亿(7B)、140亿(14B)和720亿(72B)。本次开源包括基础模型Qwen,即Qwen-1.8B、Qwen-7B、Qwen-14B、Qwen-72B,以及对话模型Qwen-Chat,即Qwen-1.8B-Chat、Qwen-7B-Chat、Qwen-14B-Chat和Qwen-72B-Chat。模型链接在表格中,请点击了解详情。同时,我们公开了我们的技术报告,请点击上方论文链接查看。
当前基础模型已经稳定训练了大规模高质量且多样化的数据,覆盖多语言(当前以中文和英文为主),总量高达3万亿token。在相关基准评测中,Qwen系列模型拿出非常有竞争力的表现,显著超出同规模模型并紧追一系列最强的闭源模型。此外,我们利用SFT和RLHF技术实现对齐,从基座模型训练得到对话模型。Qwen-Chat具备聊天、文字创作、摘要、信息抽取、翻译等能力,同时还具备一定的代码生成和简单数学推理的能力。在此基础上,我们针对LLM对接外部系统等方面针对性地做了优化,当前具备较强的工具调用能力,以及最近备受关注的Code Interpreter的能力和扮演Agent的能力。我们将各个大小模型的特点列到了下表。
在这个项目中,你可以了解到以下内容
- 快速上手Qwen-Chat教程,玩转大模型推理
- 量化模型相关细节,包括GPTQ和KV cache量化
- 推理性能数据,包括推理速度和显存占用
- 微调的教程,帮你实现全参数微调、LoRA以及Q-LoRA
- 部署教程,以vLLM和FastChat为例
- 搭建Demo的方法,包括WebUI和CLI Demo
- 搭建API的方法,我们提供的示例为OpenAI风格的API
- 更多关于Qwen在工具调用、Code Interpreter、Agent方面的内容
- 长序列理解能力及评测
- 使用协议
2.2 新闻
- 2023.11.30 🔥 我们推出 Qwen-72B 和 Qwen-72B-Chat,它们在 3T tokens上进行训练,并支持 32k 上下文。同时也发布了 Qwen-1.8B 和 Qwen-1.8B-Chat。我们还增强了 Qwen-72B-Chat 和 Qwen-1.8B-Chat 的系统指令(System Prompt)功能,请参阅示例文档。此外,我们还对昇腾910以及海光DCU实现了推理的支持,详情请查看
ascend-support
及dcu-support
文件夹。 - 2023年10月17日 我们推出了Int8量化模型Qwen-7B-Chat-Int8和Qwen-14B-Chat-Int8。
- 2023年9月25日 在魔搭社区(ModelScope)和Hugging Face推出Qwen-14B和Qwen-14B-Chat模型,并开源 qwen.cpp 和 Qwen-Agent。Qwen-7B和Qwen-7B-Chat的代码和模型也同步得到更新。请使用最新的代码和模型!
- 相比原版Qwen-7B,新版用了更多训练数据(从2.2T增加到2.4T tokens),序列长度从2048扩展至8192。整体中文能力以及代码能力均有所提升。
- 2023年9月12日 支持Qwen-7B和Qwen-7B-Chat的微调,其中包括全参数微调、LoRA以及Q-LoRA。
- 2023年8月21日 发布Qwen-7B-Chat的Int4量化模型,Qwen-7B-Chat-Int4。该模型显存占用低,推理速度相比半精度模型显著提升,在基准评测上效果损失较小。
- 2023年8月3日 在魔搭社区(ModelScope)和Hugging Face同步推出Qwen-7B和Qwen-7B-Chat模型。同时,我们发布了技术备忘录,介绍了相关的训练细节和模型表现。
2.3 评测表现
Qwen系列模型相比同规模模型均实现了效果的显著提升。我们评测的数据集包括MMLU、C-Eval、 GSM8K、 MATH、HumanEval、MBPP、BBH等数据集,考察的能力包括自然语言理解、知识、数学计算和推理、代码生成、逻辑推理等。Qwen-72B在所有任务上均超越了LLaMA2-70B的性能,同时在10项任务中的7项任务中超越GPT-3.5.
Model | MMLU | C-Eval | GSM8K | MATH | HumanEval | MBPP | BBH | CMMLU |
---|---|---|---|---|---|---|---|---|
5-shot | 5-shot | 8-shot | 4-shot | 0-shot | 3-shot | 3-shot | 5-shot | |
LLaMA2-7B | 46.8 | 32.5 | 16.7 | 3.3 | 12.8 | 20.8 | 38.2 | 31.8 |
LLaMA2-13B | 55.0 | 41.4 | 29.6 | 5.0 | 18.9 | 30.3 | 45.6 | 38.4 |
LLaMA2-34B | 62.6 | - | 42.2 | 6.2 | 22.6 | 33.0 | 44.1 | - |
ChatGLM2-6B | 47.9 | 51.7 | 32.4 | 6.5 | - | - | 33.7 | - |
InternLM-7B | 51.0 | 53.4 | 31.2 | 6.3 | 10.4 | 14.0 | 37.0 | 51.8 |
InternLM-20B | 62.1 | 58.8 | 52.6 | 7.9 | 25.6 | 35.6 | 52.5 | 59.0 |
Baichuan2-7B | 54.7 | 56.3 | 24.6 | 5.6 | 18.3 | 24.2 | 41.6 | 57.1 |
Baichuan2-13B | 59.5 | 59.0 | 52.8 | 10.1 | 17.1 | 30.2 | 49.0 | 62.0 |
Yi-34B | 76.3 | 81.8 | 67.9 | 15.9 | 26.2 | 38.2 | 66.4 | 82.6 |
XVERSE-65B | 70.8 | 68.6 | 60.3 | - | 26.3 | - | - | - |
Qwen-1.8B | 45.3 | 56.1 | 32.3 | 2.3 | 15.2 | 14.2 | 22.3 | 52.1 |
Qwen-7B | 58.2 | 63.5 | 51.7 | 11.6 | 29.9 | 31.6 | 45.0 | 62.2 |
Qwen-14B | 66.3 | 72.1 | 61.3 | 24.8 | 32.3 | 40.8 | 53.4 | 71.0 |
Qwen-72B | 77.4 | 83.3 | 78.9 | 35.2 | 35.4 | 52.2 | 67.7 | 83.6 |
对于以上所有对比模型,我们列出了其官方汇报结果与OpenCompass结果之间的最佳分数。
更多的实验结果和细节请查看我们的技术备忘录。点击这里。
2.4 推理性能
这一部分将介绍模型推理的速度和显存占用的相关数据。下文的性能测算使用 此脚本 完成。
我们测算了BF16、Int8和Int4模型在生成2048个token时的平均推理速度(tokens/s)和显存使用。结果如下所示:
Model Size | Quantization | Speed (Tokens/s) | GPU Memory Usage |
1.8B | BF16 | 54.09 | 4.23GB |
Int8 | 55.56 | 3.48GB | |
Int4 | 71.07 | 2.91GB | |
7B | BF16 | 40.93 | 16.99GB |
Int8 | 37.47 | 11.20GB | |
Int4 | 50.09 | 8.21GB | |
14B | BF16 | 32.22 | 30.15GB |
Int8 | 29.28 | 18.81GB | |
Int4 | 38.72 | 13.01GB | |
72B | BF16 | 8.48 | 144.69GB (2xA100) |
Int8 | 9.05 | 81.27GB (2xA100) | |
Int4 | 11.32 | 48.86GB | |
72B + vLLM | BF16 | 17.60 | 2xA100 |
评测运行于单张A100-SXM4-80G GPU(除非提到使用2xA100),使用PyTorch 2.0.1、CUDA 11.8和Flash-Attention2。(72B + vLLM 使用 PyTorch 2.1.0和Cuda 11.8.)推理速度是生成2048个token的速度均值。
注意:以上Int4/Int8模型生成速度使用autogptq库给出,当前AutoModelForCausalLM.from_pretrained
载入的模型生成速度会慢大约20%。我们已经将该问题汇报给HuggingFace团队,若有解决方案将即时更新。
我们还测量了不同上下文长度、生成长度、Flash-Attention版本的推理速度和 GPU 内存使用情况。可以在 Hugging Face 或 ModelScope 上的相应的模型介绍页面找到结果。
3 大模型部署与实战
3.1 conda环境准备
conda环境准备详见:annoconda
3.2 运行环境构建
git clone https://github.com/fishaudio/Bert-VITS2
cd Bert-VITS2conda create -n vits2 python=3.9
conda activate vits2pip install -r requirements.txt
pip install gradio
pip install mdtex2html
3.3 预训练模型下载
Qwen-7B模型:https://huggingface.co/Qwen/Qwen-7B/tree/main
也可以使用git下载,下载文成后,存储到根目录的Qwen文件夹下,如下所示:
(qwen) [root@localhost Qwen]# ll Qwen/Qwen-7B-Chat/
总用量 15083460
-rw-r--r-- 1 root root 8404 12月 20 10:51 cache_autogptq_cuda_256.cpp
-rw-r--r-- 1 root root 51991 12月 20 10:51 cache_autogptq_cuda_kernel_256.cu
-rw-r--r-- 1 root root 911 12月 20 10:51 config.json
-rw-r--r-- 1 root root 2345 12月 20 10:51 configuration_qwen.py
-rw-r--r-- 1 root root 1924 12月 20 10:51 cpp_kernels.py
-rw-r--r-- 1 root root 273 12月 20 10:51 generation_config.json
-rw-r--r-- 1 root root 1964066488 12月 20 10:52 model-00001-of-00008.safetensors
-rw-r--r-- 1 root root 2023960808 12月 20 10:53 model-00002-of-00008.safetensors
-rw-r--r-- 1 root root 2023960816 12月 20 10:54 model-00003-of-00008.safetensors
-rw-r--r-- 1 root root 2023960848 12月 20 10:55 model-00004-of-00008.safetensors
-rw-r--r-- 1 root root 2023960848 12月 20 10:57 model-00005-of-00008.safetensors
-rw-r--r-- 1 root root 2023960848 12月 20 10:58 model-00006-of-00008.safetensors
-rw-r--r-- 1 root root 2023960848 12月 20 10:59 model-00007-of-00008.safetensors
-rw-r--r-- 1 root root 1334845784 12月 20 10:59 model-00008-of-00008.safetensors
-rw-r--r-- 1 root root 55563 12月 20 10:59 modeling_qwen.py
-rw-r--r-- 1 root root 19547 12月 20 10:59 model.safetensors.index.json
-rw-r--r-- 1 root root 14604 12月 20 10:59 qwen_generation_utils.py
-rw-r--r-- 1 root root 2561218 12月 20 10:59 qwen.tiktoken
-rw-r--r-- 1 root root 9618 12月 20 10:59 tokenization_qwen.py
-rw-r--r-- 1 root root 174 12月 20 10:59 tokenizer_config.json
3.4 运行模型
修改web_demo.py中的代码
parser.add_argument("--server-name", type=str, default="127.0.0.1",help="Demo server name.")修改为:(改为本地局域网地址)parser.add_argument("--server-name", type=str, default="192.168.1.150",help="Demo server name.")
运行web
python web_demo.py
启动界面如下:
4 Qwen能力测试
4.1 知识问答
问题:按照你认为的顺序列出中国古代最著名的都城,不超过10个
Qwen-Chat: 中国古代最著名的都城有:长安(西安)、洛阳、南京、开封、杭州、北京、成都、南京、上海。
问题:冬是24节气中的哪个节气
Qwen-Chat: 立冬是农历二十四节气之一,斗柄指向西北,太阳黄经达225°,于每年公历11月7-8日之间交节。此时,北斗七星已由夏季星空移到冬季星空。由于太阳直射南半球,北半球昼短夜长,天气也逐渐转冷,开始进入冬季。农业生产上,需要做好农作物的越冬防冻工作;同时人们也开始着手准备冬季的取暖设备,并储备足够的过冬食物。
问题:背诵24节气,并支出立夏是哪个节气
24节气是中国古代劳动人民根据太阳在黄道上的位置,把一年划分为24等份,每份为一个节气,始于立春,终于大寒,每个节气分别有3天(干支计法)或4天(太阳记时法)。以下是24节气名称及其对应日期:<br>1. 立春:每年公历2月3-5日<br>2. 雨水:每年公历2月18-20日<br>3. 惊蛰:每年公历3月5-7日<br>4. 春分:每年公历3月20-22日<br>5. 清明:每年公历4月4-6日<br>6. 谷雨:每年公历4月19-21日<br>7. 立夏:每年公历5月5-7日<br>8. 小满:每年公历5月20-22日<br>9. 芒种:每年公历6月5-7日<br>10. 夏至:每年公历6月21-22日<br>11. 小暑:每年公历7月6-8日<br>12. 大暑:每年公历7月22-24日<br>13. 立秋:每年公历8月7-9日<br>14. 处暑:每年公历8月22-24日<br>15. 白露:每年公历9月7-9日<br>16. 秋分:每年公历9月22-24日<br>17. 寒露:每年公历10月8-9日<br>18. 霜降:每年公历10月23-24日<br>19. 立冬:每年公历11月7-8日<br>20. 小雪:每年公历11月22-23日<br>21. 大雪:每年公历12月7-8日<br>22. 冬至:每年公历12月21-23日<br>23. 小寒:每年公历1月5-7日<br>24. 大寒:每年公历1月20-22日
4.2 文本生成
问题:写一遍200字的描述月亮的散文
Qwen-Chat: 月亮,那宁静而神秘的自然现象,它不仅是夜晚最明亮的星体,也是人类内心深处的象征。月亮以其独特的光芒照亮了黑夜,让世界变得温柔而浪漫。它不仅带给我们光明,还给了我们许多故事和传说,让我们对宇宙充满了好奇与敬畏之心。无论是在东方还是西方,月亮都是文化中不可或缺的一部分,它给我们的生活带来了无尽的乐趣和启示。月亮的存在使我们感到温暖和安慰,让我们在黑暗中找到了希望和力量。月亮,你是那么的美丽,那么的神秘,你让人们在你的光辉下感到无比幸福和安宁。
4.3 数理逻辑
问题:一堆土豆,原来每次运9吨,12次才能运完,现在每次运11吨,多少次可以运完
Qwen-Chat: 设原来堆土豆的重量为x吨,则每次运输9吨,需要12次才能运输完毕。可得:x = 9 * 12<br>而现在每次运输11吨,所以需要运输的次数为:x / 11 = 12次<br>因此,现在需要12次就可以将全部土豆运完。
4.4 语言理解
问题:请总结塞万提斯的作品--《唐吉坷德》的主要内容和中心思想
Qwen-Chat: 《唐吉诃德》是西班牙作家塞万提斯的一部经典小说,它的主要情节是关于一个名叫唐吉诃德的乡村骑士,他误以为自己是一名英勇的骑士,开始了一系列荒谬而又滑稽的行为。在这个过程中,他遇到了各种各样的人物,包括他的朋友桑丘、一位富商和他的家臣,以及各种骗子和恶棍。<br>这部小说的核心思想是对现实主义文学的一种挑战,同时也反映了当时社会的一些问题,如愚昧无知、贪欲横行和道德败坏。唐吉诃德的行为虽然荒诞,但却是对社会现状的一种讽刺和批评。此外,小说还探讨了一些深刻的主题,如爱情、友情、家庭、权力和正义等。<br>总的来说,《唐吉诃德》是一部充满幽默和智慧的作品,通过主角唐吉诃德的经历,作者向读者传达了一个重要的信息:人类不应该被虚幻的理想所迷惑,而是应该勇敢面对现实,追求真理和正义。
4.5 常识问题
问题:树上有9只鸟,猎人开一枪打死了一只,树上还剩几只鸟
Qwen-Chat: 如果树上原来有9只鸟,猎人开一枪打死了一只,那么树上剩下的鸟应该是8只。因为当一只鸟被打死后,其他鸟会受到影响,可能会受到惊吓或者逃跑,导致剩下的鸟的数量减少。但是,在这个问题中,由于没有提供更多信息,所以无法确定最后剩下的鸟的数量是否会少于8只。
4.6 代码生成
问题:请用python编写一个冒泡排序算法,带测试例子
Qwen-Chat: <pre><code class="language-python"><br>def bubble_sort(arr):<br> n = len(arr)<br> for i in range(n):<br> # Last i elements are already sorted<br> for j in range(0, n-i-1):<br> # traverse the array from 0 to n-i-1<br> # Swap if the element found is greater than the next element<br> if arr[j] > arr[j+1] :<br> arr[j], arr[j+1] = arr[j+1], arr[j]<br> return arr<br># Test example<br>arr = [64, 34, 25, 12, 22, 11, 90]<br>print("Before sorting")<br>print(arr)<br>bubble_sort(arr)<br>print("\nAfter sorting")<br>print(arr)<br></code></pre><br>输出:<pre><code class="language-"><br>Before sorting<br>[64, 34, 25, 12, 22, 11, 90]<br>After sorting<br>[11, 12, 22, 25, 34, 64, 90]<br></code></pre><br>这只是一个基本的冒泡排序算法实现,实际应用中可能需要考虑一些优化策略,比如记录交换次数、停止条件等。
4.7 医疗问题
问题:乳腺癌发病的原因是什么
Qwen-Chat: 乳腺癌是一种恶性肿瘤,其发病原因可能是多种因素共同作用的结果,包括遗传因素、环境因素和生活方式因素等。<br>1. 遗传因素:家族中有乳腺癌病史的人,患乳腺癌的风险比其他人高。研究发现,大约20%的乳腺癌病例是由遗传因素引起的。<br>2. 环境因素:环境污染、辐射暴露、内分泌失调等因素都可能导致乳腺癌的发生。例如,长期接触有害化学物质,如石棉、苯等,或暴露于放射线中,都可能增加患乳腺癌的风险。<br>3. 生活方式因素:不健康的生活方式也可能增加患乳腺癌的风险。例如,长期吸烟、饮酒、缺乏运动、饮食不均衡等都可能导致乳腺癌的发生。<br>4. 其他因素:包括年龄、性别、初潮年龄、绝经年龄、激素替代疗法等也可能影响乳腺癌的发生率。<br>需要注意的是,这些因素单独或组合起来并不能保证一定会发生乳腺癌,而且这些因素的影响程度也会因个体差异而有所不同。因此,预防乳腺癌的关键在于改变不良生活习惯,定期体检,并积极治疗早期疾病。
4.8 内容总结
问题:对以下内容做个总结:今天一放学,我和同学一起蹦蹦跳跳地回家。因为,今天是美好的圣诞节平安夜。一回家,爸爸就告诉我今天在国际大厦吃饭。我听了,高兴得一蹦三尺高。等妈妈一回家,我和爸爸就拉着妈妈出门去吃饭。一路上,我看到今晚行人的脸上都洋溢着笑脸,给人一种祥和,温馨的感觉。走到国际大厦的门口就感觉到一股暖流,玻璃门外寒风刺骨,推门进入温暖如春。大厦里的圣诞老人不停地向我们招手。圣诞树那翠绿的树枝上面挂满了千盏万盏五彩缤纷的彩灯。一闪一闪地眨着闪亮的眼睛。一进大厦,我就直奔2楼,西餐厅里回旋着一首圣诞歌,歌声悠扬,让心情舒畅。墙上挂着一张和蔼可亲的圣诞老人的照片。我和爸爸,妈妈还有叔叔阿姨坐在一张桌子上,大家好像一个大家庭。没过多长时间,那些美味可口的菜就来了。一见那香喷喷的鸭肉,我再也控制不住自己,狼吞虎咽地吃起来。等我吃完这些可口以后,贪玩的我和许多小朋友在国际大厦跑来跑去,跑上跑下,一会儿去看那和蔼可亲的圣诞老人,一会儿去看那些五彩缤纷光芒的圣诞树。圣诞节是一个收礼物的好节日。小时候的我总是梦想有一天圣诞老人能到我家,送我美好的圣诞礼物。长大了,我知道小时候那些礼物都是爸爸妈妈送的。今天的圣诞节,我缠着爸爸妈妈给我礼物。妈妈笑着告诉我。妈妈笑着告诉我:“明天早上你醒来,圣诞老人的了礼物就回送到。”虽然我知道礼物是爸爸妈妈送的,但是晚上,我仍然拿了一双袜子放在床头上。早上醒来,我发现袜子里塞着一张35元的书卡,我太高兴了,在床上跳着喊到:“圣诞老人万岁!”我拿着书卡去上学,去向同学们炫耀炫耀。
Qwen-Chat: 好的,您的概括是:<br>这篇文章描述了作者在圣诞节那天的经历。那天放学后,作者和同学一起回家,然后在家中得知晚上要去国际大厦吃饭,十分开心。他们在路上看到了人们的笑容,感到祥和温馨。走进国际大厦后,他们去了2楼的西餐厅吃饭,听到了优美的圣诞歌曲,看到了圣诞老人的照片。晚餐结束后,他们和许多人一起玩耍,看圣诞树,度过了一个快乐的圣诞节。