使用 Amazon SageMaker 效能分析工具分析運算資源上 AWS 的活動 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon SageMaker 效能分析工具分析運算資源上 AWS 的活動

Amazon SageMaker 效能分析工具目前為預覽版,且受支援服務免費提供。 AWS 區域一般可用的 Amazon SageMaker 效能評測器版本 (如果有的話) 可能包含與預覽版提供的功能和定價不同。

Amazon SageMaker Profiler 是 Amazon 的一項功能,可提供 SageMaker 在訓練深度學習模型期間佈建的 AWS 運算資源的詳細檢視。 SageMaker它著重於分析 CPU 和 GPU 的使用情況,內核在 GPU 上運行,CPU 上啟動內核,同步操作,跨 CPU 和 GPU 的內存操作,內核啟動和相應運行之間的延遲以及 CPU 和 GPU 之間的數據傳輸。 SageMaker Profiler 也提供可視化定檔的使用者介面 (UI)、已分析事件的統計摘要,以及訓練工作的時間表,用於追蹤和瞭解 GPU 和 CPU 之間事件的時間關係。

注意

SageMaker 效能分析工具支援, PyTorch TensorFlow 且可在 AWS Deep Learning Contain ers 中使用。 SageMaker如需進一步了解,請參閱支援的架構映像檔和執行個體類型 AWS 區域

對於資料科學家

在大型運算叢集訓練深度學習模型通常會遇到運算最佳化問題,例如瓶頸、核心啟動延遲、記憶體限制以及資源使用率低。

若要識別此類運算效能問題,您需要深入分析運算資源,以瞭解哪些核心會導致延遲,以及哪些作業會造成瓶頸。資料科學家可以從使用 SageMaker Profiler UI 視覺化訓練工作的詳細資料檔案中獲益。使用者介面提供儀表板,其中包含總結圖表和時間軸介面,可追蹤運算資源的每個事件。資料科學家也可以使用 SageMaker 效能分析工具 Python 模組新增自訂註解,以追蹤訓練工作的某些部分。

針對管理員

透過 SageMaker 主控台或SageMaker 網域中的效能評測器登陸頁面,如果您是帳戶或網域的管理員,則可以管理效能評測器應用程式使用者。 AWS SageMaker每個網域使用者都可以透過授與的權限存取自己的效能分析工具應用程式。身為 SageMaker 網域系統管理員和網域使用者,您可以建立和刪除效能評測器應用程式,只要您擁有的權限等級即可。

支援的架構映像檔和執行個體類型 AWS 區域

此功能支援下列機器學習架構和 AWS 區域。

注意

若要使用此功能,請確定您已安裝至少版本 2.180.0 的 SageMaker Python SDK。

SageMaker 預先安裝了 SageMaker 效能評測器的框架映像

SageMaker 效能分析工具已預先安裝在下列的 AWS Deep Learning Containers 中。 SageMaker

PyTorch影像

PyTorch 版本 AWS 可下載內容圖片
2.2.0

763104351884 .dkr.ecr. <region>. 亞馬遜公司/火炬訓練:2.0-G-焦糖 -310-cu121-下垂器

2.1.0

763104351884 .dkr.ecr. <region>. 亞馬遜公司/火炬訓練:2.1.0-G-焦糖 -310-cu121-下垂器

2.0.1

763104351884 .dkr.ecr. <region>. 亞馬遜公司/火炬訓練:2.0.1-G-丙基 -310-cu118-下垂器

763104351884 .dkr.ecr. <region>. 亞馬遜公司/火炬訓練:2.0.1-G-焦糖 -310-cu121-下垂器

1.13.1

763104351884 .dkr.ecr. <region>. 亞馬遜公司/火炬訓練:1.13.1-克普-皮 39-共 110-下垂器

TensorFlow 影像

TensorFlow 版本 AWS 可下載內容圖片
2.13.0

763104351884 .dkr.ecr. <region>. 亞馬遜/張力流訓練:2.13.0-G-皮膚 -310-cu118-下垂器

2.12.0

763104351884 .dkr.ecr. <region>. 亞馬遜/張力流訓練:2.12.0-G-焦糖 -310-cu118-下垂器

2.11.0

763104351884 .dkr.ecr. <region>. 亞馬遜/張力流訓練:2.11.0-G-焦糖 -39-共 112-下垂器

重要

上述資料表中架構容器的散佈與維護,是根據 AWS Deep Learning Containers 服務所管理的架構 Support 原則。我們強烈建議您升級至目前支援的架構版本 (如果您使用的是不再支援的舊版架構版本)。

注意

如果您想要將 SageMaker 效能分析工具用於其他架構影像或您自己的 Docker 映像檔,您可以使用下一節提供的效能 SageMaker 評測工具 Python 套件二進位檔案來安裝 SageMaker 效能分析工具。

SageMaker 效能分析工具 Python 套件二進位檔案

如果您想要設定自己的 Docker 容器,請在 PyTorch 和的其他預先建置容器中使用 SageMaker 效能分析工具 TensorFlow,或在本機安裝 SageMaker Profiler Python 套件,請使用下列二進位檔案之一。根據您環境中的 Python 和 CUDA 版本,選擇下列其中一個選項。

PyTorch

TensorFlow

如需如何使用二進位檔案安裝 SageMaker 效能評測器的詳細資訊,請參閱。(選擇性) 安裝 SageMaker 效能分析工具 Python 套件

支援 AWS 區域

SageMaker 下列提供效能分析工具。 AWS 區域

  • 美國東部 (維吉尼亞北部) (us-east-1)

  • 美國東部 (俄亥俄) (us-east-2)

  • 美國西部 (奧勒岡) (us-west-2)

  • 歐洲 (法蘭克福) (eu-central-1)

  • 歐洲 (愛爾蘭) (eu-west-1)

支援的執行個體類型

SageMaker 效能分析工具支援下列執行個體類型的訓練工作分析。

CPU 和 GPU 效能分析

  • ml.g4dn.12xlarge

  • ml.g5.24xlarge

  • ml.g5.48xlarge

  • ml.p3dn.24xlarge

  • ml.p4de.24xlarge

  • ml.p4d.24xlarge

  • ml.p5.48xlarge

僅限 GPU 效能分析

  • ml.g5.2xlarge

  • ml.g5.4xlarge

  • ml.g5.8xlarge

  • ml.g5.16.xlarge

必要條件

下列清單顯示開始使用 SageMaker 效能評測器的必要條件。

  • 在您的 AWS 帳戶中使用 Amazon VPC 設定的 SageMaker 網域。

    如需設定網域的指示,請參閱使用快速設定登入 Amazon SageMaker 網域。您還需要為個別使用者新增網域使用者設定檔,才能存取效能評測器 UI 應用程式。如需詳細資訊,請參閱新增和移除 SageMaker 網域使用者設定檔

  • 下列清單是使用 Profiler 使用者介面應用程式的最低權限集。

    • sagemaker:CreateApp

    • sagemaker:DeleteApp

    • sagemaker:DescribeTrainingJob

    • sagemaker:Search

    • s3:GetObject

    • s3:ListBucket

使用 SageMaker 效能評測器準備和執行訓練工作

使用 SageMaker 效能評測器設定執行訓練工作包含兩個步驟:調整訓練指令碼和設定訓練工作啟動器 SageMaker 。

步驟 1:使用 SageMaker 效能分析工具 Python 模組調整訓練指令碼

若要在訓練工作執行時開始擷取 GPU 上執行的核心,請使用 SageMaker 效能分析工具 Python 模組修改訓練指令碼。匯入程式庫並新增 start_profiling()stop_profiling() 方法以定義分析的開始與結束。您也可以使用選擇性的自訂註釋,在訓練指令碼新增標記,以便在每個步驟的特定作業期間視覺化硬體活動。

請注意,註釋器會從 GPU 擷取作業。對於 CPU 的分析作業,您不需要新增任何其他的註釋。當您指定分析設定時,也會啟用 CPU 分析,您將在 步驟 2:建立 SageMaker 架構估算器並啟動效能分析工具 SageMaker 練習該設定。

注意

分析整個訓練任務並不是資源的最有效利用方式。我們建議對訓練任務的最多 300 個步驟進行分析。

重要

的發行2023 年 12 月 14 日涉及重大變更。 SageMaker 效能評測工具 Python 套件名稱會從smppy變更為。smprof這在 TensorFlow v2.12 及更高版本的SageMaker 框架容器中有效。

如果您使用其中一個舊版的SageMaker 架構容器 (例如 TensorFlow v2.11.0),則效能分 SageMaker 析工具 Python 套件仍然可以作為使用。smppy如果您不確定應該使用哪個版本或套件名稱,請以下列程式碼片段取代 SageMaker Profiler 套件的 import 陳述式。

try: import smprof except ImportError: # backward-compatability for TF 2.11 and PT 1.13.1 images import smppy as smprof

方法 1. 使用關聯內容管理工具 smprof.annotate 來註釋完整的函式

您可以使用smprof.annotate()上下文管理器包裝完整的功能。如果您想按函式而不是程式碼行進行分析,建議使用此包裝函式。下列範例指令碼顯示如何實作上下文管理工具,以便在每次反覆運算包裝訓練循環及完整函式。

import smprof SMProf = smprof.SMProfiler.instance() config = smprof.Config() config.profiler = { "EnableCuda": "1", } SMProf.configure(config) SMProf.start_profiling() for epoch in range(args.epochs): if world_size > 1: sampler.set_epoch(epoch) tstart = time.perf_counter() for i, data in enumerate(trainloader, 0): with smprof.annotate("step_"+str(i)): inputs, labels = data inputs = inputs.to("cuda", non_blocking=True) labels = labels.to("cuda", non_blocking=True) optimizer.zero_grad() with smprof.annotate("Forward"): outputs = net(inputs) with smprof.annotate("Loss"): loss = criterion(outputs, labels) with smprof.annotate("Backward"): loss.backward() with smprof.annotate("Optimizer"): optimizer.step() SMProf.stop_profiling()

方法 2. 使用 smprof.annotation_begin()smprof.annotation_end() 註釋函式的特定程式碼行

您也可以定義註釋以分析特定的程式碼行。您可以在個別程式碼行的層級 (而不是函式) 設定準確的分析起點與終點。例如,在下面的指令碼,step_annotator 在每次反覆運算開始時定義,並在反覆運算結束時結束。同時,定義每個操作的其他詳細註釋器,並在每次反覆運算過程圍繞目標操作。

import smprof SMProf = smprof.SMProfiler.instance() config = smprof.Config() config.profiler = { "EnableCuda": "1", } SMProf.configure(config) SMProf.start_profiling() for epoch in range(args.epochs): if world_size > 1: sampler.set_epoch(epoch) tstart = time.perf_counter() for i, data in enumerate(trainloader, 0): step_annotator = smprof.annotation_begin("step_" + str(i)) inputs, labels = data inputs = inputs.to("cuda", non_blocking=True) labels = labels.to("cuda", non_blocking=True) optimizer.zero_grad() forward_annotator = smprof.annotation_begin("Forward") outputs = net(inputs) smprof.annotation_end(forward_annotator) loss_annotator = smprof.annotation_begin("Loss") loss = criterion(outputs, labels) smprof.annotation_end(loss_annotator) backward_annotator = smprof.annotation_begin("Backward") loss.backward() smprof.annotation_end(backward_annotator) optimizer_annotator = smprof.annotation_begin("Optimizer") optimizer.step() smprof.annotation_end(optimizer_annotator) smprof.annotation_end(step_annotator) SMProf.stop_profiling()

註解並設定效能分析工具初始模組之後,請在下列步驟 2 中使用 SageMaker 訓練工作啟動器儲存指令碼以提交。範例啟動器假設訓練指令碼已命名為 train_with_profiler_demo.py

步驟 2:建立 SageMaker 架構估算器並啟動效能分析工具 SageMaker

下列程序顯示如何準備 SageMaker 架構估算器,以便使用 SageMaker Python SDK 進行訓練。

  1. 使用 ProfilerConfigProfiler 模組設定 profiler_config 物件,如下所示。

    from sagemaker import ProfilerConfig, Profiler profiler_config = ProfilerConfig( profile_params = Profiler(cpu_profiling_duration=3600) )

    以下是 Profiler 模組及其參數的描述。

    • Profiler:使用訓練工作啟動 SageMaker 效能評測器的模組。

      • cpu_profiling_duration (int):指定在 CPU 進行分析的持續時間 (以秒為單位)。預設為 3600 秒。

  2. 使用在上一個步驟中創建的對profiler_config象創建 SageMaker 框架估算器。下列程式碼顯示建立 PyTorch 估算器的範例。如果您要建立 TensorFlow 估算器,請sagemaker.tensorflow.TensorFlow改為匯入,然後指定效能評測器支援的其中一個TensorFlow版本。 SageMaker 如需支援的架構及執行個體類型詳細資訊,請參閱SageMaker 預先安裝了 SageMaker 效能評測器的框架映像

    import sagemaker from sagemaker.pytorch import PyTorch estimator = PyTorch( framework_version="2.0.0", role=sagemaker.get_execution_role(), entry_point="train_with_profiler_demo.py", # your training job entry point source_dir=source_dir, # source directory for your training script output_path=output_path, base_job_name="sagemaker-profiler-demo", hyperparameters=hyperparameters, # if any instance_count=1, # Recommended to test with < 8 instance_type=ml.p4d.24xlarge, profiler_config=profiler_config )
  3. 透過執行 fit 方法以啟動訓練任務。使用 wait=False,您可以靜音訓練任務日誌,並讓它在背景執行。

    estimator.fit(wait=False)

執行訓練任務時或作業完成後,您可以前往 開啟 SageMaker 效能分析工具 UI 應用程式 的下一個主題,並開始探索並視覺化儲存的設定檔。

如果您想要直接存取儲存在 Amazon S3 儲存貯體的設定檔資料,請使用下列指令碼擷取 S3 URI。

import os # This is an ad-hoc function to get the S3 URI # to where the profile output data is saved def get_detailed_profiler_output_uri(estimator): config_name = None for processing in estimator.profiler_rule_configs: params = processing.get("RuleParameters", dict()) rule = config_name = params.get("rule_to_invoke", "") if rule == "DetailedProfilerProcessing": config_name = processing.get("RuleConfigurationName") break return os.path.join( estimator.output_path, estimator.latest_training_job.name, "rule-output", config_name, ) print( f"Profiler output S3 bucket: ", get_detailed_profiler_output_uri(estimator) )

(選擇性) 安裝 SageMaker 效能分析工具 Python 套件

若要在SageMaker 預先安裝了 SageMaker 效能評測器的框架映像未列於中 PyTorch 或您自訂 Docker 容器上使用 SageMaker 效能分析工 SageMaker 具或 TensorFlow 架構映像檔進行訓練,您可以使用. SageMaker 效能分析工具 Python 套件二進位檔案

選項 1:啟動訓練工作時安裝 SageMaker 效能評測器套件

如果您要使用 SageMaker Profiler 進行訓練工作 PyTorch 或未列於中的 TensorFlow 影像SageMaker 預先安裝了 SageMaker 效能評測器的框架映像,請建立requirements.txt檔案,並在步驟 2 中為 SageMaker 架構估計器source_dir參數指定的路徑下找到該檔案。如需有關一般設定requirements.txt檔案的詳細資訊,請參閱 SageMaker Python SDK 文件中的使用協力廠商程式庫。在requirements.txt檔案中,為SageMaker 效能分析工具 Python 套件二進位檔案.

# requirements.txt https://smppy.s3.amazonaws.com/tensorflow/cu112/smprof-0.3.332-cp39-cp39-linux_x86_64.whl

選項 2:在您的自訂 Docker 容 SageMaker 器中安裝效能分析工具套件

如果您使用自訂 Docker 容器進行訓練,請將其中一個新增SageMaker 效能分析工具 Python 套件二進位檔案至 Docker 檔案。

# Install the smprof package version compatible with your CUDA version RUN pip install https://smppy.s3.amazonaws.com/tensorflow/cu112/smprof-0.3.332-cp39-cp39-linux_x86_64.whl

如需執行自訂 Docker 容器以進行一般訓練的 SageMaker 指引,請參閱調整您自己的訓練容器。

開啟 SageMaker 效能分析工具 UI 應用程式

您可以透過下列選項存取 SageMaker 效能分析工具 UI 應用程式。

選項 1:從網域詳細資 SageMaker 料頁面啟動效能評測器 UI

如果您可以訪問 SageMaker 控制台,則可以選擇此選項。

導覽至網域詳細資訊頁面

下列程序顯示如何瀏覽至網域詳細資訊頁面。

  1. 在以下位置打開 Amazon SageMaker 控制台 https://console.aws.amazon.com/sagemaker/

  2. 在左側導覽窗格中,選擇 [網域]。

  3. 從網域清單中,選取您要啟動效能 SageMaker 評測器應用程式的網域。

啟動 SageMaker 效能分析工具 UI 應用程式

下列程序顯示如何啟動範圍為使用 SageMaker 者設定檔的效能評測器應用程式。

  1. 在網域詳細資料頁面上,選擇使用者設定檔索引標籤。

  2. 識別您要啟動 SageMaker 效能評測器 UI 應用程式的使用者設定檔。

  3. 為選取的使用者設定檔選擇啟動,然後選取 Profiler

選項 2:從主控台的效能 SageMaker 評測器登陸頁面啟動效能 SageMaker 評測工具 UI 應用程式 SageMaker

下列程序說明如何從主控台的效能 SageMaker 評測器登陸頁面啟動效能 SageMaker 評測器 UI 應用程式。 SageMaker 如果您可以訪問 SageMaker控制台,則可以選擇此選項。

  1. 在以下位置打開 Amazon SageMaker 控制台 https://console.aws.amazon.com/sagemaker/

  2. 在左側導覽窗格,選擇 Profiler

  3. 在 [開始使用] 下,選取您要在其中啟動 Studio 典型應用程式的網域。如果您的使用者設定檔僅屬於一個網域,您將看不到選取網域的選項。

  4. 選取您要啟動 SageMaker 效能評測器 UI 應用程式的使用者設定檔。如果網域中沒有使用者設定檔,請選擇 [建立使用者設定檔]。如需有關建立新使用者設定檔的更多相關資訊,請參閱新增和移除使用者設定檔

  5. 選擇開啟 Profiler

選項 3:在 SageMaker Python SDK 中使用應用程式啟動器功能

如果您是 SageMaker 網域使用者,而且只能存取 SageMaker Studio,您可以透過 SageMaker Studio 經典型來存取 SageMaker 效能分析工具 UI 應用程式,方法是執行函式。sagemaker.interactive_apps.detail_profiler_app.DetailProfilerApp

請注意,工作 SageMaker 室經典版是 Re:Invent 2023 之前的先前工作室 UI 體驗,並且會以應用程式的形式遷移到新設計的工作室 UI 中,在 RE: Invent 2023。效能分 SageMaker 析工具 UI 應用程式可在 SageMaker 網域層級使用,因此需要您的網域 ID 和使用者設定檔名稱。目前,該DetailedProfilerApp功能僅適用於 SageMaker Studio 經典應用程序; 該功能正確獲取來自 SageMaker Studio 經典的域和用戶配置文件信息。

對於在 RE: Invent 2023 之前建立的網域、網域使用者和工作室,除非您已按照從 Amazon 工作室傳統版移轉中的說明進行更新,否則 Studio 傳統版將是預設體驗。 SageMaker 如果是這種情況,則不需要進一步的操作,您可以通過運行功能直接啟動 SageMaker Profiler UI 應用程序。DetailProfilerApp

如果您在 RE: Invent 2023 之後建立新的網域和工作室,請在工作室 UI 中啟動工作室典型應用程式,然後執行DetailProfilerApp函式以啟動效能分析工具 UI 應用程式。 SageMaker

請注意,此DetailedProfilerApp函數不適用於其他 SageMaker機器學習 IDE,例如 SageMaker Studio JupyterLab 應用程式、Studio 程式碼編輯器應用程式和 SageMaker 筆記本執行個體。 SageMaker 如果您在這些 IDE 中執行DetailedProfilerApp函式,它會傳回 SageMaker 主控台中效能評測工具登陸頁面的 URL,而不是直接連結以開啟效能評測工具 UI 應用程式。

探索效 SageMaker 能評測器 UI 中視覺化的描述檔輸出資料

本節逐步介紹效能 SageMaker 評測器 UI,並提供如何使用和從中獲得見解的秘訣。

載入設定檔

當您開啟效能評 SageMaker 測器 UI 時,會開啟 [載入設定檔] 頁面。若要載入並產生儀表板時間軸,請執行以下步驟。

載入訓練任務的設定檔
  1. 訓練任務清單區段,使用核取方塊選擇您要載入設定檔的訓練任務。

  2. 選擇載入。作業名稱應顯示在頂部的已載入設定檔區段。

  3. 選擇工作名稱左側的選項按鈕,以產生儀表板時間軸。請注意,當您選擇選項按鈕時,使用者介面會自動開啟儀表板。另請注意,如果您在工作狀態和載入狀態似乎仍在進行中時產生視覺效果, SageMaker Profiler UI 會產生儀表板繪圖和時間軸,直到從進行中的訓練工作或部分載入的描述檔資料收集到的最新設定檔資料。

提示

您一次可以載入並視覺化一個設定檔。若要載入其他設定檔,您必須先卸載先前載入的設定檔。若要卸載設定檔,請使用已載入設定檔區段設定檔右端的垃圾桶圖示。

SageMaker 效能評測器 UI 中載入設定檔頁面的螢幕擷取畫面

儀表板

完成載入並選取訓練任務後,使用者介面會開啟預設包含下列面板的儀表板頁面。

  • GPU 使用中時間–此圓餅圖顯示 GPU 使用時間與 GPU 閒置時間的百分比。您可以檢查在整個訓練任務 GPU 的使用時間是否多於閒置狀態。GPU 使用時間是以使用率大於 0% 的設定檔資料點為基礎,而 GPU 閒置時間則是以使用率為 0% 的分析資料點。

  • 隨時間變化的 GPU 使用率–此時間軸圖顯示每個節點隨時間變化的平均 GPU 使用率,並將所有節點彙總到單一圖表。您可以檢查 GPU 在特定時間間隔內是否有工作負載不平衡、使用率不足的問題、瓶頸或閒置問題。若要追蹤個別 GPU 層級的使用率以及相關核心執行,請使用 時間軸介面。請注意,GPU 活動集合會從您在訓練指令碼新增分析工具啟動器函式 SMProf.start_profiling() 的位置開始,然後停在 SMProf.stop_profiling()

  • CPU 使用中時間–此圓餅圖顯示 CPU 使用時間與 CPU 閒置時間的百分比。您可以檢查在整個訓練任務 GPU 的正在啟用時間是否多於閒置狀態。GPU 使用時間是以使用率大於 0% 的設定檔資料點為基礎,而 GPU 閒置時間則是以使用率為 0% 的分析資料點。

  • 隨時間變化的 CPU 利用率–此時間軸圖表顯示每個節點隨時間變化的平均 CPU 利用率,將所有節點彙總在單一圖表。您可以檢查 CPU 在特定時間間隔內是否出現瓶頸或使用量過低。若要追蹤與個別 GPU 使用率及核心執行一致的 CPU 使用率,請使用 時間軸介面。請注意,使用率指標是從作業初始化開始就開始計算。

  • 所有 GPU 核心花費的時間–此圓餅圖顯示整個訓練任務執行的所有 GPU 核心。根據預設,它將排名前 15 個 GPU 核心顯示為單一磁區,並將所有其他核心顯示為一個磁區。將滑鼠懸停在磁區可查看更詳細的資訊。此值會顯示 GPU 核心運作的總時間 (以秒為單位),而百分比則是以設定檔的整個時間為基礎。

  • 前 15 個 GPU 核心花費的時間–此圓餅圖顯示整個訓練任務執行的所有 GPU 核心。它將前 15 個 GPU 核心顯示為單獨的磁區。將滑鼠懸停在磁區可查看更詳細資訊。此值會顯示 GPU 核心運作的總時間 (以秒為單位),而百分比則是以設定檔的整個時間為基礎。

  • 所有 GPU 核心的啟動計數–此圓餅圖顯示在整個訓練任務啟動的每個 GPU 核心的計數。它將前 15 個 GPU 核心顯示為單獨的磁區,並將所有其他核心顯示為一個磁區。將滑鼠懸停在磁區可查看更詳細資訊。此值會顯示 GPU 核心運作的總時間 (以秒為單位),而百分比則是以設定檔的整個時間為基礎。

  • 前 15 個 GPU 核心的啟動計數–此圓餅圖顯示整個訓練任務啟動的每個 GPU 核心的計數。它顯示了前 15 個 GPU 核心。將滑鼠懸停在磁區可查看更詳細資訊。此值會顯示 GPU 核心運作的總計數 (以秒為單位),而百分比則是以設定檔的整個時間為基礎。

  • 步驟時間分佈–此長條圖顯示 GPU 步驟持續時間的分佈。只有當您在訓練指令碼新增步驟註釋器後,才會產生此圖。

  • 核心精確度分佈–此圓餅圖顯示在不同資料類型 (例如 FP32、FP16、INT32 及 INT8) 執行核心所花費的時間百分比。

  • GPU 使用分佈–此圓餅圖顯示花在 GPU 使用的時間百分比,例如執行核心、記憶體 (memcpymemset) 及同步處理 (sync)。

  • GPU 記憶體作業分佈–此圓餅圖顯示花在 GPU 記憶體作業的時間百分比。這可以視覺化 memcopy 活動,並有助於識別您的訓練任務是否在某些記憶體作業花費了過多的時間。

  • 建立新的長條圖–建立您在期間 步驟 1:使用 SageMaker 效能分析工具 Python 模組調整訓練指令碼 手動註釋的自訂指標的新圖表。將自訂註釋新增至新的長條圖時,請選取或輸入您在訓練指令碼新增的註釋名稱。例如,在步驟 1 的示範訓練指令碼中,stepForwardBackwardOptimize、及 Loss 是自訂註釋。建立新的色階分佈圖時,這些註解名稱應該會出現在量度選取的下拉式功能表中。如果您選擇 Backward,使用者介面會將整個分析時間內向後傳遞所用時間的長條圖新增至儀表板。這種類型的長條圖對於檢查是否存在極端值花費異常長的時間並導致瓶頸問題非常有用。

下列螢幕擷取畫面顯示 GPU 及 CPU 使用時間比率,以及相對於每個運算節點時間的平均 GPU 與 CPU 利用率。

SageMaker 效能評測器 UI 中「儀表板」頁面的螢幕擷取畫面

下列螢幕擷取畫面顯示圓餅圖範例,用來比較 GPU 核心啟動的次數,以及測量執行核心所花費的時間。在所有 GPU 核心花費的時間所有 GPU 核心的啟動計數面板,您也可以為 k 的輸入欄位指定整數,以調整要在繪圖顯示的圖例數量。例如,如果您指定 10,則繪圖將分別顯示執行次數最多及啟動次數最多的前 10 個核心。

SageMaker 效能評測器 UI 中「儀表板」頁面的螢幕擷取畫面

下列螢幕擷取畫面顯示步驟持續時間長條圖的範例,以及核心精確度分佈、GPU 使用分佈與 GPU 記憶體作業分佈的圓餅圖。

SageMaker 效能評測器 UI 中「儀表板」頁面的螢幕擷取畫面

時間軸介面

若要詳細檢視在 CPU 排程並在 GPU 執行的作業及核心層級的運算資源,請使用 時間軸介面。

您可以使用滑鼠、[w, a, s, d] 按鍵或鍵盤的四個方向鍵,在時間軸介面進行放大及縮小以及向左或向右平移。

提示

如需有關與時間軸介面互動鍵盤快速鍵的更多提示,請選擇左窗格的 Keyboard shortcuts (鍵盤快速鍵)。

時間軸軌道以樹狀結構組織,為您提供從主機層級到裝置層級的資訊。例如,如果您執行的 N 執行個體具有 8 個 GPU,則每個執行個體的時間軸結構將如下所示。

  • algo-i node — 這是將工作指派給已佈建執行個體的 SageMaker 標籤。數字 inode 是隨機分配。例如,如果您使用 4 個執行個體,則此區段將從 algo-1 擴展到 algo-4

    • CPU–在本節,您可以檢查平均 CPU 利用率及效能計數器。

    • GPU–在本節,您可以檢查平均 GPU 利用率、單個 GPU 利用率及核心。

      • SUM 使用率–每個執行個體的平均 GPU 利用率。

      • HOST-0 PID-123–指派給每個流程追蹤的唯一名稱。縮寫 PID 是流程 ID,附加的數字是在從程序資料擷取期間記錄的流程 ID 號碼。本節顯示流程的以下資訊。

        • GPU-inum_gpu 使用率–第 inum_gpu 個 GPU 隨著時間推移的使用率。

        • GPU-inum_gpu 裝置–核心在第 inum_gpu 個 GPU 裝置執行。

          • 串流 i cuda_stream–顯示 GPU 裝置上執行核心的 CUDA 串流。若要進一步了解 CUDA 串流,請參閱 NVIDIA 提供的 CUDA C/C++ 串流與並行處理的 PDF 格式的投影片。

        • GPU-inum_gpu 主機–核心會在第 inum_gpu 個 GPU 主機啟動。

下列幾張螢幕擷取畫面顯示在 ml.p4d.24xlarge 執行個體執行的訓練任務設定檔的時間軸,每個執行個體都配備 8 個 NVIDIA A100 Tensor Core GPU。

以下是設定檔的放大檢視,列印了十幾個步驟,包括 step_232step_233 之間的間歇性資料載入器,用於擷取下一批資料。

效能 SageMaker 評測工具 UI 中「時間軸」頁面的螢幕擷取畫面,可視化訓練工作範例的設定檔。

對於每個 CPU,您可以追蹤 CPU 利用率及效能計數器,例如 "clk_unhalted_ref.tsc""itlb_misses.miss_causes_a_walk",這些計數器表示在 CPU 執行的指示。

對於每個 GPU,您都可以查看主機時間軸與裝置時間軸。核心啟動位於主機時間軸上,核心執行位於裝置時間軸。如果您已在 GPU 主機時間軸新增訓練指令碼,也可以看到註釋 (例如向前、向後及最佳化)。

在時間軸檢視中,您也可以追蹤核心 launch-and-run 配對。這有助於您瞭解主機 (CPU) 排程的核心啟動如何在相對應的 GPU 裝置執行。

提示

按下 f 鍵可放大選取的核心。

下列螢幕擷取畫面是先前螢幕擷取畫面 step_233step_234 的放大檢視。在下列螢幕擷取畫面中選取的時間間隔是在 GPU-0 裝置執行的 AllReduce 作業,這是分散式訓練基本通訊與同步步驟。在螢幕擷取畫面,請注意 GPU-0 主機中的核心啟動會連線至 GPU-0 裝置串流 1 中的核心執行,並以青色箭頭表示。

SageMaker 效能評測器 UI 中「時間軸」頁面的螢幕擷取畫面

當您選取時間軸間隔時,使用者介面的底部窗格中也會出現兩個資訊索引標籤,如先前螢幕擷取畫面所示。Current Selection (目前選取項目) 索引標籤會顯示所選核心的詳細資訊,以及從主機啟動連線的核心。連線方向始終是從主機 (CPU )到裝置 (GPU),因為每個 GPU 核心始終從 CPU 呼叫。Connections (連線) 索引標籤顯示所選的核心啟動及執行配對。您可以選取其中一個,將其移至時間軸檢視的中心。

下列螢幕擷取畫面會進一步放大 AllReduce 作業啟動及執行配對。

SageMaker 效能評測器 UI 中「時間軸」頁面的螢幕擷取畫面

資訊

資訊,您可以存取已載入訓練任務的相關資訊,例如執行個體類型、為作業佈建的運算資源的 Amazon Resource Name (ARN)、節點名稱及超參數。

設定

效能 SageMaker 評測器 UI 應用程式執行個體預設設定為閒置 2 小時後關閉。在設定,使用下列設定來調整自動關閉計時器。

  • 啟用應用程式自動關閉–選擇並設定為啟用,讓應用程式在指定的閒置時間後自動關閉。若要關閉自動關閉功能,請選擇停用

  • 自動關閉臨界值 (以小時為單位) – 如果您選擇啟用做為 啟用應用程式自動關閉,則可以設定應用程式自動關閉的臨界值時間 (以小時為單位)。預設為 2。

關於使用 SageMaker 效能評測器的常見問題

使用下列常見問題集尋找有關使用效能 SageMaker 評測器的答案。

問:我收到錯誤訊息,ModuleNotFoundError: No module named 'smppy'

自 2023 年 12 月起,效能 SageMaker 評測工具 Python 套件的名稱已從變更為,smppysmprof以解決重複的套件名稱問題;開放原始碼套件smppy已經使用。

因此,如果您從 2023 年 12 月之前開smppy始使用,並且遇到此ModuleNotFoundError問題,可能是因為訓練指令碼中的套件名稱已過時,同時安裝了最新的smprof套件,或是使用最新的套件之一。SageMaker 預先安裝了 SageMaker 效能評測器的框架映像在此情況下,請務必將所有提及的內容取代為smprofsmppy個訓練指令碼。

在訓練指令碼中更新 SageMaker Profiler Python 套件名稱時,若要避免您應該使用的套件名稱版本造成混淆,請考慮使用下列程式碼片段所示的條件匯入陳述式。

try: import smprof except ImportError: # backward-compatability for TF 2.11 and PT 1.13.1 images import smppy as smprof

另請注意,如果您在升級至最新 TensorFlow 版 PyTorch 或版本smppy時一直在使用,請確定您已依照中的指示安裝最新的smprof套件(選擇性) 安裝 SageMaker 效能分析工具 Python 套件

問:我收到錯誤訊息,ModuleNotFoundError: No module named 'smprof'

首先,請確定您使用其中一個官方支援的 SageMaker 架構容器。如果您不使用其中之一,則可以按照以下說明安smprof裝該軟件包(選擇性) 安裝 SageMaker 效能分析工具 Python 套件

問:我無法匯入 ProfilerConfig

如果您無法使用 SageMaker Python SDK 匯ProfilerConfig入工作啟動器指令碼,您的本機環境或 Jupyter 核心的 SageMaker Python SDK 版本可能已大幅過時。請確定您已將 SDK 升級至最新版本。

$ pip install --upgrade sagemaker

問:我收到錯誤訊息,aborted: core dumped when importing smprof into my training script

在舊版中smprof, PyTorch 2.0+ 和 PyTorch 閃電會發生此問題。若要解決這個問題,請依照下列指示,安smprof裝最新的套件(選擇性) 安裝 SageMaker 效能分析工具 Python 套件

問:我找不到工作室中 SageMaker 的 SageMaker 效能分析工具使用者介面。我怎樣才能找到它?

如果您可以存取 SageMaker 主控台,請選擇下列其中一個選項。

如果您是網域使用者且無法存取 SageMaker 主控台,則可以透過 SageMaker Studio 經典版存取應用程式。如果是這種情況,請選擇以下選項。

考量事項

使用 SageMaker 效能評測器時,請考慮下列事項。