O MorphingDB é uma extensão PostGresql para apoiar a inferência do modelo de aprendizado profundo no banco de dados e armazenamento de vetores.
O MorphingDB permite que os usuários importem o modelo Libtorch e faça inferências usando dados de dentro do banco de dados.
O MorphingDB permite que os usuários armazenem dados vetoriais com informações dimensionais, permitindo que a Libtorch trabalhe diretamente com dados vetoriais no banco de dados, os usuários podem armazenar dados pré -processados em vetores no banco de dados para acelerar a inferência.
O MorphingDB suporta a inferência centrada no modelo e a tarefa.
Dowload Zip para MorphingDB Path Path
modelo descompacente
unzip models.zip -d ./model/Use o Docker Image do Docker Hub
sudo docker pull morphingdb/morphingdb:1.0ou construir a imagem do Docker
sudo docker build -t morphingdb .Crie o Docker Contanier
# abs_morphingdb_test_dir is the absolute path of the morphingdb project directory from https://github.com/MorphingDB/Morphingdb_test/
sudo docker run -d
--name MorphingDB_test
-e POSTGRES_PASSWORD=123456
-v [abs_morphingdb_test_dir]:[abs_morphingdb_test_dir]
-v [data_dir]:/var/lib/postgresql/data
-p [port]:5432
morphingdbDigite o Docker
sudo docker exec -it [contanier id] /bin/bashConectar ao servidor
psql -p 5432 -d postgres -U postgres -h localhostAtive a extensão
CREATE EXTENSION pgdl; SELECT create_model(model_name, model_path, base_model, model description);Você precisa escrever os manipuladores de entrada e saída correspondentes para o modelo criado no SRC/External_process e reconstruir a extensão, faça a instalação.
SELECT register_process(); SELECT predict_float([model_name], [ ' cpu ' / ' gpu ' ], [variable_input_column]) from [table];
SELECT predict_text([model_name], [ ' cpu ' / ' gpu ' ], [variable_input_column]) from [table];
Use funções da janela para acelerar as previsões com tamanhos de janela variáveis.
SELECT comment,predict_batch_text([model_name], [ ' cpu ' / ' gpu ' ], [variable_input_column]) over (rows between current row and [window_size] following)
AS result
FROM [table];
SELECT comment,predict_batch_float8([model_name], [ ' cpu ' / ' gpu ' ], [variable_input_column]) over (rows between current row and [window_size] following)
AS result
FROM [table]; SELECT image_classification( < column_name > ) as task_result
FROM < table_name >
WHERE < conditions > ;Depois que o modelo for importado, o usuário pode visualizar as informações do modelo através da tabela Model_info.
SELECT * from model_info;
O MorphingDB suporta armazenamento vetorial, incluindo armazenamento de informações de dimensão vetorial. Em MorphingDB, o tipo de vetor é MVEC.
create table vec_test (id integer , vec mvec); insert into vec_test values ( 1 , ' [1.0,2.2,3.123,4.2]{4} ' );
insert into vec_test values ( 1 , ' [1.0,2.2,3.123,4.2] ' );
insert into vec_test values ( 1 , ' [1.0,2.2,3.123,4.2]{2,2} ' );
insert into vec_test values ( 1 , ARRAY[ 1 . 0 , 2 . 0 , 3 . 0 , 1 . 2345 ]::float4[]::mvec); select get_mvec_shape(vec) from vec_test;
select get_mvec_data(vec) from vec_test; update vec_test set vec = vec + vec;
update vec_test set vec = vec - text_to_mvec( ' [1,2,3,4] ' );
select * from vec_test where vec == ' [1,2.2,3.123,4.2] ' ;Um estudo comparativo de abordagens de inferência no Database
Aprendendo uma rede de políticas orientada a dados para a engenharia automatizada de recursos pré-treinamento
Recomendação de modelo pré-treinada para ajuste fino a jusante
Smartlite: um sistema de serviço baseado em DBMS para inferência de DNN em ambientes com restrição de recursos