MiniCPM-o 2.6 本地部署记录,Windows+RTX3060全部跑通!

上一篇中,大致聊了下国产小钢炮MiniCPM的特性,看起来很不错,可玩性很高。

今天,主要来说一下,如何在本地运行这个项目。

配置过程花了一些时间,最终还是成功了,可以正常进行视频通话,语音通话,和聊天机器人。安装和测试过程中遇到了几个棘手的问题。下面就完整记录下安装过程和遇到的问题的解决方案。

基础准备

巧妇难为无米之炊,有些比较基础的东西必须先准备好。

  • Windows10/11
  • 显卡RTX3060或者其他更强显卡
  • 安装软件git,miniconda,Nodejs

这些应该不难,不懂的话,网上资料也很多。

为了运行这个项目中的webdemo,会涉及到Python和NodeJS相关内容,还有一个浏览器的设置问题。所以我们就这几个重点来分块说明。

模型服务的安装和配置

模型服务主要负责模型的载入和推理,然后Web端调用,这个是核心部分。这一部分完全由Python编写。

打开本地CMD或者WIndowws PowerShell 以此运行下面的命令。

克隆项目

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

单独安装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

使用req文件安装其他依赖。

pip install -r requirements_o2.6.txt

因为torch和onnx已经安装完成了,所以这一步运行之前可以打开requirements_o2.6.txt,把相应的项目注释掉或者删除掉。

正常来说,依赖安装到这里就结束了。

其实,最麻烦的才刚刚开始。接下来这个问题,浪费了我一下午的时间。

flash_attn的问题

当你试图启动模型服务的时候,你会遇到这样的错误提示。

ImportError: This modeling file requires the following packages that were not found in your environment: flash_attn. Run `pip install flash_attn`

正常来说,就是根据提示运行如下命令:

pip install flash_attn

然后就完美收工了。

实际上很可能会遇到CUDA需要大于11.7的提示。

为了解决这个问题,只能根据提示升级cuda和cudnn(浪费一波时间)

升级完成之后在执行安装命令,没有错误,但是会开始本地编译。

编译了四个多小时,放弃了…   

之所以会这样,是因为没有匹配本地环境的依赖包。

Windows下无法自动安装一些包也很常见。

一个比较好的解决思路是,找别人编译好的WHL文件。

进过多番查找和尝试,最终解决了这个问题。

直接用编译好的文件,执行命令:

pip install whl\flash_attn-2.7.0.post2-cp310-cp310-win_amd64.whl

之前命令前,获取到这个文件,放到whl文件夹下面。

这里需要注意要几个点:

Python版本为3.10

Torch为2.4.0 对应的cuda为 cu121

上面的版本,但凡搞错一个,就会痛不欲生。

所有依赖正确安装之后,就可以启动模型服务了。

运行服务器:

python web_demos/minicpm-o_2.6/model_server.py

运行之后,会自动去HF下载模型,模型大概有10G+,所以需要一个较好的网络,并且保持网络通畅。

运行成功之后会会显示Application startup complete,同时显示服务运行在某个端口。

由于默认下载的是没有量化的版本,所以加载这个模型需要18G显存

我一直以为12G的3060无法载入这个模型,但是实际情况是,它会使用虚拟内存。最终整个电脑用去了18.5的显存。除去其他软件的使用量,确实和官方要求的18G非常接近。

这里顺带提一嘴:

MiniCPM-o 2.6 int4 的显存需求为9GB

MiniCPM-V 2.6 gguf的显存需求为6GB

这就是之前说到的低配电脑也能运行的原因所在。

到这里Python部分就完成了。

网页服务的安装和配置

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

安装nodejs

这个很简单,打开nodejs.org,下载Node.js ,然后双击运行安装即可。

安装过程一路Next默认设置安装。

如果之前就有Nodejs 使用  node -v 命令查看一下版本。版本太低需要升级一下。

运行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地址,如果局域网其他电脑测试,或者手机测试,可以打开局域网地址。比如我这里的192.168.31.214 就是局域网地址。

浏览器的设置

我首先是在本地电脑测试,但是遇到了一个问题,让我摸不着头脑。实时通话和实时语音点了之后全部没有反应,而聊天机器人可以正常使用。这一度让我以为是的安装配置有问题。

其实是和浏览器权限有关系。由于本地IP运行,没有https证书。所以chrome浏览器会直接限制你调用本地相机和麦克风。这种限制甚至不会有任何提示。左上角不会弹出授权提示!!!

为了解决这个问题,需要进行如下设置:

1️⃣地址栏输入chrome://flags/

2️⃣找到insecure 选项

3️⃣输入本地的Ip地址

4️⃣启动改选项

5️⃣重新启动浏览器

再次打开,你就可以通过下面的设置启动摄像头和麦克风了。

显示点击浏览器左上角的地址栏前面的不安全。

在弹出菜单中点击网站设置。

在网站设置中,对该网址启用摄像头和麦克风权限

下拉中选择询问或者允许。

设置完成之后,刷新网页。应该就可以了。

可以看到摄像头和麦克风都已经启用了。

到这里Chrome的设置就完成了。

运行测试

所有设置完成之后,就可以开始尝试各种功能了。

视频通话:

点击视频通话,就可以开始了。

由于我使用了原版模型,加载时使用了虚拟内存,所以导致速度非常…慢,但是确实能用。另外由于我本地摄像头比较多,不知道chrome是什么逻辑,调用了虚拟摄像头Wecam。

语音通话:

语音通话也完全没问题,接通后直接说就行了。

但是这个功能也面临一些问题,比如声音输入检测问题,检测不好,会有大量干扰声音,在吵杂的环境中很难测试。另外一个问题,可能是电脑配置关系,声音会断断续续。另外,语音对话的声音会发生变化。

毕竟是Demo,还有很多完善的空间。

聊天机器人:

这个功能,没有语音和视频,用起来就稳定很多。只要上传一个张图片或视频,就可以分析上传的内容,并进行讨论了。通过功能就可以对它的图片,视频理解能力做一个直观的测试。

这个使用很流畅,没啥问题,就是必须上传图片或者视频之后,才能开启对话。

安装配置就是这样了,后面就是换台电脑搞个量化模型,把显存降下来,速度拉上去。

收工收工!

<think>好的,用户想对MiniCPM-o 2.6模型进行int4精度的微调,我需要根据提供的引用资料来给出指导。首先,我需要确认用户提到的模型是否正确,因为在提供的引用中,提到的是MiniCPM-V-2.6,而不是MiniCPM-o 2.6,可能用户可能有笔误,或者模型名称有变化,但暂时假设是同一个模型的变体。 接下来,根据引用3和引用4,用户需要下载模型文件和配置环境。引用3提到了模型微调的方法,包括qlora微调int4版本,还有lora微调以及合并lora后的量化步骤。因此,int4的微调可能需要先进行量化处理,或者使用已经量化好的模型进行微调。 引用3中明确提到了“qlora微调minicpm-v-int4”和“lora微调后量化int4”,所以可能有两种方法:一种是直接使用已经量化为int4的模型进行微调,另一种是在微调后进行量化。需要明确步骤。 此外,引用5提到ms-swift框架支持多模态大模型的微调,包括MiniCPM-V-2.6,所以可能需要使用swift工具来进行微调。同时,引用2给出了运行int4量化版本的命令行示例,可能涉及加载量化后的模型文件和mmproj文件。 用户的问题是关于int4精度微调的步骤,需要结合这些信息。可能的步骤包括:下载int4量化模型,准备数据集,配置微调环境(如安装swift),使用qlora或lora方法进行微调,然后合并lora权重,或者直接微调量化后的模型。 需要注意的是,是否支持直接对int4模型微调,或者是否需要先微调全精度模型再量化。根据引用3中的“lora微调后量化int4”,可能是在全精度模型上进行lora微调,之后再进行量化。而qlora可能允许在量化模型上直接微调,但需要查阅具体步骤。 另外,用户可能需要准备数据集,根据引用4中的微调数据集准备部分,包括单图和多图数据样例,可能涉及多模态数据。但用户的问题可能更关注于int4的微调方法,而不是数据准备的具体内容。 综合以上信息,回答的步骤可能包括: 1. 下载int4量化模型文件和相关配置文件(如ggml-model-Q4_K_M.gguf和mmproj-model-f16.gguf),如引用2所示。 2. 安装必要的环境,如ms-swift框架(引用5),以及可能的依赖库。 3. 使用qlora方法进行微调,如引用3提到的“qlora微调minicpm-v-int4”,可能需要配置相应的参数。 4. 合并lora权重到基础模型(如果需要),如引用3中的“merge_lora”步骤。 5. 验证微调后的模型性能,使用提供的推理命令进行测试。 需要注意,具体的命令和步骤可能需要参考官方文档或引用中的指导,例如引用3中的详细步骤。同时,要确保用户正确理解模型名称和版本,避免混淆不同的模型变体。</think>对MiniCPM-V-2.6(可能笔误为MiniCPM-o 2.6)进行int4精度微调的步骤如下: ### 一、环境准备 1. **安装ms-swift框架** 过魔搭社区提供的ms-swift框架实现量化微调,该框架支持MiniCPM-V-2.6的量化训练和部署[^5]。执行以下命令: ```bash pip install ms-swift ``` 2. **下载模型文件** 从官方仓库获取int4量化模型文件: - 基础模型:`ggml-model-Q4_K_M.gguf` - 多模态投影文件:`mmproj-model-f16.gguf`[^2] ```bash git clone https://github.com/OpenBMB/MiniCPM-V-2_6 ``` ### 二、微调流程 #### 方法1:QLoRA微调int4量化模型 1. **加载量化模型** 使用`bitsandbytes`库加载4bit量化配置: ```python from swift import LoRAConfig, Swift model = AutoModelForVision2Seq.from_pretrained( "OpenBMB/MiniCPM-V-2_6", load_in_4bit=True, quantization_config=BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_quant_type="nf4") ) ``` 2. **添加LoRA适配器** ```python lora_config = LoRAConfig( r=8, target_modules=["q_proj", "v_proj"], lora_alpha=32 ) model = Swift.prepare_model(model, lora_config) ``` 3. **启动训练** ```python trainer = Trainer( model=model, train_dataset=dataset, args=TrainingArguments( output_dir="./output", per_device_train_batch_size=4, gradient_accumulation_steps=2 ) ) trainer.train() ``` #### 方法2:先微调后量化 1. **全精度模型微调** 使用LoRA进行常规微调: ```bash python train.py \ --model_name OpenBMB/MiniCPM-V-2_6 \ --use_lora True \ --lora_rank 8 ``` 2. **后训练量化** 微调完成后执行量化: ```bash ./llama-minicpmv-cli \ -m merged_model.gguf \ --mmproj mmproj-model-f16.gguf \ --quantize Q4_K_M ``` ### 三、合并与部署 1. **合并LoRA权重** ```python from swift import merge_lora_to_base_model merge_lora_to_base_model( "./lora_weights", "./merged_model" ) ``` 2. **推理验证** ```bash ./llama-minicpmv-cli \ -m merged_model-Q4_K_M.gguf \ --mmproj mmproj-model-f16.gguf \ --image test.jpg \ -p "描述图片内容" ``` ### 注意事项 1. 显存需求:int4微调时建议使用至少16GB显存的GPU 2. 数据集格式:需准备图文对数据,支持单图和多图输入格式[^4] 3. 量化精度:Q4_K_M在精度和推理速度间提供最佳平衡
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值