❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
🚀 快速阅读
- 性能表现:MiniCPM-o 2.6 在视觉、语音和多模态直播领域表现出色,性能媲美GPT-4o。
- 功能特点:支持实时双语语音识别、情感/语速/风格控制、端到端声音克隆等功能。
- 高效推理:仅需640个token即可处理180万像素图像,推理速度显著提升。
正文(附运行示例)
MiniCPM-o 2.6 是什么
MiniCPM-o 2.6 是 MiniCPM-o 系列的最新版本,具有 8B 参数量。该模型在视觉、语音和多模态直播等多个领域表现出色,性能与 GPT-4o 相当。MiniCPM-o 2.6 支持实时双语语音识别,超越了 GPT-4o 的实时识别表现,并支持 30 多种语言。
MiniCPM-o 2.6 基于先进的 token 密度技术,处理 180 万像素图像仅产生 640 个 tokens,显著提高了推理速度和效率。该模型还支持在 iPad 等端侧设备上高效运行多模态直播。
MiniCPM-o 2.6 的主要功能
- 领先的视觉能力:支持处理任意长宽比的图像,像素数可达 180 万(如 1344×1344)。
- 出色的语音能力:支持可配置声音的中英双语实时对话,支持情感/语速/风格控制、端到端声音克隆、角色扮演等进阶能力。
- 强大的多模态流式交互能力:接受连续的视频和音频流,并与用户进行实时语音交互。
- 高效的推理能力:仅需 640 个 token 即可处理 180 万像素图像,比大多数模型少 75%。支持在 iPad 等终端设备上高效进行多模态实时流式交互。
- 易于使用:支持多种推理方式,包括 llama.cpp、ollama、vLLM 等。提供 int4 和 GGUF 格式的量化模型,降低内存使用和加速推理。
MiniCPM-o 2.6 的技术原理
- 端到端全模态架构:不同模态的编码器/解码器用端到端的方式连接和训练,充分基于丰富的多模态知识。
- 全模态直播机制:将离线模态编码器/解码器改为在线版本,支持流式输入/输出,设计时间分割复用(TDM)机制,用在LLM主干中的全模态流处理。
- 可配置的语音建模设计:设计多模态系统提示,包括传统的文本系统提示和新的音频系统提示,确定助手的音色,实现灵活的音色配置。
如何运行 MiniCPM-o 2.6
1. 安装依赖
首先,克隆仓库并安装依赖:
git clone https://github.com/OpenBMB/MiniCPM-o.git
cd MiniCPM-o
conda create -n MiniCPM-o python=3.10 -y
conda activate MiniCPM-o
pip install -r requirements.txt
2. 运行多轮对话示例
以下是一个简单的多轮对话示例:
import torch
from PIL import Image
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained('openbmb/MiniCPM-o-2_6', trust_remote_code=True, attn_implementation='sdpa', torch_dtype=torch.bfloat16)
model = model.eval().cuda()
tokenizer = AutoTokenizer.from_pretrained('openbmb/MiniCPM-o-2_6', trust_remote_code=True)
image = Image.open('./assets/show_demo.jpg').convert('RGB')
question = "What is the landform in the picture?"
msgs = [{'role': 'user', 'content': [image, question]}]
answer = model.chat(msgs=msgs, tokenizer=tokenizer)
print(answer)
3. 运行语音对话示例
以下是一个语音对话示例:
import librosa
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained('openbmb/MiniCPM-o-2_6', trust_remote_code=True, attn_implementation='sdpa', torch_dtype=torch.bfloat16)
model = model.eval().cuda()
tokenizer = AutoTokenizer.from_pretrained('openbmb/MiniCPM-o-2_6', trust_remote_code=True)
model.init_tts()
model.tts.float()
audio_input, _ = librosa.load('xxx.wav', sr=16000, mono=True)
msgs = [{'role': 'user', 'content': [audio_input]}]
res = model.chat(
msgs=msgs,
tokenizer=tokenizer,
sampling=True,
max_new_tokens=128,
use_tts_template=True,
generate_audio=True,
output_audio_path='output.wav',
)
print(res)
资源
- GitHub 仓库:https://github.com/OpenBMB/MiniCPM-o
- HuggingFace 仓库:https://huggingface.co/openbmb/MiniCPM-o-2_6
- 在线体验Demo:https://minicpm-omni-webdemo-us.modelbest.cn/
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦