open_clip 如何安装 training 依赖并用 CSV 数据跑通第一次单进程 CLIP 训练?
2026/9/15 11:18:57 网站建设 项目流程

open_clip 如何安装 training 依赖并用 CSV 数据跑通第一次单进程 CLIP 训练?

【免费下载链接】open_clipAn open source implementation of CLIP.项目地址: https://gitcode.com/GitHub_Trending/op/open_clip

这篇文章面向第一次使用 open_clip(OpenCLIP,CLIP 的开源实现)做训练的人:你需要安装训练所需的依赖,准备一份 CSV 图像-文本数据,然后按仓库给出的单进程示例命令跑通一次 CLIP 训练,并确认 checkpoint 和日志确实产生了。以下路径均来自 README.md 的 "Training CLIP" 章节及仓库内的依赖清单,适用于main分支当前使用的训练栈。

先确认版本前提:main 分支的训练栈与依赖基线

README.md 开头的Main branch training stack notice说明:main默认使用重构后的训练栈(TrainingTask封装、dict 形式的 batch、FSDP2 等)。如果你依赖的是旧的 release-stable 训练 API,README 建议钉住v3分支或 PyPI 上最新的 3.x 版本。本文按main分支的用法写。

依赖基线,README 与 pyproject.toml 中的明确要求:

  • Python>=3.9(pyproject.toml 中requires-python);
  • torch>=2.6。README 的 Dependency bump 说明最低版本从>=2.0提到>=2.6,从该版本起torch.load(weights_only=True)成为默认,仓库内所有 checkpoint 加载都显式传递weights_only=True
  • 一个行为变更需要知道:main--precision默认从amp变为amp_bf16,如需保持 fp16 AMP 要显式传--precision amp
  • 训练入口为python -m open_clip_train.main,README 提示可以用它加--help查看全部参数。

安装 training 依赖

主路径:安装 PyPI 发布包

README 建议先创建虚拟环境:

python3 -m venv .env source .env/bin/activate pip install -U pip

然后安装带 training 扩展的发布包(README "Training CLIP / Install" 原文命令):

pip install 'open_clip_torch[training]'

这个 extras 依赖 pyproject.toml 中的定义:torch>=2.6webdataset>=0.2.5,<=0.2.86pandastransformers[sentencepiece]timm>=1.0.29fsspec。PyTorch 本身的安装方式,README 建议按 PyTorch 官方本地安装指引执行(针对你的 CUDA 环境选择)。

可选分支:从源码安装

如果你克隆了 open_clip 仓库并准备修改代码(贡献流程),README 给出两条命令,均在创建虚拟环境后于仓库根目录执行:

make install make install-training

对照 Makefile:make install执行pip install -U pippip install -e .(可编辑安装本仓库);make install-training等价于pip install -r requirements-training.txt,即安装 requirements-training.txt 里的完整训练依赖清单:torch>=2.6torchvisionwebdatasetregexftfytqdmpandasbraceexpandhuggingface_hubsafetensorstransformers[sentencepiece]timm>=1.0.29fsspec

注意:源码安装不会替代 PyTorch 本体,仍需先按上面说明装好 torch。

准备 CSV 图像-文本数据

CSV 数据文件需要两列:一列是图像文件路径,一列是对应的 caption 文本。README 中 "Fine Tuning CoCa" 一节给出了生成这种 CSV 的方式:用 pandas 写出filepathtitle两列、以制表符分隔的 CSV。你训练时用的列名通过命令行参数映射到数据列:

  • --csv-img-key:CSV 中图像路径列的列名;
  • --csv-caption-key:CSV 中 caption 列的列名。

仓库的单进程示例命令显式使用--csv-img-key filepath --csv-caption-key title,即数据文件需有名为filepathtitle的列。列名不同时改这两个参数即可(参数定义见 src/open_clip_train/params.py)。训练和验证各需要一份这样的文件,分别传给--train-data--val-data。数据读取实现是 src/open_clip_train/data.py 中的CsvDataset,其加载格式可以对照单元测试 tests/test_data_csv.py 查看。

运行第一次单进程训练

下面是 README "Sample single-process running code" 的原始命令。单进程指直接用python -m open_clip_train.main启动(不使用torchrun),命令中所有/path/to/...都要替换成你的真实路径:

python -m open_clip_train.main \ --save-frequency 1 \ --zeroshot-frequency 1 \ --report-to tensorboard \ --train-data="/path/to/train_data.csv" \ --val-data="/path/to/validation_data.csv" \ --csv-img-key filepath \ --csv-caption-key title \ --imagenet-val=/path/to/imagenet/root/val/ \ --warmup 10000 \ --batch-size=128 \ --lr=1e-3 \ --wd=0.1 \ --epochs=30 \ --workers=8 \ --model RN50

命令中与数据直接相关的参数及 README 给出的使用说明:

  • --train-data/--val-data:训练与验证 CSV 的路径。如果你的数据要显式声明类型,可加上--dataset-type csv(README 在 CoCa 的 CSV 微调示例中就是这么传的);
  • --csv-img-key/--csv-caption-key:CSV 列名映射,与你的文件实际列名保持一致;
  • --imagenet-val:指向 ImageNet 的validation集(不是训练集),用于训练过程中的 zero-shot 评估。README 明确说明:如果不想在训练期间做 ImageNet zero-shot 评估,可以删除这个参数;并且val目录应包含子目录,否则需要用 README 提到的 valprep 脚本处理;
  • --model RN50:要训练的模型架构;README 提示其他模型(如ViT-B-32RN50x4)用同一参数指定;
  • --save-frequency 1/--zeroshot-frequency 1:示例命令中的保存与 zero-shot 评估频率,配合下文按 epoch 命名的 checkpoint 使用。

验证运行结果

判断这次运行是否"跑通",按 README 给出的一手依据检查三件事:

1. checkpoint 是否落盘。README "Resuming from a checkpoint" 与 "Evaluating local checkpoint" 两节都以epoch_K.pt形式的 checkpoint 文件为操作对象(如--resume /path/to/checkpoints/epoch_K.pt)。训练过程中按--save-frequency产生这样的文件,是最直接的完成标志。

2. TensorBoard 日志。命令里--report-to tensorboard会写入日志,README "Logging" 一节给出查看命令:

tensorboard --logdir=logs/tensorboard/ --port=7777

3. 用本地 checkpoint 做一次评估。README "Evaluating local checkpoint" 给出的示例命令(文档示例,--model需与训练所用模型架构一致,--pretrained指向你训练出的 checkpoint):

python -m open_clip_train.main \ --val-data="/path/to/validation_data.csv" \ --model RN101 \ --pretrained /path/to/checkpoints/epoch_K.pt

训练曲线方面,README 提供了一条参考曲线(文档示例:8 GPU 机器上训练 Conceptual Captions 的 zero-shot 曲线,非单进程首训的固定预期):

限制、恢复与下一步

  • 恢复训练:README 给出--resume /path/to/checkpoints/epoch_K.pt(也支持s3://等 fsspec 远端路径)。
  • main 分支 CLI 破坏性变更(README 明确列出):--horovod已移除;--torchscript--trace已移除;--precision默认值变为amp_bf16。如果你的脚本来自旧版本仓库,按 README 建议评估后切换到v3分支或 3.x 发布版,或使用 src/open_clip_train/legacy_main.py 对应的旧入口(README 将其定位为兼容垫片而非新训练工作的路径)。
  • 扩大规模:多 GPU 用torchrun --nproc_per_node N -m open_clip_train.main ...启动(README "Single-Node" 一节);README 推荐更大规模数据集使用 WebDataset(.tar分片)而不是 CSV。

跑通单进程 CSV 训练后的自然下一步就是上面这条恢复/评估路径:确认epoch_K.pt可被--pretrained加载并产出评估结果,再考虑多卡或 WebDataset 数据源。

【免费下载链接】open_clipAn open source implementation of CLIP.项目地址: https://gitcode.com/GitHub_Trending/op/open_clip

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

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

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

立即咨询