こんにちは。
最近、NVIDIA-Certified Associate: Generative AI and LLMs (NCA-GENL)を習得しました。
その際に知っておいた方が良い基礎知識とコードの書き方を共有したいと思います。
生成AIのチュートリアル:
- Gradient Checkpointing(勾配チェックポイント)とは?(トレーニングに使用)
Gradient Checkpointing自体は2016年くらいからあった技術なのですが、大規模のモデル(LLM)で、もう一度注目を集めている技術です。
Gradient Checkpointingは学習に必要なメモリ(sqrt(メモリ使用量))を節約し、オーバヘッドを減らす技術です。
しかし、トレーニングの時間は10%から20%上昇します。
2.Gradient Checkpointingの構造
Gradient Checkpointingの目的はバックプロパゲーション(逆伝播)の最適化です。
- フォワーディング(順伝播)の途中にある特定のポイント(「チェックポイント」と呼ばれる層の出力)でのアクティベーションのみを記憶。
- バックプロパゲーション(逆伝播)の際に特定のチェックポイントから次のチェックポイントまでの間で勾配を計算する必要が生じた場合、保存されていない中間活性化値は、その場で再計算。
HuggingFaceでのやり方
from transformers import TrainingArguments
training_args = TrainingArguments(gradient_checkpointing=True)