共用方式為


偵錯作業並監視定型進度

機器學習模型定型是反覆執行的流程,而且需要大量實驗。 透過 Azure Machine Learning 互動式作業體驗,資料科學家可以使用 Azure Machine Learning Python SDK、Azure Machine Learning CLI 或 Azure Studio 來存取其作業執行所在的容器。 存取作業容器之後,使用者可以逐一查看定型指令碼、監視定型進度,或是從遠端偵錯作業,就像通常在本機電腦上執行的動作一樣。 使用者可以透過包括 JupyterLab、TensorBoard 和 VS Code 在內的不同定型應用程式與作業進行互動,或是透過 SSH 直接連線至作業容器。

Azure Machine Learning 計算叢集已啟用 Azure Arc 的 Kubernetes 叢集支援互動式定型。

必要條件

  • 請檢閱開始使用 Azure Machine Learning 的定型
  • 如需詳細資訊,請參閱 VS Code 的此連結,以設定 Azure Machine Learning 擴充。
  • 請確定您的作業環境已安裝 openssh-serveripykernel ~=6.0 套件 (所有 Azure Machine Learning 的策劃定型環境都會預設安裝這些套件)。
  • 分散式定型執行無法啟用互動式應用程式,其中散發類型不是 PyTorch、TensorFlow 或 MPI。 目前不支援自訂的分散式定型設定 (未使用上述分散式架構設定多節點定型)。
  • 若要使用 SSH,您需要 SSH 金鑰組。 您可以使用 ssh-keygen -f "<filepath>" 命令來產生公開和私密金鑰組。

與您的作業容器互動

藉由在作業建立時指定互動式應用程式,您可以直接連線至執行作業所在計算節點上的容器。 一旦您能夠存取作業容器,就可以在與執行作業完全的相同環境中測試或偵錯作業。 您也可以使用 VS Code 附加至執行中的程序並進行偵錯,就像在本機執行的動作一樣。

在作業提交期間啟用

  1. 在 Studio 入口網站左側的瀏覽窗格中建立新的作業。

  2. 選擇 [計算叢集] 或 [附加計算] (Kube) 作為計算類型、選擇計算目標,然後指定您在 Instance count 中所需的節點數目。

選取作業的計算位置螢幕擷取畫面。

  1. 遵循精靈以選擇您想要啟動作業的環境。

  2. 在 [訓練指令碼] 步驟中新增訓練程式碼 (及輸入/輸出資料),並在您的命令中加以參考,以確保該訓練程式碼已掛接至您的作業。

檢閱作業草稿並完成建立的螢幕擷取畫面。

您可以將 sleep <specific time> 放在命令的結尾處,指定您想要保留計算資源的時間量。 遵循的格式為:

  • sleep 1s
  • sleep 1m
  • sleep 1h
  • sleep 1d

您也可以使用會讓作業無限期保持運作的 sleep infinity 的命令。

注意

如果您使用 sleep infinity,則必須手動取消作業,才能釋出計算資源 (以及停止計費)。

  1. 在 [計算] 設定中,展開 [訓練應用程式] 選項。 選取至少一個您想要用來與作業互動的定型應用程式。 如果您未選取應用程式,將無法使用偵錯功能。

選取使用者可用於作業的訓練應用程式螢幕擷取畫面。

  1. 檢閱並建立作業。

連線至端點

若要與執行中的作業互動,請選取作業詳細資料頁面上的 [偵錯及監視] 按鈕。

互動式作業的螢幕擷取畫面:偵錯及監視面板的位置。

按一下面板中的應用程式會開啟應用程式的新索引標籤。 您只能在應用程式處於 [執行中] 狀態時才能存取應用程式,而且只有「作業擁有者」有權存取應用程式。 如果您要在多個節點上定型,您可以挑選想要與其互動的特定節點。

互動式作業右側面板資訊的螢幕擷取畫面。信息內容會根據使用者的資料而有所不同。

啟動作業及建立作業期間指定的定型應用程式可能需要幾分鐘的時間。

與應用程式互動

選取端點以與作業互動時,系統會將您帶往工作目錄下的使用者容器,您可以在其中存取程式碼、輸入、輸出和記錄。 如果您在連線至應用程式時遇到任何問題,您可以在 [輸出 + 記錄] 索引標籤下的 [system_logs] -> [interactive_capability] 找到互動式功能和應用程式記錄。

互動式作業的螢幕擷取畫面:互動式記錄面板的位置。

  • 您可以從 Jupyter Lab 開啟終端機,並開始在作業容器內互動。 您也可以使用 Jupyter Lab 直接逐一查看定型指令碼。

    互動式作業的螢幕擷取畫面:Jupyter Lab 內容面板。

  • 您也可以在 VS Code 中與作業容器互動。 若要在作業提交期間將偵錯工具附加至作業並暫停執行,請瀏覽此處

    注意

    使用 VS Code 與作業容器互動時,目前不支援啟用私人連結的工作區。

    第一次開啟時互動式作業 VS Code 面板的螢幕擷取畫面。顯示列印為兩行的樣本 Python 檔案。

  • 如果您已記錄作業的 Tensorflow 事件,您可以使用 TensorBoard 來監視作業執行時的計量。

    第一次開啟時互動式作業 Tensorboard 面板的螢幕擷取畫面。此資訊會根據客戶資料而有所不同

結束作業

完成互動式定型之後,您也可以移至作業詳細資料頁面取消作業,如此可釋出計算資源。 或者,在 CLI 中使用 az ml job cancel -n <your job name>,或在 SDK 中使用 ml_client.job.cancel("<job name>")

互動式作業的螢幕擷取畫面:可供使用者選取的取消作業選項及其位置

將偵錯工具附加至作業

若要提交附加偵錯工具的作業並暫停執行,您可以使用 debugpy 和 VS Code (必須在作業環境中安裝 debugpy)。

注意

將偵錯工具附加至 VS Code 中的作業時,目前不支援啟用私人連結的工作區。

  1. 在作業提交期間 (透過 UI、CLI 或 SDK),請使用 debugpy 命令來執行 Python 指令碼。 例如,下列螢幕擷取畫面顯示以 debugpy 附加 TensorFlow 指令碼偵錯工具的範例命令 (tfevents.py 可以取代為訓練指令碼的名稱)。

互動式作業的螢幕擷取畫面:debugpy 的設定

  1. 提交作業之後,請連線至 VS Code,然後選取內建的偵錯工具。

    互動式作業的螢幕擷取畫面:在左側面板上開啟偵錯工具的位置

  2. 使用「遠端附加」偵錯設定附加至提交的作業,並傳入您在作業提交命令中設定的路徑和連接埠。 您也可以在作業詳細資料頁面上找到此資訊。

    互動式作業的螢幕擷取畫面:已完成作業

    互動式作業的螢幕擷取畫面:新增遠端附加按鈕

  3. 設定中斷點並逐步執行作業,就像在本機偵錯工作流程中執行的動作一樣。

    在 Visual Studio Code 編輯器中設定中斷點的範例螢幕擷取畫面

注意

如果您使用 debugpy 啟動作業,系統不會執行您的作業,除非您在 VS Code 中附加偵錯工具並執行該指令碼。 如果不這樣做,計算會保留直到取消作業為止。

下一步