偵錯作業並監視定型進度
機器學習模型定型是反覆執行的流程,而且需要大量實驗。 透過 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-server
和ipykernel ~=6.0
套件 (所有 Azure Machine Learning 的策劃定型環境都會預設安裝這些套件)。 - 分散式定型執行無法啟用互動式應用程式,其中散發類型不是 PyTorch、TensorFlow 或 MPI。 目前不支援自訂的分散式定型設定 (未使用上述分散式架構設定多節點定型)。
- 若要使用 SSH,您需要 SSH 金鑰組。 您可以使用
ssh-keygen -f "<filepath>"
命令來產生公開和私密金鑰組。
與您的作業容器互動
藉由在作業建立時指定互動式應用程式,您可以直接連線至執行作業所在計算節點上的容器。 一旦您能夠存取作業容器,就可以在與執行作業完全的相同環境中測試或偵錯作業。 您也可以使用 VS Code 附加至執行中的程序並進行偵錯,就像在本機執行的動作一樣。
在作業提交期間啟用
在 Studio 入口網站左側的瀏覽窗格中建立新的作業。
選擇 [計算叢集] 或 [附加計算] (Kube) 作為計算類型、選擇計算目標,然後指定您在
Instance count
中所需的節點數目。
遵循精靈以選擇您想要啟動作業的環境。
在 [訓練指令碼] 步驟中新增訓練程式碼 (及輸入/輸出資料),並在您的命令中加以參考,以確保該訓練程式碼已掛接至您的作業。
您可以將 sleep <specific time>
放在命令的結尾處,指定您想要保留計算資源的時間量。 遵循的格式為:
- sleep 1s
- sleep 1m
- sleep 1h
- sleep 1d
您也可以使用會讓作業無限期保持運作的 sleep infinity
的命令。
注意
如果您使用 sleep infinity
,則必須手動取消作業,才能釋出計算資源 (以及停止計費)。
- 在 [計算] 設定中,展開 [訓練應用程式] 選項。 選取至少一個您想要用來與作業互動的定型應用程式。 如果您未選取應用程式,將無法使用偵錯功能。
- 檢閱並建立作業。
連線至端點
若要與執行中的作業互動,請選取作業詳細資料頁面上的 [偵錯及監視] 按鈕。
按一下面板中的應用程式會開啟應用程式的新索引標籤。 您只能在應用程式處於 [執行中] 狀態時才能存取應用程式,而且只有「作業擁有者」有權存取應用程式。 如果您要在多個節點上定型,您可以挑選想要與其互動的特定節點。
啟動作業及建立作業期間指定的定型應用程式可能需要幾分鐘的時間。
與應用程式互動
選取端點以與作業互動時,系統會將您帶往工作目錄下的使用者容器,您可以在其中存取程式碼、輸入、輸出和記錄。 如果您在連線至應用程式時遇到任何問題,您可以在 [輸出 + 記錄] 索引標籤下的 [system_logs] -> [interactive_capability] 找到互動式功能和應用程式記錄。
您可以從 Jupyter Lab 開啟終端機,並開始在作業容器內互動。 您也可以使用 Jupyter Lab 直接逐一查看定型指令碼。
您也可以在 VS Code 中與作業容器互動。 若要在作業提交期間將偵錯工具附加至作業並暫停執行,請瀏覽此處。
注意
使用 VS Code 與作業容器互動時,目前不支援啟用私人連結的工作區。
如果您已記錄作業的 Tensorflow 事件,您可以使用 TensorBoard 來監視作業執行時的計量。
結束作業
完成互動式定型之後,您也可以移至作業詳細資料頁面取消作業,如此可釋出計算資源。 或者,在 CLI 中使用 az ml job cancel -n <your job name>
,或在 SDK 中使用 ml_client.job.cancel("<job name>")
。
將偵錯工具附加至作業
若要提交附加偵錯工具的作業並暫停執行,您可以使用 debugpy 和 VS Code (必須在作業環境中安裝 debugpy
)。
注意
將偵錯工具附加至 VS Code 中的作業時,目前不支援啟用私人連結的工作區。
- 在作業提交期間 (透過 UI、CLI 或 SDK),請使用 debugpy 命令來執行 Python 指令碼。 例如,下列螢幕擷取畫面顯示以 debugpy 附加 TensorFlow 指令碼偵錯工具的範例命令 (
tfevents.py
可以取代為訓練指令碼的名稱)。
提交作業之後,請連線至 VS Code,然後選取內建的偵錯工具。
使用「遠端附加」偵錯設定附加至提交的作業,並傳入您在作業提交命令中設定的路徑和連接埠。 您也可以在作業詳細資料頁面上找到此資訊。
設定中斷點並逐步執行作業,就像在本機偵錯工作流程中執行的動作一樣。
注意
如果您使用 debugpy 啟動作業,系統不會執行您的作業,除非您在 VS Code 中附加偵錯工具並執行該指令碼。 如果不這樣做,計算會保留直到取消作業為止。
下一步
- 深入了解模型部署的方式和位置。