使用 AutoModel 與 Accelerator 準備模型

使用 PyTorch 高效訓練 AI 模型

Dennis Lee

Data Engineer, Amazon

認識你的講師!

$$

  • 資料工程師

講師照片

伺服器圖示

使用 PyTorch 高效訓練 AI 模型

認識你的講師!

$$

  • 資料工程師
  • 資料科學家

講師照片

伺服器與燈泡圖示

使用 PyTorch 高效訓練 AI 模型

認識你的講師!

$$

  • 資料工程師
  • 資料科學家
  • 電機工程博士

講師照片

伺服器、燈泡與學位帽圖示

使用 PyTorch 高效訓練 AI 模型

認識你的講師!

$$

  • 資料工程師
  • 資料科學家
  • 電機工程博士

講師照片

伺服器、燈泡與學位帽圖示

$$

$$

$$

很高興和你分享實務心法!

使用 PyTorch 高效訓練 AI 模型

高效 AI 訓練路線圖

  • 分散式 AI 模型訓練

筆電

使用 PyTorch 高效訓練 AI 模型

高效 AI 訓練路線圖

  • 分散式 AI 模型訓練

筆電與等待中的人物

使用 PyTorch 高效訓練 AI 模型

高效 AI 訓練路線圖

  • 分散式 AI 模型訓練

筆電、等待中的人物與記憶體晶片

  • ↓ ↓ 大型語言模型的訓練時間

日曆

使用 PyTorch 高效訓練 AI 模型

高效 AI 訓練路線圖

流程圖:資料準備、分散式訓練、高效訓練與最佳化器等課程主題。

$$

  • 資料準備:將資料放到多個裝置上
使用 PyTorch 高效訓練 AI 模型

高效 AI 訓練路線圖

流程圖:資料準備、分散式訓練、高效訓練與最佳化器等課程主題。

$$

  • 資料準備:將資料放到多個裝置上
  • 分散式訓練:把訓練擴展到多個裝置
使用 PyTorch 高效訓練 AI 模型

高效 AI 訓練路線圖

流程圖:資料準備、分散式訓練、高效訓練與最佳化器等課程主題。

$$

  • 資料準備:將資料放到多個裝置上
  • 分散式訓練:把訓練擴展到多個裝置
  • 高效訓練:善用可用裝置進行最佳化
使用 PyTorch 高效訓練 AI 模型

高效 AI 訓練路線圖

流程圖:資料準備、分散式訓練、高效訓練與最佳化器等課程主題。

$$

  • 資料準備:將資料放到多個裝置上
  • 分散式訓練:把訓練擴展到多個裝置
  • 高效訓練:善用可用裝置進行最佳化
  • 最佳化器:加速訓練
使用 PyTorch 高效訓練 AI 模型

CPU

  • 多數筆電配備 CPU

         

CPU 筆電

GPU

  • GPU 能訓練大型模型

         

GPU 筆電

使用 PyTorch 高效訓練 AI 模型

CPU vs GPU

CPU

  • 多數筆電配備 CPU
  • 為通用運算而設計
  • 控制流程較佳

         

日常工作用筆電

GPU

  • GPU 能訓練大型模型
  • 擅長高度平行運算
  • 特別拿手矩陣運算

         

平行運算用筆電

使用 PyTorch 高效訓練 AI 模型

分散式訓練

分散式訓練示意圖,顯示模型複製與資料分片。

  • 資料分片(Data sharding):各裝置並行處理資料子集
使用 PyTorch 高效訓練 AI 模型

分散式訓練

分散式訓練示意圖,顯示模型複製與資料分片。

  • 資料分片(Data sharding):各裝置並行處理資料子集
  • 模型複製(Model replication):各裝置執行前向/反向傳播
  • 梯度聚合(Gradient aggregation):指定裝置彙整梯度
  • 參數同步(Parameter synchronization):指定裝置共享更新後參數
使用 PyTorch 高效訓練 AI 模型

事半功倍:活用預訓練模型

  • 善用預訓練 Transformer 模型
  • 透過呼叫 AutoModelForSequenceClassification 初始化模型參數
  • 顯示設定
from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained(model_name)

print(model.config)
DistilBertConfig {
  "architectures": ["DistilBertForMaskedLM"],
  "dim": 768,
  "dropout": 0.1,
  "hidden_dim": 3072,
  ...
使用 PyTorch 高效訓練 AI 模型

使用 Accelerator 進行裝置放置

  • 來自 Hugging Face 的類別 🤗
  • Accelerator 會偵測電腦可用的裝置
  • 自動化裝置放置與資料平行:accelerator.prepare()
  • 將型別為 torch.nn.Module 的模型放到第一個可用 GPU
  • 若無 GPU,預設使用 CPU
from accelerate import Accelerator
accelerator = Accelerator()
model = accelerator.prepare(model)

print(accelerator.device)
cpu
使用 PyTorch 高效訓練 AI 模型

一起來練習吧!

使用 PyTorch 高效訓練 AI 模型

Preparing Video For Download...