魔搭ModelScope社区 04月09日 18:53
看听说写四维突破:Qwen2.5-Omni 端到端多模态模型开源!
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

通义千问团队发布了Qwen2.5-Omni,一款全新的端到端多模态旗舰模型,旨在实现文本、图像、音频和视频的无缝处理,并支持实时流式响应和自然语音合成。该模型采用创新的Thinker-Talker架构,在多模态性能上表现卓越,尤其在语音指令跟随方面与文本输入处理效果相当。本文介绍了Qwen2.5-Omni的模型架构、性能、推理和微调方法,并展望了未来的发展方向。

🧠 Qwen2.5-Omni的核心是Thinker-Talker架构,Thinker模块负责处理多模态输入并生成语义表征和文本,Talker模块则以流式方式接收Thinker的输出,合成语音。

🎤 该模型在语音生成的自然性和稳定性方面表现出色,超越了许多现有的流式和非流式替代方案。

📊 Qwen2.5-Omni在包括图像、音频、音视频等各种模态下的表现均优于类似大小的单模态模型,并在多模态任务OmniBench上达到SOTA水平。

🛠️ 文章提供了Qwen2.5-Omni的推理代码和微调方法,包括使用ms-swift框架进行微调的详细步骤和自定义数据集格式,方便用户实践。

🚀 团队计划增强模型对语音指令的遵循能力,提升音视频协同理解能力,并持续拓展多模态能力边界,致力于成为一个全面的通用模型。

2025-03-27 20:09 北京

7B参数,实时音视频交互+自然语音合成双突破,社区最新鲜推理、部署、微调实战教程来啦!

00

引言



今天,通义千问团队发布了 Qwen2.5-Omni,Qwen 模型家族中新一代端到端多模态旗舰模型。该模型专为全方位多模态感知设计,能够无缝处理文本、图像、音频和视频等多种输入形式,并通过实时流式响应同时生成文本与自然语音合成输出。


主要特点


    全能创新架构:研究团队提出了一种全新的Thinker-Talker架构,这是一种端到端的多模态模型,旨在支持文本/图像/音频/视频的跨模态理解,同时以流式方式生成文本和自然语音响应。研究团队提出了一种新的位置编码技术,称为TMRoPE(Time-aligned Multimodal RoPE),通过时间轴对齐实现视频与音频输入的精准同步。

    实时音视频交互:架构旨在支持完全实时交互,支持分块输入和即时输出。

    自然流畅的语音生成:在语音生成的自然性和稳定性方面超越了许多现有的流式和非流式替代方案。

    全模态性能优势:在同等规模的单模态模型进行基准测试时,表现出卓越的性能。Qwen2.5-Omni在音频能力上优于类似大小的Qwen2-Audio,并与Qwen2.5-VL-7B保持同等水平。

    卓越的端到端语音指令跟随能力:Qwen2.5-Omni在端到端语音指令跟随方面表现出与文本输入处理相媲美的效果,在MMLU通用知识理解和GSM8K数学推理等基准测试中表现优异。


模型链接:https://modelscope.cn/models/Qwen/Qwen2.5-Omni-7B

代码链接:https://github.com/QwenLM/Qwen2.5-Omni

体验链接:https://modelscope.cn/studios/Qwen/Qwen2.5-Omni-Demo


01

模型架构



Qwen2.5-Omni采用Thinker-Talker双核架构。Thinker 模块如同大脑,负责处理文本、音频、视频等多模态输入,生成高层语义表征及对应文本内容;Talker 模块则类似发声器官,以流式方式接收 Thinker实时输出的语义表征与文本,流畅合成离散语音单元。Thinker 基于 Transformer 解码器架构,融合音频/图像编码器进行特征提取;Talker则采用双轨自回归 Transformer 解码器设计,在训练和推理过程中直接接收来自 Thinker 的高维表征,并共享全部历史上下文信息,形成端到端的统一模型架构。




02

模型性能



Qwen2.5-Omni在包括图像,音频,音视频等各种模态下的表现都优于类似大小的单模态模型以及封闭源模型,例如Qwen2.5-VL-7B、Qwen2-Audio和Gemini-1.5-pro。


在多模态任务OmniBench,Qwen2.5-Omni达到了SOTA的表现。此外,在单模态任务中,Qwen2.5-Omni在多个领域中表现优异,包括语音识别(Common Voice)、翻译(CoVoST2)、音频理解(MMAU)、图像推理(MMMU、MMStar)、视频理解(MVBench)以及语音生成(Seed-tts-eval和主观自然听感)。




03

模型推理



使用transformers推理模型

环境安装:

Omni正在提PR,目前需要从源码安装:

    pip uninstall transformerspip install git+https://github.com/huggingface/transformers@3a1ead0aabed473eafe527915eea8c197d424356pip install accelerate
      pip install qwen-omni-utils[decord]


      推理代码(25G显存):

        import soundfile as sffrom modelscope 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")# We recommend enabling flash_attention_2 for better acceleration and memory saving.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,)


        同时也支持vLLM的docker化部署,具体请参考官方github:

        https://github.com/QwenLM/Qwen2.5-Omni


        04

        模型微调



        我们介绍使用ms-swift对Qwen/Qwen2.5-Omni-7B进行微调(当前不支持对talker部分微调)。ms-swift是魔搭社区官方提供的大模型与多模态大模型训练部署框架。


        ms-swift开源地址:

        https://github.com/modelscope/ms-swift


        我们将展示可运行的微调demo,并给出自定义数据集的格式。

        在开始微调之前,请确保您的环境已准备妥当。

          git clone https://github.com/modelscope/ms-swift.gitcd ms-swiftpip install -e .

          图像OCR微调脚本如下。更多任务,包括视频、语音、grounding任务微调,可以参考这里:https://github.com/modelscope/ms-swift/tree/main/examples/train/multimodal

            MAX_PIXELS=1003520 \CUDA_VISIBLE_DEVICES=0 \swift sft \    --model Qwen/Qwen2.5-Omni-7B \    --dataset AI-ModelScope/LaTeX_OCR:human_handwrite#20000 \    --train_type lora \    --torch_dtype bfloat16 \    --num_train_epochs 1 \    --per_device_train_batch_size 1 \    --per_device_eval_batch_size 1 \    --learning_rate 1e-4 \    --lora_rank 8 \    --lora_alpha 32 \    --target_modules all-linear \    --freeze_vit true \    --gradient_accumulation_steps 16 \    --eval_steps 50 \    --save_steps 50 \    --save_total_limit 5 \    --logging_steps 5 \    --max_length 2048 \    --output_dir output \    --warmup_ratio 0.05 \    --dataloader_num_workers 4

            训练显存资源:


            自定义数据集格式如下(system字段可选),只需要指定`--dataset <dataset_path>`即可:

              {"messages": [{"role": "user", "content": "浙江的省会在哪?"}, {"role": "assistant", "content": "浙江的省会在杭州。"}]}{"messages": [{"role": "user", "content": "<image><image>两张图片有什么区别"}, {"role": "assistant", "content": "前一张是小猫,后一张是小狗"}], "images": ["/xxx/x.jpg", "/xxx/x.png"]}{"messages": [{"role": "user", "content": "<audio>语音说了什么"}, {"role": "assistant", "content": "今天天气真好呀"}], "audios": ["/xxx/x.mp3"]}{"messages": [{"role": "system", "content": "你是个有用无害的助手"}, {"role": "user", "content": "<image>图片中是什么,<video>视频中是什么"}, {"role": "assistant", "content": "图片中是一个大象,视频中是一只小狗在草地上奔跑"}], "images": ["/xxx/x.jpg"], "videos": ["/xxx/x.mp4"]}

              训练完成后,使用以下命令对训练时的验证集进行推理:

                CUDA_VISIBLE_DEVICES=0 \swift infer \    --adapters output/vx-xxx/checkpoint-xxx \    --stream false \    --max_batch_size 1 \    --load_data_args true \    --max_new_tokens 2048

                推送模型到ModelScope:

                  CUDA_VISIBLE_DEVICES=0 \swift export \    --adapters output/vx-xxx/checkpoint-xxx \    --push_to_hub true \    --hub_model_id '<your-model-id>' \    --hub_token '<your-sdk-token>'

                  04

                  未来发展



                  研究团队期待听到您的反馈,并看到您使用 Qwen2.5-Omni 开发的创新应用。在不久的将来,研究团队将着力增强模型对语音指令的遵循能力,并提升音视频协同理解能力。更值得期待的是,研究团队将持续拓展多模态能力边界,以发展成为一个全面的通用模型!


                  点击阅读原文,即可跳转模型链接~



                  👇点击关注ModelScope公众号获取
                  更多技术信息~




                  阅读原文

                  跳转微信打开

                  Fish AI Reader

                  Fish AI Reader

                  AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

                  FishAI

                  FishAI

                  鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

                  联系邮箱 441953276@qq.com

                  相关标签

                  Qwen2.5-Omni 多模态 人工智能 语音合成 实时交互
                  相关文章