试验跟踪和可观测性

重要

此功能目前以公共预览版提供。

AI 运行时原生集成了 MLflow,用于实验跟踪,并内置了 GPU 资源面板,用于监控利用率、内存占用和温度。 使用 MLflow 记录指标和运行,在笔记本和 MLflow UI 中查看训练输出,将模型检查点保存到 Unity 目录卷,并在代码运行时跟踪 GPU 运行状况。

MLflow 集成

AI 运行时以本机方式与 MLflow 集成,用于试验跟踪、模型日志记录和指标可视化。

设置建议:

  • 将 MLflow 升级到版本 3.7 或更高版本,并遵循 深度学习工作流模式

  • 为 PyTorch Lightning 启用自动记录:

    import mlflow
    mlflow.pytorch.autolog()
    
  • 通过将模型训练代码封装在 mlflow.start_run() API 作用域内,自定义 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 有 1000 万指标步骤的限制,因此在大型训练运行中记录每一个批次可能会达到此限制。 请参阅资源限制

查看日志

  • 笔记本输出:训练代码的标准输出和错误显示在笔记本单元输出中。
  • MLflow 日志:MLflow 试验 UI 显示训练指标、参数和项目。

模型检查点

对于分布式训练,使用Torch serverless_gpu.data.UCVolumeWriter(DCP)API和存储后端,将模型和优化器状态保存到serverless_gpu.data.UCVolumeReader中。 异步保存,这样训练在检查点上传时继续,并且检查点足够频繁,以减少中断后丢失的工作量。 因为模型检查点不会捕捉数据流水线的位置,也要检查你的数据流水线,这样恢复运行会继续对正确的数据进行。

完整的检查点模式请参见 “提升AI运行时的训练性能和韧性”。

监视 GPU 资源

在 AI 运行时上运行代码时,使用 GPU 资源 窗格监视 GPU 运行状况和利用率。 该窗格支持单节点工作负荷和多节点工作负荷。

若要打开窗格,请将笔记本连接到 AI 运行时,然后单击“芯片”图标。右侧窗格中的 GPU 资源

GPU 资源窗格显示每个 GPU 的利用率、内存和温度指标。

该窗格显示每个 GPU 的以下指标:

  • GPU 利用率百分比
  • GPU 内存使用情况
  • 温度

该窗格每 10 秒轮询一次指标,最多保留 2 小时的历史记录。 单击“ 刷新”图标。刷新 以立即提取最新值。 处于非活动状态 5 分钟后,窗格将暂停;重新打开它以恢复监视。

多用户协作

  • 为了确保所有用户都可以访问共享代码(例如帮助程序模块或环境 YAML 文件),请将它们存储在其中 /Workspace/Shared ,而不是用户特定的文件夹,例如 /Workspace/Users/<your_email>/
  • 对于处于活动开发中的代码,请使用特定于用户的文件夹中 /Workspace/Users/<your_email>/ 的 Git 文件夹并推送到远程 Git 存储库。 这样,多个用户就可以拥有特定于用户的克隆和分支,同时仍使用远程 Git 存储库进行版本控制。 请参阅有关在 Databricks 上使用 Git 的 最佳做法
  • 协作者可以共享笔记本并发表评论

Azure Databricks 中的全局限制

请参阅资源限制