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 平台上使用。
先决条件任务¶
要使用这些操作符,您必须执行以下几项操作
使用 Cloud Console 选择或创建一个 Cloud Platform 项目。
为您的项目启用结算,如 Google Cloud 文档中所述。
启用 API,如 Cloud Console 文档中所述。
通过 pip 安装 API 库。
pip install 'apache-airflow[google]'安装提供了详细信息。
启动作业¶
要使用 AI Platform 启动机器学习操作,您必须启动训练作业。这将创建一个虚拟机,该虚拟机可以运行训练器文件中指定的代码,该文件包含主应用程序代码。可以使用 MLEngineStartTrainingJobOperator
启动作业。
警告
此操作符已弃用。请改用 CreateCustomPythonPackageTrainingJobOperator
。
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
。运行此操作符的结果将是保存在模型注册表中可直接使用的模型。
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
。
get_model = GetModelOperator(
task_id="get_model", region=REGION, project_id=PROJECT_ID, model_id=model_id_v1
)
您可以将 Jinja 模板 与 project_id
和 model
字段一起使用,以动态确定它们的值。结果将保存到 XCom,允许其他操作符使用它们。在这种情况下,使用 BashOperator
打印模型信息。
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 来创建特定模型的新版本。这将确保将训练新版本的模型,而不是创建新模型。
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
也可用于创建具有不同参数的更多版本。
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_name
和 version_name
参数,通过 MLEngineSetDefaultVersionOperator
设置模型版本。
警告
此操作符已弃用。请改用 SetDefaultVersionOnModelOperator
。要设置为默认的所需模型版本可以使用格式为 projects/{project}/locations/{location}/models/{model_id}@{version_id}
或 projects/{project}/locations/{location}/models/{model_id}@{version_alias}
的模型 ID 在 model_id
参数中传递。默认情况下,创建的第一个模型版本将被标记为默认。
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,则操作符将输出此模型的所有可用版本。
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_name
、uri
或 model_name
和 version_name
。如果您不提供 version_name
,则操作符将使用默认模型版本。
警告
此操作符已弃用。请改用 CreateBatchPredictionJobOperator
。
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_name
和 model_name
参数来删除模型版本。
警告
此运算符已弃用。请改用 DeleteModelVersionOperator
。模型的默认版本无法删除。
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
。
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 评估模型