MorphingDB es una extensión PostgreSQL para admitir la inferencia del modelo de aprendizaje profundo dentro de la base de datos y el almacenamiento vectorial.
MorphingDB permite a los usuarios importar el modelo LibTorch y hacer inferencias utilizando datos desde la base de datos.
MorphingDB permite a los usuarios almacenar datos vectoriales con información dimensional, lo que permite que LibTorch funcione directamente con los datos vectoriales en la base de datos, los usuarios pueden almacenar datos preprocesados en vectores en la base de datos para acelerar la inferencia.
MorphingDB admite la inferencia centrada en el modelo y centrada en la tarea.
Dowload Zip a la ruta del proyecto MorphingDB
modelo descipente
unzip models.zip -d ./model/Use la imagen Docker desde Docker Hub
sudo docker pull morphingdb/morphingdb:1.0o construir una imagen de Docker
sudo docker build -t morphingdb .Crea 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
morphingdbEntra Docker
sudo docker exec -it [contanier id] /bin/bashConectarse al servidor
psql -p 5432 -d postgres -U postgres -h localhostHabilitar la extensión
CREATE EXTENSION pgdl; SELECT create_model(model_name, model_path, base_model, model description);Debe escribir los manejadores de entrada y salida correspondientes para el modelo creado en SRC/Exterior_Process, y reconstruir la extensión, haga instalar.
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 las funciones de la ventana para acelerar las predicciones con tamaños de ventana variables.
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 > ;Después de importar el modelo, el usuario puede ver la información del modelo a través de la tabla Model_info.
SELECT * from model_info;
MorphingDB admite el almacenamiento vectorial, incluido el almacenamiento de la información de dimensión vectorial. En MorphingDB, el tipo de vector es 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] ' ;Un estudio comparativo de enfoques de inferencia en la databasa
Aprender una red de políticas basada en datos para la ingeniería de características automatizadas de pre-entrenamiento
Recomendación del modelo previamente capacitado para el ajuste fino
SmartLite: un sistema de servicio basado en DBMS para la inferencia DNN en entornos con recursos limitados