Google Cloud AI Platform 運算子

Google Cloud AI Platform(前身為 ML Engine)可用於大規模訓練機器學習模型、在雲端託管已訓練模型,並使用模型為新資料進行預測。AI Platform 是用於訓練、評估和調整機器學習模型的工具集合。AI Platform 也可用於部署已訓練模型、進行預測以及管理各種模型版本。

舊版 AI Platform Training、AI Platform Prediction、AI Platform Pipelines 和 AI Platform Data Labeling Service 已被棄用,並將在關閉日期後於 Google Cloud 上停止提供。舊版 AI Platform 的所有功能和新功能都可在 Vertex AI 平台上使用。

先決條件任務

若要使用這些運算子,您必須執行幾項操作

啟動任務

若要使用 AI Platform 啟動機器學習操作,您必須啟動訓練任務。這會建立一個虛擬機器,可以執行 trainer 檔案中指定的程式碼,其中包含主要應用程式程式碼。可以使用 MLEngineStartTrainingJobOperator 啟動任務。

警告

此運算子已被棄用。請改用 CreateCustomPythonPackageTrainingJobOperator

tests/system/google/cloud/ml_engine/example_mlengine.py[原始碼]

create_custom_python_package_training_job = CreateCustomPythonPackageTrainingJobOperator(
    task_id="create_custom_python_package_training_job",
    staging_bucket=f"gs://{CUSTOM_PYTHON_GCS_BUCKET_NAME}",
    display_name=PACKAGE_DISPLAY_NAME,
    python_package_gcs_uri=PYTHON_PACKAGE_GCS_URI,
    python_module_name=PYTHON_MODULE_NAME,
    container_uri=TRAIN_IMAGE,
    model_serving_container_image_uri=DEPLOY_IMAGE,
    bigquery_destination=f"bq://{PROJECT_ID}",
    # run params
    dataset_id=tabular_dataset_id,
    model_display_name=MODEL_DISPLAY_NAME,
    replica_count=REPLICA_COUNT,
    machine_type=MACHINE_TYPE,
    accelerator_type=ACCELERATOR_TYPE,
    accelerator_count=ACCELERATOR_COUNT,
    training_fraction_split=TRAINING_FRACTION_SPLIT,
    validation_fraction_split=VALIDATION_FRACTION_SPLIT,
    test_fraction_split=TEST_FRACTION_SPLIT,
    region=REGION,
    project_id=PROJECT_ID,
)

建立模型

模型是一個容器,可以容納多個模型版本。可以透過 MLEngineCreateModelOperator 建立新模型。model 欄位應定義為包含模型相關資訊的字典。name 是此字典中的必填欄位。

警告

此運算子已被棄用。模型是在執行 Vertex AI 運算子(建立任何類型的訓練任務)後建立的。例如,您可以使用 CreateCustomPythonPackageTrainingJobOperator。執行此運算子的結果將是儲存在模型登錄檔中的可立即使用的模型。

tests/system/google/cloud/ml_engine/example_mlengine.py[原始碼]

create_custom_python_package_training_job = CreateCustomPythonPackageTrainingJobOperator(
    task_id="create_custom_python_package_training_job",
    staging_bucket=f"gs://{CUSTOM_PYTHON_GCS_BUCKET_NAME}",
    display_name=PACKAGE_DISPLAY_NAME,
    python_package_gcs_uri=PYTHON_PACKAGE_GCS_URI,
    python_module_name=PYTHON_MODULE_NAME,
    container_uri=TRAIN_IMAGE,
    model_serving_container_image_uri=DEPLOY_IMAGE,
    bigquery_destination=f"bq://{PROJECT_ID}",
    # run params
    dataset_id=tabular_dataset_id,
    model_display_name=MODEL_DISPLAY_NAME,
    replica_count=REPLICA_COUNT,
    machine_type=MACHINE_TYPE,
    accelerator_type=ACCELERATOR_TYPE,
    accelerator_count=ACCELERATOR_COUNT,
    training_fraction_split=TRAINING_FRACTION_SPLIT,
    validation_fraction_split=VALIDATION_FRACTION_SPLIT,
    test_fraction_split=TEST_FRACTION_SPLIT,
    region=REGION,
    project_id=PROJECT_ID,
)

取得模型

可以使用 MLEngineGetModelOperator 取得先前建立的模型。若要取得正確的模型,必須在運算子中定義 model_name

警告

此運算子已被棄用。請改用 GetModelOperator

tests/system/google/cloud/ml_engine/example_mlengine.py[原始碼]

get_model = GetModelOperator(
    task_id="get_model", region=REGION, project_id=PROJECT_ID, model_id=model_id_v1
)

您可以將 (在 apache-airflow v3.0.0.dev0) Jinja 範本project_idmodel 欄位搭配使用,以動態判斷它們的值。結果會儲存到 (在 apache-airflow v3.0.0.dev0) XCom,允許其他運算子使用它們。在此案例中,(在 apache-airflow-providers-standard v0.0.3) BashOperator 用於列印模型資訊。

tests/system/google/cloud/ml_engine/example_mlengine.py[原始碼]

get_model_result = BashOperator(
    bash_command=f"echo {get_model.output}",
    task_id="get_model_result",
)

建立模型版本

模型版本是模型容器的子集,程式碼會在其中執行。可以透過 MLEngineCreateVersionOperator 建立新版本的模型。模型必須由 model_name 指定,且 version 參數應包含所有版本資訊的字典。在 version 參數的字典中,name 欄位為必填。

警告

此運算子已被棄用。請改用 CreateCustomPythonPackageTrainingJobOperator。在此案例中,可以透過在執行訓練任務時,於 parent_model 參數中指定現有的模型 ID,來建立特定模型的新版本。這將確保訓練模型的新版本,而不是建立新模型。

tests/system/google/cloud/ml_engine/example_mlengine.py[原始碼]

create_custom_python_package_training_job = CreateCustomPythonPackageTrainingJobOperator(
    task_id="create_custom_python_package_training_job",
    staging_bucket=f"gs://{CUSTOM_PYTHON_GCS_BUCKET_NAME}",
    display_name=PACKAGE_DISPLAY_NAME,
    python_package_gcs_uri=PYTHON_PACKAGE_GCS_URI,
    python_module_name=PYTHON_MODULE_NAME,
    container_uri=TRAIN_IMAGE,
    model_serving_container_image_uri=DEPLOY_IMAGE,
    bigquery_destination=f"bq://{PROJECT_ID}",
    # run params
    dataset_id=tabular_dataset_id,
    model_display_name=MODEL_DISPLAY_NAME,
    replica_count=REPLICA_COUNT,
    machine_type=MACHINE_TYPE,
    accelerator_type=ACCELERATOR_TYPE,
    accelerator_count=ACCELERATOR_COUNT,
    training_fraction_split=TRAINING_FRACTION_SPLIT,
    validation_fraction_split=VALIDATION_FRACTION_SPLIT,
    test_fraction_split=TEST_FRACTION_SPLIT,
    region=REGION,
    project_id=PROJECT_ID,
)

CreateCustomPythonPackageTrainingJobOperator 也可用於建立具有不同參數的更多版本。

tests/system/google/cloud/ml_engine/example_mlengine.py[原始碼]

create_custom_python_package_training_job_v2 = CreateCustomPythonPackageTrainingJobOperator(
    task_id="create_custom_python_package_training_job_v2",
    staging_bucket=f"gs://{CUSTOM_PYTHON_GCS_BUCKET_NAME}",
    display_name=PACKAGE_DISPLAY_NAME,
    python_package_gcs_uri=PYTHON_PACKAGE_GCS_URI,
    python_module_name=PYTHON_MODULE_NAME,
    container_uri=TRAIN_IMAGE,
    model_serving_container_image_uri=DEPLOY_IMAGE,
    bigquery_destination=f"bq://{PROJECT_ID}",
    parent_model=model_id_v1,
    # run params
    dataset_id=tabular_dataset_id,
    model_display_name=MODEL_DISPLAY_NAME,
    replica_count=REPLICA_COUNT,
    machine_type=MACHINE_TYPE,
    accelerator_type=ACCELERATOR_TYPE,
    accelerator_count=ACCELERATOR_COUNT,
    training_fraction_split=TRAINING_FRACTION_SPLIT,
    validation_fraction_split=VALIDATION_FRACTION_SPLIT,
    test_fraction_split=TEST_FRACTION_SPLIT,
    region=REGION,
    project_id=PROJECT_ID,
)

管理模型版本

預設情況下,模型程式碼將使用預設模型版本執行。您可以透過 MLEngineSetDefaultVersionOperator 設定模型版本,方法是指定 model_nameversion_name 參數。

警告

此運算子已被棄用。請改用 SetDefaultVersionOnModelOperator。要設定為預設值的所需模型版本可以使用模型 ID 在 model_id 參數中傳遞,格式為 projects/{project}/locations/{location}/models/{model_id}@{version_id}projects/{project}/locations/{location}/models/{model_id}@{version_alias}。預設情況下,第一個建立的模型版本將標記為預設版本。

tests/system/google/cloud/ml_engine/example_mlengine.py[原始碼]

set_default_version = SetDefaultVersionOnModelOperator(
    task_id="set_default_version",
    project_id=PROJECT_ID,
    region=REGION,
    model_id=model_id_v2,
)

若要列出可用的模型版本,請在使用 MLEngineListVersionsOperator 時指定 model_name 參數。

警告

此運算子已被棄用。請改用 ListModelVersionsOperator。您可以在 model_id 參數中傳遞所需模型的名稱。如果模型 ID 與版本別名一起傳遞,則運算子將輸出此模型的所有可用版本。

tests/system/google/cloud/ml_engine/example_mlengine.py[原始碼]

list_model_versions = ListModelVersionsOperator(
    task_id="list_model_versions", region=REGION, project_id=PROJECT_ID, model_id=model_id_v2
)

進行預測

可以使用 MLEngineStartBatchPredictionJobOperator 啟動 Google Cloud AI Platform 預測任務。若要指定模型來源,您需要提供 model_nameurimodel_nameversion_name。如果您未提供 version_name,則運算子將使用預設模型版本。

警告

此運算子已被棄用。請改用 CreateBatchPredictionJobOperator

tests/system/google/cloud/ml_engine/example_mlengine.py[原始碼]

create_batch_prediction_job = CreateBatchPredictionJobOperator(
    task_id="create_batch_prediction_job",
    job_display_name=JOB_DISPLAY_NAME,
    model_name=model_id_v2,
    predictions_format="bigquery",
    bigquery_source=BQ_SOURCE,
    bigquery_destination_prefix=f"bq://{PROJECT_ID}",
    region=REGION,
    project_id=PROJECT_ID,
    machine_type=MACHINE_TYPE,
)

清理

可以使用 MLEngineDeleteVersionOperator 透過 version_namemodel_name 參數刪除模型版本。

警告

此運算子已被棄用。請改用 DeleteModelVersionOperator。預設版本無法在模型上刪除。

tests/system/google/cloud/ml_engine/example_mlengine.py[原始碼]

delete_model_version_1 = DeleteModelVersionOperator(
    task_id="delete_model_version_1",
    project_id=PROJECT_ID,
    region=REGION,
    model_id=model_id_v1,
    trigger_rule=TriggerRule.ALL_DONE,
)

您也可以使用 MLEngineDeleteModelOperator 透過提供 model_name 參數來刪除模型。

警告

此運算子已被棄用。請改用 DeleteModelOperator

tests/system/google/cloud/ml_engine/example_mlengine.py[原始碼]

delete_model = DeleteModelOperator(
    task_id="delete_model",
    project_id=PROJECT_ID,
    region=REGION,
    model_id=model_id_v2,
    trigger_rule=TriggerRule.ALL_DONE,
)

評估模型

此功能已被棄用。舊版 MLEngine 的所有功能和新功能都可在 Vertex AI 平台上使用。若要建立和檢視模型評估,請查看文件:使用 Vertex AI 評估模型

參考資料

如需更多資訊,請參閱

此條目是否有幫助?