大模型MiniCPM-o2.6 本地部署实战及应用

MiniCPM-o 2.6 是面壁智能推出的新一代端侧全模态模型。该模型MiniCPM-o 是从 MiniCPM-V 升级的最新端侧大模型系列,可以以端到端方式,接受图像、视频、文本、音频作为输入,并生成高质量文本和语音输出。

实时视频通过功能效果炸裂

一、MiniCPM-o 2.6 基础信息简介

1.1 技术架构

端到端全模态架构:将文本、图像、音频等不同类型数据的编码和解码模块统一训练,综合考虑多模态之间的关联性,完全基于交叉熵损失,避免传统多模态模型使用中间损失函数的复杂性;

时分复用全模态流式信息处理机制(OTDM):将同时输入的多模态数据拆分为周期性时间片序列,使模型能按时间顺序处理视觉和音频信息,降低延迟,提升实时性能。

全模态流式骨干网络:负责提取不同模态的数据特征并深度融合,隐藏层设计为语音嵌入以增强语音输出质量,最终通过流式语音解码器生成自然的语音输出。

1.2 功能特性

多模态处理:可同时处理文本、图像、音频和视频等多种数据类型24。

语音功能:支持中英双语语音对话,具备情感、语速、风格控制,以及端到端声音克隆和角色扮演等功能24。

视觉能力:具有强大的视觉记忆和理解能力,如在 “三仙归洞” 游戏中能精确追踪目标位置,在复杂的记忆卡牌游戏中能准确记住每张牌的图案和位置。

多语言支持:支持 30 多种语言。

1.3 性能表现

综合得分高:在 OpenCompass 基准测试中获得 70.2 的平均分,在视觉任务上超越了 GPT-4V24。

语音能力出色:在语音理解方面超越 Qwen2 - Audio 7B,在语音生成方面超越 GLM-4 - Voice 9B,分别在语音理解和生成任务中问鼎开源 SOTA5。

视觉任务领先:在视觉领域是最强端侧视觉通用模型,在 StreamingBench 等榜单上,以实时流式全模态能力比肩 GPT-4o 和 Claude 3.5 Sonnet5。

1.4 应用场景

教育领域:可用于互动学习工具,例如为学生提供实时的多模态学习辅导,通过语音讲解、展示图片或视频等方式帮助学生理解知识。

医疗行业:在医疗影像分析、医患语音交互等方面发挥作用,如帮助医生分析医学影像,同时通过语音与患者沟通病情等。

智能家居:能够实现对家居设备的语音控制和视觉感知,如通过识别用户语音指令来控制家电开关、灯光亮度等,还能通过视觉识别判断家中是否有异常情况。

智能客服:可以作为智能客服系统,通过语音和文字与客户进行交互,快速准确地解答客户问题,提供服务支持。

1.5 开源情况

模型的开源地址已在 GitHub 和 Huggingface 平台发布,供开发者进一步探索和应用。

代码:https://github.com/OpenBMB/MiniCPM-o

模型:https://huggingface.co/openbmb/MiniCPM-o-2_6  


二、本地部署、环境搭建

本文章面向本地环境搭建进行讲解,主要记录一系列的安装步骤,避免入坑。

2.1 基本准备

习惯于使用windows python环境的同学,可以看过来了:

1. 操作系统:Windows10/11

2. 显卡配置:RTX3090左右,24G运存(最重要的还是显卡,决定推理运行的速度)

3. 安装软件:git,minicondaNodejs

NVIDIA GPU 显卡 的详细信息

2.2  部署模型步骤

部署路径按照:代码拉取,依赖包安装,webdriver编译,代码修改/问题解决 等几个步骤进行。

2.2.1 代码拉取

有Git就用git拉起:git clone https://github.com/OpenBMB/MiniCPM-o.git

没有Git就直接打开网址:https://github.com/OpenBMB/MiniCPM-o.git (ZIP包下载)

cd MiniCPM-o-main

遇到Git网页打不开的情况,可以安装插件Watt Toolkit:具体安装方法Baidu下,免费(勾选,点一键加速)

Watt Toolkit 网络加速

2.2.2 创建依赖环境

1. 虚拟环境安装并激活

conda create -n MiniCPM-o-main python=3.10

conda activate MiniCPM-o-main

2. 安装pytorch 及其他依赖

conda install pytorch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 pytorch-cuda=12.1 -c pytorch -c nvidia

pip install -r requirements_o2.6.txt

3. 尝试启动后台服务

cd   web_demos/minicpm-o_2.6

python model_server.py

2.2.3 模型文件离线下载

模型文件正确加载

【问题1】python 启动model_server.py模型服务,需要从help="huggingface model name or local path"拉取,要么本地有要么去HF上拉。去huggingface拉取如果遇到SSL证书问题,或者网络不可达等问题,最好是手动下载模型。

网络连通性测试

【解决1】使用Watt Toolkit 网络加速后,打开网址:Models - Hugging Face

搜索模型
模型文件要全量下载

#  修改model_server.py 模型地址(模型有10G+)
model_path ="D:/GitClone/MiniCPM/MiniCPM-o-main/openbmb/MiniCPM-o-2_6"

ap.add_argument('--model',type=str ,default=model_path,help="huggingface model name or local path")

2.2.4 启动后台服务

显示模型服务启动成功

2.2.5 其他异常处理

查阅资料的时候,有细心的小伙伴提到安装模型和加载的过程中可鞥遇到了下面的几个大坑:

【问题2】当你试图启动模型服务的时候,你会遇到这样的错误提示

ImportError:This modeling file requires the following packages that werenotfoundinyourenvironment:flash_attn. Run`pip install flash_attn`

【解决2】正常来说,就是根据提示运行如下命令:

pip install flash_attn

实际上很可能会遇到CUDA需要大于11.7的提示。为了解决这个问题,直接用编译好的文件,执行命令:(我这里有一份windows版编译好的2.6.3版的)

pip install flash_attn-2.6.3-cp310-cp310-win_amd64.whl

这里需要注意要几个点,但凡搞错一个,据说就会痛不欲生:

Python版本为3.10,Torch为2.4.0对应的cuda为cu121

如果问题指向是torch和onnxruntime的问题,请单独安装:

pip install torch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 --index-url  https://download.pytorch.org/whl/cu121

pip install onnxruntime-gpu==1.20.1

【问题3】当你在运行web服务碰到错误代码说缺少key和cert的pem文件,记得用openssl生成一个

尽量用最新版本

【解决3】下载OpenSSL自己生成一个,解决方法可以查看百度

生成私钥(.pem)openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048

生成自签名证书(.pem)openssl req -new -x509 -key private_key.pem -out self_signed_cert.pem -days 365

2.3  安装Web服务

2.3.1 node.js环境准备

网页服务使用了vue相关技术,需要nodejs环境,如果没有用过,需要先安装nodejs

Node.js 下载安装

2.3.2 运行web服务

cd web_demos/minicpm-o_2.6/web_server

npm install -g pnpm

pnpm install # install requirements

pnpm run dev # start server

启动成功

包括本地local还有不同网络的IP地址。本机测试直接打开local地址,如果局域网其他电脑测试,或者手机测试,可以打开局域网地址。

2.3.2 浏览器选择

本地电脑使用IE/夸克浏览器打开https://localhost:8000/  机器人聊天功能

机器人聊天界面

本地电脑使用IE/夸克浏览器,打开https://localhost:8088/  实时语音/视频通话功能

实时视频语音功能

代码调用功能Demo: 可对接服务化接口等

import time

import torch

from PILimport Image

from transformersimport AutoModel, AutoTokenizer

torch.manual_seed(100)

model_path ="./openbmb/MiniCPM-o-2_6"

model = AutoModel.from_pretrained(model_path,trust_remote_code=True,

attn_implementation='sdpa',torch_dtype=torch.bfloat16)# sdpa or flash_attention_2, no eager

model = model.eval().cuda()

tokenizer = AutoTokenizer.from_pretrained(model_path,trust_remote_code=True)

# 记录开始时间

start_time = time.time()

image = Image.open('./demo.png').convert('RGB')

# First round chat

question ="只需要把每一行文本提取给我,每一行文本在图像中的像素坐标bounds要附加上"

msgs = [{'role':'user','content': [image, question]}]

answer = model.chat(

msgs=msgs,

tokenizer=tokenizer

)

print(answer)

三、测试效果

本视频效果仅供参考,切勿转发!

3.1 图像文本提取

3.2 实时语音通话

四、应用交流

4.1 基于图像内容检索的智能体

图像信息提取接入智能体

4.2 基于视频内容理解的智能体

图像接入智能体理解

欢迎关注《心灵堂》,期待技术交流!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容