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/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
)

您可以将 Jinja 模板project_idmodel 字段一起使用,以动态确定它们的值。结果将保存到 XCom,允许其他操作符使用它们。在这种情况下,使用 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,
)

管理模型版本

默认情况下,模型代码将使用默认模型版本运行。您可以通过指定 model_nameversion_name 参数,通过 MLEngineSetDefaultVersionOperator 设置模型版本。

警告

此操作符已弃用。请改用 SetDefaultVersionOnModelOperator。要设置为默认的所需模型版本可以使用格式为 projects/{project}/locations/{location}/models/{model_id}@{version_id}projects/{project}/locations/{location}/models/{model_id}@{version_alias} 的模型 ID 在 model_id 参数中传递。默认情况下,创建的第一个模型版本将被标记为默认。

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,
)

要列出可用的模型版本,请在使用 model_name 参数时使用 MLEngineListVersionsOperator

警告

此操作符已弃用。请改用 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 评估模型

参考

如需更多信息,请查看

此条目是否有帮助?