资讯动态

如何微调InternVL3-9B-Instruct:SWIFT与XTuner多模态微调实战指南

发布时间:2026/10/18 2:44:36 来源:尧图企业网站定制
【免费下载链接】InternVL3-9B-Instruct项目地址https://ai.gitcode.com/OpenGVLab/InternVL3-9B-Instruct点击查看免费下载InternVL3-9B-Instruct是上海 AI Lab 开源 InternVL3 系列中的 90 亿参数多模态大模型MLLM指令版本由 InternViT 视觉编码器 MLP 投影层 语言模型三部分构成。本文将带你走通SWIFT与XTuner两条主流多模态微调工具链的完整流程从训练数据格式准备、LoRA 与全参微调命令到超参数配置与效果验证让新手也能快速上手InternVL3-9B-Instruct 微调。一、为什么选择 InternVL3-9B-Instruct 做微调上图即仓库自带的示例图片 examples/image1.jpgREADME 中的推理 Demo 也正是用它来测试图像理解能力——微调后你可以让模型学会看图回答你的私有领域问题。InternVL3 采用原生多模态预训练 SFT MPO三阶段训练策略其 Instruct 版本已完成多模态预训练与 SFT 监督微调但未做 MPO 偏好优化。这意味着它拥有扎实的通用视觉理解、OCR、图表解析能力是微调的好底座通过少量领域数据微调就能把它改造为垂直场景专家工业质检、医疗影像、UI 截图理解等模型仅 9B 参数bf16 加载显存约 20GBLoRA 微调单张 4090/3090 级别显卡即可跑通性价比极高。 选型建议日常对话、复杂推理请优先使用经过 MPO 的OpenGVLab/InternVL3-9B如果你要基于 SFT 版本继续训练InternVL3-9B-Instruct就是官方推荐的起点。二、微调前必知的模型架构与关键文件微调 InternVL3-9B-Instruct 前理解三件套架构能帮你少走弯路组件对应源码说明视觉编码器ViTmodeling_intern_vit.pyInternViT-300M448px 动态分辨率切图语言模型LLMmodeling_internlm2.py基于 InternLM 架构48 层、hidden_size 4096整体对话模型modeling_internvl_chat.pyInternVLChatModel含chat/batch_chat接口其他值得留意的文件config.json核心配置template: internvl2_5指定对话模板use_flash_attn: true启用 FlashAttentionconversation.py对话提示词模板管理微调框架依赖它拼接 promptmodeling_internvl_chat.py 中的chat()方法展示了image占位符如何被替换为IMG_CONTEXTtoken——这正是训练数据里图片占位符的由来model.safetensors.index.json4 个分片model-00001-of-00004.safetensors~model-00004-of-00004.safetensors的权重索引。三、环境准备与模型获取3.1 安装依赖微调框架对transformers版本有要求README 明确提示需transformers ≥ 4.37.2。pip install transformers4.37.2 torch accelerate # 二选一的微调框架 pip install ms-swift # ModelScope SWIFT pip install xtuner # InternLM 团队 XTuner3.2 下载模型权重git clone https://gitcode.com/OpenGVLab/InternVL3-9B-Instruct # 或已下载后直接用本地目录路径作为 model_id_or_path⚠️ 多 GPU 推理/微调时README 建议将 ViT 与 LLM 首层放在同一设备避免跨卡报错可参考 README.md Multiple GPUs 一节。四、准备微调训练数据 SWIFT 与 XTuner 都支持ShareGPT 风格 JSON / JSONL格式图片路径写成列表即可[ { messages: [ {role: system, content: You are a helpful assistant.}, {role: user, content: image\n请描述这张图片中的小动物。}, {role: assistant, content: 图片里有一只趴在木板上的小熊猫。} ], images: [examples/image1.jpg] } ]数据制作要点用户内容中用image占位与模型训练时的约定一致见 modeling_internvl_chat.py 中对image的处理系统提示可写领域人设如你是一名工业检测助手帮助模型收敛到垂直风格动态分辨率下单图最多切 12 块max_dynamic_patch: 12见 config.json图片越多、切块越多显存消耗越大微调时建议将图片长边控制在 1024px 左右。五、方案一用 SWIFT 微调 InternVL3-9B-InstructSWIFTms-swift是 ModelScope 出品的多模态微调框架对 InternVL 系列有原生支持一行命令即可完成LoRA / 全参 / 量化微调。5.1 一行命令启动 LoRA 微调CUDA_VISIBLE_DEVICES0 swift sft \ --model OpenGVLab/InternVL3-9B-Instruct \ --dataset /path/to/train.json \ --train_type lora \ --torch_dtype bfloat16 \ --num_train_epochs 1 \ --per_device_train_batch_size 1 \ --gradient_accumulation_steps 16 \ --learning_rate 1e-4 \ --max_length 4096 \ --output_dir output关键参数推荐值说明--train_typelora显存不足首选显存充足可改full全参微调--learning_rate1e-4LoRA/ 1e-5全参多模态全参微调学习率务必调低--max_length2048~8192含图片 token多图样本要放宽--freeze_vittrue冻结视觉塔只调投影层LLM更稳更省5.2 常用进阶配置# 冻结 ViT、仅微调 mlp 投影层与 LLM9B 模型 LoRA 微调的稳妥组合 swift sft \ --model OpenGVLab/InternVL3-9B-Instruct \ --dataset /path/to/train.json \ --train_type lora \ --freeze_vit true \ --lora_rank 8 --lora_alpha 32 \ --target_modules all-linear六、方案二用 XTuner 微调 InternVL3-9B-InstructXTuner 是 InternLM 团队开源的 LLM/VLM 微调框架InternLM 系模型的原生搭档配置驱动、支持FlashAttention-2与bitsandbytes 量化微调适合想精细控制训练超参的进阶用户。6.1 配置文件方式推荐新建finetune_internvl3_9b.pyfrom xtuner.registry import BUILDER from xtuner.utils import Prompt, LoadType model_path OpenGVLab/InternVL3-9B-Instruct train_dict dict( typeinternvl_chat_9b, # 模型类别 model_pathmodel_path, promptPrompt(), load_typeLoadType.FULL, # FULL / LORA / PARTIAL max_num_frames1, # 视频采样帧数 ) data_path /path/to/train.json data_dict dict( typeinternvl_chat_data, promptdict(model_pathmodel_path), data_pathdata_path, ) launcher slurm # 或 local max_iters 1 optim_type AdamW optim dict( typeoptim_type, lr1e-5, betas(0.9, 0.95), weight_decay0.01, max_norm1, grad_accum8) train_scheduler dict( typeCosine, warmup0.03, max_epochsmax_iters) eval_interval 50 save_strategy steps save_steps 50 eval_strategy steps eval_steps 50 # 日志与输出目录按默认值即可然后执行python xtuner/train/finetune.py finetune_internvl3_9b.py --deepspeed deepspeed_zero26.2 命令行方式LoRA 快速上手python -m xtuner.train.finetune \ --model OpenGVLab/InternVL3-9B-Instruct \ --train_type lora \ --max_num_frames 1 \ --train_data_path /path/to/train.json \ --learning_rate 1e-4 \ --dtype bfloat16 \ --max_epochs 1 \ --gradient_accumulation_steps 8 \ --output /path/to/output七、显存不够量化微调与硬件参考微调方式硬件门槛约适用场景LoRA 冻结 ViT单卡 24GBbf16入门首选小样本领域适配LoRA 不冻结 ViT单卡 48GB / 双卡 24GB需要增强视觉感知能力全参微调DeepSpeed ZeRO-2/3双卡 80GB 起大规模数据、追求极致效果省钱技巧使用bitsandbytes 4-bit/8-bit 量化加载再叠加 LoRAXTuner 与 SWIFT 均支持9B 模型可压进单张 16GB 显存控制每样本图片切块数XTuner 用max_num_frames/ 图像切块上限SWIFT 可用--max_pixels限制缩短--max_length避免长对话样本挤爆序列长度。八、训练后验证与常见问题排查8.1 用 README 同款代码验证效果训练完成后把path指向合并后的模型目录跑 README.md Inference with Transformers 中的 Demo 代码单图对话、多图对比、视频问答用与训练同分布的图片检验泛化能力import torch from transformers import AutoTokenizer, AutoModel path ./output/merged-model # 换成你的微调输出目录 model AutoModel.from_pretrained( path, torch_dtypetorch.bfloat16, low_cpu_mem_usageTrue, use_flash_attnTrue, trust_remote_codeTrue).eval().cuda() tokenizer AutoTokenizer.from_pretrained(path, trust_remote_codeTrue, use_fastFalse)8.2 新手高频问题清单现象可能原因与对策trust_remote_code报错未开启自定义代码加载模型依赖本仓库的modeling_internvl_chat.py等自定义模块加载即 OOM改用load_in_8bitTrue需 2×80GB或量化 LoRA多卡可参考 README 的split_model分层部署输出乱码/重复数据中image占位符与images字段数量不匹配或学习率过大多卡张量设备报错确保 LLM 首层与末层同卡见 README 多卡方案transformers 行为异常确认版本 ≥ 4.37.2九、小结微调 InternVL3-9B-Instruct 最快路径数据先行用 ShareGPT 风格 JSON 整理几百~几千条图文指令图片用image占位工具选型追求省事选SWIFT一行命令、多模态支持全追求精细控制与 InternLM 生态选XTuner配置驱动、支持量化与 DeepSpeed稳妥参数LoRArank 8 冻结 ViT lr 1e-4 1 epoch单卡 24GB 起步闭环验证合并权重后用 README 的 Demo 脚本回归测试确认领域效果后再考虑全参微调或量化部署LMDeploylmdeploy serve api_server可一键 OpenAI 兼容服务。InternVL3-9B-Instruct 原生多模态预训练的底子加上 SWIFT/XTuner 成熟的微调工具链让9B 参数、单卡可训、垂直可用成为现实。动手跑通你的第一条微调命令离专属多模态模型只差一个数据集的距离 相关文件速查README.md config.json modeling_internvl_chat.py conversation.py model.safetensors.index.json赞分享【免费下载链接】InternVL3-9B-Instruct项目地址https://ai.gitcode.com/OpenGVLab/InternVL3-9B-Instruct点击查看免费下载相关推荐如何微调 InternVL3-8B-Instruct基于 SWIFT 与 XTuner 定制专属多模态模型实战如何微调 InternVL3 8B Instruct基于 SWIFT 与 XTuner 定制专属多模态模型实战 本文将带你使用 SWIFT 与 XTunerInternVL3_5-8B-Flash微调实战SWIFT与XTuner多模态微调全流程指南InternVL3_5 8B Flash微调实战SWIFT与XTuner多模态微调全流程指南 InternVL3_5 8B Flash 是 InternVL3如何微调InternVL3.5-30B-A3B基于SWIFT与XTuner的多模态大模型微调实战教程如何微调InternVL3.5 30B A3B基于SWIFT与XTuner的多模态大模型微调实战教程 本文是一份面向新手的 InternVL3.5 30B A创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑