前言
Qwen3-Omni 是一种原生的端到端多语言全模态基础模型。它能够处理文本、图像、音频和视频,并提供实时的文本和自然语音响应。新架构基于MoE的Thinker–Talker设计,加上AuT预训练以生成强大的通用表示,保证低幻觉和高效的生成能力。
这篇文章主要梳理模型对多模态输入内容的处理,关注多模态内容如何进行融合。虽然只是了解输入内容的处理,但是涉及的模块组件也比较多了,这个模型与单模态文本生成模型有着显著的区别,模型架构更像是一个系统,每个组件负责不同的数据处理,有各自的模组。
先看推理代码示例,为避免干扰与乏味会尽量精简代码。官方video输入推理示例,使用场景是视频描述
import os
import torch
import warnings
import numpy as np
……
from qwen_omni_utils import process_mm_info
from transformers import Qwen3OmniMoeProcessor
MODEL_PATH = "Qwen/Qwen3-Omni-30B-A3B-Instruct"
# 加载模型与输入内容处理器
def _load_model_processor():
if USE_TRANSFORMERS:
from transformers import Qwen3OmniMoeForConditionalGeneration
……
model = LLM(
model=MODEL_PATH, trust_remote_code=True, gpu_memory_utilization=0.95,
tensor_parallel_size=torch.cuda.device_count(),
limit_mm_per_prompt={
'image': 1, 'video': 3, 'audio': 3},
max_num_seqs=1,
max_model_len=32768,
seed=1234,
)
processor = Qwen3OmniMoeProcessor.from_pretrained(MODEL_PATH)
return model, processor
def run_model(model, processor, messages, return_audio, use_audio_in_video):
……
from vllm import SamplingParams
sampling_params = SamplingParams(temperature=1e-2, top_p=0.1, top_k=1, max_tokens=8192)
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
audios, images, videos = process_mm_info(messages, use_audio_in_video=use_audio_in_video)
inputs = {
'prompt': text, 'multi_modal_data': {
}, "mm_processor_kwargs": {
"use_audio_in_video": use_audio_in_video}}
if images is not None: inputs['multi_modal_data']['image'] = images
if videos is not None: inputs['multi_modal_data']['video'] = videos
if audios is not None: inputs

最低0.47元/天 解锁文章
2777

被折叠的 条评论
为什么被折叠?



