【大模型】Qwen2.5-Omni 技术报告解读

报告链接:Qwen2.5-Omni Technical Report

1 概述

下图为Omni的应用场景概述图,主要思想就是让多模态数据(文字、图片、视频、音频)输入模型,然后通过文字大模型(Thinker)进行理解,然后配合语音大模型(Talker)进行语音输出。

它的整体架构如下:

2 技术细节

2.1 输入数据处理

文本数据: 使用Qwen Tokenizer,分词算法为BBPE(byte-level byte-pair encoding),这是一个字节粒度的分词算法,同时词汇表大小为151,643。
视觉编码器: 使用Qwen2.5-VL的编码器,参数规模675M。
音频编码器: 提前将视频中的音频或者原始音频通过16kHz进行重采样,并且转换为窗口大小为25ms、步长为10ms的128通道的梅尔频谱图,使用Qwen2.5-Audio的编码器,每一帧音频对应于原始音频的大约40ms的一个片段。

2.2 TMRoPE(Time-aligned Multimodal RoPE)

TMRoPE(时间对齐的多模态旋转位置嵌入)是一种新颖的位置编码方法,它将原始的旋转位置嵌入分解为时间、高度和宽度三个维度,并为不同模态(如文本、音频和视觉)提供不同的位置编码。在处理视频和音频时,算法会根据实际帧率动态调整时间位置编码,确保每个时间ID精确对应40毫秒。此外,为了同时处理视觉和听觉信息,算法采用了一种时间交错方法,将视频和音频的表示交错排列,使得模型能够同时接收和处理这两种模态的信息。

3D位置编码如下所示:

2.3 生成

从前面的架构图可以看到,Omni是通过Thinker来生成文本token和高维语义token传入到Talker中。所以Thinker实际上就是文本大语言模型,通过自回归采样生成token。

不过要注意,文本大模型生成的结果具备的是语义相似性,而不是语音和音素的相似性,也就是说,同一个词但不同语气在文本大模型输出的高维度token中的表示可能十分接近,不能区分,这也就导致这样的输出不能直接转化为语音输出,仍然需要多一个步骤来继续解析这些输出的token。

Talker是双轨自回归 Transformer 解码器架构,它与Thinker共享上下文,并且接受Thinker的生成内容,它自回归生成文本token和音频token,最后Qwen还设计了一种高效的语音编解码器 qwen-tts-tokenizer。qwen-tts-tokenizer 能够高效地表示语音的关键信息,并且可以通过因果音频解码器实时解码为语音流。

3 优化

3.1 分块预填充(Chunked-Prefills)

音频编码器​:将长音频切分为2秒的块,逐块处理(而非全时长一次性处理),减少内存占用和计算量。
视觉编码器​:使用Flash Attention加速计算,并通过MLP合并相邻的2×2图像块(类似下采样),支持不同分辨率图像的统一处理。

3.2 流式编解码生成(Streaming Codec Generation)

滑动窗口注意力​:限制语音生成的上下文范围,仅关注当前块的相邻块(如“回看2块,前瞻1块”),降低计算复杂度。
Flow-Matching DiT模型​:通过扩散模型(Diffusion Transformer)生成梅尔频谱图(语音的中间表示),再通过改进的​BigVGAN​(高质量声码器)将频谱图转换为波形(音频信号)。
分块生成​:梅尔频谱图和音频波形均以分块方式生成,确保流式输出的同时保留必要上下文信息。

### Qwen2.5-Omni-7B 模型介绍 Qwen2.5-Omni-7B 是通义千问系列中的多模态大模型之一,具有强大的跨领域理解和生成能力。该模型支持多种任务场景,包括但不限于文本生成、图像理解、语音处理以及复杂逻辑推理等[^1]。 #### 主要特性 1. **大规模参数量**:Qwen2.5-Omni-7B 的参数规模达到 70亿级别,能够更好地捕捉复杂的模式并提供高质量的结果。 2. **多模态融合**:除了传统的自然语言处理外,还集成了视觉和音频等多种感知技术,使得它可以应对更加丰富的应用场景。 3. **高效推理性能**:针对实际应用需求优化后的架构设计,在保持高精度的同时降低了计算资源消耗,适合部署于不同硬件环境之中。 4. **广泛的适配性**:无论是云端服务器还是边缘设备上都能实现良好运行效果;同时也提供了灵活易用接口供开发者快速集成到各自项目当中去[^2]。 #### 下载方式 对于希望获取此版本模型文件的用户来说,可以通过以下两种途径完成下载操作: ##### 方法一 使用 ModelScope 平台命令行工具 通过 pip 安装 modelscope 工具包之后执行如下指令即可获得对应权重数据: ```bash pip install modelscope modelscope download --model Qwen/Qwen2.5-Omni-7B ``` ##### 方法二 利用 Ollama 实现本地化加载 如果倾向于采用更轻量化解决方案,则可以考虑借助开源框架 Ollama 来管理整个流程。具体而言只需访问其官网页面找到名为 `qwen2.5-omni` 的选项(注意区分大小写),接着按照提示完成必要的配置步骤便能顺利取得目标资产了。需要注意的是,由于此类大型预训练模型通常占据较多存储空间,因此提前确认剩余容量是否充足显得尤为重要——以当前为例大约需要预留至少 8GB 可用磁盘位置来容纳全部组件[^3]。 ```python import torch from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-Omni-7B") model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-Omni-7B", device_map="auto", torch_dtype=torch.float16) input_text = "请介绍一下量子计算机的工作原理" inputs = tokenizer(input_text, return_tensors="pt").to('cuda') outputs = model.generate(**inputs, max_new_tokens=50) print(tokenizer.decode(outputs[0], skip_special_tokens=True)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值