持續自動調整 (僅限 GPU)

我們使用 OpenAI Triton 產生部分 GPU 核心。Triton 允許針對特定融合產生快速 GPU 核心,但我們必須為每次融合調整一些參數。

如果有很多融合,這項作業可能需要較長時間,所以我們提供方法來載入自動調整結果,同時照常執行其他編譯步驟。自動調整快取功能在進行一些變更時仍非常實用:快取中的融合會使用快取,其他的融合則照常自動調整。

系統可使用以下參數,轉儲/載入自動調整結果:

--xla_gpu_dump_autotune_results_to=
--xla_gpu_load_autotune_results_from=

如果指定 .txt 或 .textproto 檔案,快取就會以 textproto 格式傾印,否則將以二進位 protobuf 格式傾印。

測試中

持續性自動調整功能也可用於測試。如果測試規模過大,建議您使用此功能,尤其是測試環境的效能有限時。

這個功能只有在 Auto 調整快取包含針對執行測試的相同 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 編譯器發展並產生不同的融合,快取也可能會過時。