我正在尝试在 BigQuery 中运行 Tensorflow 模型。该模型是 BERT 的一个变体,它足够小以适应 BigQuery 模型限制 (<250MB)。
我尝试直接从 BigQuery 控制台使用以下查询通过模型生成预测:
SELECT
input_1,
input_2,
prediction,
FROM
ML.PREDICT(MODEL `MY_IMPORTED_MODEL`,
(
SELECT
*,
FROM
`MY_DATA_TABLE`
))
但是,查询导致了以下错误:
<块引用>查询执行期间资源超出: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 尝试一次向模型提供太多行,导致批量大小导致内存不足错误。
由于我在调用 BATCH_SIZE
函数时无法指定 ML.PREDICT
参数,所以我想知道是否有任何其他方式可以获得不会导致超出 -内存错误。
有 1.8 亿行要运行预测,所以我想在 BigQuery(而不是 GCP AI 平台)中进行预测。
有什么想法吗?