PolarDB for AI inclui grandes modelos integrados e permite usar instruções SQL para criar modelos personalizados e carregar modelos externos. Este tópico descreve as operações com modelos, incluindo criação, avaliação e inferência.
Visão geral dos modelos
Categoria | Descrição |
Modelo integrado | Execute instruções SQL no PolarDB para chamar grandes modelos de IA integrados em tarefas complexas de análise, sem sincronizar dados manualmente com outras plataformas de IA. Para mais informações, consulte: |
Modelo personalizado | Se um grande modelo de IA integrado não atender aos seus requisitos de negócios, crie um modelo personalizado ajustado. Além disso, o PolarDB for AI oferece suporte à execução de modelos em contêineres confidenciais para aumentar a segurança dos dados. O fluxo de trabalho para criar um modelo personalizado é o seguinte: |
Criar um modelo
Cria um modelo de machine learning. Esse processo é assíncrono; portanto, consulte o status do modelo para confirmar sua conclusão.
Sintaxe
CREATE MODEL model_name WITH ( model_class = '', x_cols = '', y_cols='',model_parameter=()) AS (SELECT select_expr [, select_expr] ... FROM table_reference)
Parâmetros
Parâmetro | Descrição |
model_name | Nome do modelo. |
model_class | Tipo do modelo. Valores válidos:
|
x_cols | Colunas de entrada. Nota Separe vários nomes de coluna por vírgulas (,). |
y_cols | Coluna de saída. |
model_parameter | Parâmetros do modelo.
|
select_expr | Nomes das colunas. |
table_reference | Nome da tabela. |
Exemplo
Crie o modelo 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)
Resultado de exemplo:
Query OK, 0 rows affected (0.79 sec)
Implantar um modelo
Implante um modelo carregado na plataforma PolarDB for AI. Uma implantação bem-sucedida coloca o modelo online e permite inferências mais rápidas.
Sintaxe
DEPLOY MODEL model_name
Parâmetros
|
Parâmetro |
Descrição |
|
model_name |
Nome do modelo a ser implantado. |
Exemplo
Implante o modelo chamado my_model na plataforma PolarDB for AI.
/*polar4ai*/ DEPLOY MODEL my_model;
Saída de exemplo:
Query OK, 0 rows affected (0.29 sec)
Execute o comando a seguir para verificar o status do modelo:
/*polar4ai*/ SHOW MODEL my_model;
Saída de exemplo:
+-------------+-----------------------------------------------------------------------------------------------------------------------------+
| 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)
Um modelStatus com valor serving indica que a implantação foi bem-sucedida.
Visualize modelos
É possível visualizar apenas os modelos personalizados e externos criados ou carregados por você. Não é possível visualizar os modelos integrados no PolarDB for AI.
Listar modelos
Lista todos os modelos personalizados e externos no cluster atual.
Sintaxe
SHOW MODELS
Exemplo
/*polar4ai*/SHOW MODELS
Resultado de exemplo:
+-----------------------+-----------------+--------------+
| 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)
Status do modelo
Exibe o status atual de um modelo. Após criar um modelo, use este comando para verificar se o treinamento foi concluído. Um modelo pode ter um dos seguintes status:
training: O modelo está em treinamento.
loading_data: Os dados estão sendo carregados para o modelo.
trained: O treinamento do modelo foi concluído.
saved: O modelo foi salvo.
serving: O modelo está implantado e pronto para uso.
deleted: O modelo foi excluído.
Sintaxe
SHOW MODEL model_name
Parâmetros
|
Parâmetro |
Descrição |
|
model_name |
Nome do modelo. |
Exemplo
Visualize o status atual do modelo airlines_gbm.
/*polar4ai*/SHOW MODEL airlines_gbm;
Resultado de exemplo:
+-------------+-----------------------------------------------------------------------------------------------------------------------------+
| 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)
O modelPath é válido por 100 minutos. Verifique o parâmetro Expires no modelPath para confirmar se o link ainda é válido. Caso precise acessar o link, faça isso antes que ele expire.
Detalhes do modelo
Sintaxe
DESCRIBE MODEL model_name
Parâmetros
|
Parâmetro |
Descrição |
|
model_name |
Nome do modelo. |
Exemplo
Visualize os detalhes do modelo airlines_gbm.
/*polar4ai*/DESCRIBE MODEL airlines_gbm;
Resultado de exemplo:
+-------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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)
Avaliação de modelo
Avalia o desempenho de um modelo treinado.
Sintaxe
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='')
Parâmetros
Parâmetro | Descrição |
select_expr | Colunas a serem exibidas nos resultados da avaliação do modelo. |
model_name | Nome do modelo. |
select_expr_for_prediction | Colunas a serem usadas na avaliação do modelo. |
table_reference | Nome da tabela. |
x_cols | Colunas de entrada usadas para criar o modelo. Separe vários nomes de coluna por vírgula (,). |
y_cols | Coluna de saída usada para criar o modelo. |
metrics | Métricas de avaliação. Valores válidos:
|
Exemplos
-
Use o modelo
airlines_gbmcriado para avaliar o modelo./*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');Resultado de exemplo:
+--------------------------------------+ | task_id | +--------------------------------------+ | df05244e-21f7-11ed-be66-xxxxxxxxxxxx | +--------------------------------------+ 1 row in set (0.95 sec) -
Execute o comando a seguir para verificar o status da tarefa.
/*polar4ai*/SHOW TASK `df05244e-21f7-11ed-be66-xxxxxxxxxxxx`;Resultado de exemplo:
+------------+----------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------------------+----------------------------+ | 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)NotaO
filePathé válido por 100 minutos. Verifique o parâmetroExpiresnofilePathpara confirmar se o link ainda é válido. Caso precise acessar o link, faça isso dentro do período de validade.
Inferência de modelo
Use um modelo treinado para realizar inferência online ou offline.
Sintaxe
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= '')
Parâmetros
|
Parâmetro |
Descrição |
|
select_expr |
Colunas a serem exibidas nos resultados da inferência do modelo. |
|
model_name |
Nome do modelo. |
|
select_expr_for_prediction |
Colunas de dados de entrada a serem usadas na inferência. |
|
table_reference |
Tabela de entrada. |
|
mode |
Modo de inferência. Defina este parâmetro como async para realizar inferência offline. Se omitido, o sistema realiza inferência online. |
|
row_count |
Número de amostras a serem usadas na inferência. |
|
x_cols |
Colunas de entrada para o modelo. Separe vários nomes de coluna por vírgula (,). |
Exemplos
-
Inferência online
Use o modelo
airlines_gbmpara realizar inferência online./*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');Resultado de exemplo:
+-------+-------------------+ | 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) -
Inferência offline
Ao executar inferência em mais de 1.000 amostras, o PolarDB for AI retorna o seguinte erro:
ERROR 9050 (HY000): Please limit the SQL selected data length to less than '1000' or convert to offline predictionPara criar uma tarefa offline, execute a seguinte instrução:
/*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');Resultado de exemplo:
+--------------------------------------+ | task_id | +--------------------------------------+ | bd0c1722-21e7-11ed-94a8-xxxxxxxxxxxx | +--------------------------------------+ 1 row in set (0.75 sec)A consulta retorna o
task_idda tarefa. Use esse ID para consultar o status da tarefa e a URL de download do resultado./*polar4ai*/SHOW TASK `bd0c1722-21e7-11ed-94a8-xxxxxxxxxxxx`Resultado de exemplo:
+------------+----------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------------------+----------------------------+ | 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)NotaO
filePathé válido por 100 minutos. Verifique o parâmetroExpiresnofilePathpara confirmar se o link ainda é válido. Caso precise acessar o link, faça isso dentro do período de validade.
Avaliação e inferência offline
Uma tarefa offline é um processo em lote de longa duração que não retorna resultados em tempo real. As tarefas offline incluem avaliação e inferência offline.
Visualize tarefas
Visualize todas as tarefas offline no cluster atual.
Sintaxe
SHOW TASKS
Exemplo
Execute o comando a seguir para visualizar todas as tarefas offline no cluster atual.
/*polar4ai*/SHOW TASKS;
Resultado de exemplo:
+--------------------------------------+------------+-------------+----------------------------+----------------------------+
| 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)
Visualize status da tarefa
Uma tarefa offline pode ter um dos seguintes status:
init: A tarefa está sendo inicializada.running: A tarefa está em execução.finish: A tarefa foi concluída.fail: A tarefa falhou.
Sintaxe
SHOW TASK `task_id`
Parâmetros
|
Parâmetro |
Descrição |
|
task_id |
ID da tarefa. |
Exemplo
Execute o comando a seguir para visualizar o status da tarefa com o ID df05244e-21f7-11ed-be66-xxxxxxxxxxxx.
/*polar4ai*/SHOW TASK `df05244e-21f7-11ed-be66-xxxxxxxxxxxx`
Resultado de exemplo:
+------------+----------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------------------+----------------------------+
| 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)
O filePath é válido por 100 minutos. Verifique o parâmetro Expires no filePath para confirmar se o link ainda é válido. Caso precise acessar o link, faça isso dentro do período de validade.
Excluir tarefa
Sintaxe
DROP TASK `task_id`
Parâmetros
|
Parâmetro |
Descrição |
|
task_id |
ID da tarefa. |
Exemplo
Exclua a tarefa com o ID df05244e-21f7-11ed-be66-xxxxxxxxxxxx.
/*polar4ai*/DROP TASK `df05244e-21f7-11ed-be66-xxxxxxxxxxxx`
Excluir um modelo
Use esta instrução para excluir um modelo desnecessário.
Sintaxe
DROP MODEL model_name
Parâmetros
|
Parâmetro |
Descrição |
|
model_name |
Nome do modelo. |
Exemplo
Exclua o modelo airlines_gbm.
/*polar4ai*/DROP MODEL airlines_gbm
A exclusão bem-sucedida do modelo airlines_gbm retorna a seguinte saída:
Query OK, 0 rows affected (0.57 sec)
A Alibaba Cloud é responsável apenas pela manutenção da arquitetura subjacente e do sistema operacional fornecido. Você é responsável pelos componentes acima do sistema operacional, como os aplicativos instalados, e mantém o controle do ambiente de execução da sua instância. Além disso, atualizar o sistema operacional por conta própria pode causar efeitos adversos, incluindo tempo de inatividade. Compreenda os riscos e tome as precauções necessárias.