GPU カーネルの生成には OpenAI Triton を使用しています。Triton では特定の融合用に高速な GPU カーネルを生成できますが、融合ごとにいくつかのパラメータを調整する必要があります。
融合が多数ある場合、この処理に時間がかかることがあるため、他のコンパイル ステップを通常どおり実行しながら、これらの自動チューニング結果を読み込む方法が用意されています。いくつか変更を加えると、自動チューニング キャッシュは引き続き有用です。キャッシュに存在する融合はキャッシュを使用し、他の融合は通常どおり自動チューニングされます。
推奨: キャッシュ ディレクトリ
--xla_gpu_per_fusion_autotune_cache_dir=your/directory
指定されたディレクトリで、融合ごとの自動チューニング キャッシュを使用して維持します。個別の融合ごとに 1 つのファイルが作成されます。
このアプローチの主な利点は、(異なるモデルの)複数の XLA 実行に同じキャッシュ ディレクトリを使用できることです。キャッシュは、遭遇する新しい融合ごとに増加するため、後続の実行が高速化されます。また、同じキャッシュ ディレクトリで複数の XLA インスタンスを同時に実行するための基本的なサポートもあります。
XLA は、必要に応じて既存の結果を読み取り、確定後に新しい結果を書き込みます。
- XLA を実行する前にディレクトリが存在し、書き込み可能である必要があります。
- キャッシュの無効化はユーザーが処理する必要があります。
- 空のキャッシュから開始する場合は、空のディレクトリを使用してください。
- XLA バージョン チェックはユーザーが行う必要があります。
- 異なるバージョンの XLA に個別のキャッシュを使用する場合は、異なるディレクトリを使用してください。
キャッシュはデフォルトでオフになっています(パラメータを指定しない場合)。
制限事項: 後述する他のキャッシュ保存方法と組み合わせて使用しても、うまく機能するとは限りません。
別の方法: 特定の HLO からすべての結果を 1 つのファイルに読み込むまたはダンプする
自動チューニングの結果は、次のパラメータを使用してダンプまたは読み込むことができます。
--xla_gpu_dump_autotune_results_to=
--xla_gpu_load_autotune_results_from=
.txt ファイルまたは .textproto ファイルを指定すると、キャッシュは textproto 形式でダンプされます。それ以外の場合は、バイナリ protobuf 形式でダンプされます。
テスト中
永続化された自動チューニングはテストでも使用できます。テストが非常に大きい場合、特にテスト環境のパフォーマンスが制限されている場合は、この方法を使用することをおすすめします。
これは、テストが実行されている GPU と同じタイプの GPU で生成された結果が自動チューニング キャッシュに含まれている場合にのみ適切に機能します。
永続的な自動チューニングをテストする
ここでは、対象のテストで常に同じ GPU タイプが使用されていると仮定します。
テストから自動チューニングの結果をエクスポートする必要があります。たとえば、テストコマンドに次のパラメータを指定します。
--test_env=XLA_FLAGS=--xla_gpu_dump_autotune_results_to=TEST_UNDECLARED_OUTPUTS_DIR/autotune_cache.textproto --test_sharding_strategy=disabled
すべてのテストで単一の自動チューニング キャッシュを正しく取得するには、シャーディングを無効にする必要があります。
次に、そのキャッシュをコード リポジトリにアップロードする必要があります。
次に、テスト ターゲットのデータ依存関係にキャッシュを追加し、環境変数を使用してキャッシュを読み込む必要があります。
data = ["test_autotune_cache.textproto"], env = {"XLA_FLAGS": "--xla_gpu_load_autotune_results_from=" + "$(execpath test_autotune_cache.textproto)"},
(オートチューニングの結果を読み込むテストではシャーディングを使用できます)。
xla/service/gpu/tests/BUILD のサンプルテストもご覧ください。
- load_autotune_results_using_execpath_test
- load_autotune_results_from_test_workspace_test
- dump_autotune_results_to_test_outputs_test
キャッシュの陳腐化
モデルに多くの変更を加えると、キャッシュにすべての融合が含まれなくなる可能性があり、テストが遅くなります。この場合、自動チューニング キャッシュを再生成する必要があります。
テストの実行に新しいタイプの GPU を使用する場合も同様です。
XLA コンパイラが進化して異なる融合を生成する場合は、キャッシュが廃止されることもあります。