リソース/モデルのトレーニング/トレーニング中のプロセス

ベストプラクティス

モデルは収まるか? 学習用メモリ

学習には、モデルの重み、勾配、オプティマイザの状態、さらに作業用メモリのためのスペースが必要です。LoRAの場合は10億パラメータあたり約2GB、フルファインチューニングの場合は約12GBという簡単な経験則により、開始前にモデルがマシンに収まるかどうかを判断できます。

第6章読了時間 2分参考文献 4件

トレーニングにダウンロード以上のメモリが必要な理由

モデルの実行には、その重み以上のメモリはほとんど必要ありません。16ビットの7Bモデルは約14 GBです。トレーニングにはさらに多くのメモリが必要です。学習するすべての重みには、勾配(どの方向に動かすか)とオプティマイザの状態(どの程度動かすかを設定するAdamの移動平均)も必要になるためです。さらに、フォワードパスからのアクティベーションが加わり、これはバッチサイズとサンプルの長さに応じて増加します。どの重みに対してこれらが存在するかによって、フルファインチューニングとLoRAの違いが生じます。

経験則

トレーニングメモリの経験則
LoRA   ≈ 2 GB per billion parameters  + ~3 GB
         frozen 16-bit weights            adapter, activations, overhead

full   ≈ 12 GB per billion parameters + ~4 GB
         16-bit weight          2 bytes
         16-bit gradient        2 bytes
         Adam moment 1 (fp32)   4 bytes
         Adam moment 2 (fp32)   4 bytes
                              ─────────
                               12 bytes per weight
         (+ 4 bytes for a 32-bit master copy = 16)
  • LoRAはベースを16ビットで凍結したままにします。重みあたり2バイトであるため、10億パラメータあたり2 GBとなります。アダプターは非常に小さく、約3 GBでアダプター、そのオプティマイザの状態、中程度の長さのアクティベーション、およびフレームワーク自体をカバーします。
  • フルファインチューニングはすべての重みを学習します。16ビットの重みと勾配に加えて、Adamの2つの32ビットモーメント推定値が含まれ、重み1つあたり合計12バイトになります。
  • QLoRAは凍結されたベースモデルを4ビットで保存するため、メモリ使用量はLoRAの約3分の1に減少します。8Bモデルの場合、19GBではなく約9GBで済みます。

フルファインチューニングのページでは、重みあたり12バイトではなく16バイトで計算しています。この違いは、従来の混合精度レシピが16ビットの重みとともに保持する32ビットのマスターコピーによるものです。この経験則では、その追加コピーなしでのトレーニングを想定しています。コピーを保持する設定では、10億パラメータあたり約16 GBが必要です。どちらも長いサンプルを処理する前の見積もりです。アクティベーションが追加され、最大長とバッチサイズに応じて増加します。

フルファインチューニング16-bit + Adam≈ 112 GBLoRA16-bitベース、凍結≈ 15 GBQLoRA4-bitベース、凍結≈ 4–5 GBAdam + fp32コピー凍結された重み学習可能な重み勾配オプティマイザの状態
アクティベーション前の、70億パラメータモデルのファインチューニングに必要なおおよそのGPUメモリ。Adamを使用したフルファインチューニングでは、各重みに対して約16バイト(重み、その勾配、単精度のマスターコピー、および2つのオプティマイザ統計量)が必要です。LoRAはベースモデルを凍結したままにするため、勾配とオプティマイザの状態は小さなアダプタ(ここでは約4,000万の重み)にのみ存在します。
モデルサイズLoRAフルファインチューニング
0.5B~4 GB~10 GB
1.5B~6 GB~22 GB
3B~9 GB~40 GB
7B~17 GB~88 GB
14B~31 GB~172 GB

アクティベーションは、この経験則では概算しかできない部分です。同時に保持されるトークン数(バッチサイズ×サンプルの長さ)に応じて増加するため、最大長を2倍にすると約2倍になり、非常に長いサンプルの場合はアテンションによってさらに追加される可能性があります。この経験則の固定オーバーヘッドは、中程度の長さを想定しています。サンプルが長い場合は、最後の1ギガバイトまで計画するのではなく、余裕を持たせてください。

実際に利用可能なメモリ量

Appleシリコン搭載のMacなど、ユニファイドメモリを搭載したノートパソコンでは、GPUがメインメモリを共有するため、36 GBのノートパソコンは一般的なゲーミングGPUよりもモデルに多くのスペースを提供できます。ただし、オペレーティングシステムや他のアプリにも割り当てが必要なため、約4分の3がトレーニング用に空いていると計画してください。独立したグラフィックカードを搭載したPCの場合、制限となるのはコンピュータのRAMではなく、GPU専用のメモリです。

36 GB ノートパソコン27 GB 利用可能OS、アプリ1.5B · LoRA約6 GB · 収まる7B · LoRA約17 GB · 収まる14B · LoRA≈ 31 GB · 容量超過32B · QLoRA≈ 22–26 GB · 収まる1.5B · フル≈ 22 GB · 収まる3B · フル≈ 40 GB · 容量超過
このページの経験則に基づく、共有メモリを搭載した36 GBのノートパソコンに収まる容量。オペレーティングシステムや他のアプリがメモリを消費した後、トレーニング用に約27 GBが残ります。これは推定例であり、長い例や大きなバッチではさらに多くのメモリが必要になります。
36 GBのノートパソコンに収まるもの(例示)
  1. 使用可能なメモリ: オペレーティングシステムとアプリを除き、約27 GB。
  2. 1.5Bモデル: LoRA 2 × 1.5 + 3 ≈ 6 GB、フルファインチューニング 12 × 1.5 + 4 ≈ 22 GB。どちらも収まります。
  3. LoRA、より大規模なモデル: 7Bモデルは約17 GBを必要とし、収まります。14Bモデルは30 GB以上を必要とし、収まりません。実際には、LoRAは約10Bまでのモデルに適合します。
  4. フルファインチューニング、より大規模なモデル: 3Bモデルは約40 GBを必要とするため、約1.5Bが上限となります。
  5. QLoRA: 27〜32Bモデルは約22〜26 GBを必要とし、収まります。
1.5Bモデル、両方の手法
1.5B · LoRA    2 × 1.5 + 3   ≈  6 GB
1.5B · full   12 × 1.5 + 4   ≈ 22 GB

16 GBのNVIDIA GPUの場合、同じ経験則によれば、8BモデルはLoRAで約19 GBを必要とし、これは多すぎますが、QLoRAでは約9 GBとなり、より長いサンプル用の余裕を残して収まります。

実行時にメモリが不足した場合

  1. 最大長を短くする。 メモリはサンプルの長さに比例して増加するため、これが最も効果的です。まず、典型的なサンプルが引き続き収まるかを確認してください。
  2. バッチサイズを小さくする。 ステップごとのサンプル数が減ることで、同時に保持されるアクティベーションが少なくなります。
  3. QLoRAに切り替える。 4ビットのベースは、16ビットのベースの約4分の1のメモリで済みます。
  4. 勾配チェックポイントを使用する。 速度が約20〜30%低下する代わりに、アクティベーションメモリを大幅に削減できます。多くのレシピではすでに有効になっています。
  5. より小規模なモデルを選択する、 またはフルファインチューニングの代わりにLoRAを使用します。

よくある間違い

  • ダウンロードサイズで判断すること。フルファインチューニングには、16ビットの重みの6〜8倍に加えて、アクティベーションが必要です。
  • 共有メモリのノートパソコンのRAMすべてを利用可能として計算すること。オペレーティングシステムや他のアプリにも割り当てが必要です。
  • グラフィックカードのメモリではなく、PCのRAMを計算すること。
  • 実行が収まった後に最大長やバッチサイズを増やし、次の実行も収まると期待すること。
  • 最大長を典型的なサンプルの長さより短く設定し、モデルが学習すべき応答の最後まで認識できなくなること。

参考文献および関連資料

外部ソースは新しいタブで開きます。

  1. 01ZeRO: Memory Optimizations Toward Training Trillion Parameter ModelsRajbhandari et al., 2019 · arXiv · arxiv.orgパラメータごとの重み、勾配、オプティマイザの状態の標準的な計算。
  2. 02GPU memory usageHugging Face Transformers docs · huggingface.co
  3. 03Model memory estimatorHugging Face Accelerate docs · huggingface.co特定のHugging Faceモデルの実行およびトレーニング用メモリを見積もるツール。
  4. 04Unified MemoryMLX docs · ml-explore.github.ioAppleシリコンのCPUとGPUが1つのメモリプールを共有する仕組み。

専門家が数週間かける作業を数分に短縮します

Scalataがお客様のチーム、データ、および統制にどのように適合するかをご確認ください。

営業へのお問い合わせ