阿里通义千问Qwen1.5开源MoE模型

news/2024/5/14 16:09:56

介绍

2024年3月28日,阿里团队推出了Qwen系列的首个MoE模型,Qwen1.5-MoE-A2.7B。它仅拥有27亿个激活参数,但其性能却能与当前最先进的70亿参数模型,如Mistral 7B和Qwen1.5-7B相媲美。相较于包含65亿个Non-Embedding参数的Qwen1.5-7B,Qwen1.5-MoE-A2.7B只有20亿个Non-Embedding参数,约为原模型大小的三分之一。此外,相比Qwen1.5-7B,Qwen1.5-MoE-A2.7B的训练成本降低了75%,推理速度则提升了1.74倍。

模型结构

Qwen1.5-MoE模型中采用了特别设计的MoE架构。如Mixtral等方法所示,每个transformer block中的MoE层会配备8个expert,并采用top-2门控策略进行routing。这种配置还存在很大的优化空间。阿里团队还这一架构进行了多项改进:

  • Finegrained experts
  • 初始化
  • 新的routing机制
    DeepSeek-MoE和DBRX已经证明了finegrained experts的有效性。从FFN层过渡到MoE层时,般只是简单地复制多次FFN来实现多个expert。而finegrained experts的目标是在不增加参数数量的前提下生成更多expert。为了实现这一点,将单个FFN分割成几个部分,每个部分作为一个独立的expert。阿里团队设计了具有总共64个expert的的MoE,对比其他配置,这个实现能达到效果和效率的最优。

性能

对于base模型,在MMLU、GSM8K和HumanEval评估了其语言理解、数学和代码能力。此外,为了评估其多语言能力,按照Qwen1.5的评测方法在数学、理解、考试和翻译等多个领域的多语言基准测试中进行了测试,并在"Multilingual"列中给出了综合得分。对于chat模型,没有使用传统的基准测试,而是使用MT-Bench进行了测试。
在这个比较分析中,阿里将Qwen1.5-MoE-A2.7B与最好的7B模型,比如Mistral-7B(base模型为v0.1,chat模型为v0.2)、Gemma-7B以及Qwen1.5-7B进行了对比。此外,还将其与具有相似参数数量的MoE模型DeepSeekMoE 16B进行了比较。结果如下表所示:
在这里插入图片描述
Qwen1.5-MoE-A2.7B在与最佳的7B模型相比取得了非常接近的性能。

使用Qwen1.5-MoE

由于Hugging Face最新版本尚未包含qwen2_moe(代码已合并,等待新版本发布),我们需要从源代码安装transformers,而不是通过pip或conda进行安装:

git clone https://github.com/huggingface/transformers
cd transformers
pip install -e .

接下来的步骤就像使用Qwen1.5、Mistral、Llama等一样简单。如果要使用量化模型,只需将模型名称Qwen1.5-MoE-A2.7B-Chat替换为Qwen1.5-MoE-A2.7B-Chat-GPTQ-Int4(暂时不支持AWQ)。

from transformers import AutoModelForCausalLM, AutoTokenizermodel = AutoModelForCausalLM.from_pretrained("Qwen/Qwen1.5-MoE-A2.7B-Chat-GPTQ-Int4",device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen1.5-MoE-A2.7B-Chat")prompt = "Give me a short introduction to large language model."
messages = [{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)generated_ids = model.generate(model_inputs.input_ids,max_new_tokens=512
)
generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]

要使用vLLM模型,需要从源代码安装vLLM:

git clone https://github.com/wenyujin333/vllm.git
cd vllm
git checkout add_qwen_moe
pip install -e .

下面是如何使用vLLM构建一个与模型兼容的OpenAI-API接口:

python -m vllm.entrypoints.openai.api_server --model Qwen/Qwen1.5-MoE-A2.7B-Chat
curl http://localhost:8000/v1/chat/completions \-H "Content-Type: application/json" \-d '{"model": "Qwen/Qwen1.5-MoE-A2.7B-Chat","messages": [{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Tell me something about large language models."}]}'

后续继续更新对第三方框架的支持,将包括llama.cpp、MLX等。


http://www.mrgr.cn/p/21558064

相关文章

“预防儿童烧烫伤”科普安全课堂走进嘉鱼县第一小学

为提高嘉鱼县儿童烧烫伤安全意识、隐患识别能力以及突发应急处置能力,3月26日下午,在中国社会福利基金会烧烫伤关爱公益基金、嘉鱼县妇女联合会、嘉鱼县教育局的支持下,嘉鱼县蒲公英社会工作服务中心走进嘉鱼县第一小学开展预防儿童烧烫伤科普…

ChatGPT与传统搜索引擎的区别:智能对话与关键词匹配的差异

引言 随着互联网的快速发展,信息的获取变得比以往任何时候都更加便捷。在数字化时代,人们对于获取准确、及时信息的需求愈发迫切。传统搜索引擎通过关键词匹配的方式为用户提供了大量的信息,然而,这种机械式的检索方式有时候并不…

Day53:WEB攻防-XSS跨站SVGPDFFlashMXSSUXSS配合上传文件添加脚本

目录 MXSS UXSS:Universal Cross-Site Scripting HTML&SVG&PDF&SWF-XSS&上传&反编译(有几率碰到) SVG-XSS PDF-XSS Python生成XSS Flash-XSS 知识点: 1、XSS跨站-MXSS&UXSS 2、XSS跨站-SVG制作&配合上传 3、XSS跨站-…

新零售SaaS架构:客户管理系统的应用架构设计

客户管理系统的应用架构设计应用层定义了软件系统的应用功能,负责接收用户的请求,协调领域层能力来执行任务,并将结果返回给用户,功能模块包括:客户管理:核心功能模块,负责收集和更新客户信息,包括个人资料、联系方式、消费习惯、会员卡、归属信息(比如销售或顾问)和…

53、快速找出不同【ctrl+\】,失败

在英文状态下,按【ctrl+\】,但是这里查找的不精准,只能查找哪一行有不同,但是不能精准查找不同项是什么

基于SpringBoot和Vue的在线视频教育平台的设计与实现

今天要和大家聊的是一款基于SpringBoot和Vue的在线视频教育平台的设计与实现 !!! 有需要的小伙伴可以通过文章末尾名片咨询我哦!!! 💕💕作者:李同学 💕&…

从头开始,建立Neo4j图数据库,详细版

1、前提支持:Java的JDK,在使用Neo4j图数据库之前,电脑上首先要有JDK环境;如果没有下载过JDK请参考: (1)https://www.onlinedown.net/soft/10053430.htm(2)现在完成的资源如下所示:(3)通过解压-得到如下所示文件夹:这个文件夹名称很关键;(4)打开-系统属性 - 环境…

查看BAM文件头部信息

注意:里面会有包括参考序列的信息、排序顺序等等内容!

C/C++语言学习路线: 嵌入式开发、底层软件、操作系统方向(持续更新)

初级:用好手上的锤子 1 【感性】认识 C 系编程语言开发调试过程 1.1 视频教程点到为止 1.2 炫技视频看看就行 1.3 编程游戏不玩也罢 有些游戏的主题任务就是编程,游戏和实际应用环境有一定差异(工具、操作流程),在…

【重磅干货】大模型时代,开发者云上成长指南

2024年最热的技术关键词,非大模型莫属。本文分享自华为云社区《【重磅干货】大模型时代,开发者云上成长指南》,作者:华为云社区精选。 2024年最热的技术关键词,非大模型莫属。面对这样一个超级“技术网红”,在一切皆可大模型的时代,开发者能否紧跟它的发展步伐,立于技术…

常用植被物候提取方法 (TIMESATE/R语言/Python)-3.0

文章内容仅用于自己知识学习和分享,如有侵权,还请联系并删除 :) 常用植被物候提取方法 (TIMESATE/R语言/Python)-1.0见 link常用植被物候提取方法 (TIMESATE/R语言/Python)-2.0见 link 这里主要介绍一下自己读到的论文&#xff…

【C语言】预处理常见知识详解(宏详解)

文章目录 1、预定义符号2、define2.1 define 定义常量2.2 define 定义宏 3、#和##3.1 **#**3.2 **##** 4、条件编译(开关) 1、预定义符号 在C语言中内置了一些预定义符号,可以直接使用,这些符号实在预处理期间处理的,…

数据库索引及优化

数据库索引及优化 什么是索引? MySQL官方对索引的定义为:索引(INDEX)是帮助MySQL高效获取数据的数据结构。 索引的本质: 数据结构 为什么要引入索引? 引入索引的目的在于提高查询效率,就好像是…

C++学习笔记——007

注意, int* pt; 中pt是int值的地址并不意味着pt本身的类型是int。例如,在有些平台中,int类型是个2字节值,而地址是个4字节值。 对于指针,需要指出的另一点是,new分配的内存块通常与常规变量声明分配的内存块不同。常规变量的值都存储在被称为栈(stack)的内存区域中,而…

ps将一张图片分隔成几张,来完成css的布局。

之前拿到一张图,是整个首页的布局,然后呢,用css处理,总感觉差了一些,而且一张图太大了,处理起来不方便。 那就想到了将一张图分成几张来处理。ps: 如果是手工直接划动分割的话,分出现很多小的图片,这样不利于完整性。 1、选择切片工具 ,右击鼠标,然后出现如下的界面…

Unity照片墙简易圆形交互效果总结

还要很多可以优化的点地方,有兴趣的可以做 比如对象的销毁和生成可以做成对象池,走到最左边后再移动到最右边循环利用 分析过程文件,采用Blender,资源已上传,可以播放动画看效果,下面截个图: …

VMware vSAN OSA存储策略 - 基于虚拟机的分布式对象存储

简介 博客:https://songxwn.com/ 存储策略 (Storage Policy) 是管理员定义的一组规则,这组规则定义了数据对象在 vSAN 存储上是如何保存的,存储策略定义了数据存储的可靠性、访问性能等特性。vSAN 提供了基于存储策略的存储管理 SPBM (Stor…

52、快速拆分数据【ctrl+e】

首先列出一个表,然后写上第一行的【姓名】和【员工工号】 鼠标点击【姓名】,然后按【ctrl+e】, 鼠标点击【员工工号】,然后按【ctrl+e】, 表格就能自动罗列出分离的数据