このトピックでは、Row-oriented AIを使用してモデルをインポートする方法について説明します。
ステップ1: PolarDB for AIおよびコールドデータアーカイブ機能の有効化
モデルをインポートする前に、クラスターのPolarDB for AIおよびコールドデータアーカイブ機能を有効にする必要があります。 詳細については、「PolarDB For AI機能の有効化」および「コールドデータアーカイブの有効化」をご参照ください。
インポートするモデルがLLM (large language model) の場合は、手順1で説明した操作を実行した後、手順2をスキップして、手順3、手順4、および手順5で説明した操作を実行できます。
ステップ2: モデルのアップロード
データベースに接続し、次のステートメントを実行して、作成したモデルをクラスター内のAIノードにアップロードします。
/*polar4ai*/ UPLOAD MODEL model_name WITH (model_location = 'https://mybucket.oss-cn-hangzhou.aliyuncs.com/logisitic_regression.tgz');モデルがアップロードされたら、SHOW modelスクリプトを使用してモデルのステータスを表示できます。 モデルがアップロードされた後、モデルはsaved_oss状態になります。
/*polar4ai*/ SHOW MODEL model_name;次の表に、上記のステートメントで設定できるパラメーターを示します。
パラメーター | 説明 |
model_name | アップロードする事前作成モデルの名前。 モデル名にはハイフン (-) を含めることはできません。 |
model_location | モデルのダウンロードに使用されるパブリックURL。 |
ステップ3: モデルのデプロイ
次のステートメントを実行して、モデルをデプロイします。
/*polar4ai*/ DEPLOY MODEL model_name WITH (mode = 'in_db');ステートメントの実行後、SHOW MODELスクリプトを使用してモデルのステータスを表示できます。 モデルステータスが提供中の場合、モデルはデプロイされています。
/*polar4ai*/ SHOW MODEL model_name;model_nameパラメーターの値は、手順2で説明したモデル名と一致している必要があります。モデルのデプロイに使用されるステートメントの
modeパラメーターは、in_dbに設定する必要があります。モデルのデプロイには時間がかかる場合があります。 後続の操作を実行する前に、モデルのステータスがservingに変わるまで待つ必要があります。
ステップ4: 関数の作成
関数を作成するには、特権アカウントを使用するか、mysql.funcシステムテーブルに対する標準アカウント権限を付与する必要があります。 MySQLクライアントで次のステートメントを実行するには、特権アカウントを使用してシステムテーブルの標準アカウント権限を付与します。
-- root login:
mysql> grant insert on mysql.* to 'normal'@'localhost';
Query OK, 0 rows affected (0.01 sec)
mysql> grant delete on mysql.* to 'normal'@'localhost';
Query OK, 0 rows affected (0.02 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.04 sec)
mysql> select * from mysql.func;
Empty set (0.00 sec)
-- normal login:
mysql> select myfunc_int(1);
ERROR 1046 (3D000): No database selected
mysql> select * from mysql.func;
ERROR 1142 (42000): SELECT command denied to user 'normal'@'localhost' for table 'func'
mysql> create function myfunc_int returns int soname 'udf_example.so';
Query OK, 0 rows affected (0.01 sec)
mysql> select myfunc_int(1);
+---------------+
| myfunc_int(1) |
+---------------+
| 1 |
+---------------+
1 row in set (0.00 sec)
mysql> drop function myfunc_int;
Query OK, 0 rows affected (0.00 sec)手順3で生成されたユーザー定義関数 (.soファイル) を使用して関数を作成できます。
CREATE FUNCTION function_name RETURNS return_value SONAME "soname";次の表に、上記のステートメントで設定できるパラメーターを示します。
パラメーター | 説明 |
function_name | 関数名。 説明 関数名は、手順2で指定したモデル名と一致している必要があります。 |
return_value | 戻り値の型。 REAL、STRING、INTEGERタイプがサポートされています。 説明 返される値の型は、モデルの実際の入力型と一致している必要があります。 そうでない場合、出力は期待される結果と一致しない場合があります。 |
soname | の名前。The name of the. そうファイル。 ファイルの名前は次の形式です。 # ailib#_ModelName.so |
関数の作成後、次のステートメントを実行してシステムテーブルを照会し、関数が作成されているかどうかを確認できます。
SELECT * FROM mysql.func;ステップ5: 関数を呼び出してモデル推論を実行
次のステートメントを実行して、モデル推論の関数を呼び出すことができます。
SELECT function_name(feature1, feature2) from predict_table;
SELECT function_name("content");次の表に、上記のステートメントで設定できるパラメーターを示します。
パラメーター | 説明 |
function_name | 関数名。 |
feature1 | モデル推論に使用される列の名前。 |
feature2 | モデル推論に使用される列の名前。 |
predict_table | モデル推論に使用されるテーブルの名前。 |
content | モデル推論の入力。 |
(オプション) ステップ6: 関数とモデルの削除
関数とモデルが不要になった場合は、関数を削除してから、AIノードで作成されたモデルを削除する必要があります。 関数とモデルを削除するには、次のスクリプトを使用します。
関数を削除する
DROP FUNCTION function_name;スクリプトを実行するときに、
function_nameパラメーターを削除する関数の名前に置き換えます。モデルの削除
/*polar4ai*/ DROP MODEL model_name;スクリプトを実行するときに、
model_nameパラメーターを削除するモデルの名前に置き換えます。