すべてのプロダクト
Search
ドキュメントセンター

PolarDB:モデルの管理

最終更新日:Nov 13, 2024

このトピックでは、モデルの作成、アップロード、評価、および推論の構文とパラメーターについて説明し、これらの操作について例を挙げて説明します。

概要

内蔵モデル

PolarDB for AIは、Tongyi Qianwenという組み込みの機械学習モデルを提供します。 モデルで提供されるPolarDB for AI機能を使用できます。追加のモデル設定は必要ありません。

詳細については、次のトピックをご参照ください。

カスタムモデル

実際のビジネスシナリオでは、アルゴリズムを最適化し、モデルの構造を調整する必要があります。 組み込みモデルは、実際のビジネス要件を満たさない場合があります。 PolarDB for AIを使用すると、カスタムモデルを構築し、機密コンテナーでモデルを実行できます。 これにより、モデルのデータセキュリティがさらに確保されます。

カスタムモデルを構築して使用するには、次の手順を実行します。

外部トレーニングモデル

PolarDB for AIが提供するMLOps機能を使用すると、外部でトレーニングされたモデルをアップロード、デプロイ、および使用できます。 sklearnベースのLightGBMおよびGBDT、TensorFlowまたはPyTorchフレームワークに基づく深層学習アルゴリズムなど、さまざまな外部モデルがサポートされています。

外部モデルを使用するには、次の手順を実行します。

モデルの作成

このセクションでは、モデルを作成する方法について説明します。 モデルは非同期的に訓練されます。 モデルがトレーニング済みかどうかを確認するには、モデルのステータスを照会します。

構文

CREATE MODEL model_name WITH ( model_class = '', x_cols = '', y_cols='',model_parameter=()) AS (SELECT select_expr [, select_expr] ... FROM table_reference)

Parameters

パラメーター

説明

model_name

モデルの名前。

model_class

モデルのタイプ。 有効な値:

x_cols

モデルトレーニングの入力列。

説明

複数の列の名前はコンマ (,) で区切ります。

y_cols

モデルトレーニングの出力列。

model_parameter

モデルトレーニングのパラメータ。

  • model_classパラメーターの値がlightgbmに設定されている場合は、LightGBMアルゴリズムのParametersで指定されているとおりにmodel_parameterパラメーターを設定します。

  • model_classパラメーターの値がdeepfmに設定されている場合、DeepFMアルゴリズムのParametersで指定されているとおりにmodel_parametersパラメーターを設定します。

  • model_classパラメーターの値がkmeansに設定されている場合は、K-meansクラスタリングアルゴリズムのParametersで指定されているとおりにmodel_parameterパラメーターを設定します。

  • model_classパラメーターの値がrandomforestregに設定されている場合は、ランダムフォレスト回帰アルゴリズムのParametersで指定されているとおりにmodel_parameterパラメーターを設定します。

  • model_classパラメーターの値がgbrtに設定されている場合、GBRTアルゴリズムのParametersで指定されているとおりにmodel_parametersパラメーターを設定します。

  • model_classパラメーターの値がlinearregに設定されている場合は、LRアルゴリズムのParametersで指定されているとおりにmodel_parameterパラメーターを設定します。

  • model_classパラメーターの値がsvrに設定されている場合は、SVRアルゴリズムのParametersで指定されているとおりにmodel_parameterパラメーターを設定します。

  • model_classパラメーターの値がbstに設定されている場合、bstアルゴリズムのmodel_parameterパラメーターをParametersに指定されているように設定します。

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は、PMML、ONNX、およびチェックポイント (TensorFlowおよびPyTorchプラットフォームに適用可能) モデル形式をサポートしています。

構文

UPLOAD MODEL model_name WITH (model_location = '', req_location = '') 

Parameters

パラメーター

説明

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パラメーターの値が保存されている場合、モデルはアップロードされています。

モデルのデプロイDeploy a model

このセクションでは、アップロードされたモデルをPolarDB for AIプラットフォームにデプロイする方法について説明します。 デプロイが完了すると、モデルはオンライン状態になります。 オンライン状態のモデルは、推論のためにすぐに呼び出すことができます。

構文

DEPLOY MODEL model_name

Parameters

パラメーター

説明

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: モデルが保存されます。

  • サービング: モデルは使用中です。

  • deleted: モデルが削除されました。

構文

SHOW MODEL model_name 

Parameters

パラメーター

説明

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分です。 リンクがまだ有効かどうかを確認するには、modelPathExpiresパラメーターの値を確認します。 有効期間内にリンクにアクセスしていることを確認してください。

モデル詳細の表示

構文

DESCRIBE MODEL model_name

Parameters

パラメーター

説明

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='')

Parameters

パラメーター

説明

select_expr

モデルの評価結果に表示される列の名前。

model_name

モデルの名前。

select_expr_for_prediction

モデルの評価に使用される列の名前。

table_reference

テーブルの名前。

x_cols

モデルトレーニングの入力列。 複数の列の名前はコンマ (,) で区切ります。

y_cols

モデルトレーニングの出力列。

metrics

モデル評価のメトリック。 有効な値:

  • acc: 精度。 このメトリックは、分類タスクに使用できます。

  • r2_score: 決定係数。 このメトリックは、回帰タスクに使用できます。

  • ks: KS値。正と負のクラスの分離度を示します。 このメトリックは、分類タスクに使用できます。

  • auc: AUC値であり、ROC曲線より下の面積を示す。 このメトリックは、分類タスクに使用できます。

  • Fscore: F1スコアとしても知られるFスコアは、精度と再現性の調和平均を示す。 このメトリックは、分類タスクに使用できます。

  1. 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)
  2. 次のステートメントを実行して、タスクのステータスを表示します。

    /*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分です。 リンクがまだ有効かどうかを確認するには、filePathExpiresパラメーターの値を参照します。 有効期間内にリンクにアクセスしていることを確認してください。

推論にモデルを使用する

このセクションでは、トレーニング済みモデルをオンラインまたはオフラインの推論に使用する方法について説明します。

構文

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= '')

Parameters

パラメーター

説明

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が表示されます。これは、タスクのステータスと対応する結果のダウンロード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分です。 リンクがまだ有効かどうかを確認するには、filePathExpiresパラメーターの値を参照します。 有効期間内にリンクにアクセスしていることを確認してください。

オフライン評価と推論タスクの管理

オフラインタスクの一覧を表示

このセクションでは、現在のクラスター内のすべてのオフラインタスクを表示する方法について説明します。

説明

オフラインタスクは、長期間実行され、リアルタイムで結果を生成しないバッチ処理タスクです。 オフラインタスクには、オフライン評価タスクとオフライン推論タスクが含まれます。

構文

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` 

Parameters

パラメーター

説明

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分です。 リンクがまだ有効かどうかを確認するには、filePathExpiresパラメーターの値を参照します。 有効期間内にリンクにアクセスしていることを確認してください。

モデルの削除

このセクションでは、不要になったモデルを削除する方法について説明します。

構文

DROP MODEL model_name 

Parameters

パラメーター

説明

model_name

モデルの名前。

airlines_gbmモデルを削除します。

/*polar4ai*/DROP MODEL airlines_gbm 

次のような結果が返された場合、airlines_gbmモデルは削除されます。

Query OK, 0 rows affected (0.57 sec)

カスタムモデル管理のベストプラクティス

このセクションでは、カスタムモデル管理について説明します。 以下の例では、オフラインモデルトレーニングとオンライン推論が実行されます。

  1. 事前にオフライントレーニング

    次のスクリプトは、オフライントレーニングにLightGBMアルゴリズムを使用します。

    # coding: utf-8
    from pathlib import Path
    
    import pandas as pd
    from sklearn.metrics import mean_squared_error
    
    import lightgbm as lgb
    import joblib
    
    def train_model():
        print('Loading data...')
        # load or create your dataset
        df_train = pd.read_csv('regression.train', header=None, sep='\t')
        df_test = pd.read_csv('regression.test', header=None, sep='\t')
    
        y_train = df_train[0]
        y_test = df_test[0]
        X_train = df_train.drop(0, axis=1)
        X_test = df_test.drop(0, axis=1)
    
        # create dataset for lightgbm
        lgb_train = lgb.Dataset(X_train, y_train)
        lgb_eval = lgb.Dataset(X_test, y_test, reference=lgb_train)
    
    
        # specify your configurations as a dict
        params = {
            'boosting_type': 'gbdt',
            'objective': 'regression',
            'metric': {'l2', 'l1'},
            'num_leaves': 31,
            'learning_rate': 0.05,
            'feature_fraction': 0.9,
            'bagging_fraction': 0.8,
            'bagging_freq': 5,
            'verbose': 0
        }
    
        print('Starting training...')
        # train
        gbm = lgb.train(params,
                        lgb_train,
                        num_boost_round=20,
                        valid_sets=lgb_eval,
                        callbacks=[lgb.early_stopping(stopping_rounds=5)])
    
    
        print('Saving model...')
        # save model to file
        # gbm.save_model('model.txt')
        joblib.dump(gbm, 'lgb.pkl')
    
        print('Starting predicting...')
        # predict
        y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration)
        # eval
        rmse_test = mean_squared_error(y_test, y_pred) ** 0.5
        print(f'The RMSE of prediction is: {rmse_test}')
    

    上記のスクリプトでは、モデルファイルはpkl形式でエクスポートされます。 predictメソッドは、推論結果を照会するために呼び出されます。 モデルが依存するpythonファイルも必要です。

    次の例は、requirements.txtファイルの内容を示しています。

    lightgbm==3.3.3
  2. モデルのアップロード

    1. 次のステートメントを実行して、モデルを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')

      model_locationパラメーターは、モデルファイルのパスを指定します。 req_locationパラメーターは、モデルが依存するファイルのパスを指定します。 事前に2つのファイルを準備し、ファイルをObject Storage Service (OSS) バケットにアップロードしてから、上記のステートメントを実行してファイルをPolarDB for AIにアップロードできます。

      サンプル結果:

      Query OK, 0 rows affected (0.29 sec)
    2. 次のステートメントを実行して、モデルのステータスを照会します。

      /*polar4ai*/ SHOW 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パラメーターの値が保存されている場合、モデルはアップロードされます。

  3. モデルのデプロイ

    1. 次のステートメントを実行して、PolarDB for AIにモデルをデプロイします。

      /*polar4ai*/ DEPLOY MODEL my_model;

      サンプル結果:

      Query OK, 0 rows affected (0.29 sec)
    2. 次のステートメントを実行して、モデルのステータスを照会します。

      /*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の場合、モデルはデプロイされます。

  4. オンライン推論の実装

    次のステートメントを実行して、モデルを使用してオンライン推論タスクを実行します。

    /*polar4ai*/ SELECT Y FROM PREDICT(MODEL my_model, SELECT * FROM db4ai.regression_test LIMIT 10) WITH (x_cols = 'x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,x21,x22,x23,x24,x25,x26,x27,x28', y_cols='');

    サンプル結果:

    +------+---------------------+
    | Y    | predicted_results   |
    +------+---------------------+
    |  1.0 | 0.6262147669037363  |
    |  0.0 | 0.5082804008241021  |
    |  0.0 | 0.37533158372209957 |
    |  1.0 | 0.461974928099089   |
    |  0.0 | 0.3777339456553666  |
    |  0.0 | 0.35045096227525735 |
    |  0.0 | 0.4178165504012342  |
    |  1.0 | 0.40869795422774036 |
    |  1.0 | 0.6826481286570045  |
    |  0.0 | 0.47021259543154736 |
    +------+---------------------+
    10 rows in set (0.95 sec)