本文介绍了创建模型、查看模型列表、模型评估以及模型推理等功能的语法、参数说明及其示例内容。
前提条件
已在控制台开启PolarDB for AI功能。
注意事项
创建模型
创建一个机器学习模型。机器学习模型的训练过程是异步的,需要通过查询模型状态来判断该模型是否训练完成。
语法CREATE MODEL model_name WITH ( model_class = '', x_cols = '', y_cols='',model_parameter=()) AS (SELECT select_expr [, select_expr] ... FROM table_reference)
参数说明参数 | 说明 |
---|---|
model_name | 模型名称。 |
model_class | 模型的类型。取值如下:
|
x_cols | 模型训练输入列。 说明 多个列名之间使用英文逗号(,)分隔。 |
y_cols | 模型训练输出列。 |
model_parameter | 模型训练参数。
|
select_expr | 列名。 |
table_reference | 表名。 |
创建airlines_gbm
模型。
/*polar4ai*/CREATE MODEL airlines_gbm WITH (model_class='lightgbm', x_cols ='Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length', y_cols='Delay',model_parameter=(boosting_type='gbdt', n_estimators=100, max_depth=8, num_leaves=256)) as (SELECT * FROM db4ai.airlines_train)
执行结果如下:Query OK, 0 rows affected (0.79 sec)
上传模型
PolarDB for AI支持上传自定义机器学习模型,您可以将离线训练好的模型上传至PolarDB for AI,后续可以借助该平台来管理上传的模型。
语法UPLOAD MODEL model_name WITH (model_location = '', req_location = '')
参数说明参数 | 说明 |
---|---|
model_name | 模型名称。 |
model_location | 模型文件地址。 |
req_location | 模型运行依赖的文件地址。 |
将创建好的模型
my_model
上传至PolarDB for AI平台。/*polar4ai*/UPLOAD MODEL my_model WITH (model_location='https://xxxx.oss-cn-hangzhou.aliyuncs.com/xxxx/model.pkl?Expires=xxxx&OSSAccessKeyId=xxxx&Signature=xxxx', req_location='https://xxxx.oss-cn-hangzhou.aliyuncs.com/xxxx/requirements.txt?Expires=xxxx&OSSAccessKeyId=xxxx&Signature=xxxx');
返回结果如下:Query OK, 0 rows affected (0.29 sec)
执行以下命令,查看模型状态。/*polar4ai*/ SHOW MODEL my_model;
返回结果如下:+-------------+-----------------------------------------------------------------------------------------------------------------------------+
| modelStatus | modelPath |
+-------------+-----------------------------------------------------------------------------------------------------------------------------+
| saved | http://db4ai-collie-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/xxxxx.pkl?OSSAccessKeyId=xxxxxx&Expires=xxxx&Signature=xxxxxx |
+-------------+-----------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.23 sec)
modelStatus
显示为saved
,即表示模型上传成功。部署模型
您可以将上传后的模型部署在PolarDB for AI平台上,部署成功后,模型为在线状态,后续调用模型进行模型推理时,速度会更快。
语法DEPLOY MODEL model_name
参数说明参数 | 说明 |
---|---|
model_name | 模型名称。 |
将模型
my_model
部署在PolarDB for AI平台。/*polar4ai*/ DEPLOY MODEL my_model;
返回结果如下:Query OK, 0 rows affected (0.29 sec)
执行如下命令,查看模型状态:/*polar4ai*/ SHOW MODEL my_model;
返回结果如下:+-------------+-----------------------------------------------------------------------------------------------------------------------------+
| modelStatus | modelPath |
+-------------+-----------------------------------------------------------------------------------------------------------------------------+
| serving | http://db4ai-collie-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/xxxxx.pkl?OSSAccessKeyId=xxxxxx&Expires=xxxx&Signature=xxxxxx |
+-------------+-----------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.23 sec)
modelStatus
显示为serving
,表示模型部署成功。查看模型列表
查看当前集群下的所有模型。
语法SHOW MODELS
示例/*polar4ai*/SHOW MODELS
执行结果如下:+-----------------------+-----------------+--------------+
| model_name | model_class | model_status |
+-----------------------+-----------------+--------------+
| airline_rfr | randomforestreg | saved |
| gbrt1 | gbrt | saved |
| airline_deepfm | deepfm | saved |
| airlines_gbm | lightgbm | saved |
| lgbm1 | lightgbm | saved |
| blackfriday_linearreg | linearreg | saved |
+-----------------------+-----------------+--------------+
6 rows in set (0.24 sec)
查看模型状态
查看模型的当前状态。创建模型之后使用该语法来查看模型是否训练完成。模型状态主要有以下几种:
语法- training:模型训练中。
- loading_data:模型在加载数据中。
- trained:模型已经完成训练。
- saved:模型已经被保存。
- serving:模型正在服务中。
- deleted:模型已经被删除。
SHOW MODEL model_name
参数说明参数 | 说明 |
---|---|
model_name | 模型名称。 |
查看airlines_gbm
模型的当前状态。
/*polar4ai*/SHOW MODEL airlines_gbm;
执行结果如下:+-------------+-----------------------------------------------------------------------------------------------------------------------------+
| modelStatus | modelPath |
+-------------+-----------------------------------------------------------------------------------------------------------------------------+
| saved | http://db4ai-collie-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/xxxxx.pkl?OSSAccessKeyId=xxxxxx&Expires=xxxx&Signature=xxxxxx |
+-------------+-----------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.23 sec)
说明
modelPath
的有效时间为100分钟,您可以通过modelPath
中的Expires
参数查看链接是否在有效期内。如果您需要访问该链接,请在有效期内进行访问。查看模型详情
语法DESCRIBE MODEL model_name
参数说明参数 | 说明 |
---|---|
model_name | 模型名称。 |
查看
airlines_gbm
模型的详细信息。/*polar4ai*/DESCRIBE MODEL airlines_gbm;
执行结果如下:+-------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| model_name | model_description |
+-------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| airlines_gbm | basic information:model_name:airlines_gbm model_class:lightgbm feature important:features,imp_gain,imp_splitAirline,0.3327,0.0376 AirportFrom,0.2178,0.1842 Time,0.1893,0.1999 AirportTo,0.1668,0.187 DayOfWeek,0.0384,0.1236 Length,0.0307,0.1269 Flight,0.0242,0.1408 |
+-------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.65 sec)
模型评估
评估已经训练好的模型的效果。
语法SELECT select_expr [, select_expr] ... FROM EVALUATE (MODEL model_name, SELECT select_expr_for_prediction [, select_expr_for_prediction] ... FROM table_reference ) WITH (x_cols = '', y_cols='', metrics='')
参数说明参数 | 说明 |
---|---|
select_expr | 模型评估结果中展示的列名。 |
model_name | 模型名称。 |
select_expr_for_prediction | 用于进行模型评估的列名。 |
table_reference | 表名。 |
row_count | 预测的记录数量。 |
x_cols | 模型训练输入列。多个列名之间使用英文逗号(,)分隔。 |
y_cols | 模型训练输出列。 |
metrics | 模型评估指标。取值如下:
|
- 使用已经训练完成的
airlines_gbm
模型进行模型评估。
执行结果如下:/*polar4ai*/SELECT Delay FROM evaluate(MODEL airlines_gbm, SELECT * FROM db4ai.airlines_test) WITH (x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length', y_cols='Delay', metrics='acc');
+--------------------------------------+ | task_id | +--------------------------------------+ | df05244e-21f7-11ed-be66-xxxxxxxxxxxx | +--------------------------------------+ 1 row in set (0.95 sec)
- 执行如下命令,查看任务状态。
执行结果如下:/*polar4ai*/SHOW TASK `df05244e-21f7-11ed-be66-xxxxxxxxxxxx`;
+------------+----------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------------------+----------------------------+ | taskStatus | filePath | results | startTime | endTime | +------------+----------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------------------+----------------------------+ | finish | http://db4ai-collie-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/pc-xxxxxxx/airlines_gbm/xxxxx.csv?OSSAccessKeyId=xxxxxx&Expires=xxxx&Signature=xxxxxx | {"acc": 0.6694} | 2022-08-22 17:22:21.122101 | 2022-08-22 17:22:39.428811 | +------------+----------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------------------+----------------------------+ 1 row in set (0.24 sec)
说明filePath
的有效时间为100分钟,您可以通过filePath
中的Expires
参数查看链接是否在有效期内。如果您需要访问该链接,请在有效期内进行访问。
查看任务列表
查看当前集群下的所有离线任务。
语法说明 离线任务是指运行时间长,且无法实时获取结果的批处理任务,任务类型包括离线评估和离线推理两种类型。
SHOW TASKS
示例执行以下命令,查看当前集群下的所有离线任务。
/*polar4ai*/SHOW TASKS;
执行结果如下:+--------------------------------------+------------+-------------+----------------------------+----------------------------+
| task_id | task_type | task_status | start_timestr | end_timestr |
+--------------------------------------+------------+-------------+----------------------------+----------------------------+
| 2cba0c74-1f8f-11ed-934a-xxxxxxxxxxxx | prediction | finish | 2022-08-19 15:18:51.206829 | |
| 77b3a186-1f94-11ed-8eaa-xxxxxxxxxxxx | evaluation | finish | 2022-08-19 15:56:44.465594 | |
| 972547a4-1fa3-11ed-9c6b-xxxxxxxxxxxx | evaluation | finish | 2022-08-19 17:44:59.790353 | 2022-08-19 17:45:23.750100 |
| bd0c1722-21e7-11ed-94a8-xxxxxxxxxxxx | prediction | finish | 2022-08-22 14:57:51.355240 | 2022-08-22 14:58:18.316818 |
| df05244e-21f7-11ed-be66-xxxxxxxxxxxx | evaluation | finish | 2022-08-22 16:53:20.381577 | 2022-08-22 16:53:37.189953 |
| ec956db8-21fb-11ed-8400-xxxxxxxxxxxx | evaluation | finish | 2022-08-22 17:22:21.122101 | 2022-08-22 17:22:39.428811 |
+--------------------------------------+------------+-------------+----------------------------+----------------------------+
9 rows in set (0.18 sec)
查看任务状态
查看离线任务的当前状态。任务状态主要有以下几种:
语法- init:任务初始化。
- running:任务执行中。
- finish:任务完成。
- fail:任务失败。
SHOW TASK `task_id`
参数说明参数 | 说明 |
---|---|
task_id | 任务ID。 |
查看任务ID为df05244e-21f7-11ed-be66-xxxxxxxxxxxx
的任务状态。
/*polar4ai*/SHOW TASK `df05244e-21f7-11ed-be66-xxxxxxxxxxxx`
执行结果如下:+------------+----------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------------------+----------------------------+
| taskStatus | filePath | results | startTime | endTime |
+------------+----------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------------------+----------------------------+
| finish | http://db4ai-collie-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/pc-xxxxxxx/airlines_gbm/xxxxx.csv?OSSAccessKeyId=xxxxxx&Expires=xxxx&Signature=xxxxxx | {"acc": 0.6694} | 2022-08-22 17:22:21.122101 | 2022-08-22 17:22:39.428811 |
+------------+----------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------------------+----------------------------+
1 row in set (0.24 sec)
说明
filePath
的有效时间为100分钟,您可以通过filePath
中的Expires
参数查看链接是否在有效期内。如果您需要访问该链接,请在有效期内进行访问。模型推理
使用已经训练好的模型进行在线推理或离线推理。
语法SELECT select_expr [, select_expr] ... FROM PREDICT (MODEL model_name, SELECT select_expr_for_prediction [, select_expr_for_prediction] ... FROM table_reference LIMIT row_count) WITH (x_cols= '')
参数说明参数 | 说明 |
---|---|
select_expr | 模型推理结果中展示的列名。 |
model_name | 模型名称。 |
select_expr_for_prediction | 模型推理时使用的列名。 |
table_reference | 表名。 |
mode | 模式。填写async时,表示离线推理;不填时表示在线推理。 |
row_count | 推理的样本数量。 |
x_cols | 模型训练输入列。多个列名之间使用英文逗号(,)分隔。 |
- 在线推理。使用已经创建好的模型
airlines_gbm
进行在线推理。
执行结果如下:/*polar4ai*/SELECT Delay FROM PREDICT(MODEL airlines_gbm, SELECT * FROM db4ai.airlines_test LIMIT 10) WITH (x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length', y_cols='Delay');
+-------+-------------------+ | Delay | predicted_results | +-------+-------------------+ | 1 | 0 | | 0 | 0 | | 0 | 0 | | 0 | 0 | | 0 | 0 | | 0 | 0 | | 1 | 0 | | 0 | 0 | | 0 | 0 | | 1 | 0 | +-------+-------------------+ 10 rows in set (0.74 sec)
- 离线推理。当推理样本数量大于1000时,PolarDB for AI会提示您采用离线任务:
创建离线任务如下:ERROR 9050 (HY000): Please limit the SQL selected data length to less than '1000' or convert to offline prediction
执行结果如下:/*polar4ai*/SELECT Delay FROM predict(MODEL airlines_gbm, SELECT * FROM db4ai.airlines_test) WITH (x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length', y_cols='Delay', mode='async');
以上查询结果返回该任务的+--------------------------------------+ | task_id | +--------------------------------------+ | bd0c1722-21e7-11ed-94a8-xxxxxxxxxxxx | +--------------------------------------+ 1 row in set (0.75 sec)
task_id
,您可以通过查询任务状态来查看任务的执行状态以及对应结果的下载地址。
执行结果如下:/*polar4ai*/SHOW TASK `bd0c1722-21e7-11ed-94a8-xxxxxxxxxxxx`
+------------+----------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------------------+----------------------------+ | taskStatus | filePath | results | startTime | endTime | +------------+----------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------------------+----------------------------+ | finish | http://db4ai-collie-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/pc-xxxxxxx/airlines_gbm/xxxxx.csv?OSSAccessKeyId=xxxxxx&Expires=xxxx&Signature=xxxxxx | | 2022-08-22 14:57:51.355240 | 2022-08-22 14:58:18.316818 | +------------+----------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------------------+----------------------------+ 1 row in set (0.24 sec)
说明filePath
的有效时间为100分钟,您可以通过filePath
中的Expires
参数查看链接是否在有效期内。如果您需要访问该链接,请在有效期内进行访问。
删除模型
当模型不再使用时,使用该语法删除已经创建的模型。
语法DROP MODEL model_name
参数说明参数 | 说明 |
---|---|
model_name | 模型名称。 |
删除airlines_gbm
模型。
/*polar4ai*/DROP MODEL airlines_gbm
执行结果显示类似如下内容,表示已成功删除siku_kmeans
模型:Query OK, 0 rows affected (0.57 sec)