训练可能会花费很长一段时间,具体取决于您的数据集的大小和模型的复杂程度。例如,对现实世界数据进行的训练可持续数小时。在此期间,您可以监控作业的多个方面。
检查作业状态
对于总体状态,检查作业最轻松的方法是使用 Google Cloud 控制台上的 AI Platform Training 作业页面。另外,您可以通过编程方式以及使用 Google Cloud CLI 获取这些详细信息。
控制台
在 Google Cloud 控制台中打开 AI Platform Training 作业页面。
点击列表中的作业名称以打开作业详细信息页面。
在报告顶部找到您的作业状态。显示的图标和文字描述了作业的当前状态。
过滤作业
在作业页面上,您可以按照几个不同的参数过滤作业,这些参数包括类型、作业 ID、状态、作业创建时间。
- 点击 按前缀过滤字段,该字段位于作业列表上方。选择您要用于过滤的前缀。例如,您可以选择类型。
如需完成过滤,请点击您要使用的过滤器后缀。 例如,类型前缀的后缀选项为:
- 自定义代码训练
- 内置算法训练
- 预测
过滤器将应用到作业列表,并且过滤器的名称将显示在过滤器字段中。例如,如果您选择了自定义代码训练,则过滤器类型:自定义代码训练将显示在顶部,并过滤您的作业列表。如果需要,您可以添加多个过滤器。
查看超参数试验
在作业详细信息页面上,您可以在 HyperTune 试验表中查看每次试验的指标。此表仅针对使用超参数调节的作业显示。您可以切换指标,以按最高或最低 rmse
、Training steps
、learning_rate
显示试验。
如需查看特定试验的日志,请点击
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
通过将项目名称和作业名称组合到表单中来组成作业标识符字符串:
'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)
创建对 projects.jobs.get 的请求:
request = ml.projects().jobs().get(name=jobId)
执行请求(此示例将
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.
检查响应以确保服务调用返回数据,无论 HTTP 发生了何种错误。
if response == None: # Treat this condition as an error as best suits your # application.
获取状态数据。响应对象是包含作业资源的所有适用成员的字典,包括完整的 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 利用率以及内存利用率。这些信息按主实例、工作器、参数服务器细分。
- 作业的网络使用情况(以每秒字节数为单位)。发送的字节数和接收的字节数分别有相应的图表。
转到 Google Cloud 控制台中的 AI Platform Training 作业页面:
在列表中找到您的作业。
点击列表中的作业名称以打开作业详细信息页面。
选择标记为 CPU、GPU 或网络的标签页以查看关联的资源利用率图表。
您还可以访问有关训练作业用于 Cloud Monitoring 的在线资源的信息。AI Platform Training 会将指标导出到 Cloud Monitoring。
每个 AI Platform Training 指标类型的名称中均包含“training”。例如 ml.googleapis.com/training/cpu/utilization
或 ml.googleapis.com/training/accelerator/memory/utilization
。
使用 TensorBoard 进行监控
您可以对训练应用进行配置,以保存可以使用 TensorBoard 检查和显示的摘要数据。
将摘要数据保存到某个 Cloud Storage 位置,并将 TensorBoard 指向该位置以检查数据。您还可以将 TensorBoard 指向具有包含多个作业的输出的子目录的目录。
如需详细了解 TensorBoard 和 AI Platform Training,请参阅入门指南。