自動チューニングの維持(GPU のみ)

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 タイプが使用されていると仮定します。

  1. テストから自動チューニングの結果をエクスポートする必要があります。たとえば、テストコマンドに次のパラメータを指定します。

    --test_env=XLA_FLAGS=--xla_gpu_dump_autotune_results_to=TEST_UNDECLARED_OUTPUTS_DIR/autotune_cache.textproto
    --test_sharding_strategy=disabled
    

    すべてのテストで単一の自動チューニング キャッシュを正しく取得するには、シャーディングを無効にする必要があります。

  2. 次に、そのキャッシュをコード リポジトリにアップロードする必要があります。

  3. 次に、テスト ターゲットのデータ依存関係にキャッシュを追加し、環境変数を使用してキャッシュを読み込む必要があります。

    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 コンパイラが進化して異なる融合を生成する場合は、キャッシュが廃止されることもあります。