BigQuery ML Tensorflow 模型 - UDF 内存不足

时间:2021-06-14 09:49:00

标签: tensorflow machine-learning google-bigquery

我正在尝试在 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 平台)中进行预测。

有什么想法吗?

0 个答案:

没有答案