24G单卡MiniCPM-V-2_6也可以微调

一、MiniCPM-V-2_6简介

       MiniCPM-V 2.6 是 MiniCPM-V 系列中最新、性能最佳的模型。该模型基于 SigLip-400M 和 Qwen2-7B 构建,共 8B 参数。与 MiniCPM-Llama3-V 2.5 相比,MiniCPM-V 2.6 性能提升显著,并引入了多图和视频理解的新功能。MiniCPM-V 2.6 的主要特点包括:

  • 🔥 领先的性能。 MiniCPM-V 2.6 在最新版本 OpenCompass 榜单上(综合 8 个主流多模态评测基准)平均得分 65.2,以8B量级的大小在单图理解方面超越了 GPT-4o mini、GPT-4V、Gemini 1.5 Pro 和 Claude 3.5 Sonnet 等主流商用闭源多模态大模型

  • 🖼️ 多图理解和上下文学习。 MiniCPM-V 2.6 还支持多图对话和推理。它在 Mantis-Eval、BLINK、Mathverse mv 和 Sciverse mv 等主流多图评测基准中取得了最佳水平,并展现出了优秀的上下文学习能力。

  • 🎬 视频理解。 MiniCPM-V 2.6 还可以接受视频输入,进行对话和提供涵盖时序和空间信息的详细视频描述。模型在 有/无字幕 评测场景下的 Video-MME 表现均超过了 GPT-4V、Claude 3.5 Sonnet 和 LLaVA-NeXT-Video-34B等商用闭源模型。

  • 💪 强大的 OCR 能力及其他功能。 MiniCPM-V 2.6 可以处理任意长宽比的图像,像素数可达 180 万(如 1344x1344)。在 OCRBench 上取得最佳水平,超过 GPT-4o、GPT-4V 和 Gemini 1.5 Pro 等商用闭源模型。基于最新的 RLAIF-V 和 VisCPM 技术,其具备了可信的多模态行为,在 Object HalBench 上的幻觉率显著低于 GPT-4o 和 GPT-4V,并支持英语、中文、德语、法语、意大利语、韩语等多种语言

  • 🚀 卓越的效率。 除了对个人用户友好的模型大小,MiniCPM-V 2.6 还表现出最先进的视觉 token 密度(即每个视觉 token 编码的像素数量)。它仅需 640 个 token 即可处理 180 万像素图像,比大多数模型少 75%。这一特性优化了模型的推理速度、首 token 延迟、内存占用和功耗。因此,MiniCPM-V 2.6 可以支持 iPad 等终端设备上的高效实时视频理解

  • 💫 易于使用。 MiniCPM-V 2.6 可以通过多种方式轻松使用:(1) llama.cpp 和 ollama 支持在本地设备上进行高效的 CPU 推理,(2) int4 和 GGUF 格式的量化模型,有 16 种尺寸,(3) vLLM 支持高吞吐量和内存高效的推理,(4) 针对新领域和任务进行微调,(5) 使用 Gradio 快速设置本地 WebUI 演示,(6) 在线demo即可体验。

       结论有惊喜。🔥 

二、环境准备

          具体的环境可以参考我的上篇文(Qwen-VL部署)。这里不再重复内容。另外微调使用的swift这个框架进行的微调,所以还要准备swift的环境。

swift环境安装。

git clone https://github.com/modelscope/swift.git
cd swift

#创建虚拟环境
conda create -n minicpm python=3.10 -y
conda activate minicpm
conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia

#安装swift的依赖
pip install -e .[llm]

三、微调

        1、准备数据
[{
    "id": "3",
    "image": "/data/labelstudio/data/media/upload/1/ef7c451a-GC-10-1b.png",
    "conversations": [
      {
        "from": "user",
        "value": "<image>\\n请检查图片中的问题。"
      },
      {
        "from": "assistant",
        "value": "图片中存在井盖破损的问题"
      }
    ]
  }
]
        2、微调指令
CUDA_VISIBLE_DEVICES=0 swift sft   \
--model_type minicpm-v-v2_6-chat    \
--model_id_or_path /data/autodl/minicpm-v-2-6/MiniCPM-V-2_6   \
--dataset /data/autodl/minicpm-v-2-6/result_cpm.json  self-cognition \
--sft_type lora \
--max_length 6000 \
--learning_rate 1e-3 \
--batch_size 2 \
--num_train_epochs 3   \
--logging_steps 3 \
--eval_steps 100 \
--save_steps 100 \
--gradient_accumulation_steps 8 \
--model_name 智能助手   'Intelligent  Assistant' \
--model_author  风之飘渺  'Smart' 
#--deepspeed default-zero2 加了这个会报错,官方也没有说法
        3、微调说明
  1. 正常用官方的脚本一直报OOM的,但是用这个指令是可以微调的,虽然效果很差。
  2. 参数max_length 不能再大,再大的话会OOM,我的是这样。
  3. batch_size 反而可以到4也没有报OOM,再大没有试,我数据样本少。
  4. 微调的数据,一定要与我上面给的格式相同,否则会报一些如:KeyError:from之类的错误,基本上是数据样本里缺少相应的关键字。

       总之还是很强的一个多模态大模型,微调前的测试感觉,MiniCPM-V 2.6 比 Qwen-VL、Qwen2-VL都要好,在识图方面。最怕的就是但是,但是还是来了。同样的数据微调后,MiniCPM-V 2.6啥也不是了,测试图片识别方面能力下降。没做任何特殊设置,基本上同条件微调,都是默认的参数。

<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在精度和推理速度间提供最佳平衡
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值