MorphingDB는 데이터베이스 및 벡터 저장 내에서 딥 러닝 모델 추론을 지원하기위한 PostgreSQL 확장자입니다.
MorphingDB를 사용하면 사용자가 Libtorch 모델을 가져 와서 데이터베이스 내에서 데이터를 사용하여 추론 할 수 있습니다.
MorphingDB를 사용하면 사용자가 벡터 데이터를 치수 정보로 저장할 수 있으므로 Libtorch는 데이터베이스의 벡터 데이터와 직접 작업 할 수 있으므로 사용자는 데이터베이스의 벡터에 전처리 된 데이터를 저장하여 추론 속도를 높일 수 있습니다.
MorphingDB는 모델 중심 및 작업 중심 추론을 지원합니다.
Dowload Zip to MorphingDB 프로젝트 경로
압축 모델
unzip models.zip -d ./model/Docker Hub의 Docker Image를 사용하십시오
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 기반 서빙 시스템