qwen论文阅读笔记

论文
Qwen: https://arxiv.org/abs/2309.16609
相关论文
Qwen-vl: https://arxiv.org/pdf/2308.12966
qwen2-vl: https://arxiv.org/pdf/2409.12191

代码:https://github.com/QwenLM/Qwen2-VL
1、为什么要做这个研究(理论走向和目前缺陷) ?
之前LLaMA开源并且使用的是完全开源的数据,本文基于LLaMA做了后续的一些工作,整体看算法上的创新不大,工程上工作比较多。
2、他们怎么做这个研究 (方法,尤其是与之前不同之处) ?
模型架构和LLaMA基本相同,但是准备了比较充分的数据,也加了一些小trick, 比如参考NTK理论根据上下文长度动态调整RoPE 的底数以支持推理更长上下文输入,qwen重点强调了对齐(SFT和RLHF)的重要性。
3、发现了什么(总结结果,补充和理论的关系)?
开放了一系列不同大小的模型(1.7B~14B),在开源模型领域效果已属于前列,但和闭源模型相比仍有差距。

摘要

发布Qwen系列首款产品,包括基础预训练模型Qwen, 使用人工对齐机器微调出来的聊天模型qwen-chat, 聊天模型在agent应用时的工具使用能力和规划能力也是相当优化。还发布了针对变成的模型code-qwen和code-qwen-chat,以及专注于数学的模型math-qwen-chat。这些模型比现有的开源模型都要强,但是比闭源模型略弱。

[图片]

1 引言

LLM发展迅速,不止可以应用于语言任务,也可以作为通用agent来使用外部的工具、系统或者模型。之前的LLM模型大多有几大问题,不可复现、不可操作、不可访问(如chat-gpt对国内用户就很不友好)。Qwen系列将打破这一局面,主要贡献:

  1. 基础预训练模型qwen,在超过3万亿token的文本、代码数据上训过,覆盖了相当多的领域,在不同下游任务上泛化性很好。
  2. 聊天模型Qwen-chat 在精选的数据上微调过,拥有聊天、工具使用、agent、安全等功能。主要是加了SFT和RLHF,使其具备更好的性能并且能够根据人类喜好回答问题,但比GPT-4要差一些。
  3. 编程模型code-qwen有两个版本QWEN-7B and CODE-QWEN-14B,以及对应的编程聊天模型CODE-QWEN-14B- CHAT and CODE-QWEN-7B-CHAT。code-qwen预训练时就在大量的代码数据的,然后微调时使其获得代码生成、debug以及代码解释的能力。
  4. 数学模型MATH-QWEN-CHAT,能力接近GPT-3.5。
  5. 开源了多模态QWEN-VL和QWEN-VL-CHAT, 支持多图会话和讲故事的能力。
    注:参考toolFormer论文提供的方法微调预训练后的模型,赋予模型自主调用外部工具的能力。

2 预训练

预训练时模型从海量数据中获取对复杂世界的综合理解能力。不仅赋予模型语言能力,也赋予其算术、编程以及逻辑推理能力。

2.1 数据

专门工具提取网页数据,数据语言类型识别,精确去重和模糊去重(MinHash, LSH),去除低质量内容数据(使用语言模型给内容打分、识别攻击性)。除了一般的预训练数据,还把高质量的指令数据(之前一般用于指令微调)加到预训练数据中,以提升零样本或少样本能力。

2.2 分词

分词方法BPE,以cl100k作为基础词汇表,然后用中文数据增强这个词汇表。最终词汇表大约152K。
压缩率对比,这里标识同样的字符信息,不同的词汇表表达时需要使用token的数目,值越低越好,但也意味着词表会很大。

[图片]

2.3 架构

基于LLaMA的模型架构。
改进点:
Embedding和输出映射:采用 untied embedding(输入嵌入与输出投影不共享权重)
位置编码:RoPE,但是逆频矩阵采用FP32精度(不确定LLaMA是不是FP32的精度),提高数值精度和长上下文稳定性。
Pre-Norm&RMSNorm: 跟LLaMA保持一样。
激活函数:跟LLaMA一样,把FFN中的激活函数采用SwiGLU。

2.4 训练

限制模型输入最大长度为2048,采用Flash Attention减少显存占用。BF16回合精度训练。

2.5 上下文长度拓展

上下文长度即计算自注意力时的k的数目,每次输出下一个token时都需要和历史所有n个token的kv cache交互,计算复杂度是O(nd),其中d特征维度,如果没有kv cache的话,就需要重新计算所有历史 token 的 Key 和 Value, 这个计算复杂度就变成了O(nn*d)。所以上下文长度增加时,计算复杂度会二次方增加(不考虑)。本文参考YaRN论文采用NTK-aware缩放RoPE的底数。NTK-aware是一种基于NTK(Neural Tangent Kernel)理论来在推理时根据上下文长度动态调整RoPE 的底数,目标是在遇到长文本时尽量让模型在新区间里看到的频率模式类似于原来训练时在 [0,L]区间学到的模式,从而增大模型上下文外推性,又不损害模型性能。
此外,还会根据推理时上下文长度/训练时的上下文长度缩放query和value的乘积(LogN-Scaling),以及通过window attention限制attention计算在一个有限长度的窗口,避免关注距离太远的token,一般情况下比较浅的层用较小的窗口长度,比较高的层用更大的窗口长度。

2.6 实验结果

和其他模型对比结果:

[图片]

长上下文推理消融实验结果:

[图片]

3 对齐

对齐的目的主要是为了让模型更好的跟人沟通,因为预训练的模型相等于一个只会续写的模型,听不懂人的问题,跟个傻逼一样,对齐之后就可以跟人对话回答问题,更好的为人所用。对齐有两种方式,一个监督微调(SFT),一个就是基于人类反馈的强化学习微调(RLHF)。

3.1 SFT(supervised fineturning)

在对话风格的数据上微调已经预训练好的模型。

3.1.1 数据

自己标了一大批风格多样的对话数据。为了避免损害模型的泛化能力,特别剔除了那些以提示模板形式存在的数据。而且,对于涉及暴力、边间和色情内容的东西也进行了特别标注。
此外,使用open-AI提出的ChatML-style风格的会话进行微调也很重要,让模型知道每段话是谁说的,避免全都糊成一坨纯文本输给模型。虽然存储和标注一般是使用json风格的数据,但是真正喂给模型时,都会转成chatML风格的数据。

[图片]
[图片]

3.1.2 训练

SFT时的策略和预训练的方式一致,但是不会计算system和user信息的损失。

3.2 基于人类反馈的强化学习微调(RLHF)

虽然SFT效果不错,但是可能会限制模型的生成能力或者创造性。故还需要RLHF,首先就是就是要训练一个奖励模型,并基于PPO(Proximal Policy Optimization, 近邻策略优化)优化方法进行微调。

3.2.1 奖励模型

训练一个用于RLHF的奖励模型跟训练一个大语言模型过程差不多,也是先预训练然后微调,只不过训练数据是那种一个问题包含两种不同风格回答的数据。预训练一般被称为PMP(preference model pretraining),微调时也是这种数据,但数据质量更高。
在微调阶段,喂给模型各种各样的prompt, 然后基于人工给模型的回复打分的结果微调模型。为了确保prompt的多样性,还设计了一个包含6600中tag的分类系统,并且基于平衡采样算法筛选prompt, 然后把晒出来的prompt输入给不同大小的qwen模型获取回复,最后人工会给这些回复按照统一的标准打分制作成比较对。
奖励模型最后输出的打分是通过把一个pooling层加到原本的qwen模型的输出结束token时的输出上实现的。
实验结果显示:预训练过的奖励模型泛化性其公开数据上效果好,但是在制作的私有训练奖励模型的数据上效果差一些,不如微调后的数据。

[图片]

3.2.2 强化学习

PPO(近邻策略优化)过程涉及四个模型:

  1. 策略模型:即要微调的qwen模型
  2. 价值模型:基于sft后qwen的模型改造的,输入还是对话内容,加了一个MLP层输出价值评分,PPO迭代过程中也会进行参数更新。
  3. 参考模型:PPO上一轮迭代更新后的qwen模型,用来计算KL约束,避免一步更新的太大。
  4. 奖励模型:前面单独训练简历模型,用来给策略模型的输出打分。
    PPO的作用大概就是,用奖励模型的打分作为人类偏好的近似,在通过裁剪+KL约束的小步更新,实现qwen-chat倾向于回复人类偏好的回答,但又不损失原本在通用任务上的能力。

3.3 自动和人工评估对齐后的模型

Zero-shot和few-shot评估

  • Zero-shot 评估:只给指令,不给例题,看模型“裸奔能力”;

Few-shot 评估:在同一个 prompt 里给几道例题,再出新题,看模型“看几例就会做”的能力。

[图片]

人工评估对比对齐后的qwen的胜率结果,表明RLHF效果显著。

[图片]

3.4 工具使用,代码翻译以及智能体

工具使用:

[图片]

生成的python代码可成功执行的比例:

[图片]
[图片]

作为智能体的表现,用huggingface提供的工具评估:

[图片]

4 CODE-QWEN:专注于编程的模型

在代码数据上继续预训练和微调得到的模型Code-qwen和code-qwen-chat。

4.1 代码预训练

是基于在各类数据上预训练得到的基础qwen继续在代码数据上预训练,而不是直接从头开始在代码数据上预训练。代码数据大概用了900亿tokens。

4.2 代码数据监督微调

多阶段SFT可以达到更好的效果。

4.3 评估

在Humaneval、MBPP和HUMANEVALPACK上对比了多种开源和闭源的算法,已经超越了大部分开源算法,但是和chatgpt4仍有较大差距。

[图片]
[图片]

5 Math-qwen: 专攻数学领域的模型

5.1 训练

用预训练模型在数学测试题上微调

5.2 评估

GSM8K, MATH, Math401, Math23K等benchmark
[图片]

6 相关研究

6.1 大语言模型

基于transformer发展起来了大量开源和闭源的大语言模型。

6.2 对齐

数据、SFT、RLHF等。

6.3 工具使用和Agent

6.4 编程LLM

6.5 数学LLM

需要链式思考范例,提升数学推理能力。

7 结论

研发并开源了一系列qwen模型,设计模型参数18亿、70亿到140亿参数量。

Read more

GitHub Copilot AI 编程超全使用教程,从入门到精通

GitHub Copilot AI 编程超全使用教程,从入门到精通

前言 作为 GitHub 推出的 AI 编程助手,GitHub Copilot 凭借强大的代码补全、自然语言交互、自动化开发等能力,成为了开发者提升编码效率的 “神器”。它能支持主流 IDE(VS Code、IntelliJ IDEA、Eclipse 等)、终端等多环境,还可自定义配置、切换 AI 模型,适配个人和团队的不同开发需求。本文结合 GitHub 官方文档和实际使用经验,用通俗易懂的方式讲解 Copilot 的完整使用方法,从环境搭建到高级技巧,再到故障排除,一站式搞定 Copilot AI 编程! 一、GitHub Copilot 核心能力一览 在开始使用前,先快速了解 Copilot 的核心功能,清楚它能帮我们解决哪些开发问题: 1. 智能代码补全:

【实践】操作系统智能助手OS Copilot新功能测评

【实践】操作系统智能助手OS Copilot新功能测评

一、引言         数字化加速发展,尤其人工智能的发展速度越来越快。操作系统智能助手成为提升用户体验与操作效率的关键因素。OS Copilot借助语言模型,人工智能等,对操作系统的自然语言交互操作 推出很多功能,值得开发,尤其运维,系统操作等比较适用,优化用户与操作系统的交互模式。本次测评,按照测评指南进行相关测评,得出下面的测评报告。 二、OS Copilot简介         OS Copilot 是一款致力于深度融合于操作系统的智能助手,它旨在成为用户与操作系统交互的得力伙伴 。通过先进的自然语言处理技术和机器学习算法,OS Copilot 能够理解用户多样化的指令,将复杂的操作系统操作简单化。         在日常使用场景中,无论是文件管理、应用程序的操作,还是系统设置的调整,OS Copilot 都能提供高效的支持。例如,在文件管理方面,用户无需手动在层层文件夹中查找文件,只需通过描述文件的大致信息,如创建时间、文件内容关键词等,就能快速定位到目标文件。         对于应用程序,它不仅能根据用户的使用习惯智能启动,还能在应用程序运行时进行优化,确保

PyTorch实战——基于文本引导的图像生成技术与Stable Diffusion实践

PyTorch实战——基于文本引导的图像生成技术与Stable Diffusion实践

PyTorch实战——基于文本引导的图像生成技术与Stable Diffusion实践 * 0. 前言 * 1. 基于扩散模型的文本生成图像 * 2. 将文本输入编码为嵌入向量 * 3. 条件 UNet 模型中的文本数据融合机制 * 4. 使用 Stable Diffusion 模型生成图像 * 相关链接 0. 前言 在本节中,我们将为扩散模型添加文本控制能力。学习如何通过文字描述来引导图像生成过程,实现从"纯噪声+文本"生成图像,而不仅是从纯噪声生成。 1. 基于扩散模型的文本生成图像 在扩散模型的 UNet 模型训练流程中,我们仅训练模型从含噪图像中预测噪声。为实现文生图功能,需使用以下架构,将文本作为额外输入注入 UNet 模型: 这样的 UNet 模型称为条件 UNet 模型 ,或者更精确地说,是文本条件 UNet

百考通AIGC检测:精准识别AI生成内容,守护学术与创作诚信

在人工智能技术迅猛发展的今天,AI写作工具已成为学术研究、内容创作的常用辅助手段。然而,当高校明确要求"论文不得使用AI生成内容",当期刊对投稿稿件进行严格的AIGC(AI生成内容)检测,当企业招聘中"原创能力"成为核心评估指标,如何确保内容的原创性,避免因AI痕迹引发的学术不端或职业风险,已成为无数研究者与创作者的共同焦虑。百考通AIGC检测服务,以"精准识别AI生成内容,守护学术与创作诚信"为使命,为用户提供专业、可靠的AI内容识别解决方案,让每一份产出都经得起权威检测的考验。 精准检测:技术赋能学术诚信 百考通AIGC检测系统采用多维度分析模型,能够深度识别文本中的AI生成特征。不同于简单的关键词匹配,系统通过语义结构分析、语言模式识别、逻辑连贯性评估等技术手段,精准区分人类写作与AI生成内容。例如,当系统检测到文本中存在"过度流畅的句式结构"、"缺乏个性化表达"、"逻辑跳跃但表面连贯"等典型AI特征时,