MorphingDB
1.0.0
MorphingDB是用于支持数据库和矢量存储中深度学习模型推断的后Ql扩展。
MorphingDB允许用户导入Libtorch模型并使用数据库中的数据进行推断。
MorphingDB允许用户使用维数信息存储向量数据,从而使Libtorch可以直接与数据库中的矢量数据一起工作,用户可以将预处理的数据存储到数据库中的向量中以加快推断。
MorphingDB支持以模型为中心和以任务为中心的推断。
下载拉链到mophingdb项目路径
解压缩模型
unzip models.zip -d ./model/使用Docker Hub的Docker图像
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];
使用窗口函数来加快窗口尺寸可变的预测。
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推断的基于DBMS的服务系统