MorphingDB - это расширение PostgreSQL для поддержки вывода модели глубокого обучения в базе данных и векторном хранилище.
MorphingDB позволяет пользователям импортировать модель Libtrch и делать выводы, используя данные из базы данных.
MorphingDB позволяет пользователям хранить векторные данные с размерной информацией, позволяя Libtorch работать непосредственно с векторными данными в базе данных, пользователи могут хранить данные, предпринимаемые в векторы в базе данных для ускорения вывода.
MorphingDB поддерживает модельный центричный и ориентированный на задачи вывод.
Dowload Zip to MorphingDb Project Path Project
Модель распаковки
unzip models.zip -d ./model/Используйте изображение Docker от Docker Hub
sudo docker pull morphingdb/morphingdb:1.0или построить изображение Docker
sudo docker build -t morphingdb .Создать 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
morphingdbВведите Docker
sudo docker exec -it [contanier id] /bin/bashПодключиться к серверу
psql -p 5432 -d postgres -U postgres -h localhostВключить расширение
CREATE EXTENSION pgdl; SELECT create_model(model_name, model_path, base_model, model description);Вам необходимо написать соответствующие обработчики ввода и вывода для созданной модели в src/external_process, и восстановить расширение, установить.
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];
Используйте функции Window, чтобы ускорить прогнозы с переменными размерами окна.
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 > ;После того, как модель импортируется, пользователь может просматривать информацию модели через таблицу Model_info.
SELECT * from model_info;
MorphingDB поддерживает векторное хранилище, включая хранение информации о векторных измерениях. В MorphingDB векторный тип является 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] ' ;Сравнительное исследование подходов к выводу в датабазе
Изучение сети политики, управляемой данными для предварительного обучения, автоматизированная инженерия функций
Предварительно обученная рекомендация модели для точной настройки вниз по течению
SmartLite: система обслуживания на основе СУБД для вывода DNN в условиях ограниченных ресурсов