You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在BigQuery ML中使用已导入的ONNX模型?如何确定输入格式?

确定ONNX模型正确输入格式及解决报错方案

一、明确模型的输入格式

sentence-transformers/all-MiniLM-L6-v2的ONNX模型输入,完全对应原HuggingFace模型Tokenizer的输出结构:

  • 必须传入三个字段:input_ids(整数数组)、attention_mask(整数数组)、token_type_ids(整数数组,单句场景下全为0)
  • 每个字段都是二维数组结构(对应模型的[batch_size, sequence_length]输入形状,单样本时外层嵌套一层数组)

可以本地用简单代码验证输入结构:

from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("sentence-transformers/all-MiniLM-L6-v2")
# 输出会展示每个输入字段的具体值和形状
print(tokenizer("hello world", return_tensors="np"))

示例输出会类似:

{'input_ids': array([[101, 7592, 2088, 102]]), 'attention_mask': array([[1, 1, 1, 1]]), 'token_type_ids': array([[0, 0, 0, 0]])}

二、修正BigQuery查询的错误

你的查询存在3个关键问题,直接导致了报错:

  1. 模型名称不匹配:创建的模型是ml.make_embeddings,但查询中误用了ml.all_minilm_l6_v2
  2. 输入格式错误:input_ids/attention_mask/token_type_ids不能是单个整数,必须是符合长度要求的数组
  3. 冗余输入字段:sentences不是模型的输入字段,模型只接受Tokenizer处理后的三个核心字段

修正后的查询示例:

SELECT * FROM
ML.PREDICT(MODEL ml.make_embeddings, (
  SELECT 
    [101, 7592, 2088, 102] AS input_ids,
    [1, 1, 1, 1] AS attention_mask,
    [0, 0, 0, 0] AS token_type_ids
))

三、批量处理文本的优化方案

如果要直接传入原始文本而非手动编写token ID,可以在BigQuery中创建JavaScript UDF,实现Tokenizer的文本转token逻辑,将文本自动转换为模型所需的三个输入数组后再调用模型预测。

你遇到的"内部错误"本质是输入格式与模型要求不匹配导致的,修正输入结构后即可解决问题。

内容的提问来源于stack exchange,提问作者stkvtflw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 08:07:26