Установка и запуск контейнера Azure AI Translator

Контейнеры позволяют размещать API Azure AI Translator в собственной инфраструктуре. Образ контейнера включает все библиотеки, инструменты и зависимости, необходимые для последовательного запуска приложения в любой частной, общедоступной или личной вычислительной среде. Если требования к безопасности или управлению данными не могут быть выполнены путем удаленного вызова API Переводчика ИИ Azure, контейнеры являются хорошим вариантом.

Из этой статьи вы узнаете, как установить и запустить контейнер Переводчика в Интернете с помощью API Docker. Контейнер Azure AI Translator поддерживает следующие операции:

  • Перевод текста. Перевод контекстного значения слов или фраз из поддерживаемых на поддерживаемый source target язык в режиме реального времени. Дополнительные сведения см. в разделе "Контейнер: перевод текста".

  • 🆕 Транслитерация текста. Преобразование текста из одного языка или записи системы в другой языковой скрипт или запись системы в режиме реального времени. Дополнительные сведения см. в разделе "Контейнер: транслитерация текста".

  • 🆕 Перевод документов. Синхронно переводить документы, сохраняя структуру и формат в режиме реального времени. Дополнительные сведения см. в разделе "Контейнер:перевод документов".

Необходимые компоненты

Чтобы приступить к работе, вам потребуются следующие ресурсы, утверждение закрытого доступа и средства:

Ресурсы Azure
  • Активная подписка Azure. Если у вас нет учетной записи, вы можете создать бесплатную учетную запись за 12 месяцев.

  • Утвержденный запрос доступа к подключенного контейнера Переводчика или отключенного контейнера Переводчика.

  • Ресурс Azure AI Translator (а не ресурс служб ИИ Azure с несколькими службами), созданный в соответствии с утвержденным идентификатором подписки. Вам нужен ключ API и URI конечной точки, связанные с ресурсом. Оба значения необходимы для запуска контейнера и можно найти на странице обзора ресурсов в портал Azure.

    • Для подключенных контейнеров Переводчика выберите ценовую категориюS1.

      Снимок экрана: выбор ценовой категории для подключенного контейнера Переводчика.

    • Для отключенных контейнеров Переводчика выберите Commitment tier disconnected containers ценовую категорию. Вы увидите возможность приобрести уровень обязательств только в том случае, если запрос на доступ к отключенным контейнерам утвержден.

      Снимок экрана: создание группы ресурсов на портале Azure.

Средства Docker

Вы должны иметь базовое представление о понятиях Docker, таких как реестры, репозитории, контейнеры и образы контейнеров, а также знания о базовой docker терминологии и командах. Ознакомьтесь с общими сведениями о Docker и контейнерах.

Совет

Рассмотрите возможность добавления Docker Desktop в среду вычислений. Docker Desktop — это графический пользовательский интерфейс (GUI), позволяющий создавать, запускать и совместно использовать контейнерные приложения непосредственно с рабочего стола.

DockerDesktop включает подсистему Docker, клиент Docker CLI, Docker Compose и предоставляет пакеты, которые настраивают Docker для предпочтительной операционной системы:

Средство Description Условие
Подсистема Docker Подсистема Docker является основным компонентом платформы контейнеризации Docker. Он должен быть установлен на хост-компьютере, чтобы позволить создавать, запускать и управлять контейнерами. Требуется для всех операций.
Docker Compose Средство Docker Compose используется для определения и запуска многоконтейнерных приложений. Требуется для поддержки контейнеров.
Интерфейс командной строки Docker Интерфейс командной строки Docker позволяет взаимодействовать с подсистемой Docker и управлять контейнерами Docker непосредственно с локального компьютера. Рекомендуется
Требования к компьютеру узла

Узел — это 64-разрядный компьютер, на котором выполняется контейнер Docker. Он может быть компьютером в локальной среде или одной из этих служб размещения Docker в Azure:

Операционная система Требования к системе
Windows • Установлена windows 10 или Windows 11
• 64-разрядный процессор
• Не менее 4 ГБ ОЗУ
• Функции Windows Hyper-V и контейнеры, а также виртуализация оборудования на уровне BIOS
• Дополнительные сведения см. в разделе "Установка Docker Desktop в Windows"
Mac • модель компьютера 2010 или более поздней версии
• ОС 10.13 или более поздней версии
• Не менее 4 ГБ ОЗУ
• Дополнительные сведения см. в разделе "Установка Docker Desktop на Mac"
Linux • 64-разрядная версия Ubuntu (последняя версия LTS (долгосрочная поддержка) или текущая версия, отличной от LTS), Debian 12, Fedora 38 или Fedora 39
• Поддержка ЦП для виртуализации
• Не менее 4 ГБ ОЗУ
• Дополнительные сведения см. в разделе "Установка Docker Desktop в Linux"

Примечание.

Минимальные и рекомендуемые характеристики основаны на ограничениях Docker, а не на ресурсах сервера.

В следующей таблице описаны минимальные и рекомендуемые спецификации и допустимые транзакции в секунду (TPS) для каждого контейнера.

Function Минимальный рекомендуемый Примечания.
Перевод текста 4 Ядра, 4 ГБ памяти
Транслитерация текста 4 Ядра, 2 ГБ памяти
Перевод документов 4 Ядра, 6 ГБ памяти Количество документов, которые можно обрабатывать одновременно, можно вычислить с помощью следующей формулы: [минимум (n-2), (m-6)/4)].
n число ядер ЦП.
m — это ГБ памяти.
Пример: 8 Core, 32 ГБ памяти могут обрабатывать одновременные документы шесть (6) [минимум (8-2), (36-6)/4)].
  • Частота каждого ядра должна быть минимум 2,6 ГГц.

  • Для каждой языковой пары рекомендуется использовать 2 ГБ памяти.

  • Помимо базовых требований, 4 ГБ памяти для каждой параллельной обработки документов.

    Совет

    Используйте команду docker images, чтобы получить список скачанных образов контейнеров. Например, следующая команда возвращает таблицу со списком идентификаторов, репозиториев и тегов для каждого скачанного образа контейнера:

     docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
    
     IMAGE ID         REPOSITORY                TAG
     <image-id>       <repository-path/name>    <tag-name>
    

Требуемые входные данные

Для всех контейнеров ИИ Azure требуются следующие входные значения:

  • Параметр принятия лицензионного соглашения с конечным пользователем. У вас должно быть лицензионное соглашение конечного пользователя (EULA) со значением Eula=accept.

  • Ключ API и URL конечной точки. Ключ API используется для запуска контейнера. Вы можете получить значения ключа API и URL-адреса конечной точки, перейдя на страницу ключей ресурсов Azure AI Translator и страницу конечной точки и выбрав Copy to clipboard значок.

  • Если вы переводите документы, обязательно используйте конечную точку перевода документов.

Внимание

  • Ключи используются для доступа к ресурсу ИИ Azure. Не предоставляйте доступ к ключам. Храните их защищенным образом, например в Azure Key Vault.

  • Также рекомендуется регулярно обновлять эти ключи. Для вызова API необходим только один ключ. При повторном создании первого ключа можно использовать второй ключ для продолжения доступа к службе.

Выставление счетов

  • Запросы к контейнеру выставляются по ценовой категории ресурса Azure, используемого для API Key.

  • Плата взимается за каждый экземпляр контейнера, используемый для обработки документов и изображений.

  • Команда запуска docker загружает образ из Реестр артефактов Microsoft и запускает контейнер, когда все три из следующих параметров предоставляются допустимыми значениями:

Вариант Описание
ApiKey Ключ ресурса служб ИИ Azure, используемого для отслеживания сведений о выставлении счетов.
Значение этого параметра должно быть задано в качестве ключа для подготовленного ресурса, указанного в Billing.
Billing Конечная точка ресурса служб искусственного интеллекта Azure, используемая для отслеживания сведений о выставлении счетов.
Этому параметру следует присвоить URI конечной точки подготовленного ресурса Azure.
Eula Указывает, что вы приняли условия лицензии для контейнера.
Для этого параметра следует задать значение accept.

Подключение к Azure

  • Значения аргумента выставления счетов контейнера позволяют контейнеру подключаться к конечной точке выставления счетов и запускать его.

  • Отчеты об использовании контейнера примерно каждые 10—15 минут. Если контейнер не подключится к Azure в течение допустимого периода времени, контейнер будет продолжать работать, но не будет обслуживать запросы, пока не будет восстановлена конечная точка выставления счетов.

  • Подключение выполняется 10 раз в одно и то же время от 10 до 15 минут. Если контейнеру не удается подключиться к конечной точке выставления счетов за 10 попыток, он останавливает запросы на обслуживание. См. часто задаваемые вопросы о контейнере ИИ Azure, чтобы получить пример информации, отправляемой в Корпорацию Майкрософт для выставления счетов.

Образы и теги контейнеров

Образы контейнеров служб искусственного интеллекта Azure можно найти в каталоге Реестр артефактов Microsoft. Контейнер Azure AI Translator находится в репозитории azure-cognitive-services/translator и называется text-translation. Полное имя образа контейнера: mcr.microsoft.com/azure-cognitive-services/translator/text-translation:latest.

Чтобы использовать последнюю версию контейнера, используйте последний тег. Полный список тегов версий перевода текста служб ИИ Azure можно просмотреть в MCR.

Использование контейнеров

Выберите вкладку, чтобы выбрать среду контейнера Azure AI Translator:

Контейнеры Azure AI Translator позволяют запускать службу on-premise Azure AI Translator в собственной среде. Подключенные контейнеры выполняются локально и отправляют сведения об использовании в облако для выставления счетов.

Скачивание и запуск образа контейнера

Команда запуска Docker загружает образ из Реестр артефактов Microsoft и запускает контейнер.

Внимание

  • В командах Docker в следующих разделах используется обратная косая черта (\) как символ продолжения строки. Замените или удалите ее в соответствии с требованиями вашей операционной системы.
  • Для запуска контейнера необходимо указать параметры EULA, Billing и ApiKey. В противном случае контейнер не запустится.
  • Если вы переводите документы, обязательно используйте конечную точку перевода документов.
docker run --rm -it -p 5000:5000 --memory 12g --cpus 4 \
-v /mnt/d/TranslatorContainer:/usr/local/models \
-e apikey={API_KEY} \
-e eula=accept \
-e billing={ENDPOINT_URI} \
-e Languages=en,fr,es,ar,ru  \
mcr.microsoft.com/azure-cognitive-services/translator/text-translation:latest

Команда Docker:

  • Создает запущенный контейнер Переводчика из скачаированного образа контейнера.
  • Выделяет 12 гигабайт (ГБ) памяти и четыре ядра процессора.
  • Предоставляет протокол управления передачей (TCP) порт 5000 и выделяет псевдо-TTY для контейнера. localhost Теперь адрес указывает на сам контейнер, а не на хост-компьютере.
  • Принимает соглашение конечного пользователя (EULA).
  • Настраивает конечную точку выставления счетов.
  • Скачивает модели перевода на английский, французский, испанский, арабский и русский.
  • автоматически удаляет контейнер после завершения его работы. Образ контейнера остается доступным на главном компьютере.

Совет

Дополнительная команда Docker:

  • docker ps перечисляет запущенные контейнеры.
  • docker pause {your-container name} приостанавливает запущенный контейнер.
  • docker unpause {your-container-name} распакуется приостановленный контейнер.
  • docker restart {your-container-name} перезапускает запущенный контейнер.
  • docker exec позволяет выполнять команды lto отсоединять или задавать переменные среды в работающем контейнере.

Дополнительные сведения см. в справочнике по интерфейсу командной строки Docker.

Запуск нескольких контейнеров на одном узле

Если вы планируете запускать несколько контейнеров при открытых портах, обязательно назначьте каждому контейнеру отдельный открытый порт. Например, запускайте первый контейнер на порте 5000, а второй — на порте 5001.

Этот контейнер можно использовать и другой контейнер ИИ Azure, работающий вместе на узле HOST. Вы также можете использовать несколько контейнеров одного и того же контейнера ИИ Azure.

Запрос конечной точки контейнера Переводчика

Контейнер предоставляет API конечной точки переводчика на основе REST. Ниже приведен пример запроса на исходный язык (from=en).

  curl -X POST "http://localhost:5000/translate?api-version=3.0&from=en&to=zh-HANS" -H "Content-Type: application/json" -d "[{'Text':'Hello, what is your name?'}]"

Примечание.

  • Для обнаружения исходного языка требуется дополнительный контейнер. Дополнительные сведения см. в разделе "Поддержка контейнеров"

  • Если запрос post cURL возвращает Service is temporarily unavailable ответ, контейнер не готов. Подождите несколько минут, а затем повторите попытку.

Проверка состояния контейнера

Есть несколько способов проверить, что контейнер запущен:

  • Контейнер предоставляет домашнюю страницу / в качестве визуальной проверки того, что контейнер работает.

  • Вы можете открыть свой любимый веб-браузер и перейти к внешнему IP-адресу и открытому порту соответствующего контейнера. Используйте следующие URL-адреса запроса для проверки запуска контейнера. Пример URL-адресов запроса, указанных в http://localhost:5000списке, но конкретный контейнер может отличаться. Помните, что вы переходите к Внешнему IP-адресу и открытому порту контейнера.

Запросить URL-адрес Характер использования
http://localhost:5000/ Контейнер предоставляет домашнюю страницу.
http://localhost:5000/ready Запрошено с помощью GET. Обеспечивает подтверждение того, что контейнер готов принять запрос к модели. Этот запрос может использоваться для проб активности и готовности Kubernetes.
http://localhost:5000/status Запрошено с помощью GET. Проверяет, действителен ли ключ API, используемый для запуска контейнера, без запроса конечной точки. Этот запрос может использоваться для проб активности и готовности Kubernetes.
http://localhost:5000/swagger Контейнер предоставляет полный набор документации по конечным точкам и функции Попробовать. Эта функция позволяет ввести параметры в веб-форму HTML и создать запрос без необходимости писать код. После возврата запроса предоставляется пример команды CURL, чтобы продемонстрировать необходимые заголовки HTTP и формат текста.

Снимок экрана: домашняя страница контейнера.

Если у вас возникли проблемы с запуском контейнера служб искусственного интеллекта Azure, можно попробовать использовать контейнер Microsoft диагностика. Используйте этот контейнер для диагностики распространенных ошибок в среде развертывания, которые могут предотвратить работу контейнеров ИИ Azure должным образом.

Чтобы получить контейнер, используйте следующую команду docker pull:

docker pull mcr.microsoft.com/azure-cognitive-services/diagnostic

Затем запустите контейнер. Замените {ENDPOINT_URI} на URI конечной точки, а {API_KEY} — на свой ключ для ресурса:

docker run --rm mcr.microsoft.com/azure-cognitive-services/diagnostic \
eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

Тесты контейнера для сетевого подключения к конечной точке выставления счетов.

Остановка контейнера

Чтобы завершить работу контейнера, в среде командной строки, где выполняется контейнер, нажмите комбинацию клавиш Ctrl+C.

Варианты использования для вспомогательных контейнеров

Для выполнения некоторых запросов переводчика требуется поддержка контейнеров. Если вы используете документы Office и не требует обнаружения исходного языка, требуется только контейнер Переводчика. Однако если требуется обнаружение исходного языка или используется сканированные PDF-документы, требуются вспомогательные контейнеры:

В следующей таблице перечислены необходимые вспомогательные контейнеры для операций перевода текста и документов. Контейнер Переводчика отправляет сведения о выставлении счетов в Azure через ресурс Azure AI Translator в учетной записи Azure.

Операция Запрос запроса Document type Поддержка контейнеров
•Перевод текста
• Перевод документов
from указанный. Документы Office нет
•Перевод текста
• Перевод документов
from не задано. Требует автоматического обнаружения языка для определения исходного языка. Документы Office Контейнер "Анализ текста:язык" ✔️
•Перевод текста
• Перевод документов
from указанный. Сканированные PDF-документы ✔️ Контейнер Vision:read
•Перевод текста
• Перевод документов
from не указан, требующий автоматического обнаружения языка для определения исходного языка. Сканированные PDF-документы Контейнер "Анализ текста:язык" ✔️

✔️ Контейнер Vision:read

Использование вспомогательных контейнеров с помощью docker compose

Docker Compose — это средство, которое позволяет настраивать многоконтейнерные приложения с помощью одного файла YAML, который обычно называется compose.yaml. docker compose up Используйте команду, чтобы запустить приложение контейнера и docker compose down команду, чтобы остановить и удалить контейнеры.

Если вы установили Интерфейс командной строки Docker Desktop, он включает в себя docker compose и его предварительные требования. Если у вас нет Docker Desktop, ознакомьтесь с обзором установки Docker Compose.

Создание приложения

  1. Используя предпочитаемый редактор или интегрированную среду разработки, создайте новый каталог для вашего приложения с именем container-environment или именем вашего выбора.

  2. Создайте файл YAML с именем compose.yaml. Расширения .yml или YAML можно использовать для compose файла.

  3. Скопируйте и вставьте следующий пример кода YAML в compose.yaml файл. {TRANSLATOR_ENDPOINT_URI} Замените {TRANSLATOR_KEY} значения ключей и конечных точек из экземпляра портал Azure Translator. Если вы переводите документы, обязательно используйте его document translation endpoint.

  4. Имя верхнего уровня (azure-ai-translator, azure-ai-language, azure-ai-read) — это указанный параметр.

  5. Это container_name необязательный параметр, который задает имя контейнера при запуске, а не позволяет docker compose создавать имя.

    services:
      azure-ai-translator:
        container_name: azure-ai-translator
        image: mcr.microsoft.com/azure-cognitive-services/translator/text-translation::latest
        environment:
            - EULA=accept
            - billing={TRANSLATOR_ENDPOINT_URI}
            - apiKey={TRANSLATOR_KEY}
            - ladurl=http://azure-ai-language:5000
            - VISIONURL=http://azure-ai-read:5000
        ports:
              - "5000:5000"
        volumes:
              - {your local folder}:/usr/local/models
        azure-ai-language:
          container_name: azure-ai-language
          image:  mcr.microsoft.com/azure-cognitive-services/textanalytics/language:latest
          environment:
              - EULA=accept
              - billing={LANGUAGE_RESOURCE_ENDPOINT_URI}
              - apiKey={LANGUAGE_RESOURCE_KEY}
              - Languages=en,es
              - LADINCLUSTER=true 
        azure-ai-read:
          container_name: azure-ai-read
          image:  mcr.microsoft.com/azure-cognitive-services/vision/read:latest
          environment:
              - EULA=accept
              - billing={COMPUTER_VISION_ENDPOINT_URI}
              - apiKey={COMPUTER_VISION_KEY}
    
  6. Откройте терминал, перейдите в container-environment папку и запустите контейнеры с помощью следующей docker-compose команды:

    docker compose up
    
  7. Чтобы остановить контейнеры, используйте следующую команду.

    docker compose down
    

    Совет

    Полезные команды Docker:

    • docker compose pause приостанавливает выполнение контейнеров.
    • docker compose unpause {your-container-name} нераспакованные контейнеры приостановлены.
    • docker compose restart перезапускает все остановленные и запущенные контейнеры со всеми предыдущими изменениями без изменений. При внесении изменений в compose.yaml конфигурацию эти изменения не обновляются с помощью docker compose restart команды. Для отражения обновлений и изменений в compose.yaml файле необходимо использовать docker compose up команду.
    • docker compose ps -a перечисляет все контейнеры, включая остановленные.
    • docker compose exec позволяет выполнять команды для отсоединения или задания переменных среды в работающем контейнере.

    Дополнительные сведения см. в справочнике по интерфейсу командной строки Docker.

Переводчик и поддержка образов контейнеров и тегов

Образы контейнеров служб искусственного интеллекта Azure можно найти в каталоге Реестр артефактов Microsoft. В следующей таблице перечислены полные расположения изображений для перевода текста и документа:

Контейнер Расположение образа Примечания.
Переводчик: перевод текста и документов mcr.microsoft.com/azure-cognitive-services/translator/text-translation:latest Полный список тегов версий перевода текста служб ИИ Azure можно просмотреть в MCR.
Анализ текста: язык mcr.microsoft.com/azure-cognitive-services/textanalytics/language:latest Полный список служб ИИ Azure можно просмотреть Анализ текста теги версий языка в MCR.
Зрение: чтение mcr.microsoft.com/azure-cognitive-services/vision/read:latest Полный список служб ИИ Azure можно просмотреть Компьютерное зрение чтение OCR тегов версий в MCR.

Другие параметры и команды

Ниже приведены несколько дополнительных параметров и команд, которые можно использовать для запуска контейнера:

Записи об использовании

Контейнеры Docker, работающие в отключенной среде, будут записывать сведения об использовании на том, где они собираются с течением времени. Можно также вызвать конечную точку REST API, чтобы создать отчет об использовании службы.

Аргументы для хранения журналов

При запуске в среде без подключения к Интернету для хранения журналов использования необходимо, чтобы для контейнера было доступно выходное подключение. Например, можно включить -v /host/output:{OUTPUT_PATH} и Mounts:Output={OUTPUT_PATH} в следующем примере, заменив {OUTPUT_PATH} путь, в котором хранятся журналы:

Пример docker run команды

docker run -v /host/output:{OUTPUT_PATH} ... <image> ... Mounts:Output={OUTPUT_PATH}

Имена переменных среды в развертываниях Kubernetes

  • Некоторые контейнеры ИИ Azure, например Переводчик, требуют от пользователей передачи имен переменных среды, которые включают двоеточия (:) при запуске контейнера.

  • Kubernetes не принимает двоеточия в именах переменных среды. Чтобы устранить проблему, можно заменить двоеточия двумя символами подчеркивания (__) при развертывании в Kubernetes. См. следующий пример допустимого формата для имен переменных среды:

        env:
        - name: Mounts__License
          value: "/license"
        - name: Mounts__Output
          value: "/output"

Этот пример заменяет формат по умолчанию для Mounts:License Mounts:Output имен переменных среды в команде docker run.

Получение записей об использовании с помощью конечных точек контейнера

Контейнер предоставляет две конечные точки для возврата записей относительно его использования.

Получение всех записей

Следующая конечная точка содержит отчет, в котором приводится сводка всех данных об использовании, собранных в подключенном каталоге записей выставления счетов.

https://<service>/records/usage-logs/

Пример конечной точки HTTPS для получения всех записей

http://localhost:5000/records/usage-logs

Получение записей за определенный месяц

Следующая конечная точка содержит отчет об использовании в течение определенного месяца и года:

https://<service>/records/usage-logs/{MONTH}/{YEAR}

Пример конечной точки HTTPS для получения записей за определенный месяц и год

http://localhost:5000/records/usage-logs/03/2024

Конечные точки журналов использования возвращают ответ JSON, аналогичный следующему примеру:

Подключенный контейнер

Расходы на использование вычисляются на quantity основе значения.

{
  "apiType": "string",
"serviceName": "string",
"meters": [
  {
    "name": "string",
    "quantity": 256345435
    }
  ]
}

Итоги

В этой статье вы узнали основные понятия и рабочие процессы для скачивания, установки и запуска контейнера Azure AI Translator:

  • Контейнер Azure AI Translator поддерживает перевод текста, синхронный перевод документов и транслитерацию текста.

  • Образы контейнеров загружаются из реестра контейнеров и запускаются в Docker.

  • При создании экземпляра контейнера необходимо указать данные для выставления счетов.

Следующие шаги