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]'如需詳細資訊,請參閱(在 apache-airflow v3.0.0.dev0) 安裝。
啟動任務¶
若要使用 AI Platform 啟動機器學習操作,您必須啟動訓練任務。這會建立一個虛擬機器,可以執行 trainer 檔案中指定的程式碼,其中包含主要應用程式程式碼。可以使用 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
)
您可以將 (在 apache-airflow v3.0.0.dev0) Jinja 範本 與 project_id
和 model
欄位搭配使用,以動態判斷它們的值。結果會儲存到 (在 apache-airflow v3.0.0.dev0) XCom,允許其他運算子使用它們。在此案例中,(在 apache-airflow-providers-standard v0.0.3) 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,
)
管理模型版本¶
預設情況下,模型程式碼將使用預設模型版本執行。您可以透過 MLEngineSetDefaultVersionOperator
設定模型版本,方法是指定 model_name
和 version_name
參數。
警告
此運算子已被棄用。請改用 SetDefaultVersionOnModelOperator
。要設定為預設值的所需模型版本可以使用模型 ID 在 model_id
參數中傳遞,格式為 projects/{project}/locations/{location}/models/{model_id}@{version_id}
或 projects/{project}/locations/{location}/models/{model_id}@{version_alias}
。預設情況下,第一個建立的模型版本將標記為預設版本。
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 與版本別名一起傳遞,則運算子將輸出此模型的所有可用版本。
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 評估模型