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的服務系統