在人工智能领域,单一模态模型已取得显著成果,但人类智能是多模态的。我们通过视觉、听觉等感官感知世界,并通过语言等方式交流。因此,开发能处理多种模态输入并输出的模型,对实现更接近人类智能的系统至关重要。Qwen2.5-Omni 正是在此背景下诞生,旨在打破模态壁垒,实现更自然、高效的人机交互。本文将详细介绍其技术原理、功能特点、应用场景及快速使用方法。
一、项目概述
Qwen2.5-Omni是阿里巴巴于2025年3月27日发布并开源的端到端全模态大模型,能处理文本、图像、音频和视频等多种输入,并生成文本与自然语音输出。Qwen2.5-Omni 的目标是构建一个能够同时处理文本、图像、音频和视频等多种模态输入,并以流式方式生成文本和自然语音响应的端到端多模态大模型。该模型不仅要在多模态任务中表现出色,还要在单模态任务中保持竞争力,同时具备实时交互的能力,为各种应用场景提供强大的技术支持。
二、技术原理
(一)模型架构
Qwen2.5-Omni 采用了创新的 Thinker-Talker 双核架构。Thinker 模块类似于大脑,负责处理文本、音频、视频等多模态输入,生成高层语义表征及对应的文本内容。它基于 Transformer 解码器架构,融合音频和图像编码器进行特征提取。Talker 模块则类似于发声器官,以流式方式接收 Thinker 实时输出的语义表征与文本,流畅合成离散语音单元。Talker 采用双轨自回归 Transformer 解码器设计,在训练和推理过程中直接接收来自 Thinker 的高维表征,并共享全部历史上下文信息,形成端到端的统一模型架构。
(二)技术创新
\1. TMRoPE(Time-aligned Multimodal RoPE):这是一种新的位置编码技术,通过时间轴对齐实现视频与音频输入的精准同步。这对于处理音视频融合任务至关重要,因为它能够确保不同模态的信息在时间上保持一致,从而提高模型的理解和生成能力。
\2. 流式交互设计:Qwen2.5-Omni 支持完全实时交互,能够处理分块输入并即时输出。这种设计使得模型可以像人类一样进行连续的、无延迟的对话和响应,大大提升了用户体验。
三、功能特点
(一)全能创新架构
Qwen2.5-Omni 的 Thinker-Talker 架构使其能够同时处理文本、图像、音频和视频等多种模态输入,并生成相应的文本和语音响应。这种架构不仅支持跨模态理解,还能够以流式方式输出结果,使得模型在处理复杂的多模态任务时更加高效和自然。
(二)实时音视频交互
Qwen2.5-Omni 支持实时音视频交互,能够处理分块输入并即时输出。这意味着模型可以在接收到输入数据的同时,立即生成响应,无需等待所有数据输入完成。这种实时性对于需要快速响应的应用场景(如视频会议、实时翻译等)具有重要意义。
(三)自然流畅的语音生成
Qwen2.5-Omni 在语音生成的自然性和稳定性方面表现出色。它能够生成流畅、自然的语音,超越了许多现有的流式和非流式语音生成模型。这种高质量的语音生成能力使得模型在语音交互应用中更具优势。
(四)全模态性能优势
Qwen2.5-Omni 在多模态任务 OmniBench 中达到了 SOTA(State-of-the-Art)表现。此外,在单模态任务中,如语音识别(Common Voice)、翻译(CoVoST2)、音频理解(MMAU)、图像推理(MMMU、MMStar)、视频理解(MVBench)以及语音生成(Seed-tts-eval 和主观自然听感)等多个领域,Qwen2.5-Omni 也表现出色。这表明该模型不仅在多模态任务中表现出色,还在单模态任务中保持了竞争力。
(五)卓越的端到端语音指令跟随能力
Qwen2.5-Omni 在端到端语音指令跟随方面表现出色。它能够准确理解和执行语音指令,与文本输入处理的效果相当。这种能力在 MMLU 通用知识理解和 GSM8K 数学推理等基准测试中得到了验证。
四、应用场景
(一)智能语音助手
Qwen2.5-Omni 的实时音视频交互能力和自然流畅的语音生成能力使其成为理想的智能语音助手。它可以处理用户的语音指令,实时生成语音回应,为用户提供更加自然和便捷的交互体验。
(二)多模态内容创作
在内容创作领域,Qwen2.5-Omni 可以同时处理文本、图像和视频输入,并生成相应的文本或语音描述。这使得创作者能够更加高效地生成多模态内容,如视频字幕、图像描述等。
(三)教育与培训
Qwen2.5-Omni 可以用于教育和培训领域,通过处理多种模态的输入,为学生提供更加丰富和个性化的学习体验。例如,它可以实时生成语音讲解,帮助学生更好地理解复杂的概念。
(四)智能客服
在智能客服领域,Qwen2.5-Omni 可以实时处理客户的语音或文本问题,并生成准确的回应。这种能力可以提高客服效率,改善客户体验。
五、性能表现
(一)多模态任务
Qwen2.5-Omni 在多模态任务 OmniBench 中达到了 SOTA 表现。这表明该模型在处理多模态输入和输出方面具有显著优势。
(二)单模态任务
在单模态任务中,Qwen2.5-Omni 也表现出色。例如,在语音识别(Common Voice)、翻译(CoVoST2)、音频理解(MMAU)、图像推理(MMMU、MMStar)、视频理解(MVBench)以及语音生成(Seed-tts-eval 和主观自然听感)等多个领域,Qwen2.5-Omni 都取得了优异的成绩。
(三)实时性
Qwen2.5-Omni 支持完全实时交互,能够处理分块输入并即时输出。这种实时性使得模型在需要快速响应的应用场景中具有显著优势。
六、使用指南
(一)在线快速体验
访问下面在线地址,即可在线快速体验Qwen2.5-Omni-7B-Demo模型
**体验地址:**https://huggingface.co/spaces/Qwen/Qwen2.5-Omni-7B-Demo
在线体验了 Qwen2.5-Omni 之后,我必须说,它的表现简直超出了我的预期,整体使用效果令人印象深刻。无论是处理复杂的多模态输入,还是生成流畅自然的语音和文本输出,Qwen2.5-Omni 都展现出了卓越的性能。特别是它的实时交互能力,让我感觉就像在和一个真正的人类进行对话一样,毫无延迟和卡顿,这种流畅的交互体验让人感觉非常棒。
(二)本地部署推理(transformers)
在开始使用 Qwen2.5-Omni 之前,需要确保你的环境满足以下要求:
- Python 版本:推荐使用 Python 3.9 或更高版本。
- PyTorch:安装 PyTorch 2.0 或更高版本,确保支持 CUDA 运算。
- Transformers:安装 Hugging Face 的 Transformers 库,版本建议为 4.36.0 或更高。
- 其他依赖:安装 accelerate 和 qwen-omni-utils 库,用于加速训练和处理多模态数据。
可以通过以下命令安装必要的依赖:
pip install transformers# 由于Qwen2.5-Omni的代码在Hugging Face transformers中目前处于未合并阶段,尚未并入主分支,官方建议从源代码构建:# pip uninstall transformers# pip install git+https://github.com/huggingface/transformers@3a1ead0aabed473eafe527915eea8c197d424356pip install accelerate# 安装qwen-omni相关依赖工具包pip install qwen-omni-utils[decord]
以下是一个使用Qwen2.5-Omni 模型的代码示例:
import soundfile as sf
from transformers import Qwen2_5OmniModel, Qwen2_5OmniProcessorfrom qwen_omni_utils import process_mm_info
# default: Load the model on the available device(s)model = Qwen2_5OmniModel.from_pretrained("Qwen/Qwen2.5-Omni-7B", torch_dtype="auto", device_map="auto")
# 我们建议启用 flash_attention_2 以获取更快的推理速度以及更低的显存占用.# model = Qwen2_5OmniModel.from_pretrained(# "Qwen/Qwen2.5-Omni-7B",# torch_dtype="auto",# device_map="auto",# attn_implementation="flash_attention_2",# )
processor = Qwen2_5OmniProcessor.from_pretrained("Qwen/Qwen2.5-Omni-7B")
conversation = [ { "role": "system", "content": "You are Qwen, a virtual human developed by the Qwen Team, Alibaba Group, capable of perceiving auditory and visual inputs, as well as generating text and speech.", }, { "role": "user", "content": [ {"type": "video", "video": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2.5-Omni/draw.mp4"}, ], },]
# Preparation for inferencetext = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)audios, images, videos = process_mm_info(conversation, use_audio_in_video=True)inputs = processor(text=text, audios=audios, images=images, videos=videos, return_tensors="pt", padding=True)inputs = inputs.to(model.device).to(model.dtype)
# Inference: Generation of the output text and audiotext_ids, audio = model.generate(**inputs, use_audio_in_video=True)
text = processor.batch_decode(text_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)print(text)sf.write( "output.wav", audio.reshape(-1).detach().cpu().numpy(), samplerate=24000,)
官方推荐的最小GPU资源:
(三)本地部署推理(vLLM)
安装qwen-omni-utils和vllm相关依赖
pip install git+https://github.com/huggingface/transformers@1d04f0d44251be5e236484f8c8a00e1c7aa69022pip install acceleratepip install qwen-omni-utilsgit clone -b qwen2_omni_public_v1 https://github.com/fyabc/vllm.gitcd vllmpip install .
以下是一个使用vLLM 的代码示例:
import osimport torch
from transformers import Qwen2_5OmniProcessorfrom vllm import LLM, SamplingParamsfrom qwen_omni_utils import process_mm_info
# vLLM engine v1 not supported yetos.environ['VLLM_USE_V1'] = '0'
MODEL_PATH = "Qwen/Qwen2.5-Omni-7B"
llm = LLM( model=MODEL_PATH, trust_remote_code=True, gpu_memory_utilization=0.9, tensor_parallel_size=torch.cuda.device_count(), limit_mm_per_prompt={'image': 1, 'video': 1, 'audio': 1}, seed=1234,)
sampling_params = SamplingParams( temperature=1e-6, max_tokens=512,)
processor = Qwen2_5OmniProcessor.from_pretrained(MODEL_PATH)
messages = [ { "role": "system", "content": "You are Qwen, a virtual human developed by the Qwen Team, Alibaba Group, capable of perceiving auditory and visual inputs, as well as generating text and speech.", }, { "role": "user", "content": [ {"type": "video", "video": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2.5-Omni/draw.mp4"}, ], },]
text = processor.apply_chat_template( messages, tokenize=False, add_generation_prompt=True,)
audios, images, videos = process_mm_info(messages, use_audio_in_video=True)
inputs = { 'prompt': text[0], 'multi_modal_data': {}, "mm_processor_kwargs": { "use_audio_in_video": True, },}
if images is not None: inputs['multi_modal_data']['image'] = imagesif videos is not None: inputs['multi_modal_data']['video'] = videosif audios is not None: inputs['multi_modal_data']['audio'] = audios
outputs = llm.generate(inputs, sampling_params=sampling_params)print(outputs[0].outputs[0].text)
(四)本地网页对话
1、克隆代码安装依赖
在开始之前,请确保已安装所需的依赖项,可以通过运行以下命令来安装:
git clone https://github.com/QwenLM/Qwen2.5-Omni.gitpip install -r requirements_web_demo.txt
2、启动Web服务
安装所需的依赖项,我们就可以使用以下命令启动网页演示
python web_demo.py
在运行这个命令之后, 您将会在终端中看到类似的输出:
Running on local: http://127.0.0.1:7860/
输入到浏览器中,即可访问网页演示,在网页中您可以输入文本、上传音频、图像和视频,以及切换输出音色类型等功能。
**注意:**基于FlashAttention-2 启动演示为了获得更好的性能和效率,尤其是处理大量图像和视频的场景下,官方建议使用 FlashAttention-2。FlashAttention-2 提供了显存使用和速度的显著改进,因此对于处理大型模型和数据处理的场景,它非常合适;命令启动如下:
python web_demo.py --flash-attn2
七、结语
Qwen2.5-Omni 是阿里巴巴开源的全能多模态大模型,采用创新的 Thinker-Talker 架构,具备强大的多模态处理能力,在多模态和单模态任务中均表现出色。其实时交互和自然语音生成能力使其在智能语音助手、内容创作、教育和智能客服等领域应用前景广阔。随着技术发展和场景拓展,Qwen2.5-Omni 将为人工智能带来更多创新突破。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。