アクティベーションオフロード - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

アクティベーションオフロード

アクティベーションチェックポイントとパイプライン並列処理がオンで、マイクロバッチの数が 1 より大きい場合、アクティベーションオフロードは、メモリ使用量をさらに削減できる追加機能です。アクティベーションオフロードは、 で現在実行されていないマイクロバッチに対応するチェックポイントされたアクティベーションを非同期的に移動しますCPU。がマイクロバッチのバックワードパスのアクティベーションGPUを必要とする直前に、この機能はオフロードされたアクティベーションを からプリフェッチしますCPU。

注記

この機能は、 SageMaker モデル並列処理ライブラリ v1.6.0 以降 PyTorch で で使用できます。

アクティベーションオフロードの使用方法

マイクロバッチの数が 1 を超え、アクティベーションチェックポイントがオンになっている場合は、アクティベーションオフロードを使用してメモリ使用量を減らします (アクティベーションチェックポイント を参照)。アクティベーションチェックポイントを使用しない場合、アクティベーションオフロードは効果がありません。マイクロバッチを 1 つだけ使用する場合、メモリの節約にはなりません。

アクティベーションオフロードを使用するには、modelparallel 設定で "offload_activations": True を設定してください。

アクティベーションオフロードは、nn.Sequentialモジュール内のチェックポイントされたアクティベーションをCPU非同期に移動します。PCIe リンクを介したデータ転送は、GPU計算と重複します。オフロードは、特定のチェックポイントしたレイヤーのフォワードパスが計算されるとすぐに行われます。アクティベーションは、特定のマイクロバッチのバックワードパスに必要なGPU直前に にロードされます。CPU-GPU 転送は、同様に計算と重複します。

アクティベーションが にロードされるまでの時間を調整するにはGPU、 設定パラメータを使用できます "activation_loading_horizon" (デフォルトは 4 に設定され、0 intより大きい必要があります)。アクティベーションのロード期間を大きくすると、アクティベーションはGPU前の にロードされます。範囲が大きすぎると、アクティベーションオフロードによるメモリ節約効果が低下する可能性があります。範囲が小さすぎると、アクティベーションが時間内にロードされず、重複の量が減少し、パフォーマンスが低下することがあります。

ヒント

アクティベーションオフロードは、パラメータが 1,000 億を超える大規模なモデルに役立ちます。

SageMaker PyTorch 推定器を設定する

mpi_options = { "enabled" : True, "processes_per_host" : 8, # 8 processes "custom_mpi_options" : "--mca btl_vader_single_copy_mechanism none " } smp_options = { "enabled":True, "parameters": { "microbatches": 4, "pipeline_parallel_degree": 2, # alias for "partitions" "placement_strategy": "cluster", "tensor_parallel_degree": 2, # tp over 2 devices "ddp": True, "offload_activations": True, "activation_loading_horizon": 4 # optional. default is 4. } }