實驗追蹤與可觀測性

這很重要

這項功能目前處於 公開預覽版。

AI 執行時原生整合 MLflow 進行實驗追蹤,並內建 GPU 資源面板用於監控使用率、記憶體與溫度。 使用 MLflow 記錄指標與執行,在筆記本和 MLflow UI 中查看訓練輸出,將模型檢查點存到 Unity 目錄卷,並在程式碼執行時追蹤 GPU 健康狀況。

小提示

  • AI Runtime 原生整合 MLflow,用於實驗追蹤與模型記錄。
  • 內建的 GPU 資源面板顯示使用率、記憶體和溫度。
  • 將模型檢查點儲存至 Unity Catalog 磁碟區。

MLflow 整合

AI 執行環境原生整合 MLflow,用於實驗追蹤、模型記錄及指標視覺化。

設定建議:

  • 將 MLflow 升級到 3.7 或更新版本,並遵循 深度學習的工作流程模式。

  • 啟用 PyTorch Lightning 的自動登入:

    import mlflow
    mlflow.pytorch.autolog()
    
  • 在 API 範圍內封裝模型定型程式碼 mlflow.start_run() ,以自訂您的 MLflow 執行名稱。 這可讓您控制執行名稱,並能夠從先前的執行重新啟動。您可以在run_name中使用mlflow.start_run(run_name="your-custom-name")參數,或在支援 MLflow 的第三方庫(例如,Hugging Face Transformers)中自訂執行名稱。 否則,預設執行名稱為 jobTaskRun-xxxxx。

    from transformers import TrainingArguments
    args = TrainingArguments(
        report_to="mlflow",
        run_name="llama7b-sft-lr3e5",  # <-- MLflow run name
        logging_steps=50,
    )
    
  • 使用無伺服器 GPU API 時,每次呼叫 .distributed() 都會自動建立 MLflow 實驗執行。 如果在目前作用中的 MLflow 執行內呼叫,則不會直接建立新的執行,而是會在目前作用中的父執行底下建立巢狀的子執行。

    import mlflow
    
    with mlflow.start_run() as outer_run:
        ...
        run_train.distributed()  # creates a nested child run under outer_run
    
  • 若要自訂所.distributed()使用的實驗,請在呼叫mlflow.set_experiment()前呼叫.distributed(),或設定MLFLOW_EXPERIMENT_NAME環境變數。 預設的實驗名稱為 /Users/{WORKSPACE_USER}/{notebook-name}。 一律使用絕對路徑。

    import mlflow
    mlflow.set_experiment("/Users/<username>/my-experiment")
    run_train.distributed()
    

    Alternatively:

    import os
    os.environ["MLFLOW_EXPERIMENT_NAME"] = "/Users/<username>/my-experiment"
    
  • 若要繼續先前的 MLflow 執行,請使用 mlflow.start_run(run_id="<previous-run-id>").

  • 若要使用 .distributed() 繼續先前的 MLflow 執行,請先設定 MLFLOW_RUN_ID,再呼叫它:

    os.environ["MLFLOW_RUN_ID"] = "<previous-run-id>"
    run_train.distributed()
    
  • 將step中的參數MLFlowLogger設成合理的批次數。 MLflow 的指標步數上限為 1,000 萬,因此在大型訓練作業中記錄每一個批次的指標時,可能會碰到這個上限。 請參閱資源限制。

觀看日誌

  • Notebook 輸出:您的訓練程式碼所產生的標準輸出和錯誤輸出會顯示在 notebook 儲存格的輸出內容中。
  • MLflow 日誌:MLflow 實驗介面會顯示訓練指標、參數與產物。

如果你無法查看日誌

MLflow 執行頁面上的 日誌 標籤會串流與 MLflow 執行相關的 Databricks 工作執行日誌,因此存取受該工作權限所控制。 如果分頁顯示 「你無法存取這些日誌」,表示使用者權限不足。

存取 MLflow 中的該執行,並不表示也能存取該作業。 你可以保留 MLflow 實驗的權限,但仍然會被拒絕接收這些日誌。 若要取得存取權限,請有 「可管理」 權限的使用者或工作區管理員,將該工作的至少 「可檢視」 權限授予你。 請參閱 「控制存取」 以了解工作權限的授予方式。

模型檢查點

對於分散式訓練,請使用 serverless_gpu.data.UCVolumeWriter(DCP)API,搭配 serverless_gpu.data.UCVolumeReader 和 儲存後端,將模型和最佳化器狀態儲存到 Unity Catalog 磁碟區。 非同步儲存,讓訓練在檢查點上傳時繼續,並且檢查點要足夠頻繁,以減少中斷後遺失的工作量。 因為模型檢查點不會記錄資料管線的位置,所以也要為資料管線建立檢查點,讓重新啟動後的執行能從正確的資料位置繼續。

完整檢查點模式請參見 「提升 AI 執行時的訓練效能與韌性」。

監控 GPU 資源

在 AI 執行時,使用 GPU 資源 面板監控 GPU 健康狀況與使用率。 面板支援單節點與多節點工作負載。

要打開窗格,請將你的筆記本連接到 AI 執行環境,然後點擊晶片圖示。GPU 資源在右側窗格。

GPU 資源面板顯示每張 GPU 的使用率、記憶體和溫度指標。

面板顯示每個 GPU 的以下指標:

  • GPU 使用率百分比
  • GPU 記憶體使用率
  • 溫度

面板每 10 秒輪詢一次指標,並保留最多 2 小時的歷史紀錄。 點擊 重新整理圖示。重新整理 以立即取得最新值。 五分鐘不動後,窗格會暫停;重新開啟它以恢復監控。

多使用者協作

  • 為確保所有使用者都能存取共享程式碼(例如輔助模組或環境 YAML 檔案),請將它們儲存在 /Workspace/Shared 非使用者專用資料夾中,如 /Workspace/Users/<your_email>/。
  • 對於處於主動開發中的程式碼,請在使用者特定資料夾 /Workspace/Users/<your_email>/ 中使用 Git 資料夾,並推送至遠端 Git 存放庫。 這讓多個使用者可以擁有專屬的複製與分支,同時仍可遠端使用 Git 倉庫進行版本控制。 請參閱在 Databricks 上使用 Git 的最佳 做法 。
  • 協作者可以在筆記本上 分享和發表評論。

Azure Databricks 中的全域限制

請參閱資源限制。