Qwen3-Omni多模态prompt输入解析

前言
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
### 部署 Qwen2.5-Omni 模型至 Ollama 平台 为了成功将 Qwen2.5-Omni 模型部署到 Ollama 平台上,以下是详细的配置说明和技术要点: #### 1. 准备环境并安装必要库 在开始之前,需确保本地环境中已安装所需的 Python 库来支持模型的下载与管理。可以通过以下命令完成依赖项的安装: ```bash pip install transformers # 提供预训练模型架构和工具[^1] pip install accelerate # 加速模型训练和推理 pip install modelscope # 支持模型下载与管理 ``` 这些库能够帮助加载、优化以及加速大型语言模型的操作。 #### 2. 下载 Qwen2.5-Omni 模型文件 通过 ModelScope 或其他官方渠道获取目标模型权重文件。具体操作可以参考魔搭平台上的文档指引[^2]。如果选择手动方式,则需要指定存储路径并将模型保存为 `.bin` 文件或其他兼容格式。 #### 3. 转换模型结构适配 Ollama 由于 Ollama 对特定框架有独特需求(例如 GGML/GGUF),因此可能涉及转换过程。此阶段通常利用开源脚本实现,比如 `transformers` 中提供的导出功能或者社区贡献的相关工具包。执行如下代码片段用于生成适合导入的目标二进制数据集: ```python from transformers import AutoTokenizer, AutoModelForCausalLM import torch model_id = 'qwen/Qwen2.5-Omni' # 替换实际 ID 地址 tokenizer = AutoTokenizer.from_pretrained(model_id) model = AutoModelForCausalLM.from_pretrained( model_id, trust_remote_code=True, low_cpu_mem_usage=True ) # 导出量化后的版本给 Ollama 使用 output_path = './ollama_model' torch.save({ 'state_dict': model.state_dict(), }, f'{output_path}/pytorch_model.bin') print(f'Model saved to {output_path}') ``` 注意上述方法适用于 PyTorch 架构下的实例化对象;对于不同后端引擎,请调整相应参数设置。 #### 4. 启动 Ollama 服务并与新加入模块集成 最后一步是在运行态容器内引入刚创建好的自定义资产,并验证其可用状态。假设已经具备基础镜像构建流程的知识背景,在 Dockerfile 添加类似这样的指令即可完成最终组装环节: ```dockerfile COPY ./ollama_model /app/models/qwen2_5_omni/ RUN ollama build --format ggmlv3 qwen2_5_omni CMD ["ollama", "serve"] ``` 至此整个迁移周期结束,用户可通过 RESTful 接口调用该实例参与对话交互任务。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值