MorphingDB adalah ekstensi PostgreSQL untuk mendukung inferensi model pembelajaran mendalam dalam database dan penyimpanan vektor.
MorphingDB memungkinkan pengguna untuk mengimpor model liborTorch dan membuat kesimpulan menggunakan data dari dalam database.
MorphingDB memungkinkan pengguna untuk menyimpan data vektor dengan informasi dimensi, yang memungkinkan libtorch untuk bekerja secara langsung dengan data vektor dalam database, pengguna dapat menyimpan data yang diisi sebelumnya ke dalam vektor dalam database untuk mempercepat inferensi.
MorphingDB mendukung model inferensi sentris dan sentris tugas.
Dowload Zip ke MorphingDB Project Path
Model unzip
unzip models.zip -d ./model/Gunakan gambar Docker dari Docker Hub
sudo docker pull morphingdb/morphingdb:1.0atau membangun gambar Docker
sudo docker build -t morphingdb .Buat 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
morphingdbMasukkan Docker
sudo docker exec -it [contanier id] /bin/bashTerhubung ke server
psql -p 5432 -d postgres -U postgres -h localhostAktifkan ekstensi
CREATE EXTENSION pgdl; SELECT create_model(model_name, model_path, base_model, model description);Anda perlu menulis input dan penangan output yang sesuai untuk model yang dibuat di src/external_process, dan membangun kembali ekstensi, buat instal.
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];
Gunakan fungsi jendela untuk mempercepat prediksi dengan ukuran jendela variabel.
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 > ;Setelah model diimpor, pengguna dapat melihat informasi model melalui tabel model_info.
SELECT * from model_info;
MorphingDB mendukung penyimpanan vektor, termasuk penyimpanan informasi dimensi vektor. Di MorphingDB, tipe vektor adalah 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] ' ;Studi perbandingan pendekatan inferensi in-database
Mempelajari jaringan kebijakan berbasis data untuk rekayasa fitur otomatis pra-pelatihan
Rekomendasi model pra-terlatih untuk fine-tuning hilir
SmartLite: Sistem penyajian berbasis DBMS untuk inferensi DNN di lingkungan yang dibatasi sumber daya