通义千问
简介
阿里大模型内部访谈
初期,通义
前身为通义千问
- “通义”取自《汉书》中的“天地之常经,古今之通义也”,有“普遍适用的道理与法则”之意;
- “千问”寓意千万次的问,千万的学问,能问出千问的一定是真爱,能回答千问的,也一定是真有学问,以及AI和阿里云一样,都有千万次交互的热情。
- 2024年5月,更名为
通义
,意为“通情,达义”,具备全副AI能力,致力于成为人们的工作、学习、生活助手
资讯
发展历程
- 2023年4月7日,通义千问开始邀请测试。
- 2023年4月11日,阿里巴巴所有产品未来将接入
通义千问
大模型,进行全面改造,包括天猫、钉钉、高德地图、淘宝、优酷、盒马等 ; - 2023年4月,钉钉首次发布基于阿里千问大模型的智能化能力,用户输入斜杠“/”即可唤起10余项AI能力。通义千问 AI 大模型接入天猫精灵,开启相关内测招募。阿里云工程师在实验将千问大模型接入工业机器人,在钉钉对话框输入一句汉字,可远程指挥机器人工作。
- 2023年9月,通义千问正式向公众开放;淘宝内测应用淘宝问问接入通义千问,基于通义千问的文本理解与文本生成能力实现全新的交互体验以及推荐;
- 2024年9月25日,阿里云宣布开源通义千问140亿参数模型
Qwen-14B
及其对话模型Qwen-14B-Chat
,免费可商用; - 2024年10月31日,2023云栖大会现场,阿里大模型家族全面升级发布,
通义千问2.0
正式升级发布。通义千问App也随之发布
模型
截至2024年5月,通义千问提供通义灵码
(编码助手)、通义智文
(阅读助手)、通义听悟
(工作学习)、通义星尘
(个性化角色创作平台)、通义点金
(投研助手)、通义晓蜜
(智能客服)、通义仁心
(健康助手)、通义法睿
(法律顾问)8大行业模型
QwQ-32b 登顶开源榜单
Qwen 成为全球开源第一
- 32B 挑落
DeepSeek R1 671B
, 成为全球最佳开源模型
Qwen 推出了 32B 推理模型,击败了除 o1 线推理模型之外的所有模型。
- LiveBench AI 上击败了所有人,包括 DeepSeek、Anthropic、Meta、Google 和 xAI
能分清 3.11 3.9 大小,逻辑清晰。
- Blog: qwq-32b
- HF: QwQ-32B
- ModelScope: modelscope.cn/models/Qwen/Qw…
- Demo: huggingface.co/spaces/Qwen/Qw…
- Qwen Chat
体验
阿里qwq 32b 大失所望
- 语义理解:5分。 远远不如DeepSeekR1,甚至不如之前的72B-VL版本。 大失所望,与RAG和Agent结果效果非常差。
- 代码能力:8分, 一般般正常水平,也比不过DeepSeekR1, 不过胜在回答简洁,直击要害。
主要优点:
- 速度快(32B的优势)
同样的显卡,远不如用清华Ktransformer版本的DeepSeek。
多模态
QWen-VL 系列
QWen-VL
模型结构:
- Vision Encoder:ViT-bigG/14
- VL Adapter:a single-layer cross-attention(Q-former的左侧部分)
- LLM:Qwen-7B
VL Adapter 创建一组可训练 queries向量 和 image features一起做cross-attention,将视觉特征压缩至256的固定长度,同时为了提升细粒度的视觉理解,在cross-attention中也加入图像的2D绝对位置编码。
- Image Input 使用特殊token(
<img>
and</img>
)分隔 - Bounding Box Input 使用特殊token(
<box>
and</box>
)分隔 - bounding box 的 content referred使用特殊token(
<ref>
and</ref>
)分隔。
训练过程:
- Stage 1:预训练,训练Cross-Attention和ViT,冻结QwenLM。
- Stage 2:多任务预训练(7 tasks同时),全参数训练。
- Stage 3:指令微调,训练Cross-Attention和QwenLM,冻结ViT。
训练数据:
- 第一个阶段使用image-text pairs数据,77.3%英文、22.7%中文,一共14亿数据训练,图片size=224*224.
- 第二个阶段使用质量更高的image-text pairs数据,包含7个任务,图像size=448*448. 在同一个任务下构造交错图像文本数据,序列长度为2048. 训练目标与Stage1一致。
- 第三个阶段使用Instruction数据,训练指令遵循和对话能力,通过LLM self-instruction构造,一共350k条。
QWen2-VL
【2024-09-18】QWen-VL 发布
- 论文 Qwen2-VL: Enhancing Vision-Language Model’s Perception of the World at Any Resolution
- github:Qwen2
Qwen2-VL 开源了 2B,7B及其量化版本
参考
- 【2024-10-21】多模态大模型Qwen2的深入了解 – Qwen2-VL 部署方法
进一步增强模型对视频中视觉信息的有效感知和理解能力,引入三个关键升级:
- 原始动态分辨率:该功能允许模型处理任意分辨率的图像,而不需要调整模型结构。
- 实现原理: ViT里, 删除原始绝对位置嵌入, 引入 2D-RoPE 捕获图像二维位置信息;推理阶段, 任意分辨率图像包装成单个序列, 长度依赖于GPU内存; ViT 后通过MLP层将 2*2 token 压缩成1个token, 以减少图像的视觉token数
- 多模态旋转位置嵌入 (M-RoPE):该功能通过时间、高度、宽度三个维度来对进行embedding,从而建模了多模态输入的位置信息。
- 传统 1D-RoPE 仅限于编码一维位置信息,M-RoPE 有效地建模了多模态输入的位置信息。
- 这通过将原始旋转嵌入分解为三个组件:时间、高度 和 宽度 来实现。
- 对于文本输入,这些组件使用相同的位移。多模态旋转位置嵌入ID,使 M-RoPE 功能上等同于1D-RoPE。
- 在处理图像时,每个视觉令牌的时间ID保持不变,而高度和宽度组件根据令牌在图像中的位置分配不同的ID。
- 对于视频,这些被当作帧序列来处理的视频,每帧的时间ID递增,而高度和宽度组件遵循与图像相同的ID分配模式。
- M-RoPE不仅增强了对位置信息的建模能力,而且降低了图像和视频中位置ID的价值,使得模型能够在推理期间扩展到更长的序列。
- 统一图像和视频的理解:通过混合训练方法,结合图像和视频数据,确保在图像理解和视频理解方面具有专业水平
- 每秒对每个视频进行两次采样。
- 集成深度为两层的三维卷积来处理视频输入,允许模型处理三维管状结构而不是二维块,从而使其能够处理更多视频帧而无需增加序列长度
- 为了保持一致,每张图片都被视为两张相同的帧。为了平衡长视频处理所需的计算需求与整体训练效率,我们动态调整每个视频帧的分辨率,限制每个视频中的总令牌数量不超过 16384。
- 这种训练方法在模型理解和训练效率之间取得了平衡。
能力更强
优化亮点:
- 在各种分辨率和比例的图像的理解SoTA:Qwen2-VL 在视觉理解基准上实现了最先进性能,包括 MathVista、DocVQA、RealWorldQA、MTVQA 等。
- 支持理解 20 分钟以上的视频:借助在线流媒体功能,Qwen2-VL 可以通过基于高质量视频的问答、对话、内容创作等方式理解 20 分钟以上的视频。
- 可集成在移动设备上:Qwen2-VL 具有复杂的推理和决策能力,可以与手机、机器人等设备集成,根据视觉环境和文本指令进行自动操作。
- 多语言支持:为了服务全球用户,除了英语和中文,Qwen2-VL 现在还支持理解图像中不同语言的文本,包括大多数欧洲语言、日语、韩语、阿拉伯语、越南语等。
模型结构:
- Vision Encoder:ViT/14
- VL Adapter:Cross-Modal Connector
- LLM:Qwen2-1.5B, Qwen2-7B, Qwen2-72B
Qwen2-VL 相较于 Qwen-VL 主要改进点(除了VQA等基础能力的提升):
- 1)支持视频理解,支持context上下文长度到128k token(20分钟左右视频)。
- 2)Visual Agent 能力,支持实时视频对话。
- 3)图像位置编码采用 2D-RoPE,一张 224*224 分辨率的图像经过ViT/patch_size=14等一系列转换之后会被压缩至66个token输入到LLM。
Qwen2-VL 模型主要由两个部分组成:视觉编码器
和 语言模型
。
- •
视觉编码器
(Qwen2VisionTransformerPretrainedModel):- • Patch Embedding:使用 Conv3d 进行图像embedding,切分为多个小块并提取特征。其中卷积核大小为 (2, 14, 14),步幅也为 (2, 14, 14)。
- • Rotary Positional Embedding:如论文所述,进行旋转位置嵌入以增强视觉模型的感知能力。
- • Transformer Blocks:包含 32 个 Qwen2VLVisionBlock,每个块都有两个 Layer Normalization 层和一个 注意力机制,注意力机制采用 Linear 层进行 QKV(查询、键、值)映射。
- • Patch Merger:对提取的特征进行合并,使用 LayerNorm 和 MLP(多层感知机) 处理。
- •
语言模型
(Qwen2VLModel):- • Token Embedding:使用 Embedding 层将输入的文本 token 转换为稠密向量,维度为 1536。
- • Decoder Layers:包含 28 个 Qwen2VLDecoderLayer,每层具有自注意力机制和 MLP;自注意力机制(Qwen2VLFlashAttention2)通过 Q、K、V 的线性映射进行注意力计算,采用旋转嵌入增强序列信息。
- • Norm Layer:使用 Qwen2RMSNorm 进行归一化,帮助模型在训练过程中保持稳定性。
- •
输出层
(lm_head):- • 最后通过一个线性层将模型的输出映射回词汇表大小(151936),用于生成文本。
训练过程:
- Stage 1:训练ViT,使用大量image-text对。
- Stage 2:全参数微调,使用更多的数据提升模型全面理解的能力。
- Stage 3:指令微调,训练LLM。
下载通义千问2-VL-2B-Instruct模型
# 确保 git lfs 已安装
git lfs install
# 下载模型
git clone https://www.modelscope.cn/Qwen/Qwen2-VL-2B-Instruct.git
安装flash_attention, 加速推理,以减少显存占用
pip install flash-attn
代码
from transformers import Qwen2VLForConditionalGeneration
from transformers import AutoTokenizer
from transformers import AutoProcessor
import torch
from qwen_vl_utils import process_vision_info
# 设置模型路径
model_dir = "Qwen2-VL-2B-Instruct"
# 使用flash-attension加载模型
model = Qwen2VLForConditionalGeneration.from_pretrained(
model_dir,
torch_dtype=torch.bfloat16,
attn_implementation="flash_attention_2",
device_map="auto",
)