阿里开源了端到端全模态大模型Qwen-2.5-Omni-7B之当地部署(windows篇) ...

打印 上一主题 下一主题

主题 1825|帖子 1825|积分 5475

本文已首发于 秋码记录
微信公众号:你我杂志刊

如果你也想搭建一个与秋码记录一样的网站,可以浏览我的这篇 国内 gitee.com Pages 下线了,致使众多站长纷纷改用 github、gitlab Pages 托管平台
秋码记录网站使用的主题是开源的,目前只在github.com开源。
hugo-theme-kiwi开源地点:https://github.com/zhenqicai/hugo-theme-kiwi

阿里千问团队开源了到端全模态大模型Qwen-2.5-Omini-7B,一时之间,炸燃了AI界。
而这次千问团队开源的Qwen-2.5-Omini-7B,可谓是将看、听、读及写集于一身的全能型的大模型。

  • Thinker-Talker双核架构

    • Thinker模块:统一处置惩罚文本、图像、音频、视频输入,通过多模态编码器提取特征并生成语义明确结果。
    • Talker模块:基于双轨Transformer解码器,实时生成文本与天然语音响应,支持4种拟人化音色切换。
    • 创新技能

      • TMRoPE时间对齐算法:实现音视频输入的毫秒级同步对齐,视频推理准确率提升3.1%。
      • FlashAttention-2加速:降低显存占用并提升推理速度,支持8K分辨率图像输入。


  • 全模态统一处置惩罚本领

    • 支持文本、图像、音频、视频的端到端输入与输出,无需分模块处置惩罚。
    • 实测性能

      • OmniBench基准测试:综合得分56.13%,超越Gemini 1.5-Pro(42.91%)。
      • 语音合成天然度:Seed-tts-eval评分0.88,接近人类水平。


当地部署

虽然官方给出了最小GPU内存需求,但如果我们不是去分析(Analysis)视频的话,还是在8G显存下把玩的,当然咯,也是可以使用量化版本。
精度15(s) 音频30(s) 音频60(s) 音频FP3293.56 GB不保举不保举BF1631.11 GB41.85 GB60.19 GB
  1. pip uninstall transformers
  2. pip install git+https://github.com/huggingface/transformers@3a1ead0aabed473eafe527915eea8c197d424356
  3. pip install accelerate
复制代码
你得先创建python虚拟环境,可以使用anaconda或miniconda。而我始终使用的是python3自带的venv模块来构建python虚拟环境。


安装qwen-omni-utils这个工具类库。
  1. pip install qwen-omni-utils
复制代码

由于这个依赖默认安装的是CPU版的torch,所以,我们得先卸载它,而后安装CUDA版本的torch。
  1. pip uninstall torch
  2. pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
复制代码

我们身处国内,使用modelscope来下载模型,故而,需安装它。
  1. pip install modelscope
复制代码

推理模型

我们新建一个python文件,输入以下脚本,以实现语音辨认的功能。
  1. from qwen_omni_utils import process_mm_info
  2. import torch
  3. #from transformers import Qwen2_5OmniModel, Qwen2_5OmniProcessor
  4. from modelscope import Qwen2_5OmniModel, Qwen2_5OmniProcessor
  5. from qwen_omni_utils import process_mm_info
  6. model_path = "Qwen/Qwen2.5-Omni-7B"
  7. model = Qwen2_5OmniModel.from_pretrained("Qwen/Qwen2.5-Omni-7B", torch_dtype="auto", device_map="auto")
  8. # model = Qwen2_5OmniModel.from_pretrained(
  9. #     model_path,
  10. #     torch_dtype=torch.bfloat16,
  11. #     device_map="auto",
  12. #     attn_implementation="flash_attention_2",
  13. # )
  14. processor = Qwen2_5OmniProcessor.from_pretrained(model_path)
  15. # @title inference function
  16. def inference(audio_path, prompt, sys_prompt):
  17.     messages = [
  18.         {"role": "system", "content": sys_prompt},
  19.         {"role": "user", "content": [
  20.                 {"type": "text", "text": prompt},
  21.                 {"type": "audio", "audio": audio_path},
  22.             ]
  23.         },
  24.     ]
  25.     text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
  26.     print("text:", text)
  27.     # image_inputs, video_inputs = process_vision_info([messages])
  28.     audios, images, videos = process_mm_info(messages, use_audio_in_video=True)
  29.     inputs = processor(text=text, audios=audios, images=images, videos=videos, return_tensors="pt", padding=True)
  30.     inputs = inputs.to(model.device).to(model.dtype)
  31.     output = model.generate(**inputs, use_audio_in_video=True, return_audio=False)
  32.     text = processor.batch_decode(output, skip_special_tokens=True, clean_up_tokenization_spaces=False)
  33.     return text
  34. audio_path = "D:\\AI-project\\whisper\\audio.wav"
  35. prompt = "Transcribe the Chinese audio into text without any punctuation marks."
  36. ## Use a local HuggingFace model to inference.
  37. response = inference(audio_path, prompt=prompt, sys_prompt="You are a speech recognition model.")
  38. print(response[0])
复制代码

初次运行文件,会去modelscope下载模型,下载速度取决于你的宽带,这里你可以起来喝杯茶,顺便去阳台,点上你那想戒掉又戒不掉烟瘾的低价烟。

当你从阳台回来的时间,大概说你的茶喝完了,再看Terminal,它已经把音频给辨认出来了。
原始音频可到微信公众号【你我杂志刊】查察。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

愛在花開的季節

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表