Graphcore IPU統合のためのHugging Face Optimum

Hugging FaceはGraphcoreと提携し、OptimumライブラリをGraphcore Intelligence Processing Units (IPUs)と統合することで、AIワークロード向けに特別に設計されたハードウェア上でTransformerモデルの加速を可能にしました。この統合により、開発者は最小限のコード変更で、予測レイテンシを削減し、最先端モデルのトレーニングとファインチューニングを最適化できます。

Optimized BERT for IPU

BERTは、このパートナーシップを通じてIPU向けに最適化された最初のモデルです。Graphcoreのエンジニアは、Hugging Face Transformersを使用してBERTを実装および最適化し、IPUシステム上でのモデルのトレーニングと加速のプロセスを簡素化しました。Hugging Faceは、今後数ヶ月以内に、ビジョン、音声、翻訳、およびテキスト生成のモデルへとこのサポートを拡大する予定です。

Technical Setup and Environment

Graphcoreハードウェア上でOptimumを活用するには、Poplar SDKとPopTorchを含む特定のソフトウェアスタックを構成する必要があります。

Poplar SDK and PopTorch Configuration

ユーザーはまず、PoplarとPopART (Poplar Advanced Runtime)用のenableスクリプトを実行して、Poplar SDK環境をセットアップする必要があります。Ubuntu 18.04上でPoplar SDKバージョン2.3を実行しているシステムの場合、環境変数は通常 /opt/gc/ ディレクトリ内に設定されます。

Installing Optimum Graphcore

optimum[graphcore] パッケージは、Hugging Face TransformersライブラリとGraphcore IPUsの間のインターフェースとして機能します。このパッケージは、有効化されたPopTorch仮想環境内にインストールする必要があります。

Fine-Tuning BERT on SQuAD 1.1

Optimumは、run_qa.py スクリプトを使用してSQuAD 1.1データセット上でBERTをファインチューニングするための、合理化されたワークフローを提供します。このプロセスには、高速なトークナイザー(Hugging Face Tokenizersライブラリによってサポート)と、IPUハードウェアを構成するための ipu_config.json ファイルが必要です。

Training Workflow

トレーニングはOptimumの IPUTrainer クラスによって促進され、これによりモデルはGraphcoreのハードウェアおよびソフトウェアスタックを活用できます。このプロセスには、事前学習済みモデル(bert-base-uncased など)のロードと、SQuAD v1.1のトレーニングおよび検証ファイルを管理するためのHugging Face Datasetsライブラリの使用が含まれます。

Performance Results

デバイスあたりバッチサイズ2、学習率6e-5でBERTモデルを3エポックにわたってファインチューニングした結果、以下の結果が得られました:

  • Training Metrics:
    • Train Loss: 0.9465060763888888
    • Train Runtime: 368.4015
    • Train Samples: 88,524
    • Train Samples per Second: 720.877
    • Train Steps per Second: 2.809
  • Validation Metrics:
    • Exact Match: 80.6623
    • F1 Score: 88.2757
    • Eval Samples: 10,784

Sources

関連