阿里 Qwen2 模型开源,教你如何将 Qwen2 扩展到百万级上下文

2024-06-08 01:36

本文主要是介绍阿里 Qwen2 模型开源,教你如何将 Qwen2 扩展到百万级上下文,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本次开源的 Qwen2 模型包括 5 个尺寸,分别是 0.5B、1.5B、7B、72B、57B,其中 57B 的属于 MoE 模型(激活参数 14B),其余为 Dense 模型,本篇文章会快速介绍下各个尺寸模型的情况,然后重点介绍下如何利用 Qwen-Agent 将 Qwen2 模型的 8k 上下文扩展到 1M。

本文首发自博客 阿里 Qwen2 模型开源,教你如何将 Qwen2 扩展到百万级上下文

我的新书《LangChain编程从入门到实践》 已经开售!推荐正在学习AI应用开发的朋友购买阅读,此书围绕LangChain梳理了AI应用开发的范式转变,除了LangChain,还涉及其他诸如 LIamaIndex、AutoGen、AutoGPT、Semantic Kernel等热门开发框架。
LangChain编程从入门到实践

Qwen2 和 Qwen1.5 的模型结构基本一致,主要是模型预训练数据有所增加(大约在 7T 以上),Qwen2-0.5B、Qwen2-1.5B 模型支持最大上下文长度为 32K;Qwen2-57B-A14B MoE 模型支持最大上下文为 64K;Qwen2-7B、Qwen2-72B 模型支持最大上下文为 128K,代码和数学能力显著提升。

模型Qwen2-0.5BQwen2-1.5BQwen2-7BQwen2-57B-A14BQwen2-72B
参数量0.49B1.54B7.07B57.41B72.71B
非 Embedding 参数量0.35B1.31B5.98B56.32B70.21B
GQATrueTrueTrueTrueTrue
Tie EmbeddingTrueTrueFalseFalseFalse
上下文长度32K32K128K64K128K

在 Qwen1.5 系列中,只有 32B 和 110B 的模型使用了 GQA,Qwen2 所有尺寸的模型都使用了 GQA,GQA 显著加速推理,降低显存占用。

模型效果

Qwen2 系列模型效果不光整体超过 Qwen1.5 系列,相对于其他同级别参数开源模型也很亮眼,下面是指令微调模型 Qwen2-72B-Instruct 和 Qwen2-7B-Instruct 和常见开源 SOTA 模型比较。

Qwen2-72B-Instruct 在多项指标超过 Llama-3-70B-Instruct,特别是中文领域,大幅领先。

Qwen2-72B-Instruct 在多项指标超过 Llama-3-70B-Instruct

代码和数学方面都超过了 Llama-3-70B-Instruct

代码和数学方面都超过了 Llama-3-70B-Instruct

Qwen2-7B-Instruct 和 智谱最近开源的 GLM-4-9B-Chat水平相当。

Qwen2-7B-Instruct

最后说下开源 License,除了 Qwen2-72B 使用 Qianwen License(有使用范围限制)其余模型 4 个尺寸模型均采用 Apache 2.0 的许可。

更多详细内容,请前往官网博客查看 https://qwenlm.github.io/zh/blog/qwen2/

借助 Qwen-Agent 实现长文本理解

这个也是阿里开源的,特别是在本地使用 Qwen2-0.5B、Qwen2-1.5B 这类上下文长度有限的模型时,通过 Qwen-Agent 框架,能够把处理的上下文扩展到 1M,整体采用的是代理式 RAG(Agentic RAG)思路,具体的做法分为三步。

第一步查询转换

查询重写

将文本分成每块不超过 512 字短块,保留最相关在 8k 上下文,采用查询转换的方法:

  • 步骤 1:引导模型分离用户查询中的指令信息与非指令信息。例如,将用户查询转为{“信息”: [“自行车是什么时候发明的”], “指令”: [“回答时用 2000 字”, “尽量详尽”, “用英文回复”]}。
  • 步骤 2:从信息部分提取多语言关键词。例如,"自行车是什么时候发明的"转为{“关键词英文": [“bicycles”, “invented”, “when”], "关键词中文”: [“自行车”, “发明”, “时间”]}。
  • 步骤 3:利用 BM25 基于关键词的检索,找出最相关的块。

这也是比较成熟的方案,详细可以看我半年前介绍的完整工程化实现使用这个工具后,我将 RAG 的准确性和召回率都提高了两倍!

第二步 查询重写

在相关块与用户查询关键词重叠程度不足时,可能导致遗漏相关内容未被检索到,采用二次查询的方式:

步骤 1:对于每个 512 字块,让模型先评估其与用户查询的相关性。若认为不相关,则输出"无";若相关,则输出相关句子。
步骤 2:筛选出相关句子,将其用作搜索查询词,通过 BM25 检索出最相关的块(检索结果长度控制在 8k 上下文限制内)。
步骤 3:基于检索到的上下文生成最终答案。

查询重写

第三步 自问提示(Self*-*Ask)

当遇到问题:“与第五交响曲创作于同一世纪的交通工具是什么?”模型需先回答子问题:“第五交响曲创作于哪个世纪?”即 19 世纪,接着,才能识别到包含信息“自行车于 19 世纪发明”与原问题相关。

通过让 LLM 自问自答生成多跳问题与答案,然后再生成最终的答案。

向 LLM1 提出一个问题?

while (LLM1 无法根据其记忆回答问题) {

​ LLM1 提出一个新的子问题待解答。

​ LLM1 向 LLM2 提问这个子问题。

​ 将 LLM2 的回答添加到 LLM1 的记忆中。

}

LLM1 提供原始问题的最终答案。

通过这种方式就可以让较弱上下文长度的开源模型具备长上下文能力,对于构建完全本地化的 RAG 应用十分有益,下节我将结合 Ollama 在本地部署好 Qwen2-7B,构建高效的笔记搜索软件。

这篇关于阿里 Qwen2 模型开源,教你如何将 Qwen2 扩展到百万级上下文的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1040884

相关文章

无需邀请码!Manus复刻开源版OpenManus下载安装与体验

《无需邀请码!Manus复刻开源版OpenManus下载安装与体验》Manus的完美复刻开源版OpenManus安装与体验,无需邀请码,手把手教你如何在本地安装与配置Manus的开源版OpenManu... Manus是什么?Manus 是 Monica 团队推出的全球首款通用型 AI Agent。Man

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

本地私有化部署DeepSeek模型的详细教程

《本地私有化部署DeepSeek模型的详细教程》DeepSeek模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自... 目录一、引言二、环境准备(一)硬件要求(二)软件要求(三)创建虚拟环境三、安装依赖库四、获取 Dee

DeepSeek模型本地部署的详细教程

《DeepSeek模型本地部署的详细教程》DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私,在本地成功部署DeepSe... 目录一、环境准备(一)硬件需求(二)软件依赖二、安装Ollama三、下载并部署DeepSeek模型选