AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


Qwen2模型开源,你值得拥有!
发布日期:2024-06-07 05:55:15 浏览次数: 2022 来源:NLP工作站


期待已久的Qwen2,他如约而至,他来了,他带着5个尺寸的大模型迎面走来了。

Blog: https://qwenlm.github.io/blog/qwen2/
HF: https://huggingface.co/collections/Qwen/qwen2-6659360b33528ced941e557f

Qwen2本次开源了4个Dense模型和1个MoE模型,Dense模型包括0.5B、1.5B、7B和72B 4个尺寸,MoE模型总参数为57B,激活参数14B。

Qwen2系列模型为多语言模型,除英文和中文外,还支持其他27种语言;同时具有RAG、工具调用、角色扮演、Agent等多种功能。

模型细节

Qwen2模型跟Qwen1.5模型一致,主要采用更多的数据(据说数据量在7T以上)进行模型训练。

几种模型支持最大上下文不同:

  • 0.5B、1.5B模型支持最大上下文为32K;
  • 57B-A14B MoE模型支持最大上下文为64K;
  • 7B、72B模型支持最大上下文为128K。

除英文和中文外的27种语言如下:

  • 西欧:德语、法语、西班牙语、葡萄牙语、 意大利语、荷兰语
  • 东欧及中欧:俄语、捷克语、波兰语
  • 中东:阿拉伯语、波斯语、希伯来语、土耳其语
  • 东亚:日语、韩语
  • 东南亚:越南语、泰语、印尼语、马来语、老挝语、缅甸语、宿务语、高棉语、菲律宾语
  • 南亚:印地语、孟加拉语、乌尔都语

其中,MoE模型的共有72个专家,其中,8个共享专家和64个路由专家,每次模型推理时,8个共享专家一直被使用,路由专家则从64个中选择8个激活。

效果分析

Qwen2系列模型效果整体超于Qwen1.5等尺寸系列模型,相对于其他开源模型也展现出了优异的效果。

0.5B和1.5B两个小模型,在中文相关榜单上效果较好,但推理相关榜单不如Phi-2模型(但现在网上有一种说法Phi系列模型是overfit,真实使用效果很不理想)。

7B模型相较于同等尺寸模型(Llama-3-8B、Yi-9B、GLM4-9B)在代码、中文上效果更为优异。

Qwen2-72B模型的效果在大多数榜单上优于Qwen1.5-110B,并且在指标是基本上都优于,尤其在代码、数学、中文对应榜单上效果提高的尤为明显

Qwen2-57B-A14B MoE模型相较于32B级别模型,不仅效果更好,推理速度也是更快。

利用Agent解决大模型上下文窗口问题

同时,还发一篇贴,主要介绍如何让8K上下文长度模型更好地理解百万字词的文档。

blog: https://qwenlm.github.io/blog/qwen-agent-2405/

涉及三个级别:

  • Level1:采用正常增强检索生成,将上下文分成小块,最后仅保留最相关的块,长度限制在8k上下文中,利用大模型进行回复。
  • Level2:采用分块阅读,对每个小块均进行大模型并行预测,相关则返回相关句子,不相关则返回无,最后将相关句子融合在限制在8k上下文中,利用大模型进行最终回复。
  • Level3:采用逐步推理,就是如果是复杂问题,则将问题拆解,并将拆解问题采用Level2的分块阅读方法,得到答案;再将答案与第二个问题组成新的问题,再次采用Level2的分块阅读方法,得到最终答案。

可以发现,Agent方法在大海捞针和LV-Eval上都要好于利用模型直接外推或RAG方法。

Agent框架:https://github.com/QwenLM/Qwen-Agent

快速上手

直接transformers走起,以Qwen2-72B-Instruct模型为例。

PS:模型下载有困难的同学,详见我之前写的一篇文章《大模型下载使我痛苦》。

from transformers import AutoModelForCausalLM, AutoTokenizer

device = "cuda"
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2-72B-Instruct"
                                             torch_dtype="auto"
                                             device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2-72B-Instruct")

prompt = "你知道刘聪NLP是谁吗"
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(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


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询