☰
MiniGPT-4 第二阶段对齐数据集(cc_sbu_align)准备与配置指南
2026/9/30 1:49:52 网站建设 项目流程
  • 人工智能
  • 大模型
  • 多模态
  • 计算机视觉
  • NLP
  • 微调
  • AI 应用

【免费下载链接】MiniGPT-4

Open-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
点击查看免费下载

导读

本篇指南围绕 dataset/README_2_STAGE.md 讲解 MiniGPT-4 第二阶段(对齐微调)训练数据的下载、解压与路径配置全流程:下载官方提供的cc_sbu_align对齐数据集、将其放置到本地任意目录,并在 align.yaml 中正确指向该目录。同时,本文将结合仓库源码(数据集构建器与 Dataset 实现)说明该数据集在训练时究竟如何被加载,并串联第一阶段预训练数据的准备步骤,帮助你打通从原始语料到可训练数据管线的完整链路。读完本文,你将能独立完成 MiniGPT-4 两阶段训练所需全部数据的准备与配置。

一、两阶段训练与第二阶段数据的角色

MiniGPT-4 的训练分为两个阶段:

  • 第一阶段(预训练):在大规模图文对数据(CC3M、CC12M、SBU、LAION115M)上对齐视觉编码器与 LLM 的投影层,让模型学会"看图说话"。对应配置见 train_configs/minigpt4_stage1_pretrain.yaml。
  • 第二阶段(对齐微调):在人工筛选的高质量图文对齐数据上进行微调,让模型输出更像自然对话。本文的主角cc_sbu_align正是这一阶段使用的数据集。

cc_sbu_align由官方提供(下载链接见 dataset/README_2_STAGE.md 正文第一段),它包含过滤后的图像与对应描述,是保证第二阶段训练效果的基础。

二、第二阶段数据集结构

从官方链接下载压缩包并解压后,你会得到一个具有如下结构的文件夹:

cc_sbu_align ├── filter_cap.json └── image ├── 2.jpg ├── 3.jpg ...

各部分作用如下:

路径作用
cc_sbu_align/filter_cap.json过滤后的图文标注文件,每条记录包含image_id与caption字段,用于训练时提供文本监督
cc_sbu_align/image/图像文件目录,文件名形如2.jpg、3.jpg,与filter_cap.json中的image_id一一对应

将整个cc_sbu_align文件夹放置到任意你希望存放的路径即可,无需固定在仓库内。

三、配置数据集路径:align.yaml

第二步是让训练框架知道数据放在哪里。在数据集配置文件 minigpt4/configs/datasets/cc_sbu/align.yaml 的第 5 行(build_info.storage字段)填入你的实际路径:

datasets: cc_sbu_align: data_type: images build_info: storage: /path/to/cc_sbu_align/

例如,若你将数据解压到了/data/datasets/cc_sbu_align,则第 5 行应写为:

storage: /data/datasets/cc_sbu_align/

注意:这里storage指向的是cc_sbu_align文件夹本身(而非其内部的image子目录),因为源码会在此基础上自动拼接filter_cap.json与image两个子路径(详见下文)。

四、源码视角:cc_sbu_align 是如何被加载的

理解配置项的含义,最直接的方式是查看数据是如何被读取的。

4.1 构建器:从 storage 派生标注与图像路径

在 minigpt4/datasets/builders/image_text_pair_builder.py 中,CCSBUAlignBuilder读取build_info.storage并拼接出两个关键路径:

storage_path = build_info.storage datasets['train'] = dataset_cls( vis_processor=self.vis_processors["train"], text_processor=self.text_processors["train"], ann_paths=[os.path.join(storage_path, 'filter_cap.json')], vis_root=os.path.join(storage_path, 'image'), )

可以看到:

  • 标注文件:{storage}/filter_cap.json;
  • 图像根目录:{storage}/image。

这与上面提到的cc_sbu_align目录结构完全对应,也解释了为什么align.yaml的storage要填到cc_sbu_align/这一层而不是image/层。同时,构建器会检查storage_path是否存在,若不存在会打印warnings.warn("storage path {} does not exist."),方便你排查路径写错的问题。

4.2 Dataset 实现:按 image_id 拼接图像路径

在 minigpt4/datasets/datasets/cc_sbu_dataset.py 中,CCSBUAlignDataset继承自CaptionDataset,其__getitem__逻辑为:

ann = self.annotation[index] img_file = '{}.jpg'.format(ann["image_id"]) image_path = os.path.join(self.vis_root, img_file) image = Image.open(image_path).convert("RGB") image = self.vis_processor(image) caption = ann["caption"] return {"image": image, "answer": caption, "image_id": self.img_ids[ann["image_id"]]}

即:每条样本依据filter_cap.json中的image_id在image/目录下找到对应{image_id}.jpg文件,读取后经视觉处理器(vis_processor)变换,与caption组成训练样本。因此filter_cap.json与image/必须保持同步,二者缺一不可。

4.3 与第一阶段的加载方式差异

值得对比的是:第一阶段数据(laion、cc_sbu)走的是WebDataset管线(minigpt4/datasets/datasets/laion_dataset.py 与 cc_sbu_dataset.py),通过wds.ResampledShards加载 tar 分片、wds.shuffle(1000)打乱、wds.to_tuple("jpg", "json")取出图像与标注;而第二阶段cc_sbu_align使用常规的CaptionDataset逐条索引读取。这一差异也反映在配置上:第一阶段配置指向{00000..01255}.tar这样的分片通配符,第二阶段配置则指向普通目录。

五、完整流程:从第一阶段数据到第二阶段数据的端到端准备

虽然本文聚焦第二阶段,但 MiniGPT-4 的两阶段训练是一体化的,第一阶段数据的准备步骤同样记录在同目录文档 dataset/README_1_STAGE.md 中。为保证整体流程完整可复现,这里一并整理。

5.1 下载第一阶段过滤标注

第一阶段使用 BLIP 过滤后的合成标题(synthetic captions)。所需 JSON 标注文件(ccs_synthetic_filtered_large.json与laion_synthetic_filtered_large.json)的下载地址见 dataset/README_1_STAGE.md 中的表格。请注意:完整存放 CC3M+CC12M+SBU 与 LAION115M 数据集约需2.3 TB存储空间,请提前规划磁盘。

5.2 分步准备命令

以下命令序列来自 dataset/README_1_STAGE.md,展示了从整理目录到最终生成数据集的完整操作:

# 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}/laion # 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 # 3) 将标注转换为 img2dataset 可识别的 TSV 格式 cd ${MINIGPT4_DATASET}/cc_sbu python convert_cc_sbu.py cd ${MINIGPT4_DATASET}/laion python convert_laion.py # 4) 使用 img2dataset 下载图像并打包为 tar/parquet 分片 cd ${MINIGPT4_DATASET}/cc_sbu sh download_cc_sbu.sh cd ${MINIGPT4_DATASET}/laion sh download_laion.sh

其中转换脚本就位于仓库 dataset/convert_cc_sbu.py 与 dataset/convert_laion.py:它们将 BLIP 的 JSON 标注读取后,用csv.writer(delimiter='\t')写出带表头的 TSV 文件(ccs_synthetic_filtered_large.tsv/laion_synthetic_filtered_large.tsv),供 img2dataset 消费。

5.3 第一阶段最终目录结构

完成上述步骤后,你的数据目录应呈现如下结构:

. ├── ${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 │ ... ...

5.4 配置第一阶段数据集路径

随后在 minigpt4/configs/datasets/laion/defaults.yaml 的第 5 行填入 LAION 分片通配路径:

storage: ${MINIGPT4_DATASET}/laion/laion_dataset/{00000..10488}.tar

并在 minigpt4/configs/datasets/cc_sbu/defaults.yaml 的第 5 行填入 CC/SBU 分片通配路径:

storage: ${MINIGPT4_DATASET}/cc_sbu/cc_sbu_dataset/{00000..01255}.tar

这里的花括号{00000..10488}是 WebDataset 的分片序号通配语法,对应wds.ResampledShards(location)需要接收的分片列表模式,路径中的${MINIGPT4_DATASET}需替换为你实际设置的绝对路径。

六、训练配置中数据集的使用方式

数据就绪后,第一阶段训练配置 train_configs/minigpt4_stage1_pretrain.yaml 中会同时挂载laion与cc_sbu两个数据集:

datasets: laion: batch_size: 64 vis_processor: train: name: "blip2_image_train" image_size: 224 text_processor: train: name: "blip_caption" sample_ratio: 115 cc_sbu: batch_size: 64 vis_processor: train: name: "blip2_image_train" image_size: 224 text_processor: train: name: "blip_caption" sample_ratio: 14

要点解读:

  • sample_ratio:laion为 115、cc_sbu为 14,表示两个数据集在训练时的采样配比,用于平衡 LAION115M 与 CC3M+CC12M+SBU 的数量级差异;
  • vis_processor:使用blip2_image_train,输入图像统一缩放到 224×224,与 blip_processors.py 中定义的 BLIP2 图像处理器对应;
  • text_processor:使用blip_caption处理文本监督信号。

第二阶段(对齐微调)则通过 minigpt4_stage2_finetune.yaml 引用cc_sbu_align数据集,其路径来源正是本文第三节配置的 align.yaml。

七、配置检查清单

完成两阶段数据准备后,请逐项核对:

  1. 目录结构:cc_sbu_align/下同时存在filter_cap.json与image/,且filter_cap.json中每条记录的image_id都能在image/下找到同名{image_id}.jpg;
  2. 路径层级:align.yaml的storage指向cc_sbu_align/根目录(不是image/),因为 CCSBUAlignBuilder 会自动拼接filter_cap.json与image;
  3. 分片通配符:第一阶段 defaults.yaml 的 storage 必须写成{00000..01255}.tar形式的通配路径,与下载得到的实际分片数量匹配,否则wds.ResampledShards无法定位数据;
  4. 磁盘空间:第一阶段全套数据约需 2.3 TB,第二阶段cc_sbu_align较小,但仍需确认剩余空间充足;
  5. 相对路径问题:训练时使用的所有路径建议写成绝对路径,避免工作目录切换导致找不到数据。

按照上述流程完成下载、解压、路径配置后,即可在train.py中启动对应阶段的训练,让数据管线(构建器 → Dataset → 处理器)按预期工作。

  • 人工智能
  • 大模型
  • 多模态
  • 计算机视觉
  • NLP
  • 微调
  • AI 应用

【免费下载链接】MiniGPT-4

Open-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
点击查看免费下载

相关推荐

上一篇:CN-GreenLumaGUI:点两下鼠标就能用的 GreenLuma 中文图形界面
下一篇:Tailwind CSS Typography未来展望:排版技术的演进方向与终极指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询