使用 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:提供
GaudiTrainer與GaudiTrainingArguments,這些是圍繞標準 Hugging FaceTrainer的封裝,專為 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%。