🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
Главная
  • Интеграции
    • Другие

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 account information Информация об учетной записи 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;

Compute pool status Статус вычислительного пула

  • Загрузка файлов спецификаций

После создания вычислительного пула начните подготовку 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');.

Service status Состояние службы

Дополнительную информацию можно получить через 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 для входа на сайт.

Obtain the ingress URL Получение URL-адреса входа

Откройте блокнот через ingress_url, дважды щелкните файл TestMilvus.ipynb на странице, чтобы опробовать Milvus. Выберите первую часть блока кода и нажмите кнопку Run, чтобы начать устанавливать соединение и инициализировать функцию встраивания.

Run TestMilvus.ipynb in the notebook Запустите 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.",
]

Затем используйте текст в качестве запроса: "Кто начал исследования ИИ?", выполните запрос после обработки встраивания и, наконец, получите и отобразите наиболее релевантные результаты.

Obtain and display the most relevant results Получение и отображение наиболее релевантных результатов

Для получения дополнительной информации об использовании клиента 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, а также информация о встраиваниях и интеграциях для справки.

Попробуйте Managed Milvus бесплатно

Zilliz Cloud работает без проблем, поддерживается Milvus и в 10 раз быстрее.

Начать
Обратная связь

Была ли эта страница полезной?