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

如何将ONNX模型转为十六进制字符串/.hex格式用于Azure Synapse SQL预测

将ONNX文件转换为十六进制字符串并在Azure Synapse中用SQL执行预测的步骤

一、本地把ONNX文件转成十六进制字符串

你可以用两种常用工具完成转换:

方法1:PowerShell(Windows环境)

打开PowerShell,切换到Model.onnx所在的目录,执行以下命令:

Get-Content -Path "Model.onnx" -Encoding Byte | ForEach-Object { $_.ToString("X2") } | Out-File -FilePath "model_hex.txt" -Encoding ASCII

执行后会生成一个model_hex.txt文件,里面就是连续的十六进制字符串(每个字节对应两位十六进制字符,无空格或分隔符)。

方法2:Python(跨平台)

如果用Python,运行以下脚本:

with open("Model.onnx", "rb") as input_file:
    # 读取二进制文件并转为十六进制字符串
    hex_content = input_file.read().hex()

with open("model_hex.txt", "w") as output_file:
    output_file.write(hex_content)

同样会得到包含十六进制字符串的文本文件。

二、把十六进制字符串存入Azure Synapse的表中

首先创建一个用于存储模型的表(如果还没有的话):

CREATE TABLE dbo.ONNXModels (
    ModelID INT PRIMARY KEY,
    ModelHexString VARCHAR(MAX) NOT NULL,
    ModelName NVARCHAR(100) NOT NULL
)

接着打开model_hex.txt,复制里面的十六进制字符串,用INSERT语句插入表中:

INSERT INTO dbo.ONNXModels (ModelID, ModelHexString, ModelName)
VALUES (1, '替换成你的十六进制字符串内容', 'MyPredictionModel')

三、用SQL执行预测操作

在Synapse中,需要先把十六进制字符串转回二进制格式,再用PREDICT函数调用模型。假设你的输入数据存在dbo.InputFeatures表中,执行以下SQL:

SELECT *
FROM PREDICT(
    -- 将十六进制字符串转为二进制模型
    MODEL = (SELECT CONVERT(VARBINARY(MAX), ModelHexString, 2) FROM dbo.ONNXModels WHERE ModelID = 1),
    -- 指定输入数据来源
    DATA = dbo.InputFeatures
) AS PredictionOutput

说明:CONVERT函数的第三个参数2表示输入的十六进制字符串没有0x前缀,如果你的字符串带0x,把参数改成1即可。

四、关键注意事项

  • 确保ONNX模型的输入输出列名、数据类型和你的输入表dbo.InputFeatures完全匹配,否则会出现预测失败。
  • 若模型体积较大,VARCHAR(MAX)足够存储(Synapse中最大支持2GB),无需担心长度问题。
  • 测试阶段可以先用小型ONNX模型验证整个流程,确认转换和预测都正常后再用正式模型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:40:38