MorphingDBは、データベース内およびベクトルストレージ内の深い学習モデルの推論をサポートするためのPostgreSQL拡張機能です。
MorphingDBを使用すると、ユーザーはLibtorchモデルをインポートし、データベース内からデータを使用して推論を行うことができます。
MorphingDBを使用すると、ユーザーは寸法情報でベクトルデータを保存し、Libtorchがデータベース内のベクトルデータを直接動作させることができ、ユーザーはデータベース内のベクトルに前処理されたデータを保存して推論を高速化できます。
MorphingDBは、モデル中心およびタスク中心の推論をサポートします。
dowload zipからmorphingdbプロジェクトパス
アンジップモデル
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
morphingdbDockerを入力します
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ベースのサービングシステム