本项目实现了一条完整的「0-shot → 1-shot」性能提升流水线:
借助注册表与配置文件,本项目可以方便地替换数据集、模型或损失函数,快速迭代 In-Context Learning (ICL) 方案。
pipeline.py:主入口,串联配置读取、模型加载、采样器和训练流程。config/:实验超参、模型和数据集的 YAML 配置。dataset/:VQAv2 构建器与 torch.utils.data.Dataset 实现,负责缓存样本元数据并注入图像处理器。sampler/:ZeroshotSampler、OneShotSampler 与 TopKSampler,覆盖评分、挖掘和检索。model/:可插拔的特征提取器(Extractor),通过注册表动态创建。loss/:当前使用的三元组相似度损失,可按需扩展。utils/:配置读取、随机种子、工厂注册、训练循环和 Triplet 数据集包装。data/:期望存放 VQAv2 与 MSCOCO 原始文件的目录(示例数据未随仓库分发)。创建 Conda 环境
conda env create -f environment.yaml
conda activate openflamingo
准备额外依赖
huggingface-cli login 以访问 anas-awadalla/mpt-1b-redpajama-200b。pip install -e . 的方式将本项目注册为包,方便多处导入。默认配置期望以下目录结构(均位于仓库根目录下的 data/):
data/
├── vqav2
│ ├── v2_OpenEnded_mscoco_train2014_questions.json
│ ├── v2_OpenEnded_mscoco_val2014_questions.json
│ ├── v2_mscoco_train2014_annotations.json
│ └── v2_mscoco_val2014_annotations.json
└── coco
├── train2014/COCO_train2014_000000xxxxxx.jpg
└── val2014/COCO_val2014_000000xxxxxx.jpg
建议步骤:
从 VQAv2 官方页面 下载题目与标注文件,放入 data/vqav2/。
下载 COCO 2014 的 train2014 与 val2014 图像集,放入 data/coco/。
若磁盘上已有数据,可通过软链接的方式接入,例如:
ln -s /path/to/vqa data/vqav2
ln -s /path/to/coco2014 data/coco
首次构建数据集会在 data/checkpoint/ 下缓存过滤后的样本列表,后续运行会自动复用。
config/experiment/main.yaml:实验级超参(数据集别名、margin、loss 名称、学习率、batch size、epochs 等)。config/model/extractor.yaml:Extractor 的隐藏维度、头数及输出维度。config/dataset/vqav2.yaml:数据路径与文件名,可在此切换不同数据分割或目录。你可以通过新增配置文件并在运行脚本时替换 --exp_config 与 --model_config 参数来管理多组实验。
激活环境并确认 GPU 可见(nvidia-smi)。
运行主脚本:
python pipeline.py \
--exp_config config/experiment/main.yaml \
--model_config config/model/extractor.yaml \
--seed 42
脚本将依次执行:
config/dataset/vqav2.yaml 构建训练、验证集。TopKSampler 为验证集检索 top-1 示例,并重新评估 one-shot 准确率。pipeline.py 中将 dataset.build 替换为 Subset 以快速验证流程。main.yaml 中的 margin 控制正负样本阈值,值越大越严格,但 TripletDataset 样本数会减少。data/checkpoint/vqav2_*.pt 以重新生成缓存。FeatureExtractorTrainer 中加入记录逻辑。batch_size、缩小数据子集或启用混合精度(需自行在代码中添加 torch.cuda.amp)。python -c "import open_clip; open_clip.create_model_and_transforms('ViT-L-14')" 进行预热下载。4 commits
Python
100.0%
本项目实现了一条完整的「0-shot → 1-shot」性能提升流水线:
借助注册表与配置文件,本项目可以方便地替换数据集、模型或损失函数,快速迭代 In-Context Learning (ICL) 方案。
pipeline.py:主入口,串联配置读取、模型加载、采样器和训练流程。config/:实验超参、模型和数据集的 YAML 配置。dataset/:VQAv2 构建器与 torch.utils.data.Dataset 实现,负责缓存样本元数据并注入图像处理器。sampler/:ZeroshotSampler、OneShotSampler 与 TopKSampler,覆盖评分、挖掘和检索。model/:可插拔的特征提取器(Extractor),通过注册表动态创建。loss/:当前使用的三元组相似度损失,可按需扩展。utils/:配置读取、随机种子、工厂注册、训练循环和 Triplet 数据集包装。data/:期望存放 VQAv2 与 MSCOCO 原始文件的目录(示例数据未随仓库分发)。创建 Conda 环境
conda env create -f environment.yaml
conda activate openflamingo
准备额外依赖
huggingface-cli login 以访问 anas-awadalla/mpt-1b-redpajama-200b。pip install -e . 的方式将本项目注册为包,方便多处导入。默认配置期望以下目录结构(均位于仓库根目录下的 data/):
data/
├── vqav2
│ ├── v2_OpenEnded_mscoco_train2014_questions.json
│ ├── v2_OpenEnded_mscoco_val2014_questions.json
│ ├── v2_mscoco_train2014_annotations.json
│ └── v2_mscoco_val2014_annotations.json
└── coco
├── train2014/COCO_train2014_000000xxxxxx.jpg
└── val2014/COCO_val2014_000000xxxxxx.jpg
建议步骤:
从 VQAv2 官方页面 下载题目与标注文件,放入 data/vqav2/。
下载 COCO 2014 的 train2014 与 val2014 图像集,放入 data/coco/。
若磁盘上已有数据,可通过软链接的方式接入,例如:
ln -s /path/to/vqa data/vqav2
ln -s /path/to/coco2014 data/coco
首次构建数据集会在 data/checkpoint/ 下缓存过滤后的样本列表,后续运行会自动复用。
config/experiment/main.yaml:实验级超参(数据集别名、margin、loss 名称、学习率、batch size、epochs 等)。config/model/extractor.yaml:Extractor 的隐藏维度、头数及输出维度。config/dataset/vqav2.yaml:数据路径与文件名,可在此切换不同数据分割或目录。你可以通过新增配置文件并在运行脚本时替换 --exp_config 与 --model_config 参数来管理多组实验。
激活环境并确认 GPU 可见(nvidia-smi)。
运行主脚本:
python pipeline.py \
--exp_config config/experiment/main.yaml \
--model_config config/model/extractor.yaml \
--seed 42
脚本将依次执行:
config/dataset/vqav2.yaml 构建训练、验证集。TopKSampler 为验证集检索 top-1 示例,并重新评估 one-shot 准确率。pipeline.py 中将 dataset.build 替换为 Subset 以快速验证流程。main.yaml 中的 margin 控制正负样本阈值,值越大越严格,但 TripletDataset 样本数会减少。data/checkpoint/vqav2_*.pt 以重新生成缓存。FeatureExtractorTrainer 中加入记录逻辑。batch_size、缩小数据子集或启用混合精度(需自行在代码中添加 torch.cuda.amp)。python -c "import open_clip; open_clip.create_model_and_transforms('ViT-L-14')" 进行预热下载。4 commits
Python
100.0%