GPU/TPU 活用・混合精度・メモリ最適化
Kaggle 環境で DL を現実的に回すための GPU/TPU 活用、混合精度、メモリ節約の実務を学びます。
Kaggle の計算環境を使い切る#
Kaggle Notebook は無料で GPU/TPU を使えますが、週あたりのクォータとセッション時間に上限があります。 デバッグは CPU/少データで行い、本学習のときだけアクセラレータを有効化するのが鉄則です。
import torch
device = "cuda" if torch.cuda.is_available() else "cpu"
model = model.to(device)
# 学習ループ内: xb, yb = xb.to(device), yb.to(device)混合精度(AMP)#
float16/bf16 を併用する混合精度は、学習を高速化しメモリも節約します。
scaler = torch.cuda.amp.GradScaler()
for xb, yb in loader:
optimizer.zero_grad()
with torch.cuda.amp.autocast():
loss = loss_fn(model(xb), yb)
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()メモリ最適化のコツ#
- バッチサイズ調整:OOM(メモリ不足)ならバッチサイズを下げる
- 勾配累積:小さいバッチを複数回ためてから更新し、実効バッチサイズを稼ぐ
torch.no_grad()/model.eval():推論時は勾配を持たずメモリを節約- 不要テンソルの解放:ループ内で
del+torch.cuda.empty_cache()、loss.item()で値だけ保持
注意
GPU クォータは貴重です。ハイパラ探索や試行錯誤は小さなサブセット/エポックで回し、 良い構成が定まってから全データで本学習しましょう。再現のため乱数シードも固定します。
理解度チェック#
このトラックのまとめ#
- DL は順伝播→損失→逆伝播→最適化の反復。過学習対策(Dropout・weight decay・早期終了・拡張)が要
- PyTorch は Tensor・autograd・Dataset/DataLoader・自前の学習ループ
- 画像/テキストは転移学習が主流。表形式は GBDT が基本で DL は多様性要員
- 時系列はリークに注意し時系列分割で検証。GPU は混合精度・メモリ最適化で現実的に回す
次のステップ#
次トラック(L8)では、上級テクニックとグランドマスターへの道を学びます。