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 启动机器学习操作,您必须启动训练作业。这会创建一个虚拟机,该虚拟机可以运行训练器文件中指定且包含主应用程序代码的代码。可以使用 MLEngineStartTrainingJobOperator 启动作业。

此操作已弃用。请改用 CreateCustomPythonPackageTrainingJobOperator

tests/system/providers/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/providers/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/providers/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
)

可以使用 Jinja 模板project_idmodel 字段动态确定其值。结果保存到 XCom 中,以便其他操作符使用它们。在这种情况下,BashOperator 用于打印模型信息。

tests/system/providers/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/providers/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/providers/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。可以将要设置为默认值的所需模型版本与 model_id 参数中的模型 ID 一起传递,格式为 projects/{project}/locations/{location}/models/{model_id}@{version_id}projects/{project}/locations/{location}/models/{model_id}@{version_alias}。默认情况下,创建的第一个模型版本将标记为默认版本。

tests/system/providers/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/providers/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/providers/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/providers/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,
)

您还可以通过提供 model_name 参数,使用 MLEngineDeleteModelOperator 删除模型。

此运算符已弃用。请改用 DeleteModelOperator

tests/system/providers/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 评估模型

参考

如需了解更多信息,请查看

此条目是否有帮助?