了解自定义训练服务

本页面介绍了训练作业的状态(通过训练作业的生命周期),以及 Vertex AI 如何处理训练错误。您可以使用此信息来相应地调整您的训练代码。

训练作业的生命周期

本部分介绍 Vertex AI 如何在训练作业的生命周期内处理工作器虚拟机。

将新作业加入队列

创建 CustomJobHyperparameterTuningJob 后,该作业在 Vertex AI 运行之前可能会保持 JOB_STATE_QUEUED 状态一段时间。此时间段通常是简要的,但如果您的 Google Cloud 项目没有足够的自定义训练配额,则 Vertex AI 会一直将作业排入队列,直到您有充足配额。

并行启动工作器

训练作业开始时,Vertex AI 会在短时间内安排尽可能多的工作器。因此,工作器可能会并行启动,而不是按顺序启动。为了缩短启动延迟时间,Vertex AI 会在每个工作器上运行代码后立即开始运行该代码。当所有工作器都可用时,Vertex AI 会将作业状态设置为 JOB_STATE_RUNNING

在大多数情况下,您的机器学习框架会自动处理并行启动的工作器。如果您在训练代码中使用分发策略,则可能需要手动调整策略以处理并行启动的工作器。详细了解 TensorFlowPyTorch 中的分发策略。

在训练作业期间重启工作器

在训练作业中,Vertex AI 可以从任何具有相同主机名的工作器池重启工作器。出现此情况的原因如下:

  • 虚拟机维护:当运行工作器的虚拟机进行维护时,Vertex AI 会在另一个虚拟机上重启该工作器。详细了解适用于虚拟机维护的实时迁移
  • 非零退出:如果任何工作器在退出时显示非零退出代码,则 Vertex AI 会立即在同一虚拟机中重启该工作器。

    • 如果工作器由于常见错误失败,则将其视为永久性错误,Vertex AI 将关停整个作业。如果 Vertex AI 在关闭整个作业之前重新启动任何容器,这些容器可能会在 Cloud Logging 中生成日志。
    • 如果工作器因非永久错误常见错误中未列出的任何错误)而失败,Vertex AI 允许重启的工作器继续运行(每个工作器最多重启 5 次)。5 次重启后,如果工作器再次失败,Vertex AI 最多重试整个作业 3 次,然后让整个作业失败。

要处理训练代码中的工作器重启,请在训练期间定期保存检查点,以便在工作器重启时从检查点恢复。如果您预计训练时间超过 4 小时,我们建议至少每 4 小时保存一次检查点。了解如何在 TensorFlowPyTorch 中使用训练检查点。

已成功完成作业

如果训练作业的主要副本退出并且退出代码为 0,则表示训练作业已成功完成。此时,Vertex AI 会关停所有其他正在运行的工作器。

Vertex AI 如何处理训练作业错误

本部分介绍 Vertex AI 如何处理常见的训练作业错误和内部错误。

作业结束后一分钟左右,Vertex AI 会根据退出代码在训练作业对象上设置错误代码。

处理常见错误

如果遇到以下任何问题,Vertex AI 将关闭所有工作器:

错误类型 错误消息/日志 备注
用户代码异常 副本 REPLICA_NAME 退出且非零状态 EXIT_CODE。终止原因:REASON 如果作业遇到可以瞬时退出的退出代码,Vertex AI 会尝试重启该作业三次。提示 Vertex AI 重试该作业的暂时性错误代码包括:
  • SIGABRT
    • ExitCode 6
    • ExitCode 134(自定义容器)
  • SIGSEGV
    • ExitCode 11
    • ExitCode 139(自定义容器)
Out-of-memory 副本 REPLICA_NAME 因内存不足而退出,其非零状态为 EXIT_CODE GKE 在 Vertex AI 节点上预留内存。在最小的机器类型(例如 n1-standard-4)上,Vertex AI 系统代理占总内存的 40%。对于较大的虚拟机,开销相对较小。比较适用于 n1-standard 机器类型的可分配内存
您所在区域的容量不足(Compute Engine 容量不足) 区域资源不足:REGION_NAME。请尝试其他区域或使用其他加速器。 当 Compute Engine 已在您区域中的所选 CPU 或 GPU 达到容量时,就会发生缺货。这与您的项目配额无关。发生这种情况时,Vertex AI 会尝试重启作业最多三次。

处理内部错误

如果 Vertex AI 发生内部错误,它会尝试重启作业两次(总共尝试三次)。如果重启尝试也失败,Vertex AI 将返回以下错误消息:Internal error occurred for the current attempt