optimum-tpu 文件

在 Google Cloud 上首次進行 TPU 訓練

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

在 Google Cloud 上首次進行 TPU 訓練

本教程將引導您使用 optimum-tpu 包在 TPU 上設定和執行模型訓練。

先決條件

開始之前,請確保您有一個正在執行的 TPU 例項(參見TPU 設定指南

環境設定

首先,建立並激活虛擬環境

python -m venv .venv
source .venv/bin/activate

安裝所需包

# Install optimum-tpu with PyTorch/XLA support
pip install optimum-tpu -f https://storage.googleapis.com/libtpu-releases/index.html

# Install additional training dependencies
pip install transformers datasets accelerate trl peft evaluate

瞭解用於 TPU 訓練的 FSDP

為了加快 TPU 上的訓練速度,您可以依賴 Optimum TPU 與 FSDP(Fully Sharded Data Parallel,完全分片資料並行)的整合。在訓練大型模型時,FSDP 會自動將模型分片(拆分)到所有可用的 TPU 工作器上,提供幾個關鍵優勢:

  1. 記憶體效率:每個 TPU 工作器只儲存模型引數的一部分,從而降低了每個裝置的記憶體需求。
  2. 自動擴充套件:FSDP 處理模型分發和梯度聚合的複雜性。
  3. 效能最佳化:Optimum TPU 的實現專門針對 TPU 硬體進行了調整。

當您在訓練設定中使用 fsdp_v2.get_fsdp_training_args(model) 配置時,這種分片會自動發生,從而可以輕鬆訓練無法在單個 TPU 裝置上容納的更大模型。

如何設定 FSDP

啟用 FSDP 的關鍵修改只有這幾行

+from optimum.tpu import fsdp_v2
+fsdp_v2.use_fsdp_v2()
+fsdp_training_args = fsdp_v2.get_fsdp_training_args(model)

然後將這些引數包含在您的訓練器配置中

trainer = SFTTrainer(
    model=model,
    train_dataset=dataset,
    args=TrainingArguments(
        ...
+       dataloader_drop_last=True,  # Required for FSDPv2
+       **fsdp_training_args,
    ),
    ...
)

完整示例

這是一個演示使用 FSDP 進行 TPU 訓練的完整工作示例

import torch
from datasets import load_dataset
from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments
from peft import LoraConfig
from trl import SFTTrainer
from optimum.tpu import fsdp_v2

# Enable FSDPv2 for TPU
fsdp_v2.use_fsdp_v2()

# Load model and dataset
model_id = "google/gemma-2b"
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.bfloat16)
dataset = load_dataset("tatsu-lab/alpaca", split="train[:1000]")

# Get FSDP training arguments
fsdp_training_args = fsdp_v2.get_fsdp_training_args(model)

# Create trainer with minimal configuration
trainer = SFTTrainer(
    model=model,
    train_dataset=dataset,
    args=TrainingArguments(
        output_dir="./output",
        dataloader_drop_last=True,  # Required for FSDPv2
        **fsdp_training_args,
    ),
    peft_config=LoraConfig(
        r=8,
        target_modules=["k_proj", "v_proj"],
        task_type="CAUSAL_LM",
    ),
)

# Start training
trainer.train()

將此程式碼儲存為 train.py 並執行

python train.py

您現在應該會看到訓練期間損失值下降。訓練完成後,您將獲得一個微調模型。恭喜 - 您剛剛在 TPU 上訓練了您的第一個模型!🙌

後續步驟

透過探索以下內容繼續您的 TPU 訓練之旅:

© . This site is unofficial and not affiliated with Hugging Face, Inc.