监控训练作业

训练可能会花费很长一段时间,具体取决于您的数据集的大小和模型的复杂程度。例如,对现实世界数据进行的训练可持续数小时。在此期间,您可以监控作业的多个方面。

检查作业状态

对于总体状态,检查作业最轻松的方法是使用 Google Cloud 控制台上的 AI Platform Training 作业页面。另外,您可以通过编程方式以及使用 Google Cloud CLI 获取这些详细信息。

控制台

  1. 在 Google Cloud 控制台中打开 AI Platform Training 作业页面。

    在 Google Cloud 控制台中打开作业

  2. 点击列表中的作业名称以打开作业详细信息页面。

  3. 在报告顶部找到您的作业状态。显示的图标和文字描述了作业的当前状态。

    “作业详情”页面顶部的作业状态信息。

过滤作业

作业页面上,您可以按照几个不同的参数过滤作业,这些参数包括类型作业 ID状态、作业创建时间。

  1. 点击按前缀过滤字段,该字段位于作业列表上方。选择您要用于过滤的前缀。例如,您可以选择类型
  2. 如需完成过滤,请点击您要使用的过滤器后缀。 例如,类型前缀的后缀选项为:

    • 自定义代码训练
    • 内置算法训练
    • 预测
  3. 过滤器将应用到作业列表,并且过滤器的名称将显示在过滤器字段中。例如,如果您选择了自定义代码训练,则过滤器类型:自定义代码训练将显示在顶部,并过滤您的作业列表。如果需要,您可以添加多个过滤器。

查看超参数试验

作业详细信息页面上,您可以在 HyperTune 试验表中查看每次试验的指标。此表仅针对使用超参数调节的作业显示。您可以切换指标,以按最高或最低 rmseTraining stepslearning_rate 显示试验。

如需查看特定试验的日志,请点击more_vert 图标,然后点击查看日志

gcloud

在命令行中使用 gcloud ai-platform jobs describe 可以获取作业当前状态的详细信息:

gcloud ai-platform jobs describe job_name

您可以使用 gcloud ai-platform jobs list 获取与项目关联的作业列表,其中包含作业状态和创建时间。请注意,此命令以最简单的形式列出了为项目创建的所有作业。 在请求时请注意划定范围以限制报告的作业数量。如需使用此方法,请参阅以下示例:

使用 --limit 参数限制作业数量。以下示例列出了 5 个最近的作业:

gcloud ai-platform jobs list --limit=5

使用 --filter 参数将作业列表限制为只显示具有给定特性值的作业。您可以过滤作业对象的一个或多个属性。除了核心作业属性之外,您还可以过滤作业中的对象,例如 TrainingInput 对象。

过滤列表的示例如下所示:

  • 列出在特定时间后启动的所有作业。以下示例使用的时间为 2017 年 1 月 15 日晚 7 点:

    gcloud ai-platform jobs list --filter='createTime>2017-01-15T19:00'
    
  • 列出名称以给定字符串开头的最后三个作业。例如,字符串可以表示您用于特定模型的所有训练作业的名称。以下示例使用了一个模型,其中作业标识符为“census”,后缀为按每个作业递增的索引:

    gcloud ai-platform jobs list --filter='jobId:census*' --limit=3
    
  • 列出名称以“rnn”开头的所有失败的作业:

    gcloud ai-platform jobs list --filter='jobId:rnn* AND state:FAILED'
    

如需详细了解过滤器选项支持的表达式,请参阅 gcloud 命令的相关文档

Python

  1. 通过将项目名称和作业名称组合到表单中来组成作业标识符字符串:'projects/your_project_name/jobs/your_job_name'

    projectName = 'your_project_name'
    projectId = 'projects/{}'.format(projectName)
    jobName = 'your_job_name'
    jobId = '{}/jobs/{}'.format(projectId, jobName)
    
  2. 创建对 projects.jobs.get 的请求:

    request = ml.projects().jobs().get(name=jobId)
    
  3. 执行请求(此示例将 execute 调用放在 try 块中以捕获异常):

    response = None
    
    try:
        response = request.execute()
    except errors.HttpError, err:
        # Something went wrong. Handle the exception in an appropriate
        #  way for your application.
    
  4. 检查响应以确保服务调用返回数据,无论 HTTP 发生了何种错误。

    if response == None:
        # Treat this condition as an error as best suits your
        # application.
    
  5. 获取状态数据。响应对象是包含作业资源的所有适用成员的字典,包括完整的 TrainingInput 资源和 TrainingOutput 资源的适用成员。以下示例展示了如何输出作业状态和作业消耗的 ML 单元数。

    print('Job status for {}.{}:'.format(projectName, jobName))
    print('    state : {}'.format(response['state']))
    print('    consumedMLUnits : {}'.format(
        response['trainingOutput']['consumedMLUnits']))
    

如果您的训练应用或 AI Platform Training 基础架构出现问题,则作业可能会失败。您可以使用 Cloud Logging 开始调试。

您还可以使用交互式 shell 在训练作业运行时检查训练容器。

监控资源消耗

您可以在作业详细信息页面上找到训练作业的以下资源利用率图表:

  • 作业的聚合 CPU 或 GPU 利用率以及内存利用率。这些信息按主实例、工作器、参数服务器细分。
  • 作业的网络使用情况(以每秒字节数为单位)。发送的字节数和接收的字节数分别有相应的图表。
  1. 转到 Google Cloud 控制台中的 AI Platform Training 作业页面:

    转到 AI Platform Training“作业”页面

  2. 在列表中找到您的作业。

  3. 点击列表中的作业名称以打开作业详细信息页面。

  4. 选择标记为 CPUGPU网络的标签页以查看关联的资源利用率图表。

您还可以访问有关训练作业用于 Cloud Monitoring 的在线资源的信息。AI Platform Training 会将metrics导出到 Cloud Monitoring。

每个 AI Platform Training 指标类型的名称中均包含“training”。例如 ml.googleapis.com/training/cpu/utilizationml.googleapis.com/training/accelerator/memory/utilization

使用 TensorBoard 进行监控

您可以对训练应用进行配置,以保存可以使用 TensorBoard 检查和显示的摘要数据。

将摘要数据保存到某个 Cloud Storage 位置,并将 TensorBoard 指向该位置以检查数据。您还可以将 TensorBoard 指向具有包含多个作业的输出的子目录的目录。

如需详细了解 TensorBoard 和 AI Platform Training,请参阅入门指南

后续步骤