下载
中文
注册
CLIP_transformers-PyTorch

概述

简述

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]

准备数据集

  1. 获取数据集。

    请用户自行获取数据集,上传到服务器任意路径下并解压。本文以COCO2017数据集为例进行训练,数据集目录结构参考如下所示:

    [object Object]

    说明: 该数据集的训练过程脚本只作为一种参考示例。

获取预训练模型

  1. 本文使用clip-vit-base-patch32预训练模型,用户可在源码包根目录执行以下命令获取预训练模型。

    [object Object]
  2. 执行以上代码,将会在CLIP_for_PyTorch模型根目录下生成clip-roberta文件夹,目录结构参考如下所示。

    [object Object]

开始训练

训练模型

  1. 进入解压后的源码包根目录。

    [object Object]
  2. 运行训练脚本。

    该模型支持单机单卡训练、单机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

无。

使用模型资源和服务前,请您仔细阅读并理解透彻 《昇腾深度学习模型许可协议 3.0》