Milvus на контейнерных сервисах Snowpark
В этом руководстве показано, как запустить демонстрацию Milvus на контейнерных сервисах Snowpark.
О контейнерных сервисах Snowpark
Snowpark Container Services - это полностью управляемое контейнерное предложение, предназначенное для упрощения развертывания, управления и масштабирования контейнерных приложений в экосистеме Snowflake. Эта услуга позволяет пользователям запускать контейнерные рабочие нагрузки непосредственно в Snowflake, гарантируя, что данные не нужно выносить из среды Snowflake для обработки. Для получения дополнительной информации обратитесь к официальному представлению: Snowpark Container Services.
Настройка демонстрационной версии Milvus
Ниже описано, как с помощью конфигурации и кода понять возможности Milvus и как использовать Milvus в SPCS.
1. Получите информацию об учетной записи
Загрузите клиент SPCS: SnowSQL, затем войдите в свою учетную запись.
snowsql -a ${instance_name} -u ${user_name}
Правило ${instance_name}
- ${org_name}-${acct_name}
. Соответствующую информацию можно получить, войдя на сайт app.snowflake.com и проверив информацию о личном кабинете.
Информация об учетной записи Snowflake
2. Настройка ролей и привилегий
Настройте интеграцию 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;
Создайте роль для сервиса, обратите внимание, что часть ${PASSWORD}
здесь должна быть заменена пользователем, когда демонстрация будет выполнена.
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. Создание конфигурации хранилища данных
Создайте хранилище и базу данных
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');
Предоставьте привилегии роли
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;
Настройте 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. Создание образов
Образ, используемый Milvus, должен быть создан локально, а затем загружен пользователем. Для соответствующей настройки образа обратитесь к этому репозиторию. После клонирования кода перейдите в корневой каталог проекта и подготовьтесь к сборке образа.
Сборка образов локально
Откройте локальную оболочку и начните сборку образов.
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
Здесь два образа, первый - это база данных Milvus, а второй - ноутбук, используемый для отображения.
После того как локальные образы будут собраны, подготовьтесь к их маркировке и загрузке.
Пометить собранные образы
Войдите в докер-хаб SPCS.
docker login ${instance_name}.registry.snowflakecomputing.com -u ${user_name}
Теперь вы можете пометить изображения для spcs.
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
Затем используйте
docker images | grep milvus
в локальной оболочке, чтобы проверить, успешно ли упакован и помечен образ.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
Отправить образы в 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. Создание и запуск служб
Давайте вернемся в оболочку SnowSQL.
- Создайте пулы вычислений
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;
Проверьте пулы вычислений через DESCRIBE
, пока их статус не станет ACTIVE
или IDLE
.
DESCRIBE COMPUTE POOL MILVUS_COMPUTE_POOL;
DESCRIBE COMPUTE POOL JUPYTER_COMPUTE_POOL;
Статус вычислительного пула
- Загрузка файлов спецификаций
После создания вычислительного пула начните подготовку spce-файла для сервиса. Файлы также находятся в этом репозитории. Пожалуйста, обратитесь к директории specs.
Откройте файлы спецификаций этих двух сервисов, найдите ${org_name}-${acct_name}
в файле спецификации и замените его на ${имя_инстанции} вашей собственной учетной записи. После внесения изменений используйте SnowSQL для завершения загрузки.
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;
- Создание службы
Когда выгрузка будет завершена, вы будете готовы к созданию службы, Продолжить, чтобы завершить процесс создания службы.
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;
Службы также можно просматривать через 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 | ......
+---------+---------------+-------------+----------+----------------------+--------------------------------------------------------+-----------------
Если у вас возникли проблемы с запуском службы, вы можете просмотреть информацию о службе через CALL SYSTEM$GET_SERVICE_STATUS('milvus');
.
Состояние службы
Дополнительную информацию можно получить через CALL SYSTEM$GET_SERVICE_LOGS('milvus', '0', 'milvus', 10);
.
Использование блокнота
Используйте SnowSQL для предоставления разрешений.
USE ROLE SECURITYADMIN;
GRANT USAGE ON SERVICE MILVUS_DEMO.PUBLIC.JUPYTER TO ROLE MILVUS_ROLE;
Затем просмотрите и запишите конечную точку блокнота Jupyter.
USE ROLE SYSADMIN;
SHOW ENDPOINTS IN SERVICE MILVUS_DEMO.PUBLIC.JUPYTER;
Запишите часть информации на ingress_url
, затем откройте браузер и введите ingress_url
, используя учетную запись milvus_user для входа на сайт.
Получение URL-адреса входа
Откройте блокнот через ingress_url
, дважды щелкните файл TestMilvus.ipynb
на странице, чтобы опробовать Milvus. Выберите первую часть блока кода и нажмите кнопку Run, чтобы начать устанавливать соединение и инициализировать функцию встраивания.
Запустите TestMilvus.ipynb в блокноте
Установив соединение, продолжайте нажимать кнопку RUN. Код превратит фрагмент текста в векторные данные после обработки встраивания, а затем вставит его в 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.",
]
Затем используйте текст в качестве запроса: "Кто начал исследования ИИ?", выполните запрос после обработки встраивания и, наконец, получите и отобразите наиболее релевантные результаты.
Получение и отображение наиболее релевантных результатов
Для получения дополнительной информации об использовании клиента Milvus вы можете обратиться к разделу Milvus Doc.
7. Очистка
После проверки вы можете использовать SnowSQL для очистки служб, ролей и ресурсов данных.
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;
О Milvus
Для получения дополнительной информации о Milvus вы можете начать с введения и быстрого запуска Milvus. Конечно, есть более подробное введение в API, ссылки на версии для Python и Java, а также информация о встраиваниях и интеграциях для справки.