AI多模态实战教程:面壁智能MiniCPM-V多模态大模型问答交互、llama.cpp模型量化和推理

一、项目简介

MiniCPM-V 系列是专为视觉-语⾔理解设计的多模态⼤型语⾔模型(MLLMs),提供⾼质量的⽂本输出,已发布4个版本。

1.1 主要模型及特性

(1)MiniCPM-Llama3-V 2.5:

  • 参数规模: 8B
  • 性能: 超越GPT-4V-1106、Gemini Pro、Qwen-VL-Max和Claude 3,⽀持30+种语⾔,多模态对话,增强OCR
  • 和指令跟随能⼒。
  • 部署: 量化、编译优化,可⾼效部署于端侧设备上的CPU和NPU。

(2)MiniCPM-V 2.0

  • 参数规模: 2B
  • 性能: 超越Yi-VL 34B、CogVLM-Chat 17B和Qwen-VL-Chat 10B,可处理任意纵横⽐和180万像素图像(例
  • 如,1344x1344),低幻觉率。

1.2 MiniCPM-Llama3-V 2.5 关键特性

  • 领先的性能
  • 平均得分65.1(OpenCompass),超越多款专有模型。
  • 强⼤的OCR能⼒
  • 处理任意纵横⽐和180万像素图像,OCRBench评分700+,提供全⽂OCR提取和表格到Markdown转换
  • 等⾼级实⽤功能。
  • 值得信赖的⾏为
  • 采⽤RLAIF-V⽅法,幻觉率10.3%,优于GPT-4V-1106。
  • 多语⾔⽀持
  • ⽀持30+种语⾔(含德语、法语、⻄班⽛语、意⼤利语、韩语等)。
  • ⾼效部署
  • 模型量化、CPU/NPU优化,实现端侧设备上的150倍图像编码加速和3倍语⾔解码加速。
  • 易⽤性
  • ⽀持llama.cpp、ollama,GGUF格式量化模型,LoRA微调,流输出,本地WebUI演示和HuggingFace
  • Spaces交互演示。

1.3 MiniCPM-V 2.0 关键特性

MiniCPM-V 2.0,这是MiniCPM系列的多模态版本。该模型基于MiniCPM 2.4B和SigLip-400M构建,总共有2.8B参数。MiniCPM-V 2.0显示出强⼤的OCR和多模态理解能⼒,在开源模型中的OCRBench上表现出⾊,甚⾄在场景⽂本理解上可以与Gemini Pro相媲美。

  • 前沿性能
  • 在多个基准测试中表现优异(如 OCRBench、TextVQA 等)。
  • 超越 Qwen-VL-Chat 9.6B、CogVLM-Chat 17.4B 和 Yi-VL 34B。
  • 强⼤的 OCR 能⼒,与 Gemini Pro 性能相当。
  • 可信⾏为
  • 使⽤多模态 RLHF 技术防⽌⽣成不符合事实的⽂本。
  • 与 GPT-4V 在防⽌幻觉⽅⾯匹配。
  • ⾼分辨率图像处理
  • 接受 180万像素(例如,1344x1344)的图像,⽀持任意⻓宽⽐。
  • 提升对细粒度视觉信息的感知能⼒。
  • ⾼效能
  • ⾼效部署于⼤多数 GPU 和个⼈电脑,⽀持移动设备。
  • 使⽤感知器重采样技术,降低内存成本并提升速度。
  • 双语⽀持
  • ⽀持英语和中⽂的双语多模态能⼒。
  • 基于 VisCPM 技术,实现跨语⾔的⼀般化多模态能⼒。

⼆、案例实战

2.1 环境配置

conda create -n cpm python=3.11
conda activate cpm# 下载项⽬,并进⾏依赖包安装
git clone https://github.com/OpenBMB/MiniCPM-V.git
cd MiniCPM-Vpip install -r requirements.txt
# 单独安装
pip install bitsandbytes streamlit gguf

2. 模型下载

# 前提,安装git和git-lfs【可选,如果已安装,则跳过】
sudo apt update
sudo apt install git
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo
bash
sudo apt-get install git-lfs
git lfs install
# 下载模型,以int4量化的MiniCPM-Llama3-V-2_5为例
git clone https://huggingface.co/openbmb/MiniCPM-Llama3-V-2_5-int4

[无法访问外网的同学,可以把上面最后一行改为国内镜像地址:

git clone https://hf-mirror.com/openbmb/MiniCPM-Llama3-V-2_5-int4]

三. 本地 WebUI Demo

3.1 基于 Gradio 实现

# 注意:需要修改脚本 web_demo_2.5.py 中的代码:
# ① model_path = xxx
# ② server_port = xxx
cd MiniCPM-V/
python web_demo_2.5.py

3.2 基于 Streamlit 实现

# 注意:需要修改脚本 web_demo_streamlit-2_5.py 中的代码:
# ① model_path = xxx
# ② model = AutoModel.from_pretrained(model_path, trust_remote_code=True, 
torch_dtype=torch.float16, device_map="cuda")
streamlit run web_demo_streamlit-2_5.py --server.port 6006 --server.address 0.0.0.0

四. 多轮对话

# 注意:需要修改 chat.py 中的代码:
self.model = AutoModel.from_pretrained(model_path, trust_remote_code=True, 
device_map="cuda")
self.model.eval()

# 新建demo.py

# 案例-多轮对话
from chat import MiniCPMVChat, img2base64
import torch
import json
torch.manual_seed(0)
chat_model = MiniCPMVChat("/root/autodl-tmp/models/MiniCPM-Llama3-V-2_5-int4")
im_64 = img2base64('./assets/airplane.jpeg')
# 第⼀轮对话
msgs = [{"role": "user",
"content": "Tell me the model of this aircraft."}]
inputs = {"image": im_64,
"question": json.dumps(msgs)}
answer = chat_model.chat(inputs)
print(answer)
# 第⼆轮对话
# 传递多轮对话的历史上下⽂
msgs.append({"role": "assistant",
"content": answer})
msgs.append({"role": "user",
"content": "Introduce something about Airbus A380."})inputs = {"image": im_64,
"question": json.dumps(msgs)}
answer = chat_model.chat(inputs)
print(answer)

五. 基于 llama.cpp 推理

5.1 环境配置

# 1. 下载项⽬
git clone -b minicpm-v2.5 https://github.com/OpenBMB/llama.cpp.git
cd llama.cpp
# 2. 安装 g++ (可选,如果已经安装,则跳过)
sudo apt update
sudo apt install g++
# 3. 在项⽬ llama.cpp/ ⽬录下,执⾏命令
make
make minicpmv-cli

5.2 模型量化

# 4. 模型格式转换,hf -> gguf
# 【可选操作】可以直接 下载gguf模型
python ./examples/minicpmv/minicpmv-surgery.py -m /root/autodl-tmp/models/MiniCPM-Llama3-
V-2_5
python ./examples/minicpmv/minicpmv-convert-image-encoder-to-gguf.py -m /root/autodltmp/models/MiniCPM-Llama3-V-2_5 --minicpmv-projector /root/autodl-tmp/models/MiniCPMLlama3-V-2_5/minicpmv.projector --output-dir /root/autodl-tmp/models/MiniCPM-Llama3-V-2_5/ 
--image-mean 0.5 0.5 0.5 --image-std 0.5 0.5 0.5
python ./convert.py /root/autodl-tmp/models/MiniCPM-Llama3-V-2_5/model --outtype f16 --
vocab-type bpe
# 5. quantize int4 version
./quantize /root/autodl-tmp/models/MiniCPM-Llama3-V-2_5/model/model-8B-F16.gguf 
/root/autodl-tmp/models/MiniCPM-Llama3-V-2_5/model/ggml-model-Q4_K_M.gguf Q4_K_M

5.3 模型推理

# 6. 基于量化版模型进⾏推理
# run f16 version
./minicpmv-cli -m /root/autodl-tmp/models/MiniCPM-Llama3-V-2_5/model/model-8B-F16.gguf --
mmproj /root/autodl-tmp/models/MiniCPM-Llama3-V-2_5/mmproj-model-f16.gguf -c 4096 --temp
0.7 --top-p 0.8 --top-k 100 --repeat-penalty 1.05 --image /root/autodl-tmp/MiniCPMV/assets/airplane.jpeg -p "What is in the image?"
# run quantized int4 version
./minicpmv-cli -m /root/autodl-tmp/models/MiniCPM-Llama3-V-2_5/model/ggml-modelQ4_K_M.gguf --mmproj /root/autodl-tmp/models/MiniCPM-Llama3-V-2_5/mmproj-model-f16.gguf -c
4096 --temp 0.7 --top-p 0.8 --top-k 100 --repeat-penalty 1.05 --image /root/autodltmp/MiniCPM-V/assets/airplane.jpeg -p "What is in the image?"
# or run in interactive mode(交互模式)
./minicpmv-cli -m /root/autodl-tmp/models/MiniCPM-Llama3-V-2_5/model/ggml-modelQ4_K_M.gguf --mmproj /root/autodl-tmp/models/MiniCPM-Llama3-V-2_5/mmproj-model-f16.gguf -c
4096 --temp 0.7 --top-p 0.8 --top-k 100 --repeat-penalty 1.05 --image /root/autodltmp/MiniCPM-V/assets/airplane.jpeg -i

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/48750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle(6)什么是重做日志文件(Redo Log File)?

重做日志文件(Redo Log File)是Oracle数据库中用于记录所有对数据库进行的更改的日志文件。这些文件在数据库崩溃恢复、实例恢复和介质恢复中起着至关重要的作用。 主要特点 记录更改:重做日志文件记录了所有对数据库进行的更改&#xff0c…

将Excel或CSV文件导入MySQL

数据库信息 版本:mysql-5.7.22 字符集如下 一、将 Excel 文件导入 MySQL,此时 MySQL 中不存在该表。 在数据库中,右键-导入向导

C++ 入门16:STL 容器之集合(set)与多重集合(multiset)

往期回顾: C 入门13:异常处理-CSDN博客 C 入门14:STL 容器之向量(vector)-CSDN博客 C 入门15:STL 容器之列表(list)-CSDN博客 C 入门16:STL 容器之集合(set&a…

刚刚 威尼斯影评人周公布 2024 年电影阵容 包括敏感纪录片《本土》

《本土》 威尼斯影评人周是威尼斯电影节专门为首次拍摄电影的人设立的侧边活动,该活动公布了第 39 届威尼斯电影节的七部竞赛片和两部非竞赛片的入选名单,第 39 届威尼斯电影节将于 8 月 28 日至 9 月 7 日举行。 较为及时的作品之一是美国导演迈克尔普…

【IntelliJ IDEA】一篇文章集合所有IDEA的所有设置

IntelliJ IDEA 是一款功能强大的集成开发环境(IDE),其设置涵盖了多个方面,以满足不同开发者的需求和偏好。由于 IDEA 的设置相当复杂和详尽,这里无法在一篇简短的文章中详细介绍所有设置。然而,我可以提供一…

@SpringBootApplication 注解及源码 详解

SpringBootApplication(scanBasePackages {"com.XXX"}) 标注 启动类注解。 内含源码注解 Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Documented Inherited SpringBootConfiguration EnableAutoConfiguration ComponentScan(excludeFilters …

CSS 计数器:WebKit 的样式增强术

CSS 计数器:WebKit 的样式增强术 CSS 计数器是 CSS2.1 规范中引入的一个强大特性,它允许网页开发者在文档中创建和维护计数器。这些计数器可以用于列表编号、章节编号、图表索引等场景。WebKit 引擎,作为许多流行浏览器(如 Safar…

持续集成07--Jenkins配置Allure测试报告

前言 在持续集成(CI)流程中,自动化测试报告是评估软件质量和追踪问题的重要工具。Allure Framework作为一个轻量级且功能丰富的测试报告工具,能够生成详细的测试报告,帮助团队更好地理解测试结果。本章节“持续集成07-…

Java二十三种设计模式-装饰器模式(7/23)

装饰器模式:动态扩展功能的灵活之选 引言 装饰器模式(Decorator Pattern)是一种结构型设计模式,用于在不修改对象自身的基础上,通过添加额外的职责来扩展对象的功能。 基础知识,java设计模式总体来说设计…

特征工程方法总结

方法有以下这些 首先看数据有没有重复值、缺失值情况 离散:独热 连续变量:离散化(也成为分箱) 作用:1.消除异常值影响 2.引入非线性因素,提升模型表现能力 3.缺点是会损失一些信息 怎么分:…

爬取百度图片,想爬谁就爬谁

前言 既然是做爬虫,那么肯定就会有一些小心思,比如去获取一些自己喜欢的资料等。 去百度图片去抓取图片吧 打开百度图片网站,点击搜索xxx,打开后,滚动滚动条,发现滚动条越来越小,说明图片加载…

使用 node --inspect 命令调试js文件执行

深入理解 Node.js 的 --inspect 调试功能 引言 Node.js 是一个流行的 JavaScript 运行环境,它允许开发者在服务器端运行 JavaScript 代码。随着应用的复杂性增加,调试成为了开发过程中不可或缺的一部分。Node.js 提供了强大的调试工具,其中…

3D 渲染一个房屋需要多长时间?

3D 渲染一个房屋总共需要 6-10 个工作日,主要取决于项目的复杂性和最终 3D 渲染的质量,图像越逼真,效果图渲染所需时间就越长。 1.3D建模 创建 3D 模型是第一步,所需时间可能因项目的复杂程度而有很大差异。一个简单的住宅渲染可…

D3.高精度

1.分类情况 AB、A-B、A*a、A/b A和B指的是超大超长整数&#xff0c;长度<1e6; a的值<10000&#xff1b; 2.大整数的存储 int 变量肯定是存不了这么大的数的&#xff0c;做法是将大整数先存到string字符串&#xff0c;再使用字符串的访问方式&#xff0c;将每一位数存到…

单机游戏分享:波与月夜之青莲单机游戏下载,2D和风动作游戏

在《波与月夜之青莲》中穿越一个充满神话和传奇的神秘世界。这是款丰富多彩的手绘冒险游戏&#xff0c;灵感来自于日本的民间传说。 扮演波&#xff0c;一朵从天而降的天体花&#xff0c;在一道古老而神秘的仪式中扮演关键的角色&#xff0c;展开一段神秘的旅程。使用你的传说…

CCF GESP Python编程 一级认证真题 2024年6月

一、单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级&#xff0c;那他可以选择的认证语会有几 种&#xff1f;&#xff08; &#xff09; A.1 B.2 C.3 D.4 第 2 题 ENIAC于1…

一、C#概述

本文是网页版《C# 12.0 本质论》第一章解读。欲完整跟踪本系列文章&#xff0c;请关注并订阅我的Essential C# 12.0解读专栏。 前言 第一章的内容非常简单&#xff0c;毕竟仅仅是Introducing C#。不过正如《0.前言》所述&#xff0c;《C# 12.0本质论》本身就不是一本零基础的…

Spark SQL----CREATE TABLE

Spark SQL----CREATE TABLE 一、描述二、创建 DATASOURCE 表2.1 描述2.2 语法2.3 参数2.4 数据源交互2.5 例子 三、创建HIVEFORMAT表3.1 描述3.2 语法3.3 参数3.4 例子 四、CREATE TABLE LIKE4.1 描述4.2 语法4.3 参数4.4 例子 一、描述 CREATE TABLE语句用于在现有数据库中定…

保护Mojo模型:确保数据模型安全的策略

保护Mojo模型&#xff1a;确保数据模型安全的策略 在机器学习领域&#xff0c;模型的安全性是至关重要的&#xff0c;尤其是当模型被部署到生产环境中时。Mojo模型&#xff0c;作为H2O.ai提供的一种模型导出格式&#xff0c;需要特别注意保护以防止潜在的安全风险。本文将详细…

rv1126利用rkmedia、opencv、rockx……完成人脸识别

一、总体框架 视频采集、处理使用rkmedia&#xff1a;vi模块进行视频输入、rga模块进行视频处理 人脸识别&#xff1a;先获取rga输出码流&#xff0c;再调用rkmedia的模型对人脸进行推理&#xff08;线程1&#xff09; 打框框&#xff1a;opencv&#xff08;线程2&#xff0…