Hugging Face Optimum for Graphcore IPU Integration

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) 的啟用腳本來設置 Poplar SDK 環境。對於在 Ubuntu 18.04 上執行 Poplar SDK 版本 2.3 的系統,環境變數通常設置在 /opt/gc/ 目錄下。

PopTorch 是 Poplar SDK 的一個組件,它允許 PyTorch 模型在 IPU 上執行。需要一個專用的虛擬環境來安裝與 SDK 版本相對應的 PopTorch wheel 檔案。

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_config.json 檔案來配置 IPU 硬體。

Training Workflow

訓練是由 Optimum 中的 IPUTrainer 類別來促進的,它允許模型利用 Graphcore 的硬體與軟體堆疊。此過程涉及載入預訓練模型 (例如 bert-base-uncased) 並使用 Hugging Face Datasets 函式庫來管理 SQuAD v1.1 的訓練與驗證檔案。

Performance Results

使用每裝置批次大小為 2、學習率為 6e-5,對 BERT 模型進行 3 個 epoch 的微調,得到了以下結果:

  • Training Metrics:
    • Train Loss: 0.9465060763888888
    • Train Runtime: 368.4015
    • 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

相關