使用 Hugging Face Transformers 與 Habana Gaudi 進行 BERT 預訓練

TL;DR

Hugging Face 提供了一份技術指南,說明如何在 AWS 上使用基於 Habana Gaudi 的 DL1 實例從頭預訓練 BERT-base。透過使用 optimum-habana 函式庫,該流程相較於等效的 NVIDIA V100 GPU 訓練設定,可降低 25% 的成本。

硬體與軟體堆疊

預訓練在 AWS DL1 實例上執行,該實例具備 8 個 HPU 核心。軟體堆疊整合了以下 Hugging Face 函式庫:

  • Transformers:模型架構的核心函式庫。
  • Optimum Habana:提供 GaudiTrainerGaudiTrainingArguments,這些是圍繞標準 Hugging Face Trainer 的封裝,專為 Habana Gaudi 硬體設計。
  • Datasets:用於載入與管理預訓練語料庫。

預訓練工作流程

預訓練流程分為 CPU 密集的資料準備與 HPU 密集的模型訓練兩個階段。

1. 資料準備與斷詞

資料準備在 CPU 最佳化的實例(例如 AWS c6i.12xlarge)上執行,之後再移至 DL1 實例。工作流程包括:

  • Dataset Merging:將 Wikipedia(20220301.en 分割)與 BookCorpus 合併為單一資料集。
  • Tokenizer Training:從頭訓練全新 BertTokenizerFast,詞彙表大小為 32,000 個 token。
  • Preprocessing:對文字進行斷詞,並將其分組為 512 個 token 的區塊(BERT 的最大序列長度),對超過此限制的文件進行截斷。

2. 透過遮蔽語言模型 (MLM) 進行模型訓練

BERT 透過遮蔽語言模型 (MLM) 進行預訓練,該任務要求模型利用雙向上下文預測句子中被遮蔽的詞彙。

為了充分利用 DL1 實例的 8 個 HPU 核心,訓練以分散式資料平行方式實作,使用腳本 (run_mlm.py) 與 optimum-habana 中的 DistributedRunner(或 gaudi_spawn.py)。

效能與成本分析

訓練時間與成本

Hugging Face 以全域批次大小 256 進行 100,000 步的基準測試,完成時間約為 12.5 小時。將此結果外推至原始 BERT 預訓練需求的 1 百萬步:

  • Total Estimated Time:125 小時。
  • Total Estimated Cost:在 AWS 使用 Habana Gaudi 約 $1,650 美元。

與 GPU 基準的比較

與 DeepSpeed 在 DGX-2(16 顆 NVIDIA V100 GPU)上創下的最快 BERT 預訓練紀錄相比,Habana Gaudi 方法可節省大量成本:

  • GPU Cost Estimate:以 AWS p3dn.24xlarge 實例(8× V100 32GB)作為參考,類似配置的成本約為 $2,075 美元。
  • Cost Reduction:Habana Gaudi 相較於基於 V100 的配置,可降低 25% 成本。

值得注意的是,作者指出若未使用 DeepSpeed 最佳化,GPU 訓練成本可能會進一步升至約 $3,000–$4,000。

對領域適應的影響

從頭預訓練使組織能將模型調整至特定語言或專業領域。根據來源,此過程相較於使用通用 BERT 模型,可提升模型準確度最高達 10%。

Sources