PolarDB for AI には、組み込みの大規模モデルが用意されているほか、SQL 文を使用してカスタムモデルの構築や外部モデルのロードもできます。このトピックでは、モデルの作成、評価、推論などのモデル操作について説明します。
モデルの概要
カテゴリ | 説明 |
組み込みモデル | PolarDB で SQL 文を実行することで、組み込みの大規模 AI モデルを呼び出して、複雑な分析タスクを実行できます。他の 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 分間有効です。Expires パラメーターを modelPath で確認して、リンクがまだ有効かどうかを調べることができます。リンクにアクセスする必要がある場合は、期限切れになる前にアクセスしてください。
モデルの詳細
構文
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= '', y_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)オフライン推論
1,000 件を超えるサンプルで推論を実行すると、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 を使用して、タスクのステータスと結果のダウンロード URL を照会できます。/*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_gbmairlines_gbm モデルの削除が成功すると、以下の出力が返されます。
Query OK, 0 rows affected (0.57 sec)Alibaba Cloud は、基盤となるアーキテクチャと提供されるオペレーティングシステムの保守にのみ責任を負います。お客様は、インストールするアプリケーションなど、オペレーティングシステムより上位のコンポーネントに対して責任を負います。お客様がインスタンスのランタイム環境を制御します。さらに、お客様自身でオペレーティングシステムをアップグレードすると、ダウンタイムなどの悪影響が生じる可能性があります。お客様は、リスクを理解し、必要な予防措置を講じる責任があります。