PolarDB for AI不僅內建了多種大型模型,還支援通過SQL語句構建自訂模型和載入外部模型。本文將詳細介紹與模型相關的操作,包括模型的建立、評估以及推理等功能的使用方法。
模型簡介
模型分類 | 說明 |
內建模型 | 您無需手動將PolarDB中的資料同步至其他AI平台,便可直接通過SQL語句調用內建的AI大模型來完成複雜的分析任務。具體請參見: |
自訂模型 | 在實際業務情境中,內建的AI大模型可能無法完全滿足您的業務需求,而經過演算法調優後的模型則可能會根據業務效果進行相應的調整。此外,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平台上,部署成功後,模型為線上狀態,後續調用模型進行模型推理時,速度會更快。
文法說明
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,表示模型部署成功。
查看模型
您僅能查看您所建立的自訂模型,不支援查看PolarDB for AI中內建的模型。
查看模型列表
查看當前叢集下的所有自訂模型。
文法說明
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 | 表名。 |
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參數查看連結是否在有效期間內。如果您需要訪問該連結,請在有效期間內進行訪問。
模型推理
使用已經建立好的模型進行線上推理或離線推理。
文法說明
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,您可以通過該任務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參數查看連結是否在有效期間內。如果您需要訪問該連結,請在有效期間內進行訪問。
離線評估與離線推理任務
離線任務是指已耗用時間長,且無法即時擷取結果的批處理任務,任務類型包括離線評估和離線推理兩種類型。
查看離線工作清單
查看當前叢集下的所有離線任務。
文法說明
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參數查看連結是否在有效期間內。如果您需要訪問該連結,請在有效期間內進行訪問。
刪除離線任務
文法說明
DROP TASK `task_id` 參數說明
參數 | 說明 |
task_id | 任務ID。 |
樣本
刪除任務ID為df05244e-21f7-11ed-be66-xxxxxxxxxxxx的任務。
/*polar4ai*/DROP TASK `df05244e-21f7-11ed-be66-xxxxxxxxxxxx`刪除模型
當模型不再使用時,使用該文法刪除已經建立的模型。
文法說明
DROP MODEL model_name 參數說明
參數 | 說明 |
model_name | 模型名稱。 |
樣本
刪除airlines_gbm模型。
/*polar4ai*/DROP MODEL airlines_gbm 執行結果顯示類似如下內容,表示已成功刪除airlines_gbm模型:
Query OK, 0 rows affected (0.57 sec)阿里雲僅負責作業系統以下的底層部分及阿里雲提供的軟體的營運維護,即服務的相關技術架構及阿里雲提供的作業系統等。作業系統之上部分(如您在系統上安裝的應用程式)由您負責,執行個體運行環境歸屬於您。此外,您自行升級作業系統可能會造成宕機等不良影響,請把握風險並謹慎操作。