Milvus pada Layanan Kontainer Snowpark
Panduan ini menunjukkan cara memulai demo Milvus pada layanan kontainer Snowpark.
Tentang Layanan Kontainer Snowpark
Layanan Kontainer Snowpark adalah penawaran kontainer terkelola penuh yang dirancang untuk memfasilitasi penerapan, pengelolaan, dan penskalaan aplikasi terkontainerisasi dalam ekosistem Snowflake. Layanan ini memungkinkan pengguna untuk menjalankan beban kerja dalam kontainer secara langsung di dalam Snowflake, memastikan bahwa data tidak perlu dipindahkan dari lingkungan Snowflake untuk diproses. Untuk informasi lebih lanjut, silakan lihat pengantar resmi: Layanan Kontainer Snowpark.
Mengkonfigurasi demo Milvus
Berikut ini akan membantu pengguna memahami kemampuan Milvus dan cara menggunakan Milvus di SPCS melalui konfigurasi dan kode.
1. Dapatkan informasi akun
Unduh klien SPCS: SnowSQL, lalu masuk ke akun Anda.
snowsql -a ${instance_name} -u ${user_name}
Aturan dari ${instance_name}
adalah ${org_name}-${acct_name}
. Informasi yang relevan dapat diperoleh dengan masuk ke app.snowflake.com dan memeriksa informasi akun pribadi.
Informasi akun Snowflake
2. Mengonfigurasi Peran dan hak istimewa
Konfigurasikan integrasi OAUTH.
USE ROLE ACCOUNTADMIN;
CREATE SECURITY INTEGRATION SNOWSERVICES_INGRESS_OAUTH
TYPE=oauth
OAUTH_CLIENT=snowservices_ingress
ENABLED=true;
USE ROLE ACCOUNTADMIN;
GRANT BIND SERVICE ENDPOINT ON ACCOUNT TO ROLE SYSADMIN;
Buat peran untuk layanan, perhatikan bahwa bagian ${PASSWORD}
di sini perlu diganti oleh pengguna saat demo
USE ROLE SECURITYADMIN;
CREATE ROLE MILVUS_ROLE;
USE ROLE USERADMIN;
CREATE USER milvus_user
PASSWORD='milvususerok'
DEFAULT_ROLE = MILVUS_ROLE
DEFAULT_SECONDARY_ROLES = ('ALL')
MUST_CHANGE_PASSWORD = FALSE;
USE ROLE SECURITYADMIN;
GRANT ROLE MILVUS_ROLE TO USER milvus_user;
3. Membuat konfigurasi penyimpanan data
Membuat gudang dan basis data
USE ROLE SYSADMIN; CREATE OR REPLACE WAREHOUSE MILVUS_WAREHOUSE WITH WAREHOUSE_SIZE='X-SMALL' AUTO_SUSPEND = 180 AUTO_RESUME = true INITIALLY_SUSPENDED=false; USE ROLE SYSADMIN; CREATE DATABASE IF NOT EXISTS MILVUS_DEMO; USE DATABASE MILVUS_DEMO; CREATE IMAGE REPOSITORY MILVUS_DEMO.PUBLIC.MILVUS_REPO; CREATE OR REPLACE STAGE YAML_STAGE; CREATE OR REPLACE STAGE DATA ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE'); CREATE OR REPLACE STAGE FILES ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE');
Berikan hak istimewa peran
USE ROLE SECURITYADMIN; GRANT ALL PRIVILEGES ON DATABASE MILVUS_DEMO TO MILVUS_ROLE; GRANT ALL PRIVILEGES ON SCHEMA MILVUS_DEMO.PUBLIC TO MILVUS_ROLE; GRANT ALL PRIVILEGES ON WAREHOUSE MILVUS_WAREHOUSE TO MILVUS_ROLE; GRANT ALL PRIVILEGES ON STAGE MILVUS_DEMO.PUBLIC.FILES TO MILVUS_ROLE;
Mengonfigurasi ACL
USE ROLE ACCOUNTADMIN; USE DATABASE MILVUS_DEMO; USE SCHEMA PUBLIC; CREATE NETWORK RULE allow_all_rule TYPE = 'HOST_PORT' MODE= 'EGRESS' VALUE_LIST = ('0.0.0.0:443','0.0.0.0:80'); CREATE EXTERNAL ACCESS INTEGRATION allow_all_eai ALLOWED_NETWORK_RULES=(allow_all_rule) ENABLED=TRUE; GRANT USAGE ON INTEGRATION allow_all_eai TO ROLE SYSADMIN;
4. Membuat citra
Image yang digunakan oleh Milvus perlu dibuat secara lokal dan kemudian diunggah oleh pengguna. Untuk konfigurasi citra yang relevan, silakan lihat repositori ini. Setelah mengkloning kode, masuk ke direktori root proyek dan bersiaplah untuk membangun citra.
Membangun citra secara lokal
Buka shell lokal Anda dan mulailah membangun citra.
cd ${repo_git_root_path} docker build --rm --no-cache --platform linux/amd64 -t milvus ./images/milvus docker build --rm --no-cache --platform linux/amd64 -t jupyter ./images/jupyter
Ada dua image di sini, yang pertama menjalankan basis data Milvus, dan yang kedua adalah notebook yang digunakan untuk tampilan.
Setelah image lokal dibangun, bersiaplah untuk menandai dan mengunggahnya.
Menandai citra yang dibangun
Masuk ke hub docker SPCS.
docker login ${instance_name}.registry.snowflakecomputing.com -u ${user_name}
Dan Anda dapat menandai citra untuk spcs sekarang.
docker tag milvus ${instance_name}.registry.snowflakecomputing.com/milvus_demo/public/milvus_repo/milvus docker tag jupyter ${instance_name}.registry.snowflakecomputing.com/milvus_demo/public/milvus_repo/jupyter
Kemudian gunakan
docker images | grep milvus
pada shell lokal untuk memeriksa apakah citra telah dipaketkan dan ditandai dengan sukses.docker images | grep milvus ${instance_name}.registry.snowflakecomputing.com/milvus_demo/public/milvus_repo/milvus latest 3721bbb8f62b 2 days ago 2.95GB ${instance_name}.registry.snowflakecomputing.com/milvus_demo/public/milvus_repo/jupyter latest 20633f5bcadf 2 days ago 2GB
Mendorong citra ke SPCS
docker push ${instance_name}.registry.snowflakecomputing.com/milvus_demo/public/milvus_repo/milvus docker push ${instance_name}.registry.snowflakecomputing.com/milvus_demo/public/milvus_repo/jupyter
5. Membuat dan memulai layanan
Mari kita kembali ke shell SnowSQL.
- Membuat kumpulan komputasi
USE ROLE SYSADMIN;
CREATE COMPUTE POOL IF NOT EXISTS MILVUS_COMPUTE_POOL
MIN_NODES = 1
MAX_NODES = 1
INSTANCE_FAMILY = CPU_X64_S
AUTO_RESUME = true;
CREATE COMPUTE POOL IF NOT EXISTS JUPYTER_COMPUTE_POOL
MIN_NODES = 1
MAX_NODES = 1
INSTANCE_FAMILY = CPU_X64_S
AUTO_RESUME = true;
Periksa compute pools melalui DESCRIBE
hingga statusnya menjadi ACTIVE
atau IDLE
.
DESCRIBE COMPUTE POOL MILVUS_COMPUTE_POOL;
DESCRIBE COMPUTE POOL JUPYTER_COMPUTE_POOL;
Status kumpulan komputasi
- Unggah file spesifikasi
Setelah membuat compute pool, mulailah menyiapkan file spce untuk layanan. Berkas-berkas tersebut juga ada di dalam repo ini. Silakan merujuk ke direktori spesifikasi.
Buka berkas spesifikasi kedua layanan ini, temukan ${org_name}-${acct_name}
dalam berkas spesifikasi, dan ganti dengan ${instance_name} akun Anda sendiri. Setelah modifikasi, gunakan SnowSQL untuk menyelesaikan pengunggahan.
PUT file://${path/to/jupyter.yaml} @yaml_stage overwrite=true auto_compress=false;
PUT file://${path/to/milvus.yaml} @yaml_stage overwrite=true auto_compress=false;
- Membuat layanan
Setelah pengunggahan selesai, Anda siap untuk membuat layanan, Lanjutkan untuk menyelesaikan proses pembuatan layanan.
USE ROLE SYSADMIN;
USE DATABASE MILVUS_DEMO;
USE SCHEMA PUBLIC;
CREATE SERVICE MILVUS
IN COMPUTE POOL MILVUS_COMPUTE_POOL
FROM @YAML_STAGE
SPEC='milvus.yaml'
MIN_INSTANCES=1
MAX_INSTANCES=1;
CREATE SERVICE JUPYTER
IN COMPUTE POOL JUPYTER_COMPUTE_POOL
FROM @YAML_STAGE
SPEC='jupyter.yaml'
MIN_INSTANCES=1
MAX_INSTANCES=1;
Layanan juga dapat dilihat melalui SHOW SERVICES;
.
SHOW SERVICES;
+---------+---------------+-------------+----------+----------------------+--------------------------------------------------------+-----------------
| name | database_name | schema_name | owner | compute_pool | dns_name | ......
|---------+---------------+-------------+----------+----------------------+--------------------------------------------------------+-----------------
| JUPYTER | MILVUS_DEMO | PUBLIC | SYSADMIN | JUPYTER_COMPUTE_POOL | jupyter.public.milvus-demo.snowflakecomputing.internal | ......
| MILVUS | MILVUS_DEMO | PUBLIC | SYSADMIN | MILVUS_COMPUTE_POOL | milvus.public.milvus-demo.snowflakecomputing.internal | ......
+---------+---------------+-------------+----------+----------------------+--------------------------------------------------------+-----------------
Jika Anda mengalami masalah saat memulai layanan, Anda dapat melihat informasi layanan melalui CALL SYSTEM$GET_SERVICE_STATUS('milvus');
.
Status layanan
Informasi lebih lanjut dapat diperoleh melalui CALL SYSTEM$GET_SERVICE_LOGS('milvus', '0', 'milvus', 10);
.
Menggunakan Notebook
Gunakan SnowSQL untuk memberikan izin.
USE ROLE SECURITYADMIN;
GRANT USAGE ON SERVICE MILVUS_DEMO.PUBLIC.JUPYTER TO ROLE MILVUS_ROLE;
Kemudian lihat dan catat titik akhir buku catatan Jupyter.
USE ROLE SYSADMIN;
SHOW ENDPOINTS IN SERVICE MILVUS_DEMO.PUBLIC.JUPYTER;
Catat bagian ingress_url
dari informasi tersebut, kemudian buka browser dan masuk ke ingress_url
, gunakan akun milvus_user untuk masuk ke situs web.
Dapatkan URL masuk
Membuka buku catatan melalui ingress_url
, klik dua kali file TestMilvus.ipynb
pada halaman untuk mencoba Milvus. Pilih bagian pertama dari blok kode, dan klik tombol Run untuk mulai membuat koneksi dan menginisialisasi fungsi penyematan.
Jalankan TestMilvus.ipynb di notebook
Setelah membuat koneksi, lanjutkan dengan mengklik RUN. Kode ini akan mengubah sebuah teks menjadi data vektor setelah proses embedding, dan kemudian memasukkannya ke dalam Milvus.
docs = [
"Artificial intelligence was founded as an academic discipline in 1956.",
"Alan Turing was the first person to conduct substantial research in AI.",
"Born in Maida Vale, London, Turing was raised in southern England.",
]
Kemudian gunakan teks sebagai kueri: "Siapa yang memulai penelitian AI?", lakukan kueri setelah pemrosesan penyematan, dan akhirnya dapatkan dan tampilkan hasil yang paling relevan.
Mendapatkan dan menampilkan hasil yang paling relevan
Untuk informasi lebih lanjut tentang penggunaan klien Milvus, Anda dapat merujuk ke bagian Dokumen Milvus.
7. Membersihkan
Setelah verifikasi, Anda dapat menggunakan SnowSQL untuk membersihkan layanan, peran, dan sumber daya data.
USE ROLE ACCOUNTADMIN;
DROP USER milvus_user;
USE ROLE SYSADMIN;
DROP SERVICE MILVUS;
DROP SERVICE JUPYTER;
DROP COMPUTE POOL MILVUS_COMPUTE_POOL;
DROP COMPUTE POOL JUPYTER_COMPUTE_POOL;
DROP IMAGE REPOSITORY MILVUS_DEMO.PUBLIC.MILVUS_REPO;
DROP DATABASE MILVUS_DEMO;
DROP WAREHOUSE MILVUS_WAREHOUSE;
USE ROLE ACCOUNTADMIN;
DROP ROLE MILVUS_ROLE;
DROP SECURITY INTEGRATION SNOWSERVICES_INGRESS_OAUTH;
Tentang Milvus
Untuk informasi lebih lanjut tentang Milvus, Anda dapat memulai dengan pengenalan Milvus dan Memulai cepat. Tentu saja, ada pengenalan yang lebih rinci tentang API, lihat versi Python dan Java, dan ada juga informasi tentang Penyematan dan Integrasi untuk referensi.