執行管道

Vertex AI Pipelines 可讓您以無伺服器的方式,執行使用 Kubeflow Pipelines SDK 或 TensorFlow Extended 建構的機器學習 (ML) 管道。本文說明如何執行機器學習 pipeline。

您也可以使用範本庫中的預先建構範本建立管道執行作業。如要進一步瞭解範本庫,請參閱「使用範本庫中的預先建立範本」。

事前準備

使用 Vertex AI Pipelines 執行管線前,請按照下列操作說明設定Google Cloud 專案和開發環境:

  1. 建立管道

  2. 如要使用 Python 適用的 Vertex AI SDK 執行管道,請安裝 Vertex SDK。

建立管道執行作業

請按照下列操作說明,使用 Google Cloud 主控台或 Python 執行 ML 管道。

控制台

請按照下列操作說明,使用 Google Cloud 主控台執行 ML 管道。

  1. 在 Google Cloud 控制台的「Vertex AI」專區中,前往「Pipelines」頁面。

    前往 Pipelines

  2. 在「區域」下拉式選單中,選取要建立管道執行作業的區域。

  3. 按一下「 建立執行作業」,開啟「建立管道執行作業」窗格。

  4. 在「執行詳細資料」部分執行下列操作:

    1. 按一下「執行來源」。可用的選項如下:

      • 從現有的管道中選取:如要根據現有的管道範本建立管道執行作業,請按一下「從現有的管道中選取」,然後輸入以下詳細資料:

        1. 選取包含 pipeline 或元件定義檔案的 存放區

        2. 選取「Pipeline or component」和「Version」

        3. 指定執行名稱,以便唯一識別管道執行作業。

      • 選取範本庫 pipeline:如要根據 範本庫中 Google 撰寫的 pipeline 範本建立 pipeline 執行作業,請按一下「選取範本庫 pipeline」,然後輸入下列詳細資料:

        1. 在「Template Gallery pipeline」清單中,選取 pipeline 範本。

        2. 選用:修改可唯一識別管道執行作業的預設執行作業名稱

      • 上傳檔案:如要上傳已編譯的管道定義,請按一下「上傳檔案」,然後輸入以下詳細資料:

        1. 按一下「Browse」,開啟檔案選取器。前往要執行的已編譯管道 YAML 檔案,選取管道,然後按一下「Open」

        2. 根據預設,「管道或元件名稱」會顯示管道定義中指定的名稱。您可以選擇指定其他管道名稱。

        3. 指定執行名稱,以便唯一識別管道執行作業。

      • 從 Cloud Storage 匯入:如要從 Cloud Storage 匯入管道定義檔案,請按一下「從 Cloud Storage 匯入」,然後輸入下列詳細資料:

        1. 按一下「Browse」,前往包含管道定義物件的 Cloud Storage 值區,選取檔案,然後按一下「Select」

        2. 指定 Pipeline 或元件名稱

        3. 指定執行名稱,以便唯一識別管道執行作業。

    2. 選用步驟:如要安排管道定期執行作業,請指定執行時程,如下所示:

      1. 選取「週期性」

      2. 在「開始時間」下方,指定排程生效的時間。

        • 如要安排在建立排程後立即執行,請選取「立即」

        • 如要安排在特定日期和時間執行第一次放送,請選取「開啟」

      3. 在「Frequency」欄位中,使用以 unix-cron 為基礎的 cron 排程運算式,指定排程和執行管道執行作業的頻率。

      4. 在「結束時間」下方,指定排程結束的時間。

        • 如要表示排程會無限期建立管道執行作業,請選取「Never」

        • 如要指出排程會在特定日期和時間結束,請選取「於」,然後指定排程的結束日期和時間。

      5. 選用步驟:如要指定管道執行作業使用自訂服務帳戶、客戶管理的加密金鑰 (CMEK) 或對等 VPC 網路,請按一下「Advanced options」(進階選項),然後按照下列操作說明操作:

        • 如要指定服務帳戶,請從「Service account」下拉式清單中選取服務帳戶。

          如果您未指定服務帳戶,Vertex AI Pipelines 會使用預設的 Compute Engine 服務帳戶執行管道。

          進一步瞭解如何設定服務帳戶,以便與 Vertex AI Pipelines 搭配使用

        • 如要使用 CMEK,請選取「使用客戶自行管理的加密金鑰」。系統會顯示「Select a customer-managed key」(選取客戶管理的金鑰) 下拉式選單。在「Select a customer-managed key」(選取客戶管理的金鑰) 下拉式清單中,選取要使用的金鑰。

        • 如要在這個管道執行作業中使用對等互連虛擬私有雲網路,請在「對等互連虛擬私有雲網路」方塊中輸入虛擬私有雲網路名稱。

    3. 按一下「繼續」

  5. 在「執行階段設定」部分中,設定管道執行作業,如下所示:

    1. 在「Cloud storage location」(Cloud Storage 位置) 下方,按一下「Browse」(瀏覽) 選取用於儲存管道輸出構件資料的 Cloud Storage 值區,然後按一下「Select」(選取)

    2. 選用:如要設定管道執行作業的失敗政策和快取,請按一下「進階選項」,然後按照下列指示操作:

      • 在「失敗政策」下方,指定整個管道的失敗政策。進一步瞭解管道失敗政策

        • 如要設定管道,讓其在某項工作失敗後繼續安排工作,請選取「Run all steps to completion」。系統預設會選取這個選項。

        • 如要將管道設為在任一工作失敗後失敗,請選取「只要一個步驟未成功,這項執行作業即宣告失敗」

      • 在「快取設定」下方,指定整個管道的快取設定。

        • 如要在管道中為任務使用任務層級快取設定,請選取「不要覆寫任務層級快取設定」

        • 如要為管道中的所有工作啟用快取功能,並覆寫任何工作層級快取設定,請選取「啟用所有步驟的快取讀取功能 (最快)」

        • 如要關閉管道中所有工作的快取功能,並覆寫任何工作層級快取設定,請選取「停用所有步驟的快取讀取功能 (最快)」

    3. 選用:如果管道有參數,請在「管道參數」下方指定管道執行參數。

  6. 如要建立管道執行作業,請按一下「提交」

Python 適用的 Vertex AI SDK

請按照下列操作說明,使用 Python 適用的 Vertex AI SDK 執行機器學習管道。您必須先設定驗證,才能執行下列程式碼範例。

設定驗證方法

如要設定驗證方法,您必須建立服務帳戶金鑰,並為該服務帳戶金鑰的路徑設定環境變數。

  1. 建立服務帳戶:

    1. 前往 Google Cloud 控制台的「Create service account」(建立服務帳戶) 頁面。

      前往「Create service account」(建立服務帳戶)

    2. 在 [Service account name] (服務帳戶名稱) 欄位中輸入一個名稱。
    3. 選用:在「服務帳戶說明」欄位中輸入說明。
    4. 按一下 [建立]。
    5. 按一下「請選擇角色」欄位。在「所有角色」下方,依序選取「Vertex AI」 >「Vertex AI 使用者」
    6. 按一下「Done」建立服務帳戶。

      請勿關閉瀏覽器視窗。您將在下一個步驟中使用此項目。

  2. 建立服務帳戶金鑰以用於驗證程序:

    1. 在 Google Cloud 控制台中,按一下您建立的服務帳戶電子郵件地址。
    2. 點選「金鑰」
    3. 依序點選「新增金鑰」和「建立新的金鑰」
    4. 按一下「建立」,JSON 金鑰檔案會下載至您的電腦。
    5. 按一下 [關閉]
  3. 將您用來執行管道的服務帳戶存取權,授予新的服務帳戶。
    1. 按一下 即可返回服務帳戶清單。
    2. 按一下用來執行管道的服務帳戶名稱。系統隨即會顯示「服務帳戶詳細資料」頁面。

      如果您按照指南中的操作說明設定 Vertex AI Pipelines 專案,這就是您在「設定具備精細權限的服務帳戶」一節中建立的服務帳戶。否則,Vertex AI 會使用 Compute Engine 預設服務帳戶執行管道。Compute Engine 預設服務帳戶的名稱如下:PROJECT_NUMBER-compute@developer.gserviceaccount.com

    3. 按一下「Permissions」(權限) 分頁標籤。
    4. 按一下「Grant access」(授予存取權)。「Add principals」面板隨即會顯示。
    5. 在「新增主體」方塊中,輸入您在先前步驟中建立的服務帳戶電子郵件地址。
    6. 在「角色」下拉式選單中,依序選取「服務帳戶」 >「服務帳戶使用者」
    7. 點選「儲存」
  4. 將環境變數 GOOGLE_APPLICATION_CREDENTIALS 設為包含服務帳戶金鑰的 JSON 檔案路徑。這項變數僅適用於您目前的殼層工作階段,因此如果您開啟了新的工作階段,就必須重新設定變數。

    範例:Linux 或 macOS

    [PATH] 替換為包含服務帳戶金鑰的 JSON 檔案路徑。

    export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"

    例如:

    export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"

    範例:Windows

    [PATH] 替換為包含服務帳戶金鑰的 JSON 檔案路徑,並將 [FILE_NAME] 替換為檔案名稱。

    使用 PowerShell:

    $env:GOOGLE_APPLICATION_CREDENTIALS="[PATH]"

    例如:

    $env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\[FILE_NAME].json"

    使用命令提示字元:

    set GOOGLE_APPLICATION_CREDENTIALS=[PATH]

執行管道

如要執行 Vertex AI PipelineJob,您必須建立 PipelineJob 物件,然後叫用 submit 方法。

KFP 支援的特殊輸入類型

建立管道執行作業時,您也可以將 KFP SDK 支援的下列預留位置做為輸入內容傳遞:

  • {{$.pipeline_job_name_placeholder}}

  • {{$.pipeline_job_resource_name_placeholder}}

  • {{$.pipeline_job_id_placeholder}}

  • {{$.pipeline_task_name_placeholder}}

  • {{$.pipeline_task_id_placeholder}}

  • {{$.pipeline_job_create_time_utc_placeholder}}

  • {{$.pipeline_root_placeholder}}

詳情請參閱 Kubeflow Pipelines v2 說明文件中的「特殊輸入類型」。

from google.cloud import aiplatform

job = aiplatform.PipelineJob(display_name = DISPLAY_NAME,
                             template_path = COMPILED_PIPELINE_PATH,
                             job_id = JOB_ID,
                             pipeline_root = PIPELINE_ROOT_PATH,
                             parameter_values = PIPELINE_PARAMETERS,
                             enable_caching = ENABLE_CACHING,
                             encryption_spec_key_name = CMEK,
                             labels = LABELS,
                             credentials = CREDENTIALS,
                             project = PROJECT_ID,
                             location = LOCATION,
                             failure_policy = FAILURE_POLICY)

job.submit(service_account=SERVICE_ACCOUNT,
           network=NETWORK)

更改下列內容:

  • DISPLAY_NAME:管道的名稱,會顯示在 Google Cloud 主控台中。
  • COMPILED_PIPELINE_PATH:已編譯管道 YAML 檔案的路徑。可以是本機路徑或 Cloud Storage URI。

    選用:如要指定已編譯管道的特定版本,請在下列任一格式中加入版本標記:

    • COMPILED_PIPELINE_PATH:TAG,其中 TAG 是版本標記。

    • COMPILED_PIPELINE_PATH@SHA256_TAG,其中 SHA256_TAG 是管道版本的 sha256 雜湊值。

  • JOB_ID:(選用) 此管道執行作業的專屬 ID。如果未指定工作 ID,Vertex AI Pipelines 會使用管道名稱和管道開始執行的時間戳記,為您建立工作 ID。

  • PIPELINE_ROOT_PATH:(選用) 如要覆寫管道定義中指定的管道根路徑,請指定管道工作可存取的路徑,例如 Cloud Storage 值區 URI。

  • PIPELINE_PARAMETERS:(選用) 要傳遞至本次執行作業的管道參數。舉例來說,您可以建立 dict(),其中參數名稱為字典索引鍵,參數值則為字典值。

  • ENABLE_CACHING:(選用) 指定這個管道執行作業是否使用執行快取。執行快取功能可略過管道工作,因為管道工作會針對目前的輸入組合產生已知的輸出內容,藉此降低成本。如果未指定啟用快取引數,則會在這個管道執行作業中使用執行快取。進一步瞭解執行快取

  • CMEK:(選用) 您要用於此管道執行作業的客戶管理加密金鑰名稱。

  • LABELS:(選用) 使用者定義的標籤,用於整理這個 PipelineJob。如要進一步瞭解資源標籤,請參閱 Resource Manager 說明文件中的「建立及管理標籤」一文。

    Vertex AI Pipelines 會自動將下列標籤附加至管道執行作業:

    vertex-ai-pipelines-run-billing-id: pipeline_run_id

    其中 pipeline_run_id 是管道執行作業的唯一 ID。

    這個標籤會連結帳單報表中,由執行管道產生的 Google Cloud 資源用量。

  • CREDENTIALS:(選用) 用於建立此 PipelineJob 的自訂憑證。覆寫 aiplatform.init 中設定的憑證。

  • PROJECT_ID:(選用) 您要執行管道的 Google Cloud 專案。如果您未設定這個參數,系統會使用 aiplatform.init 中設定的專案。

  • LOCATION:(選用) 您要執行管道的區域。如要進一步瞭解 Vertex AI Pipelines 可用地區,請參閱 Vertex AI 位置指南。如果您未設定這個參數,系統會使用 aiplatform.init 中設定的預設位置。

  • FAILURE_POLICY:(選用) 指定整個管道的失敗政策。可用的設定如下:

    • 如要設定管道在任一工作失敗後失敗,請輸入 fast

    • 如要設定管道在某項工作失敗後繼續排程工作,請輸入 slow

    如果您未設定這個參數,系統會預設將失敗政策設定設為 slow進一步瞭解管道失敗政策

  • SERVICE_ACCOUNT:(選用) 這個管道執行作業要使用的服務帳戶名稱。如果您未指定服務帳戶,Vertex AI Pipelines 會使用預設的 Compute Engine 服務帳戶執行管道。

  • NETWORK:(選用):這個管道執行作業要使用的虛擬私有雲對等互連網路名稱。