BigQuery ML训练矩阵分解模型,配置预留槽后仍报错求助
问题解决:BigQuery ML矩阵分解模型训练仍提示需预留资源
问题描述
执行以下BigQuery ML创建矩阵分解模型的SQL:
BEGIN CREATE OR REPLACE MODEL `recommendation_engine_ds.purchase_recommender` OPTIONS(model_type='matrix_factorization', user_col='customer_id', item_col='item_id', rating_col='rating', feedback_type='implicit' ) AS SELECT customer_id, item_id, rating FROM `unique-moon-366800.recommendation_engine_ds.quality_matrix`; END
收到错误:
Query error: Training Matrix Factorization models is not available for on-demand usage. To train, please set up a reservation (flex or regular) based on instructions in BigQuery public do
已创建资源预留相关存储过程并执行,但问题依旧:
BEGIN CREATE CAPACITY `unique-moon-366800.region-us-central1.my-commitment` AS JSON """{ "slot_count": 100, "plan": "FLEX" }"""; CREATE RESERVATION `unique-moon-366800.region-us-central1.my-reservation` AS JSON """{ "slot_capacity": 100 }"""; CREATE ASSIGNMENT `unique-moon-366800.region-us-central1.my-reservation.my-assignment` AS JSON """{ "assignee": "projects/unique-moon-366800", "job_type": "QUERY" }"""; END
解决步骤
1. 等待Flex容量承诺生效
Flex类型的容量承诺创建后不会立即激活,通常需要5-10分钟完成配置。执行完存储过程后,先等待一段时间再尝试训练模型。
2. 确认区域与资源配置匹配
- 确保模型训练作业的运行区域和预留资源的区域一致(你的预留资源在
region-us-central1,需手动指定查询区域,避免使用默认区域)。 - 验证分配规则的
assignee是否正确指向目标项目,job_type: QUERY已覆盖ML训练类作业,配置本身无问题。
3. 强制指定查询使用预留资源
在训练模型的SQL中,通过参数强制绑定预留资源:
--reservation_id=unique-moon-366800.region-us-central1.my-reservation BEGIN CREATE OR REPLACE MODEL `recommendation_engine_ds.purchase_recommender` OPTIONS(model_type='matrix_factorization', user_col='customer_id', item_col='item_id', rating_col='rating', feedback_type='implicit' ) AS SELECT customer_id, item_id, rating FROM `unique-moon-366800.recommendation_engine_ds.quality_matrix`; END
如果使用BigQuery UI执行,可在「查询设置」中直接选择对应的预留资源。
4. 检查容量承诺状态
在BigQuery控制台的「资源管理 > 容量承诺」页面,确认my-commitment的状态为「活跃(Active)」,若处于「待处理(Pending)」状态,需等待激活完成。
5. 调整槽位数量(可选)
如果数据集规模较大,100个槽位可能不足以支撑训练,可尝试将slot_count调整为200或更高,重新创建容量承诺与预留资源。
内容的提问来源于stack exchange,提问作者AVWS
相关产品推荐
相关产品推荐

