从数据准备到实战配置)
人工智能大模型多模态计算机视觉NLP微调AI 应用【免费下载链接】MiniGPT-4Open-sourced codes for MiniGPT-4 and MiniGPT-v2 (https://minigpt-4.github.io, https://minigpt-v2.github.io/)项目地址https://gitcode.com/gh_mirrors/mi/MiniGPT-4点击查看免费下载导读本文以仓库根目录的 MiniGPT4_Train.md 为骨架系统讲解 MiniGPT-4 完整的训练流程——先用 LAION / CC 大规模图文对完成视觉-语言特征对齐Stage 1 预训练再用自建的高质量对话式图文数据进一步微调Stage 2。读完本文你将掌握两个阶段的数据集下载与转换、配置文件逐字段含义、torchrun启动命令以及训练链路在 train.py 与 minigpt4/models/minigpt4.py 中的底层实现原理。一、训练总览MiniGPT-4 的两阶段对齐架构MiniGPT-4 的训练不是一个端到端从头训练的过程而是包含**两个对齐阶段two alignment stages**的流水线阶段名称训练数据目标官方实验硬件Stage 1特征预训练pretrainingLAION、CC3MCC12MSBU 图文对将视觉特征映射并送入语言模型让 LLM 读懂图像特征4 × A100Stage 2对话式微调finetuning自建的高质量图文对并转换为对话格式让模型围绕图像进行连贯、友好的对话1 × A100其思想与 BLIP-2 一脉相承Stage 1 只解决视觉特征 → 语言模型可理解的表示的映射问题因此该阶段产出的 checkpoint 在生成时经常出现不完整或重复的句子官方文档明确说明仅经过 Stage 1 的 checkpoint 会频繁生成不完整和重复的句子只有经过 Stage 2 的对话式对齐后MiniGPT-4 才能围绕图像进行连贯、用户友好的对话。从源码可以印证这种两阶段分工的设计。在 minigpt4/models/minigpt4.py 中MiniGPT4模型通过PRETRAINED_MODEL_CONFIG_DICT注册了pretrain_vicuna0与pretrain_llama2两种模型配置模型的完整结构为EVA-CLIP ViT-G 视觉编码器 → Q-Former带交叉注意力→ 线性投影层llama_proj→ Vicuna LLM视觉编码器与 Q-Former 在训练中默认冻结freeze_vit: True、freeze_qformer: True见 minigpt4/configs/models/minigpt4_vicuna0.yamlQ-Former 初始权重来自 BLIP-2 的 FlanT5-XXL 预训练 checkpointllama_proj是一个将图像特征维度映射到 LLM 隐藏维度的线性层见 minigpt4.py两阶段实际训练的都是这条视觉→语言的投影通路只是数据规模、学习率与训练目标不同。⚠️ 需要特别说明该模型配置还要求在 minigpt4_vicuna0.yaml 中将llama_model设置为本地 Vicuna 模型的路径这是加载与训练的前提条件。二、Stage 1 数据准备LAION 与 CC/SBU 数据集第一阶段的数据准备工作记录在 dataset/README_1_STAGE.md 中。MiniGPT-4 沿用了 BLIP 项目使用 ViT-L 生成的过滤合成字幕filtered synthetic captions需要下载两个 JSON 标注文件图像来源标注文件CC3M CC12M SBUccs_synthetic_filtered_large.jsonLAION115Mlaion_synthetic_filtered_large.json磁盘需求LAION 与 CC3MCC12MSBU 数据集合计存储约需2.3TB请务必为数据目录预留充足空间。2.1 建立数据目录并归档标注文件export MINIGPT4_DATASET/YOUR/PATH/FOR/LARGE/DATASET/ mkdir ${MINIGPT4_DATASET}/cc_sbu mkdir ${MINIGPT4_DATASET}/laion mv ccs_synthetic_filtered_large.json ${MINIGPT4_DATASET}/cc_sbu mv laion_synthetic_filtered_large.json ${MINIGPT4_DATASET}/laion2.2 拷贝转换脚本cp convert_cc_sbu.py ${MINIGPT4_DATASET}/cc_sbu cp download_cc_sbu.sh ${MINIGPT4_DATASET}/cc_sbu cp convert_laion.py ${MINIGPT4_DATASET}/laion cp download_laion.sh ${MINIGPT4_DATASET}/laion其中convert_cc_sbu.py与convert_laion.py位于仓库的 dataset/ 目录其作用是把 BLIP 的 JSON 标注转换为 img2dataset 所需的TSV格式两脚本逻辑一致读取 JSON 列表用csv模块以\t分隔写出 TSV见 convert_cc_sbu.py。download_cc_sbu.sh/download_laion.sh为下载脚本需从数据集对应目录准备。2.3 转换标注格式并下载图片cd ${MINIGPT4_DATASET}/cc_sbu python convert_cc_sbu.py cd ${MINIGPT4_DATASET}/laion python convert_laion.py cd ${MINIGPT4_DATASET}/cc_sbu sh download_cc_sbu.sh cd ${MINIGPT4_DATASET}/laion sh download_laion.sh下载完成后最终数据集目录结构如下. ├── ${MINIGPT4_DATASET} │ ├── cc_sbu │ │ ├── convert_cc_sbu.py │ │ ├── download_cc_sbu.sh │ │ ├── ccs_synthetic_filtered_large.json │ │ ├── ccs_synthetic_filtered_large.tsv │ │ └── cc_sbu_dataset │ │ ├── 00000.tar │ │ ├── 00000.parquet │ │ ... │ ├── laion │ │ ├── convert_laion.py │ │ ├── download_laion.sh │ │ ├── laion_synthetic_filtered_large.json │ │ ├── laion_synthetic_filtered_large.tsv │ │ └── laion_dataset │ │ ├── 00000.tar │ │ ├── 00000.parquet │ │ ... ...2.4 配置数据集加载路径最后需要在两个数据集配置文件中把storage改为实际路径保持通配符{00000..xxxxx}.tar的 img2dataset 分片格式LAIONminigpt4/configs/datasets/laion/defaults.yaml 第 5 行改为${MINIGPT4_DATASET}/laion/laion_dataset/{00000..10488}.tarCC/SBUminigpt4/configs/datasets/cc_sbu/defaults.yaml 第 5 行改为${MINIGPT4_DATASET}/cc_sbu/cc_sbu_dataset/{00000..01255}.tar。三、Stage 1 预训练配置详解与启动第一阶段训练的配置文件是 train_configs/minigpt4_stage1_pretrain.yaml训练输出目录等路径均可在此修改。完整配置及字段含义如下model: arch: minigpt4 # 模型架构MiniGPT-4 model_type: pretrain_vicuna0 # 对应 configs/models/minigpt4_vicuna0.yaml datasets: laion: # LAION 图文对数据集 batch_size: 64 vis_processor: train: name: blip2_image_train # 视觉处理器BLIP-2 训练预处理 image_size: 224 text_processor: train: name: blip_caption # 文本处理器BLIP 字幕处理 sample_ratio: 115 # 采样权重LAION 相对权重 115 cc_sbu: # CC3MCC12MSBU 图文对数据集 batch_size: 64 vis_processor: train: name: blip2_image_train image_size: 224 text_processor: train: name: blip_caption sample_ratio: 14 # 采样权重CC/SBU 相对权重 14 run: task: image_text_pretrain # optimizer lr_sched: linear_warmup_cosine_lr # 学习率调度线性预热 余弦退火 init_lr: 1e-4 # 初始学习率 min_lr: 8e-5 # 最小学习率 warmup_lr: 1e-6 # 预热起始学习率 weight_decay: 0.05 max_epoch: 4 # 最大训练轮数 num_workers: 4 # 数据加载进程数 warmup_steps: 5000 # 预热步数 iters_per_epoch: 5000 # 每轮迭代步数 seed: 42 output_dir: output/minigpt4_stage1_pretrain # 输出/保存路径 amp: True # 混合精度训练 resume_ckpt_path: null # 断点续训路径默认不启用 evaluate: False train_splits: [train] device: cuda world_size: 1 dist_url: env:// # 分布式初始化方式 distributed: True wandb_log: True # 是否使用 wandb 记录 job_name: minigpt4_pretrain # wandb 任务名3.1 启动命令torchrun --nproc-per-node NUM_GPU train.py --cfg-path train_configs/minigpt4_stage1_pretrain.yaml其中NUM_GPU替换为实际使用的 GPU 数量官方实验使用 4 张 A100。训练结束后模型 checkpoint 会保存到output_dir指定的目录中。3.2 关于 Stage 1 单独的 checkpoint官方提供了仅含 Stage 1 训练的 MiniGPT-4 checkpoint13B 与 7B 两个版本可从项目官方分享渠道获取。需要再次强调该 checkpoint 未经 Stage 2 对齐生成时频繁出现不完整、重复的句子它更适合作为 Stage 2 微调的初始化权重而不是直接用于对话演示。四、Stage 2 数据准备对话式对齐数据集第二阶段使用一个自建的小规模高质量图文对数据集并将其转换为对话格式。数据准备说明见 dataset/README_2_STAGE.md。下载并解压后会得到一个如下结构的数据目录cc_sbu_align ├── filter_cap.json # 过滤后的图文标注对话格式 └── image ├── 2.jpg ├── 3.jpg ...将整个cc_sbu_align目录放到任意路径然后在数据集配置文件 minigpt4/configs/datasets/cc_sbu/align.yaml 的第 5 行设置storage为该目录的绝对路径datasets: cc_sbu_align: data_type: images build_info: storage: /path/to/cc_sbu_align/ # 改为实际解压目录五、Stage 2 微调配置详解与启动第二阶段配置文件为 train_configs/minigpt4_stage2_finetune.yaml。与 Stage 1 相比它的关键差异在于引入了对话式 prompt 模板、更长的文本长度限制并且必须指定 Stage 1 的 checkpoint 路径ckpt字段。model: arch: minigpt4 model_type: pretrain_vicuna0 max_txt_len: 160 # 生成/回归的最大文本长度 end_sym: ### # 对话结束符号 prompt_path: prompts/alignment.txt # 训练 prompt 列表 prompt_template: ###Human: {} ###Assistant: # 对话模板 ckpt: /path/to/stage1/checkpoint/ # ★ 改为 Stage 1 训练出的 checkpoint 路径 datasets: cc_sbu_align: batch_size: 12 vis_processor: train: name: blip2_image_train image_size: 224 text_processor: train: name: blip_caption run: task: image_text_pretrain # optimizer lr_sched: linear_warmup_cosine_lr init_lr: 3e-5 # 更小的学习率 min_lr: 1e-5 warmup_lr: 1e-6 weight_decay: 0.05 max_epoch: 5 iters_per_epoch: 200 # 小数据集每轮迭代数少 num_workers: 4 warmup_steps: 200 seed: 42 output_dir: output/minigpt4_stage2_finetune amp: True resume_ckpt_path: null evaluate: False train_splits: [train] device: cuda world_size: 1 dist_url: env:// distributed: True wandb_log: True job_name: minigpt4_finetune5.1 关键配置项说明ckptStage 2 必填指向 Stage 1 产出的 checkpoint。源码中 minigpt4.py 的from_config会读取该路径并执行torch.loadload_state_dict(ckpt[model], strictFalse)完成权重加载官方文档中的描述对应字段即此ckpt它位于 Stage 2 配置文件中。prompt_path与prompt_template训练 prompt 列表来自 prompts/alignment.txt例如ImgImageHere/Img Describe this image in detail.模型只会保留包含ImageHere占位符的 prompt见 minigpt4.py并套用###Human: {} ###Assistant:模板构造指令。ImageHere是图像嵌入的插入点运行时由 minigpt_base.py 的get_context_emb/prompt_wrap将图像嵌入与文本 token 嵌入交错拼接。max_txt_len: 160、end_sym: ###控制回答长度与回答终止符配合tokenize_conversationminigpt_base.py实现只对回答部分计算损失、对问题部分掩码的对话式训练目标——targets中问题 token 被置为-100从而保证模型只回归回答内容。5.2 启动命令torchrun --nproc-per-node NUM_GPU train.py --cfg-path train_configs/minigpt4_stage2_finetune.yaml官方实验使用 1 张 A100 即可完成该阶段。Stage 2 完成后MiniGPT-4 便能够围绕图像进行连贯、用户友好的对话。六、从源码理解训练运行链路无论哪个阶段训练入口都是仓库根目录的 train.py其完整流程为命令行解析train.py--cfg-path必填指定配置文件--options支持以xxxyyy键值对形式覆盖配置官方标注为已弃用建议直接在 yaml 中修改。配置加载Config(args)读取 yaml之后init_distributed_mode初始化分布式环境dist_url: env://配合torchrun注入的环境变量。种子设置setup_seeds以seed rank为基准固定随机种子并开启cudnn.deterministic保证可复现train.py。构建任务、数据集与模型tasks.setup_task(cfg)→task.build_datasets(cfg)→task.build_model(cfg)。其中模型注册与构建由minigpt4/models/__init__.py与MiniGPT4.from_config完成数据集由minigpt4/datasets/builders/中的 builder 按配置文件加载 tar 分片。wandb 可选记录当run.wandb_log: True时自动wandb.login()并以job_name初始化项目train.py如无 wandb 账号可改为False。执行训练runner.train()runner 为 epoch-based 的runner_base见 minigpt4/runners/runner_base.py每个 batch 调用模型forward在 minigpt_base.py 的forward中完成图像编码 → prompt 包装 → 输入/输出嵌入拼接 → 添加 BOS → 以掩码后的targets计算交叉熵损失。七、两阶段配置速查与实操要点对比项Stage 1 预训练Stage 2 微调配置文件minigpt4_stage1_pretrain.yamlminigpt4_stage2_finetune.yaml数据集laion cc_sbusample_ratio115 : 14cc_sbu_align对话格式batch_size64 × 212init_lr / min_lr1e-4 / 8e-53e-5 / 1e-5max_epoch / iters_per_epoch4 / 50005 / 200warmup_steps5000200文本长度默认32max_txt_len: 160end_sym: ###ckpt不加载加载 Stage 1 checkpoint官方硬件4 × A1001 × A100效果视觉特征可被 LLM 理解但生成易重复/不完整连贯、用户友好的图像对话实操要点汇总先补 Vicuna 权重在 minigpt4_vicuna0.yaml 中设置llama_model为本地 Vicuna 路径否则模型无法加载。磁盘规划Stage 1 数据集约需 2.3TBStage 2 数据集规模小路径自由指定。路径三处必改laion/defaults.yaml的storage、cc_sbu/defaults.yaml的storage、Stage 2 的ckpt。硬件与精度官方实验 Stage 1 用 4 × A100、Stage 2 用 1 × A100两者均开启amp: True混合精度如需低资源训练可关注 minigpt4.py 中的low_resource/device_8bit参数8bit 量化并将 ViT 放到 CPU。断点续训如需从中断处恢复可将resume_ckpt_path指向已有 checkpoint。训练后验证训练完成后可使用仓库根目录的 demo.py 加载最终 checkpoint 进行对话式图文演示验证 Stage 2 对齐效果。结语MiniGPT-4 的训练精髓在于先大规模对齐、再高质量对话化的两阶段设计Stage 1 用海量 LAION/CC 图文对教会语言模型看懂视觉特征Stage 2 用少量精心构造的对话数据教会模型好好说话。本文给出的所有配置均来自仓库真实文件train_configs/、dataset/、minigpt4/configs/datasets/启动命令可直接复制运行若想进一步深入源码建议对照 train.py → minigpt4.py → minigpt_base.py 的调用链逐层阅读。赞分享人工智能大模型多模态计算机视觉NLP微调AI 应用【免费下载链接】MiniGPT-4Open-sourced codes for MiniGPT-4 and MiniGPT-v2 (https://minigpt-4.github.io, https://minigpt-v2.github.io/)项目地址https://gitcode.com/gh_mirrors/mi/MiniGPT-4点击查看免费下载相关推荐掌握MiniGPT-4双阶段训练从预训练到微调的完整指南掌握MiniGPT 4双阶段训练从预训练到微调的完整指南 你还在为多模态模型训练的复杂流程感到困惑吗训练资源不足、参数调优困难、模型效果不佳本文将带你一步人工智能大模型多模态计算机视觉NLP微调AI 应用SoundCloud音乐下载终极指南如何用scdl轻松收藏高品质音乐SoundCloud音乐下载终极指南如何用scdl轻松收藏高品质音乐 你是否在SoundCloud上发现了一首惊艳的独立音乐却苦于无法下载保存作为全球最大CLI音频网页爬虫LLaVA 训练与微调实战指南从两阶段预训练到自定义数据指令微调LLaVA 训练与微调实战指南从两阶段预训练到自定义数据指令微调 LLaVALarge Language and Vision Assistant是当前视AI 技能人工智能大模型深度学习上一篇从硬件报告到能启动的 OpenCore EFI 只要十分钟OpCore-Simplify 新手指南下一篇3 条命令读懂陌生代码库Understand-Anything 代码知识图谱实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考