![](/img/trans.png)
[英]Which characters are allowed in a BigQuery STRING column (getting "UDF out of memory" error)
[英]BigQuery ML Tensorflow model - UDF out of memory
我正在尝试在 BigQuery 中运行 Tensorflow model。 model 是 BERT 的变体,它足够小以符合 BigQuery model 的限制 (<250MB)。
我尝试直接从 BigQuery 控制台使用以下查询生成 model 的预测:
SELECT
input_1,
input_2,
prediction,
FROM
ML.PREDICT(MODEL `MY_IMPORTED_MODEL`,
(
SELECT
*,
FROM
`MY_DATA_TABLE`
))
但是,查询导致以下错误:
查询执行期间超出资源:memory 中的 UDF。
我试图使用以下查询从MY_DATA.TABLE
生成对较小样本的预测:
SELECT
input_1,
input_2,
prediction,
FROM
ML.PREDICT(MODEL `MY_IMPORTED_MODEL`,
(
SELECT
*,
FROM
`MY_DATA_TABLE`
LIMIT 10
))
较小的样本工作得很好。
我认为OVER
表达式可能会通过强制使用更多插槽来解决问题,因此我生成了以下查询(剧透警报:因内存不足错误而失败):
SELECT
input_1,
input_2,
prediction,
FROM
ML.PREDICT(MODEL `MY_IMPORTED_MODEL`,
(
SELECT
*,
FLOOR(CAST(ROW_NUMBER() OVER (ORDER BY input_1) AS decimal) / 10) AS batch_number,
FROM
`MY_DATA_TABLE`
))
似乎 BigQuery 试图一次向 model 提供太多行,导致一批大小导致内存不足错误。
由于我在调用ML.PREDICT
function 时无法指定BATCH_SIZE
参数,因此我想知道是否有任何其他方法可以获得不会导致内存不足错误的预测。
有 1.8 亿行要运行预测,所以我想在 BigQuery(而不是 GCP AI 平台)中进行预测。
有任何想法吗?
一种选择是将您的 model 拆分为多个模型,并为每个模型调用一个单独的ml.predict
。
keras 功能 api 使这变得非常容易,因为您可以组合不同的模型并稍后使用get_layer
方法访问它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.