从 MySQL 8.0.31 开始,HeatWave ML 支持将 ONNX(开放神经网络交换)格式的预训练模型上传到模型目录。ML_MODEL_IMPORT
您可以使用例程加载它们
。导入后,所有 HeatWave ML 例程都可以与 ONNX 模型一起使用。
ONNX 格式 ( .onnx
) 的模型不能直接加载到 MySQL 表中。ML_MODEL_IMPORT
在您使用例程
之前,它们需要字符串序列化并转换为 Base64 编码
。
按照以下步骤将 ONNX 格式的模型导入模型目录:
-
将
.onnx
包含模型的文件转为Base64编码,进行字符串序列化。您可以使用 Python 的 base64 模块执行此操作。在这个例子中,文件iris.onnx
被转换:python -c "import onnx; import base64; open('iris_base64.onnx', 'wb').write( base64.b64encode(onnx.load('iris.onnx').SerializeToString()))"
-
作为客户端连接到 HeatWave Cluster 的数据库系统,并创建一个临时表来上传模型。例如:
CREATE TEMPORARY TABLE onnx_temp (onnx_string LONGTEXT);
-
使用
LOAD DATA INFILE
语句将预处理后的.onnx
文件加载到临时表中。例如:LOAD DATA INFILE 'iris_base64.onnx' INTO TABLE onnx_temp CHARACTER SET binary FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\r' (onnx_string);
-
从临时表中选择上传的模型到会话变量中。例如:
SELECT onnx_string FROM onnx_temp INTO @onnx_encode;
-
调用
ML_MODEL_IMPORT
例程将 ONNX 模型导入模型目录。例如:CALL sys.ML_MODEL_IMPORT(@onnx_encode, NULL, 'iris_onnx');
在此示例中,模型句柄是
iris_onnx
,并且省略了可选的模型元数据 (NULL
)。有关可以为导入的 ONNX 模型添加的元数据的详细信息,请参阅ML_MODEL_IMPORT
。
导入后,所有 HeatWave ML 例程都可以与 ONNX 模型一起使用。它位于模型目录中,可以采用与 HeatWave ML 创建的模型相同的方式进行管理。