概述
简述
CLIP (Contrastive Language-Image Pre-Training,以下简称 CLIP) 模型是 OpenAI 在 2021 年初发布的用于匹配图像和文本的预训练神经网络模型,是近年来在多模态研究领域的经典之作,可用于自然语言图像检索和zero-shot图像分类。
本文将介绍如何在COCO 2017数据集上进行CLIP模型的训练。
参考实现:
[object Object]
适配昇腾 AI 处理器的实现:
[object Object]
准备训练环境
准备环境
当前模型支持的 PyTorch 版本和已知三方库依赖如下表所示。
表 1 版本支持表
Torch_Version 三方库依赖版本 PyTorch 1.5 - PyTorch 1.8 - PyTorch 1.11 - 环境准备指导。
请参考《Pytorch框架训练环境准备》。
安装依赖。
在模型源码包根目录下执行命令,安装模型对应PyTorch版本需要的依赖。
[object Object]
安装transformers。
[object Object]
准备数据集
获取数据集。
请用户自行获取数据集,上传到服务器任意路径下并解压。本文以COCO2017数据集为例进行训练,数据集目录结构参考如下所示:
[object Object]
说明: 该数据集的训练过程脚本只作为一种参考示例。
获取预训练模型
本文使用clip-vit-base-patch32预训练模型,用户可在源码包根目录执行以下命令获取预训练模型。
[object Object]
执行以上代码,将会在CLIP_for_PyTorch模型根目录下生成clip-roberta文件夹,目录结构参考如下所示。
[object Object]
开始训练
训练模型
进入解压后的源码包根目录。
[object Object]
运行训练脚本。
该模型支持单机单卡训练、单机8卡训练和多机训练。
单机单卡训练
启动单卡训练。
[object Object]
单机8卡训练
启动8卡训练。
[object Object]
多机训练
请参考PyTorch模型多机多卡训练适配指南中的“多机多卡训练流程”-“准备环境”章节进行环境设置,然后在每台服务器上使用如下命令启动训练。
[object Object]
--data_path参数填写数据集路径,需写到数据集的一级目录,可参考上述启动命令;
--model_path参数填写预训练模型文件夹路径,可参考上述启动命令。
模型训练脚本参数说明如下。
[object Object]
训练完成后,权重文件保存在output_dir路径下,并输出模型训练精度和性能信息。
训练结果展示
表 2 训练结果展示表
NAME | eval loss | FPS | AMP_Type | Epochs | Batch Size |
---|---|---|---|---|---|
1p-竞品A | 1.7202 | 510 | O2 | 3 | 64 |
1p-NPU | 1.6863 | 440 | O2 | 3 | 64 |
1p-NPU_arm | 1.6863 | 310 | O2 | 3 | 64 |
8p-竞品A | 1.5994 | 3340 | O2 | 3 | 64 |
8p-NPU | 1.5812 | 2800 | O2 | 3 | 64 |
8p-NPU_arm | 1.5812 | 2200 | O2 | 3 | 64 |
版本说明
变更
2023.03.03:更新readme,重新发布。
2023.01.31:GPU基线使用DDP进行测试。
2023.01.16:添加集群训练脚本说明。
2022.12.20:首次发布。
FAQ
无。