重新執行管道

您可以從已完成、取消或失敗的機器學習 (ML) 管道執行中,重新執行特定工作。啟動重新執行作業時,您可以修改工作層級的設定,或選擇略過工作,然後根據更新後的設定建立執行作業。新的管道執行作業會保留對原始管道執行作業的參照,以利追蹤。如果工作在先前的執行作業中成功完成,Vertex AI Pipelines 會重複使用該工作的快取結果。否則,如果步驟失敗,Vertex AI Pipelines 會在重新執行 pipeline 時執行該步驟。

這樣一來,您就能調整機器學習管道,不必重新啟動整個管道,有效解決機器學習管道故障問題。您可以調整失敗的工作、比較不同參數組合的結果,或略過失敗的非必要工作。

對於在實際工作環境中管理複雜機器學習管道的機器學習運作從業人員來說,重新執行管道相當實用。以下列舉一些實用情境:

  • 處理平行程序中的部分失敗:如果大型平行程序的一部分失敗,您可以略過失敗的工作,讓管道的其餘部分繼續執行。舉例來說,如果 100 項工作中有 1 項的資料管道失敗,您可以略過該管道。

  • 使用更新後的輸入資料重新執行工作:如果需要使用更新後的資料重新執行單一工作,可以重新執行該特定工作。

  • 不必變更程式碼,即可偵錯生產環境問題:重新執行特定工作和所有依附於該項目的工作,不必請管道程式碼的作者介入。

重新執行管道

如要重新執行 pipeline,請使用 Python 適用的 Vertex AI SDK。

Python

使用下列範例,透過 PipelineJob.rerun() 方法略過失敗的工作,並使用更新的參數重新執行另一項工作,藉此重新執行管道:

from google.cloud import aiplatform
from google.cloud.aiplatform.preview.pipelinejob.pipeline_jobs import (
  _PipelineJob as PipelineJob
)
from google.cloud.aiplatform_v1beta1.types.ui_pipeline_spec import RuntimeArtifact
from google.protobuf.struct_pb2 import Value
from google.cloud.aiplatform_v1beta1.types import PipelineTaskRerunConfig
aiplatform.init(project="PROJECT_ID", location="LOCATION")
job = aiplatform.PipelineJob.get(resource_name="PIPELINE_RUN_RESOURCE_NAME")
original_job_name = job.resource_name
rerun_task_id = None
skip_failed_task_id = None
task_inputs_override = PipelineTaskRerunConfig.Inputs(
    parameter_values={
      "TASK_PARAMETER_1": Value(TASK_PARAMETER_1_VALUE),
      "TASK_PARAMETER_2": Value(TASK_PARAMETER_2_VALUE)
    }
)
for task in job.task_details:
    if task.task_name == RERUN_TASK_NAME:
        rerun_task_id = task.task_id
    if task.task_name == SKIP_FAILED_TASK_NAME:
        skip_failed_task_id = task.task_id
pipeline_job.rerun(original_pipelinejob_name=original_job_name,
  pipeline_task_rerun_configs=[
    PipelineTaskRerunConfig(task_id = rerun_task_id,
      skip_task = False,
      inputs = PipelineTaskRerunConfig.Inputs(task_inputs_override)
    ),
    PipelineTaskRerunConfig(task_id = skip_failed_task_id,
      skip_task = True
    )
  ],
  parameter_values=PIPELINE_PARAMETER_VALUES,
  job_id=RERUN_PIPELINE_JOB_ID)

更改下列內容:

  • PROJECT_ID:包含管道執行的 Google Cloud 專案。
  • LOCATION:管道執行所在的區域。如要進一步瞭解 Vertex AI Pipelines 的可用區域,請參閱 Vertex AI 服務地區指南
  • PIPELINE_RUN_RESOURCE_NAME:您要重新執行的管道執行作業的完整資源名稱,該作業必須已完成、失敗或取消。請以 projects/PROJECT_NUMBER/locations/LOCATION/pipelineJobs/PIPELINE_RUN_ID 格式輸入資源名稱,其中:

    • PROJECT_NUMBER:專案的專案編號。您可以在 Google Cloud 控制台中找到這個專案編號。詳情請參閱「尋找專案名稱、編號和 ID」。
    • PIPELINE_RUN_ID,這是要重新執行的 pipeline 執行作業的專屬 ID。ID 會顯示在 Google Cloud 控制台「管道」頁面的「執行作業」分頁中。
  • RERUN_TASK_NAME:要使用更新後參數重新執行的工作名稱。
  • SKIP_FAILED_TASK_NAME:重新執行時要略過的失敗工作名稱。
  • TASK_PARAMETER_1TASK_PARAMETER_2:要在管道重新執行時覆寫的任務參數名稱。
  • TASK_PARAMETER_1_VALUETASK_PARAMETER_2_VALUE: 在管線重新執行時,TASK_PARAMETER_1TASK_PARAMETER_2 的新值。
  • PIPELINE_PARAMETER_VALUES:選用。要用於重新執行管道的更新管道執行階段參數值。
  • RERUN_PIPELINE_JOB_ID:選用。要指派給新 pipeline 重新執行工作的專屬 ID。