Развертывание и запуск контейнеров в экземпляре контейнера Azure
Статья
С помощью следующих шагов масштабируйте приложения служб ИИ Azure в облаке с помощью Экземпляры контейнеров Azure. Контейнеризация позволяет сосредоточиться на создании приложений, а не на управлении инфраструктурой. Дополнительные сведения об использовании контейнеров см. в разделе Функции и преимущества.
Необходимые компоненты
Рецепт работает с любым контейнером служб ИИ Azure. Перед использованием рецепта необходимо создать ресурс служб ИИ Azure. Каждая служба ИИ Azure, поддерживающая контейнеры, содержит статью "Установка" для установки и настройки службы для контейнера. Некоторым службам в качестве входных данных для контейнера требуется файл или набор файлов. Важно разобраться в работе контейнера и успешно его использовать, прежде чем приступить к использованию этого решения.
Ресурс Azure для используемой службы искусственного интеллекта Azure.
URL-адрес конечной точки ресурса службы искусственного интеллекта Azure. Просмотрите сведения о том, как установить определенную службу для контейнера, чтобы найти URL-адрес конечной точки в портал Azure и как выглядит правильный пример URL-адреса. Точный формат может меняться в зависимости от службы.
Ключ ресурса службы искусственного интеллекта Azure— ключи находятся на странице "Ключи" для ресурса Azure. Вам потребуется только один из двух ключей. Ключ — это строка из 84 буквенно-числовых символов.
Один контейнер служб ИИ Azure на локальном узле (компьютер). Убедитесь, что вы можете выполнить следующие действия.
Получить изображение с помощью команды docker pull.
Успешно запустить локальный контейнер со всеми необходимыми параметрами конфигурации с помощью команды docker run.
Вызвать конечную точку контейнера, получив ответ HTTP 2xx и JSON.
Все переменные в угловых скобках (<>) необходимо заменить собственными значениями. Эта замена включает угловые скобки.
Важно!
Контейнеру LUIS требуется файл модели .gz, который извлекается во время выполнения. Контейнер должен иметь возможность получить доступ к этому файлу модели путем подключения тома из экземпляра контейнера. Чтобы отправить файл модели, выполните следующие действия.
Создание файлового ресурса Azure. Запишите имя учетной записи хранения Azure, ключ и имя общей папки, так как они понадобятся вам позже.
Создание ресурса экземпляра контейнера Azure с помощью портала Azure
Перейдите на страницу Создание для Экземпляров контейнеров.
На вкладке Основные сведения введите следующие данные.
Параметр
Значение
Отток подписок
Выберите свою подписку.
Группа ресурсов
Выберите доступную группу ресурсов или создайте новую, например cognitive-services.
Имя контейнера
Введите имя, например cognitive-container-instance. Имя должно быть записано в нижнем регистре.
Расположение
Выберите регион для развертывания.
Тип изображения
Если образ контейнера хранится в реестре контейнеров, который не требует учетных данных, выберите Public. Если для доступа к образу контейнера требуются учетные данные, выберите Private. Сведения о том, является ли образ контейнера Public или Private (общедоступная предварительная версия), см. в разделе о репозиториях и образах контейнеров.
Имя образа
Введите расположение контейнера служб ИИ Azure. Расположение используется в качестве аргумента команды docker pull. Сведения о доступных именах образов и соответствующих репозиториях см. в разделе о репозиториях и образах контейнеров.
Имя образа должно быть полным и состоять из трех частей: реестр контейнеров, репозиторий и имя образа: <container-registry>/<repository>/<image-name>.
Ниже приведен пример, mcr.microsoft.com/azure-cognitive-services/keyphrase который будет представлять образ извлечения ключевых фраз в реестре контейнеров Майкрософт в репозитории служб ИИ Azure. Еще одним примером является то, containerpreview.azurecr.io/microsoft/cognitive-services-speech-to-text что представляет текстовое изображение службы "Речь" в репозитории Майкрософт реестра контейнеров предварительной версии контейнеров.
Тип ОС
Linux
Размер
Измените размер предлагаемых рекомендаций для конкретного контейнера ИИ Azure: 2 ядра ЦП 4 ГБ
На вкладке Сеть введите следующие сведения.
Параметр
Значение
Порты
Установите для TCP-порта значение 5000. Предоставьте контейнер через порт 5000.
На вкладке Дополнительно введите необходимые переменные среды для параметров выставления счетов в контейнере для ресурса экземпляра контейнера Azure:
Ключ
Значение
ApiKey
Копируется со страницы Ключи и конечная точка ресурса. Это строка 84 буквенно-цифровых символов без пробелов или дефисов. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Billing
URL-адрес конечной точки копируется со страницы Ключи и конечная точка ресурса.
Eula
accept
Выберите "Рецензирование" и "Создать"
После проверки нажмите кнопку Создать, чтобы завершить процесс создания
После успешного развертывания ресурс готов
Создание ресурса экземпляра контейнера Azure из Azure CLI
Перед выполнением команд в этой статье необходимо сначала установить Azure CLI .
Код YAML ниже определяет ресурс экземпляра контейнера Azure. Скопируйте и вставьте содержимое в новый файл с именем my-aci.yaml и замените закомментированные значения своими значениями. См. формат шаблона для создания допустимого YAML. Сведения о доступных именах образов и соответствующих репозиториях см. в разделе о репозиториях и образах контейнеров. Дополнительные сведения об использовании YAML для экземпляров контейнеров см. в разделе Справочник по YAML. Экземпляры контейнеров Azure.
YAML
apiVersion:2018-10-01location:# < Valid location >name:# < Container Group name >properties: imageRegistryCredentials:# This is only required if you are pulling a non-public image that requires authentication to access. For example Text Analytics for health. - server:containerpreview.azurecr.io username:# < The username for the preview container registry > password:# < The password for the preview container registry > containers: - name:# < Container name > properties: image:# < Repository/Image name > environmentVariables:# These env vars are required - name:eula value:accept - name:billing value:# < Service specific Endpoint URL > - name:apikey value:# < Service specific API key > resources: requests: cpu:4# Always refer to recommended minimal resources memoryInGb:8# Always refer to recommended minimal resources ports: - port:5000 osType:Linux volumes:# This node, is only required for container instances that pull their model in at runtime, such as LUIS. - name:aci-file-share azureFile: shareName:# < File share name > storageAccountName:# < Storage account name> storageAccountKey:# < Storage account key > restartPolicy:OnFailure ipAddress: type:Public ports: - protocol:tcp port:5000tags:nulltype:Microsoft.ContainerInstance/containerGroups
Примечание
Не все расположения имеют одинаковую доступность ЦП и памяти. Список доступных ресурсов для контейнеров в расположении и ОС см. в таблице расположение и ресурсы.
В качестве основы мы возьмем файл YAML, созданный для команды az container create. В Azure CLI выполните команду az container create, заменив <resource-group> собственным значением. Дополнительно ознакомьтесь со сведениями о защите значений в развертывании YAML в разделе о защищенных значениях.
Azure CLI
az container create -g<resource-group>-f my-aci.yaml
Выводом правильной команды является сообщение Running..., которое через некоторое время изменится на строку JSON, представляющую созданный ресурс ACI. Скорее всего, образ контейнера какое-то время будет недоступен, но ресурс сейчас развернут.
Совет
Обратите особое внимание на расположения служб ИИ Azure в общедоступной предварительной версии, так как YAML потребуется соответствующим образом настроить их в соответствии с расположением.
Выберите Обзор и скопируйте IP-адрес. Это будет числовой IP-адрес, например 55.55.55.55.
Откройте новую вкладку браузера и используйте IP-адрес, например http://<IP-address>:5000 (http://55.55.55.55:5000. Появится домашняя страница контейнера. Это означает, что контейнер работает.
Выберите Описание API службы, чтобы просмотреть страницу Swagger для контейнера.
Выберите любой из интерфейсов API POST и нажмите кнопку Попробовать. Отображаются параметры, в том числе входные данные. Заполните параметры.
Выберите Выполнить, чтобы отправить запрос в экземпляр контейнера.
Вы успешно создали и использовали контейнеры ИИ Azure в экземпляре контейнеров Azure.
Проверка состояния контейнера
Проверить это можно несколькими способами. Получите адрес и открытый порт для рассматриваемого контейнера из его параметра Внешний IP-адрес и запустите веб-браузер. Используйте приведенные ниже URL-адреса запросов, чтобы убедиться, что контейнер работает. В примерах в качестве URL-адресов запросов используется значение http://localhost:5000, однако ваш конкретный контейнер может иметь отличия. Убедитесь в правильности внешнего IP-адреса и открытого порта контейнера.
Запросить URL-адрес
Характер использования
http://localhost:5000/
Контейнер предоставляет домашнюю страницу.
http://localhost:5000/ready
При запросе с помощью команды GET этот URL-адрес подтверждает, что контейнер готов принять запрос к модели. Этот запрос может использоваться для проб активности и готовности Kubernetes.
http://localhost:5000/status
Этот URL-адрес, который можно также запросить с помощью GET, проверяет, действителен ли ключ API, используемый для запуска контейнера, без запроса конечной точки. Этот запрос может использоваться для проб активности и готовности Kubernetes.
http://localhost:5000/swagger
Контейнер предоставляет полный набор документации по конечным точкам и функции Попробовать. Эта функция позволяет ввести параметры в веб-форму HTML и создать запрос без необходимости писать код. После возвращения результатов запроса предоставляется пример команды CURL с примером требуемого формата HTTP-заголовков и текста.
Примечание
Если вы запускаете контейнер службы «Анализ текста для здравоохранения», используйте для отправки запросов следующий URL-адрес: http://localhost:5000/text/analytics/v3.2-preview.1/entities/health
Присоединитесь к серии встреч для создания масштабируемых решений искусственного интеллекта на основе реальных вариантов использования с другими разработчиками и экспертами.