執行管道

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

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

您可以使用 Gemini Enterprise Agent Platform Experiments,將管道執行作業與實驗或實驗執行作業建立關聯,藉此追蹤、分析及比較管道執行作業。比較管道執行作業的參數、輸出內容和成效指標,即可找出最適合您用途的管道設定。詳情請參閱「Gemini Enterprise Agent Platform 實驗簡介」。

事前準備

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

  1. 建構管道。

  2. 如要使用 Agent Platform SDK for Python 執行 pipeline,請安裝 Vertex SDK。

建立管道執行作業

請按照下列操作說明,使用 Google Cloud 控制台或 Python 執行機器學習管道。

控制台

請按照下列操作說明,使用 Google Cloud 控制台執行機器學習管道。

  1. 前往 Google Cloud 控制台「Agent Platform」部分的「Pipelines」頁面。

    前往「Pipelines」

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

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

  4. 在「Run details」(執行作業詳細資料) 部分,執行下列操作:

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

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

        1. 選取含有管道或元件定義檔案的存放區。

        2. 選取「Pipeline or component」(管道或元件) 和「Version」(版本)。

        3. 指定「Run name」(執行作業名稱),以便識別管道執行作業。

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

        1. 在「Template Gallery pipeline」(範本庫管道) 清單中,選取管道範本。

        2. 選用:修改預設的「Run name」(執行作業名稱),用於唯一識別管道執行作業。

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

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

        2. 根據預設,「Pipeline or component name」(pipeline 或元件名稱) 會顯示 pipeline 定義中指定的名稱。視需要指定其他管道名稱。

        3. 指定「Run name」(執行作業名稱),以便識別管道執行作業。

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

        1. 按一下「Browse」(瀏覽),前往含有管道定義物件的 Cloud Storage bucket,選取檔案,然後點選「Select」(選取)。

          或者,您也可以輸入管道定義檔案的 Cloud Storage URI 或 HTTP/HTTPS 網址。

        2. 指定「Pipeline or component name」(pipeline 或元件名稱)。

        3. 指定「Run name」(執行作業名稱),以便識別管道執行作業。

  1. Optional: To schedule recurring pipeline runs, specify the **Run schedule**, as follows:

      1. Select **Recurring**.

      1. Under **Start time**, specify when the schedule becomes active.

          * To schedule the first run to occur immediately after schedule creation, select **Immediately**.

          * To schedule the first run to occur at a specific time and date, select **On**.

      1. In the **Frequency** field, specify the frequency to schedule and execute the
      pipeline runs, using a cron schedule expression based on
      [unix-cron](https://man7.org/linux/man-pages/man5/crontab.5.html).

      1. Under **Ends**, specify when the schedule ends.

          * To indicate that the schedule creates pipeline runs indefinitely, select **Never**.

          * To indicate that the schedule ends on a specific date and time, select **On**, and specify the end date and time for the schedule.

      1. Optional: To specify that the pipeline run uses a custom service account,
      Customer-managed encryption keys (CMEK), or a peered VPC network, click
      **Advanced options**, and then follow these instructions:

          *  To specify a service account, select a service account from the
            **Service account** drop-down list.

              If you don't specify a service account,
              Agent Platform Pipelines runs your pipeline using the default
              Compute Engine service account.

              Learn more about [configuring a service account for use with
              Agent Platform Pipelines](/gemini-enterprise-agent-platform/machine-learning/pipelines/configure-project#service-account).

          *  To use a CMEK, select **Use a customer-managed encryption key**. The **Select a customer-managed key** drop-down list appears. In the **Select a customer-managed key** drop-down list, select the key that you want to use.

          *  To use a peered VPC network in this pipeline run, enter the VPC
          network name in the **Peered VPC network** box.

  1. Click **Continue**.
  1. 在「Runtime configuration」(執行階段設定) 部分,按照下列步驟設定管道執行作業:

    1. 在「Cloud Storage location」(Cloud Storage 位置) 下方,按一下「Browse」(瀏覽),選取要儲存管道輸出構件的 Cloud Storage bucket,然後點選「Select」(選取)。

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

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

        • 如要設定管道,讓系統在某項工作失敗後繼續排定工作,請選取「Run all steps to completion」(執行所有步驟直到完成)。系統預設會選取這個選項。

        • 如要將管道設為在一個工作失敗後即宣告失敗,請選取「Fail this run as soon as one step fails」(只要一個步驟未成功,這項執行作業即宣告失敗)。

      • 在「Caching configuration」(快取設定) 下方,指定整個 pipeline 的快取設定。

        • 如要對 pipeline 中的任務使用任務層級快取設定,請選取「Do not override task-level cache configuration」(不要覆寫任務層級的快取設定)。

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

        • 如要停用管道中所有工作的快取功能,並覆寫任何工作層級的快取設定,請選取「Disable read from cache for all steps (fastest)」(停用所有步驟的快取讀取功能 (最快))。

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

  2. 如要建立管道執行作業,請按一下「Submit」(提交)。

Python

請按照下列操作說明,使用 Agent Platform SDK for Python 執行機器學習管道。執行下列程式碼範例前,請務必先設定驗證機制。

設定驗證方法

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

  1. 建立服務帳戶:

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

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

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

      請勿關閉瀏覽器視窗,後續步驟會用到。

  2. 建立用於驗證的服務帳戶金鑰:

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

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

    3. 按一下「Permissions」(權限) 分頁標籤。
    4. 按一下「Grant access」(授予存取權)。「Add principals」(新增主體) 面板隨即顯示。
    5. 在「New principals」(新增主體) 方塊中,輸入您在先前步驟中建立的服務帳戶電子郵件地址。
    6. 在「Role」(角色) 下拉式選單中,依序選取「Service accounts」(服務帳戶) >「Service account user」(服務帳戶使用者)。
    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]

執行管道

如要執行 Gemini Enterprise Agent Platform 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,
           reserved_ip_ranges=RESERVED_IP_RANGES)

更改下列內容:

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

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

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

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

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

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

  • PIPELINE_PARAMETERS:(選用) 要傳遞至這項執行的管道參數。舉例來說,建立 dict(),並將參數名稱設為字典鍵,參數值設為字典值。

  • ENABLE_CACHING:(選用) 指定這個管道執行作業是否使用執行快取。執行快取功能會略過輸出內容已知的管道工作,進而降低成本。如未指定啟用快取引數,這項管道執行作業會使用執行快取。進一步瞭解執行快取。

  • CMEK:(選用) 要用於這個管道執行的客戶自行管理的加密金鑰名稱。

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

    Agent Platform 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:(選用) 要執行管道的區域。如要進一步瞭解 Agent Platform Pipelines 支援的區域,請參閱 Gemini Enterprise Agent Platform 位置指南。如未設定這項參數,系統會使用 aiplatform.init 中設定的預設位置。

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

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

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

    如未設定這項參數,失敗政策設定預設會設為 slow。進一步瞭解管道失敗政策。

  • SERVICE_ACCOUNT:(選用) 要用於這個管道執行的服務帳戶名稱。如未指定服務帳戶,Agent Platform Pipelines 會使用預設的 Compute Engine 服務帳戶執行 pipeline。

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

  • RESERVED_IP_RANGES:選用。虛擬私有雲網路中預留 IP 範圍的名稱清單,用於 pipeline 執行的工作負載,例如:['vertex-ai-ip-range']。

後續步驟