MySQL HeatWave 用户指南  / 第 3 章 HeatWave ML  / 3.9 管理模型  /  3.9.2 导入 ONNX 模型

3.9.2 导入 ONNX 模型

从 MySQL 8.0.31 开始,HeatWave ML 支持将 ONNX(开放神经网络交换)格式的预训练模型上传到模型目录。ML_MODEL_IMPORT 您可以使用例程加载它们 。导入后,所有 HeatWave ML 例程都可以与 ONNX 模型一起使用。

ONNX 格式 ( .onnx) 的模型不能直接加载到 MySQL 表中。ML_MODEL_IMPORT 在您使用例程 之前,它们需要字符串序列化并转换为 Base64 编码 。

按照以下步骤将 ONNX 格式的模型导入模型目录:

  1. .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()))"
  2. 作为客户端连接到 HeatWave Cluster 的数据库系统,并创建一个临时表来上传模型。例如:

    CREATE TEMPORARY TABLE onnx_temp (onnx_string LONGTEXT);
  3. 使用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);
  4. 从临时表中选择上传的模型到会话变量中。例如:

    SELECT onnx_string FROM onnx_temp INTO @onnx_encode;
  5. 调用 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 创建的模型相同的方式进行管理。