Google Cloud Vertex AI教程报错:BQML模型无法导出部署至Vertex端点
BQML模型部署到Vertex AI端点报错:Model is not exportable from BigQueryML 解决方法
问题情况
执行model.deploy(endpoint=endpoint)部署BQML模型到Vertex AI端点时,触发以下错误:
FailedPrecondition: 400 Model projects/<some_number>/locations/europe-west2/models/plans_copy_very_dumb_model@2 is not exportable from BigQueryML.
运行环境:Vertex AI Workbench(europe-west1区域),BigQuery数据集、Vertex AI模型及端点均位于europe-west2区域。
训练模型的BQML代码如下(替换了原教程的数据集和标签列):
BQML_MODEL_NAME = f"plans_copy_very_dumb_model" sql_train_model_bqml = f""" CREATE OR REPLACE MODEL {BQ_DATASET_NAME}.{BQML_MODEL_NAME} OPTIONS( MODEL_TYPE="LOGISTIC_REG", input_label_cols=["id"], -- 此处替换为了id而非教程中的正确标签 model_registry="vertex_ai", vertex_ai_model_version_aliases=['logistic_reg', 'experimental'] ) AS SELECT * FROM `<some_name>.mongo_atlas_dev.plans_copy` """ run_bq_query(sql_train_model_bqml)
错误原因
- 标签列设置错误:将
id作为input_label_cols的目标列,逻辑回归模型需要的是分类/回归的目标变量(比如用户是否流失、订单状态等),而id是唯一标识符,无法作为有效标签训练出符合导出要求的模型,导致模型无法被Vertex AI识别为可导出的有效模型。 - 模型训练有效性问题:使用无效标签训练的模型可能处于异常状态,即使注册到Vertex AI模型注册表,也不满足部署要求。
解决步骤
- 修正标签列配置:将
input_label_cols替换为数据集中实际的目标列(比如你的业务场景中需要预测的分类字段,例如is_churn、status等)。示例修改后的代码:
sql_train_model_bqml = f""" CREATE OR REPLACE MODEL {BQ_DATASET_NAME}.{BQML_MODEL_NAME} OPTIONS( MODEL_TYPE="LOGISTIC_REG", input_label_cols=["your_target_column"], -- 替换为真实的目标字段名 model_registry="vertex_ai", vertex_ai_model_version_aliases=['logistic_reg', 'experimental'] ) AS SELECT -- 建议只选择与预测相关的特征列,避免引入无关字段(如id) col1, col2, your_target_column FROM `<some_name>.mongo_atlas_dev.plans_copy` """
- 重新训练模型:执行修改后的SQL语句,确保模型训练成功,并且在Vertex AI模型注册表中能看到状态正常的模型版本。
- 重新尝试部署:使用新训练的模型执行
model.deploy(endpoint=endpoint)操作。
额外检查项
- 确认使用的BQML模型类型支持导出到Vertex AI:LOGISTIC_REG属于支持的模型类型,但需保证模型训练流程正常。
- 确保BigQuery数据集、Vertex AI模型及端点的区域一致(你当前已满足此条件),避免跨区域部署的潜在问题。
内容的提问来源于stack exchange,提问作者Wer Bn
相关产品推荐
相关产品推荐

