Hugging Face Optimum 用于 Graphcore IPU 集成
Hugging Face 已与 Graphcore 合作,将 Optimum 库与 Graphcore Intelligence Processing Units (IPUs) 集成,从而实现在专门为 AI 工作负载设计的硬件上加速 Transformer 模型。这种集成允许开发者通过极少的代码更改来降低预测延迟并优化最先进模型的训练和微调。
为 IPU 优化的 BERT
BERT 是通过此次合作针对 IPU 优化的第一个模型。Graphcore 工程师已使用 Hugging Face Transformers 实现并优化了 BERT,以简化在 IPU 系统上训练和加速模型的过程。Hugging Face 计划在未来几个月内扩展此支持,以涵盖视觉、语音、翻译和文本生成模型。
技术设置与环境
要在 Graphcore 硬件上利用 Optimum,用户必须配置涉及 Poplar SDK 和 PopTorch 的特定软件栈。
Poplar SDK 与 PopTorch 配置
用户必须首先通过运行 Poplar 和 PopART (Poplar Advanced Runtime) 的启用脚本来设置 Poplar SDK 环境。对于在 Ubuntu 18.04 上运行 Poplar SDK 2.3 版本的系统,环境变量通常设置在 /opt/gc/ 目录下。
PopTorch 是 Poplar SDK 的一个组件,允许 PyTorch 模型在 IPU 上运行。需要创建一个专门的虚拟环境来安装与 SDK 版本相对应的 PopTorch wheel 文件。
安装 Optimum Graphcore
optimum[graphcore] 包作为 Hugging Face Transformers 库与 Graphcore IPUs 之间的接口。该包必须在已激活的 PopTorch 虚拟环境中安装。
在 SQuAD 1.1 上微调 BERT
Optimum 为使用 run_qa.py 脚本在 SQuAD 1.1 数据集上微调 BERT 提供了一个流线化的工作流程。此过程需要一个快速的分词器(由 Hugging Face Tokenizers 库支持)以及一个用于配置 IPU 硬件的 ipu_config.json 文件。
训练工作流程
训练由 Optimum 中的 IPUTrainer 类实现,该类允许模型利用 Graphcore 硬件和软件栈。该过程涉及加载预训练模型(例如 bert-base-uncased)并使用 Hugging Face Datasets 库来管理 SQuAD v1.1 的训练和验证文件。
性能结果
在每个设备 batch size 为 2、学习率为 6e-5 的情况下,对 BERT 模型进行 3 个 epoch 的微调产生了以下结果:
- 训练指标:
- Train Loss: 0.9465060763888888
- Train Runtime: 368.4015
- Train Samples: 88,524
- Train Samples per Second: 720.877
- Train Steps per Second: 2.809
- 验证指标:
- Exact Match: 80.6623
- F1 Score: 88.2757
- Eval Samples: 10,784
Sources
相关
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch