3.9.8 模型句柄

训练模型时 ML_TRAIN ,它会生成一个模型句柄,这是运行其他 HeatWave ML 例程时所必需的。从 MySQL 8.0.31 开始,您可以将生成的模型句柄替换为您选择的模型句柄,该句柄在模型目录中必须是唯一的。

模型句柄临时存储在 ML_TRAIN 调用中指定的用户定义会话变量中。在以下示例中, @census_model被定义为模型句柄会话变量:

mysql> CALL sys.ML_TRAIN('heatwaveml_bench.census_train', 'revenue', NULL, @census_model);

要使用您自己的模型句柄而不是生成的模型句柄,请在调用例程之前设置会话变量的值 ML_TRAIN ,如下所示:

mysql> SET @census_model = 'census_test';
mysql> CALL sys.ML_TRAIN('heatwaveml_bench.census_train', 'revenue', NULL, @census_model);

如果您设置的模型句柄已出现在模型目录中, ML_TRAIN 例程将返回错误。

当用于运行的连接 ML_TRAIN 保持活动状态时,该连接可以通过查询会话变量来检索模型句柄;例如:

mysql> SELECT @census_model;
+--------------------------------------------------+
| @census_model                                    |
+--------------------------------------------------+
| heatwaveml_bench.census_train_user1_1636729526   |
+--------------------------------------------------+
笔记

生成的模型句柄的格式可能会发生变化。

ML_*虽然会话变量仍然填充有模型句柄,但在运行其他例程 时可以指定它来代替模型句柄。但是,一旦连接终止,会话变量数据就会丢失。这种情况下,可以通过查询模型目录表来查找模型句柄;例如:

mysql> SELECT model_handle, model_owner, train_table_name 
       FROM ML_SCHEMA_user1.MODEL_CATALOG;
+------------------------------------------------+-------------+-------------------------------+
| model_handle                                   | model_owner | train_table_name              |
+------------------------------------------------+-------------+-------------------------------+
| heatwaveml_bench.census_train_user1_1636729526 |     user1   | heatwaveml_bench.census_train |
+------------------------------------------------+-------------+-------------------------------+

ML_ROUTINE_*您可以直接在调用 中指定模型句柄 ;例如:

mysql> SELECT sys.ML_PREDICT_ROW(@row_input, 'heatwaveml_bench.census_train_user1_1636729526');

或者,您可以将模型句柄重新分配给会话变量;例如:

  • 将模型句柄分配给名为的会话变量 @my_model

    SET @my_model = 'heatwaveml_bench.census_train_user1_1636729526';
  • 将模型句柄分配给以 @my_model最近训练的模型命名的会话变量:

    SET @my_model = (SELECT model_handle FROM ML_SCHEMA_user1.MODEL_CATALOG 
      ORDER BY model_id DESC LIMIT 1);

    最近训练的模型是插入MODEL_CATALOG表中的最后一个模型。它具有最近分配的model_id,这是一个唯一的自动递增数字标识符。