Hugging Face Optimum Graphcore 上的视觉 Transformer
Hugging Face 和 Graphcore 已将 Vision Transformer (ViT) 模型集成到 Hugging Face Optimum Graphcore 库中,使用户能够在 Graphcore 智能处理单元 (IPU) 上微调这些模型。此集成通过将预训练的 ViT 检查点与针对 IPU 的硬件加速相结合,简化了高性能计算机视觉模型的部署。
视觉 Transformer (ViT) 架构
视觉 Transformer (ViT) 将最初为自然语言处理 (NLP) 模型(如 BERT 和 GPT)开发的自注意力机制应用于图像识别。与使用像素阵列的卷积神经网络 (CNN) 不同,ViT 模型将输入图像划分为小块(视觉标记)。每个块被线性编码为向量表示,随后由 Transformer 单独处理。
ViT 方法的关键特性包括:
- 特征提取:预训练使 ViT 能够学习图像的内部表示。可以在预训练的视觉编码器(通常是 [CLS] 标记)之上添加线性层,以执行下游分类任务。
- 性能:与 CNN 相比,ViT 模型能够以更低的计算成本实现更高的识别准确率。
- 应用:ViT 被广泛用于各个领域,包括目标检测、分割以及医疗诊断(例如 COVID-19、乳腺癌和阿尔茨海默病的检测)。
为 Graphcore IPU 优化 ViT
Graphcore IPU 针对 ViT 模型的高度并行特性而设计。该硬件采用 MIMD(多指令多数据)架构以及 IPU-Fabric 可扩展解决方案来实现训练的并行化。
Optimum Graphcore 库提供的技术优化包括:
- 并行性:使用流水线并行可在每个数据并行实例中增加批量大小,提高内存访问效率,并减少参数聚合的通信时间。
- 即用型检查点:Graphcore 提供了 IPU 训练的模型检查点和配置文件(例如
Graphcore/vit-base-ipu),无需用户从头训练 ViT 模型,而后者通常需要海量数据集。 - 无缝集成:用户可以利用 Hugging Face Model Hub 上的现有检查点,例如
google/vit-base-patch16-224-in21k,并通过IPUConfig和IPUTrainer类应用 IPU 特定配置。
案例研究:多标签胸部 X 光分类
为了展示 Optimum Graphcore 工作流的高效性,对 ChestX-ray14 数据集进行微调,使用的 ViT 模型在该数据集中包含来自 30,805 名患者的 112,120 张正面 X 光图像。
数据集准备
由于 X 光图像可能同时呈现多种疾病,该任务被视为多标签分类问题。工作流包括:
- 标签编码:将文本标签转换为 N-hot 编码数组(布尔值),以表示多个并发疾病。
- 预处理:使用
AutoImageProcessor将图像调整为 224x224,将灰度图像转换为 RGB,并使用均值和标准差均为 0.5 对通道进行归一化。 - 数据加载:通过 Hugging Face Datasets 使用 Arrow 文件格式,以实现训练期间的快速加载。
训练与评估
- 模型:使用了
google/vit-base-patch16-224-in21k检查点(在 1400 万 ImageNet-21k 图像上预训练)。 - 训练器:采用
IPUTrainer类,它负责模型在 IPU 上的编译并管理训练与评估。 - 指标:使用受试者工作特征曲线下面积 (AUC_ROC) 作为主要性能指标,因为它对类别不平衡不敏感,并能有效衡量模型区分不同疾病的能力。
- 结果:训练日志显示损失快速下降,稳定在约 0.1 左右,学习率在 25% 的预热阶段后采用余弦衰减。
通过 Paperspace Gradient 访问
通过与 Paperspace 的合作,开发者可以通过 Gradient 的基于网页的 Jupyter Notebook 访问由 Graphcore IPU 提供动力的 Hugging Face Optimum 模型。这使得开发者能够在 IPU 硬件上实验 ViT、BERT 和 RoBERTa,而无需本地基础设施。