MiniCPM-o 2.6:流式全模态,端到端,多模态端侧大模型来了!

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
简介: MiniCPM-o 2.6 是 MiniCPM-o 系列的最新、性能最佳模型。该模型基于 SigLip-400M、Whisper-medium-300M、ChatTTS-200M 和 Qwen2.5-7B 构建,共 8B 参数,通过端到端方式训练和推理。相比 MiniCPM-V 2.6,该模型在性能上有了显著提升,并支持了实时语音对话和多模态流式交互的新功能。

01.介绍

MiniCPM-o 2.6 是 MiniCPM-o 系列的最新、性能最佳模型。该模型基于 SigLip-400M、Whisper-medium-300M、ChatTTS-200M 和 Qwen2.5-7B 构建,共 8B 参数,通过端到端方式训练和推理。相比 MiniCPM-V 2.6,该模型在性能上有了显著提升,并支持了实时语音对话和多模态流式交互的新功能。MiniCPM-o 2.6 的主要特性包括:

  • 🔥 领先的视觉能力。MiniCPM-o 2.6 在 OpenCompass 榜单上(综合 8 个主流多模态评测基准)平均得分 70.2,以 8B 量级的大小在单图理解方面超越了 GPT-4o-202405、Gemini 1.5 Pro 和 Claude 3.5 Sonnet 等主流商用闭源多模态大模型。此外,它的多图和视频理解表现也优于 GPT-4V 和 Claude 3.5 Sonnet,并展现出了优秀的上下文学习能力。
  • 🎙 出色的语音能力。MiniCPM-o 2.6 支持可配置声音的中英双语实时对话。MiniCPM-o 2.6 在语音理解任务(如 ASR 和 STT translation)上的表现优于 GPT-4o-realtime,并在语音对话的语义和声学评估中展现了开源模型中最高的语音生成性能。它还支持情绪/语速/风格控制、语音克隆、角色扮演等进阶能力。
  • 🎬 强大的多模态流式交互能力。 作为一项新功能,MiniCPM-o 2.6 能够接受连续的视频和音频流,并和用户进行实时语音交互。在 StreamingBench(针对实时视频理解、全模态(视/音频)理解、多模态上下文理解的综合评测基准)中,MiniCPM-o 2.6 获得开源模型最高分并超过了 GPT-4o-realtime 和 Claude 3.5 Sonnet。
  • 💪 强大的 OCR 能力及其他功能。 MiniCPM-o 2.6 进一步优化了 MiniCPM-V 2.6 的众多视觉理解能力,其可以处理任意长宽比的图像,像素数可达 180 万(如 1344x1344)。在 OCRBench 上取得25B 以下最佳水平,超过 GPT-4o-202405 等商用闭源模型。基于最新的 RLHF-V、RLAIF-V 和 VisCPM 技术,其具备了可信的多模态行为,在 MMHal-Bench 上超过了 GPT-4o 和 Claude 3.5,并支持英语、中文、德语、法语、意大利语、韩语等多种语言。
  • 🚀 卓越的效率。 除了对个人用户友好的模型大小,MiniCPM-o 2.6 还表现出最先进的视觉 token 密度(即每个视觉 token 编码的像素数量)。它仅需 640 个 token 即可处理 180 万像素图像,比大多数模型少 75%。这一特性优化了模型的推理速度、首 token 延迟、内存占用和功耗。因此,MiniCPM-o 2.6 可以支持 iPad 等终端设备上的高效多模态流式交互。
  • 💫 易于使用。 MiniCPM-o 2.6 可以通过多种方式轻松使用:(1) llama.cpp 支持在本地设备上进行高效的 CPU 推理,(2) int4 和 GGUF 格式的量化模型,有 16 种尺寸,(3) vLLM 支持高吞吐量和内存高效的推理,(4) 通过LLaMA-Factory框架针对新领域和任务进行微调,(5) 使用 Gradio 快速设置本地 WebUI 演示,(6) 在线demo。

模型架构

  • 端到端全模态架构。 通过端到端的方式连接和训练不同模态的编/解码模块以充分利用丰富的多模态知识。
  • 全模态流式机制。 (1) 我们将不同模态的离线编/解码器改造为适用于流式输入/输出的在线模块。 (2) 我们针对大语言模型基座设计了一种时分复用的全模态流式信息处理机制,将平行的不同模态的信息流拆分重组为周期性时间片序列。
  • 可配置的声音方案。 我们设计了包含传统文本系统提示词和用于指定模型声音的语音系统提示词结构。从而,模型可在推理时灵活地通过文字或语音样例控制声音风格,支持声音克隆和声音生成等高级能力

添加图片注释,不超过 140 字(可选)

性能评估

添加图片注释,不超过 140 字(可选)

典型示例

以下示例为 MiniCPM-o 2.6 部署在 iPad Pro 上所录制得到。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

模型地址:https://modelscope.cn/models/OpenBMB/MiniCPM-o-2_6

项目地址:https://github.com/OpenBMB/MiniCPM-o

02.模型推理

使用魔搭社区免费算力(24G显存)完成模型推理实践。

安装依赖

!pip install vector-quantize-pytorch==1.18.5  !pip install vocos==0.1.0 !pip install transformers==4.44.2

推理代码

import torch from PIL import Image from modelscope import AutoModel, AutoTokenizer # load omni model default, the default init_vision/init_audio/init_tts is True # if load vision-only model, please set init_audio=False and init_tts=False # if load audio-only model, please set init_vision=False model = AutoModel.from_pretrained(     'openbmb/MiniCPM-o-2_6',     trust_remote_code=True,     attn_implementation='sdpa', # sdpa or flash_attention_2     torch_dtype=torch.bfloat16,     init_vision=True,     init_audio=True,     init_tts=True ) model = model.eval().cuda() tokenizer = AutoTokenizer.from_pretrained('OpenBMB/MiniCPM-o-2_6', trust_remote_code=True) # In addition to vision-only mode, tts processor and vocos also needs to be initialized model.init_tts() model.tts.float() import math import numpy as np from PIL import Image from moviepy.editor import VideoFileClip import tempfile import librosa import soundfile as sf def get_video_chunk_content(video_path, flatten=True):     video = VideoFileClip(video_path)     print('video_duration:', video.duration)     with tempfile.NamedTemporaryFile(suffix=".wav", delete=True) as temp_audio_file:         temp_audio_file_path = temp_audio_file.name         video.audio.write_audiofile(temp_audio_file_path, codec="pcm_s16le", fps=16000)         audio_np, sr = librosa.load(temp_audio_file_path, sr=16000, mono=True)     num_units = math.ceil(video.duration)     # 1 frame + 1s audio chunk     contents= []     for i in range(num_units):         frame = video.get_frame(i+1)         image = Image.fromarray((frame).astype(np.uint8))         audio = audio_np[sr*i:sr*(i+1)]         if flatten:             contents.extend(["<unit>", image, audio])         else:             contents.append(["<unit>", image, audio])     return contents video_path="/mnt/workspace/video.mp4" sys_msg = model.get_sys_prompt(mode='omni', language='en') # if use voice clone prompt, please set ref_audio # ref_audio_path = '/path/to/ref_audio' # ref_audio, _ = librosa.load(ref_audio_path, sr=16000, mono=True) # sys_msg = model.get_sys_prompt(ref_audio=ref_audio, mode='omni', language='en') contents = get_video_chunk_content(video_path) msg = {"role":"user", "content": contents} msgs = [sys_msg, msg] # please set generate_audio=True and output_audio_path to save the tts result generate_audio = True output_audio_path = '/mnt/workspace/4.wav' res = model.chat(     msgs=msgs,     tokenizer=tokenizer,     sampling=True,     temperature=0.5,     max_new_tokens=4096,     omni_input=True, # please set omni_input=True when omni inference     use_tts_template=True,     generate_audio=generate_audio,     output_audio_path=output_audio_path,     max_slice_nums=1,     use_image_id=False,     return_dict=True ) print(res)

添加图片注释,不超过 140 字(可选)

03.模型微调

使用ms-swift对MiniCPM-o-2_6进行微调。ms-swift是魔搭社区官方提供的大模型与多模态大模型微调部署框架。ms-swift开源地址:https://github.com/modelscope/ms-swift

在这里,将展示可直接运行的demo,并给出自定义数据集的格式。

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

git clone https://github.com/modelscope/ms-swift.gitcd ms-swift pip install -e .[llm]

图像OCR微调脚本如下:

CUDA_VISIBLE_DEVICES=0 \ swift sft \     --model OpenBMB/MiniCPM-o-2_6 \     --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

训练显存资源:

添加图片注释,不超过 140 字(可选)

视频微调脚本如下:

CUDA_VISIBLE_DEVICES=0 \ MAX_NUM_FRAMES=64 \ swift sft \     --model OpenBMB/MiniCPM-o-2_6 \     --dataset swift/VideoChatGPT:all \     --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

训练显存资源:

添加图片注释,不超过 140 字(可选)

自定义数据集格式如下(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": "system", "content": "你是个有用无害的助手"}, {"role": "user", "content": "<video>视频中是什么"}, {"role": "assistant", "content": "视频中是一只小狗在草地上奔跑"}], "videos": ["/xxx/x.mp4"]}

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

这里`--adapters`需要替换成训练生成的last checkpoint文件夹. 由于adapters文件夹中包含了训练的参数文件,因此不需要额外指定`--model`:

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

点击链接即可跳转模型链接~

MiniCPM-o-2_6

相关文章
|
3月前
|
机器学习/深度学习 自然语言处理 分布式计算
大规模语言模型与生成模型:技术原理、架构与应用
本文深入探讨了大规模语言模型(LLMs)和生成模型的技术原理、经典架构及应用。介绍了LLMs的关键特点,如海量数据训练、深层架构和自监督学习,以及常见模型如GPT、BERT和T5。同时,文章详细解析了生成模型的工作原理,包括自回归模型、自编码器和GANs,并讨论了这些模型在自然语言生成、机器翻译、对话系统和数据增强等领域的应用。最后,文章展望了未来的发展趋势,如模型压缩、跨模态生成和多语言多任务学习。
342 3
|
29天前
|
传感器 人工智能 自动驾驶
OpenEMMA:德克萨斯开源端到端的自动驾驶多模态模型框架,基于预训练的 MLLMs,处理复杂的视觉数据,推理驾驶场景
OpenEMMA 是德州农工大学、密歇根大学和多伦多大学共同开源的端到端自动驾驶多模态模型框架,基于预训练的多模态大型语言模型处理视觉数据和复杂驾驶场景的推理。
82 13
OpenEMMA:德克萨斯开源端到端的自动驾驶多模态模型框架,基于预训练的 MLLMs,处理复杂的视觉数据,推理驾驶场景
|
2月前
|
存储 人工智能 文字识别
Megrez-3B-Omni:无问芯穹开源最强端侧全模态模型,支持理解图像、音频和文本三种模态数据
Megrez-3B-Omni 是无问芯穹开源的端侧全模态理解模型,支持图像、音频和文本三种模态数据的处理,具备高精度和高推理速度,适用于多种应用场景。
112 19
Megrez-3B-Omni:无问芯穹开源最强端侧全模态模型,支持理解图像、音频和文本三种模态数据
|
2月前
|
人工智能 文字识别 语音技术
Megrez-3B-Omni: 首个端侧全模态理解开源模型
Megrez-3B-Omni是由无问芯穹(Infinigence AI)研发的端侧全模态理解模型,基于无问大语言模型Megrez-3B-Instruct扩展,同时具备图片、文本、音频三种模态数据的理解分析能力。
Megrez-3B-Omni: 首个端侧全模态理解开源模型
|
3月前
|
人工智能 编解码 搜索推荐
OneDiffusion:无缝支持双向图像合成和理解的开源扩散模型
OneDiffusion 是一个开源的扩散模型,能够无缝支持双向图像合成和理解。它基于统一的训练框架,支持多种任务,如文本到图像生成、条件图像生成和图像理解等。OneDiffusion 通过流匹配框架和序列建模技术,实现了高度的灵活性和可扩展性。
87 2
OneDiffusion:无缝支持双向图像合成和理解的开源扩散模型
|
3月前
|
人工智能
突破视频多模态大模型瓶颈!合成数据立大功,项目已开源
针对视频多模态大模型(LMMs)因缺乏高质量原始数据而发展受限的问题,研究人员开发了LLaVA-Video-178K数据集,包含178,510个视频,涵盖详细字幕、开放性问题回答和多项选择题。此数据集通过结合GPT-4o和人工标注,实现了广泛视频来源、动态视频选择、递归字幕生成及多样化任务设计。基于此数据集训练的LLaVA-Video模型,在视频字幕、问答等任务上表现优异,且已开源,助力视频LMM的研究与发展。
79 7
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
话说多模态大模型
多模态大模型是近年来人工智能的重要进展,能够处理和理解多种数据类型,如文本、图像、音频和视频。通过结合不同模态的信息,这些模型在图像识别、视觉问答、多模态检索和情感分析等场景中展现出强大的应用潜力。然而,数据标注、模态间协调和计算资源仍是其面临的挑战。未来研究将致力于提高模型效率和解释能力。
123 3
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
多模态大模型技术原理与实战(3)
ChatGPT引爆了以AIGC(人工智能生成内容)为代表的第四范式 AI的市场,并成为 AI市场的热点
168 3
多模态大模型技术原理与实战(3)
统一多模态模型来了!智源发布多模态世界模型Emu3!
2024年10月21日,智源研究院正式发布原生多模态世界模型Emu3。
|
4月前
|
数据采集 机器学习/深度学习 TensorFlow
声纹识别实战:从数据采集到模型训练
【10月更文挑战第16天】声纹识别技术通过分析个人的语音特征来验证其身份,具有无接触、便捷的特点。本文将带你从零开始,一步步完成声纹识别系统的构建,包括数据采集、音频预处理、特征提取、模型训练及评估等关键步骤。我们将使用Python语言和相关的科学计算库来进行实践。
595 0

热门文章

最新文章