在 Cloud TPU VM 上分析模型
剖析是主要工具之一,可協助您在 Cloud TPU 上最佳化模型效能。核心剖析工具稱為 XProf,可從 OpenXLA/XProf GitHub 存放區取得。XProf 支援所有以 XLA 為基礎的架構剖析,包括 JAX、Pytorch XLA 和 Tensorflow/Keras。
擷取設定檔
如要使用 XProf,請先擷取模型的設定檔。擷取設定檔的方法有兩種:
- 以程式輔助方式擷取
- 隨選擷取 (又稱手動擷取)
使用程式輔助擷取功能時,您需要註解模型程式碼,指定要在程式碼中的哪個位置擷取設定檔。一般來說,您會擷取幾個訓練步驟的設定檔,或剖析模型中的特定程式碼區塊。在 JAX、Pytorch XLA 和 TensorFlow 等不同架構中,您可以透過不同方式擷取追蹤記錄,包括以 API 為基礎啟動或停止追蹤,或是以內容管理員為基礎。在 MaxText 等較高層級的架構中,只要在執行 MaxText 時啟用旗標 profiler=xplane
,即可啟用設定檔擷取功能。
如要臨時擷取設定檔,或未啟用程式輔助設定檔擷取功能,可以使用隨選設定檔擷取功能。如果您在執行期間發現模型指標有問題,並想在一段時間內擷取設定檔,以便診斷問題,這項功能就非常實用。
如要啟用隨選設定檔擷取功能,您仍需在程式碼中啟動 XProf 伺服器。啟用 profiler.start_server
後,系統會在機器學習工作負載上啟動 XProf 伺服器,監聽隨選擷取觸發程序,以便開始擷取設定檔。您可以透過 TensorBoard UI 或 CLI,使用 XProfiler 工具觸發隨選剖析資料擷取作業。
如要瞭解如何為不同架構啟用程式輔助和隨選擷取功能,請參閱:
無論是透過程式輔助或隨選方式擷取設定檔,您都需要指定要儲存擷取設定檔的位置。您可以選擇將剖析檔儲存在 TPU VM 的目錄中,路徑類似於 /profiles/run-name
,也可以使用 Cloud Storage,路徑類似於 gs://bucket-name/run-name/
。
使用上述路徑時,系統會將設定檔擷取至下列位置:
/profiles/run-name/plugins/profile/session1/
或
gs://bucket-name/run-name/plugins/profile/session1/
。
工作階段是指模型執行期間擷取設定檔的單一程序。舉例來說,如果您在訓練執行期間從步驟 1 到 3 擷取設定檔,稍後又從步驟 8 到 10 擷取設定檔,這些設定檔會屬於同一次執行作業,但第一次擷取 (步驟 1 到 3) 會是 session1
,第二次擷取 (步驟 8 到 10) 則會是 session2
。
每次執行都會顯示不同的日期戳記,用來區分不同工作階段。 您可以透過程式輔助、隨選或兩者混合的方式,在不同工作階段中擷取設定檔。如果您想比較模型訓練不同部分的設定檔,這項功能就非常實用。例如,比較訓練開始時的個人資料與訓練結束時的個人資料。
使用 TensorBoard 呈現剖析檔
如要在 Tensorboard 中查看 XProf 設定檔,請安裝 tensorboard-plugin-profile 外掛程式。
如要在 Google Cloud上以視覺化方式呈現擷取的設定檔,建議您在 TPU VM 上使用 TensorBoard,或使用 XProfiler 工具在 VM 或 GKE Pod 上代管 TensorBoard。
如果您在 TPU VM 上擷取設定檔,可以使用該 TPU VM 上的 TensorBoard 查看擷取的設定檔。
如要在 TPU VM 上安裝 XProf 和 TensorBoard,可以執行下列指令:
pip install tensorboard_plugin_profile tensorboard pip install xprof
如要查看使用 TensorBoard 擷取的設定檔,請執行下列指令:
$ tensorboard --logdir=profiles/run-name
或
$ tensorboard --logdir=profiles
如要從多個執行作業載入多個剖析檔,請將 TensorBoard 指向包含所有執行作業和剖析檔的根目錄,而不是指向含有特定執行作業剖析檔的子目錄。
Cloud-Diagnostics-XProf 程式庫,用於在 Google Cloud上顯示 Tensorboard 設定檔
cloud-diagnostics-xprof
(又稱 XProfiler 程式庫) 可簡化 TensorBoard 的代管作業,並在 Google Cloud上以視覺化方式呈現設定檔。詳情請參閱 cloud-diagnostics-xprof GitHub 存放區。
與在本機執行 XProf 和 TensorBoard 相比,cloud-diagnostics-xprof 存放區提供下列改善項目:
- 設定及封裝 XProf 和 TensorBoard 依附元件
- 將設定檔儲存在 Cloud Storage 中,這對於長期保留和執行後分析很有幫助 (研究人員完成執行後,系統會刪除擷取的本機設定檔)
- 在 Compute Engine VM 或 GKE Pod 上佈建 TensorBoard,即可快速載入大型設定檔和多個設定檔,並可根據使用者對載入速度和成本的需求變更機器類型
- 建立連結,與團隊成員和 Google 工程師分享設定檔及協作
- 更輕鬆地隨選分析 GKE 和 Compute Engine 上的工作負載,選擇執行工作負載的任何主機來擷取設定檔
使用 XProfiler 程式庫前,您需要以程式輔助方式或啟動設定檔伺服器,擷取工作負載程式碼的設定檔,以便稍後視需要擷取設定檔。
如要設定 XProfiler 程式庫,您必須先設定 Google Cloud CLI 和 Python 虛擬環境,然後執行下列指令:
pip install cloud-diagnostics-xprof
這會安裝所有必要的 XProf 和 TensorBoard 依附元件。
接著執行下列指令,建立 VM 或 GKE Pod 來代管 TensorBoard:
xprofiler create -z $ZONE -l $GCS_PATH
或
xprofiler create --GKE -z $ZONE -l $GCS_PATH
將 $ZONE 替換為任何可用區,並將 $GCS_PATH 替換為設定檔追蹤記錄的路徑。 您可以指定根目錄,其中包含多次執行的所有設定檔追蹤記錄,或一次執行的特定設定檔追蹤記錄集。
舉例來說,如果您在下列目錄中擷取設定檔:
gs://bucket-name/run1/plugins/profile/session1/<profile.xplane.pb>
gs://bucket-name/run1/plugins/profile/session2/<profile.xplane.pb>
gs://bucket-name/run2/plugins/profile/session1/<profile.xplane.pb>
您可以將 GCS 路徑設為根目錄 (gs://bucket-name
):
xprofiler create -z $ZONE -l gs://bucket-name/
在 TensorBoard UI 中,您會看到所有執行和工作階段的剖析檔,如 run1/session1
、run1/session2
、run2/session1
。
根據預設,xprofiler create
會建立 Compute Engine VM,具體來說是 c4-highmem-8 VM。您可以使用 -m
標記變更機器類型。如要在 GKE Pod 上建立 TensorBoard 執行個體,而非 Compute Engine VM,可以將 –GKE
旗標傳遞至 xprofiler create
。在 GKE Pod 上代管 TensorBoard 執行個體,可讓您更輕鬆地管理 TensorBoard,以及部署在 GKE 上的其餘工作負載。
與本機代管的 TensorBoard 相比,代管 TensorBoard 的 VM 或 GKE Pod 可大幅加快大型設定檔和多個設定檔的載入速度。 Google Cloud 根據我們的基準測試,使用預設 c4-highmem-8 VM 首次載入時,您會在幾分鐘內看到 1 GB 負載的設定檔。此外,您也可以根據效能和費用需求,選擇合適的機器類型。
執行 xprofiler create
後,畫面會顯示類似下列的輸出內容:
Instance for gs://<bucket> has been created.
You can access it via the following:
1. https://<id>-dot-us-<region>.notebooks.googleusercontent.com.
2. xprofiler connect -z <zone> -l gs://bucket-name -m ssh
Instance is hosted at xprof-97db0ee6-93f6-46d4-b4c4-6d024b34a99f VM.
第一個選項是連結,點選後即可在 TensorBoard 上查看 XProf 設定檔。這個連結可讓您與團隊分享設定檔,也能分享給協助您在 Google Cloud上最佳化成效的 Google 工程師。
您可以根據儲存設定檔資料的 Cloud Storage bucket 權限,控管有權存取連結的對象。如果連結無法正常運作,我們也提供透過 SSH 連線至 TensorBoard 執行個體的方法,以便使用 xprofiler connect
指令查看設定檔。
如果您在工作負載程式碼中啟用 Cloud Profiler 伺服器 (程式輔助和隨選擷取都需要這項功能),並想執行隨選剖析,可以透過下列兩種方式進行:
a. 按一下 TensorBoard 上的「擷取設定檔」按鈕。現在您可以選擇要剖析工作負載執行的任何裝置主機。我們支援在 GKE 或 Compute Engine 上執行的工作負載,進行隨選擷取。
b. 使用 XProfiler 擷取指令,並提供區域、Cloud Storage bucket、架構、主機 VM/Pod 名稱等資訊,以及擷取時間長度 (以毫秒為單位)。這與您在 TensorBoard UI 中輸入的資訊相同。
如要進一步瞭解如何使用 cloud-diagnostics-xprof
程式庫,請參閱這個 GitHub 頁面。