您可以從已完成、取消或失敗的機器學習 (ML) 管道執行中,重新執行特定工作。啟動重新執行作業時,您可以修改工作層級的設定,或選擇略過工作,然後根據更新後的設定建立執行作業。新的管道執行作業會保留對原始管道執行作業的參照,以利追蹤。如果工作在先前的執行作業中成功完成,Vertex AI Pipelines 會重複使用該工作的快取結果。否則,如果步驟失敗,Vertex AI Pipelines 會在重新執行管道時執行該步驟。
這樣一來,您就能調整機器學習管道,不必重新啟動整個管道,即可有效解決機器學習管道失敗的問題。您可以調整失敗的工作、比較不同參數組合的結果,或略過失敗的非必要工作。
對於在實際工作環境中管理複雜機器學習管道的機器學習運作從業人員來說,重新執行管道相當實用。以下列舉一些實用情境:
處理平行程序中的部分失敗:如果大型平行程序的一部分失敗,您可以略過失敗的工作,讓管道的其餘部分繼續執行。舉例來說,如果 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 替換為要重新執行的管道執行作業專屬 ID。ID 會顯示在 Google Cloud 控制台「管道」頁面的「執行作業」分頁中。
- RERUN_TASK_NAME:要使用更新後的參數重新執行的工作名稱。
- SKIP_FAILED_TASK_NAME:在重新執行期間要略過的失敗工作名稱。
- TASK_PARAMETER_1 和 TASK_PARAMETER_2:要在管道重新執行時覆寫的任務參數名稱。
- TASK_PARAMETER_1_VALUE 和 TASK_PARAMETER_2_VALUE: 在管道重新執行時,TASK_PARAMETER_1 和 TASK_PARAMETER_2 的新值。
- PIPELINE_PARAMETER_VALUES:選用。更新後的管道執行階段參數值,用於重新執行管道。
- RERUN_PIPELINE_JOB_ID:選用。要指派給新管道重新執行工作的專屬 ID。