训练模型时
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
,这是一个唯一的自动递增数字标识符。