Контейнеры в отключенных (автономных) средах

Поддержка контейнеров в настоящее время доступна в версии 2022-08-31 (GA) аналитики документов для всех моделей и 2023-07-31 (GA) для моделей чтения, макета, счета, квитанции и идентификатора документов:

✔️ Дополнительные сведения о поддерживаемых контейнерах см. в контейнерах Аналитики документов версии 3.0 в отключенных средах .

Это содержимое относится к: флажок версии 3.0 (GA) флажок версии 3.1 (GA)

Что такое отключенные контейнеры?

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

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

Начало работы

Прежде чем пытаться запустить контейнер Docker в автономной среде, убедитесь, что вы знакомы со следующими требованиями, чтобы успешно скачать и использовать контейнер:

  • Требования к главному компьютеру и рекомендации.
  • Команда Docker pull для скачивания контейнера.
  • Как проверить состояние контейнера.
  • Как отправлять запросы к конечной точке контейнера после ее запуска.

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

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

Создание ресурса в портал Azure

Начните с подготовки нового ресурса на портале.

  • Убедитесь, что выбран параметр ценовой Commitment tier disconnected containers DC0 категории

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

    Снимок экрана: конфигурация отключенного уровня в портал Azure.

Контейнер Минимальная конфигурация Рекомендуемая конфигурация План обязательств
Read 8 ядра, 10 ГБ памяти 8 ядра, 24 ГБ памяти OCR (Чтение)
Layout 8 ядра, 16 ГБ памяти 8 ядра, 24 ГБ памяти Готовое
Business Card 8 ядра, 16 ГБ памяти 8 ядра, 24 ГБ памяти Готовое
General Document 8 ядра, 12 ГБ памяти 8 ядра, 24 ГБ памяти Готовое
ID Document 8 ядра, 8 ГБ памяти 8 ядра, 24 ГБ памяти Готовое
Invoice 8 ядра, 16 ГБ памяти 8 ядра, 24 ГБ памяти Готовое
Receipt 8 ядра, 11 ГБ памяти 8 ядра, 24 ГБ памяти Готовое
Custom Template 8 ядра, 16 ГБ памяти 8 ядра, 24 ГБ памяти Пользовательский API

Сбор обязательных параметров

Существует три обязательных параметра для всех контейнеров служб ИИ Azure:

  • Вам следует принять Лицензионное соглашение с конечным пользователем (EULA).
  • URL-адрес конечной точки ресурса из портал Azure.
  • Ключ API для ресурса из портал Azure.

Url-адрес конечной точки и ключ API необходимы при первом запуске контейнера, чтобы настроить его для отключенного использования. Ключ и конечная точка можно найти на странице "Ключ и конечная точка" ресурса в портал Azure:

Снимок экрана: страница портал Azure ключей и конечной точки.

Внимание

Вы будете использовать только ключ и конечную точку для настройки контейнера для запуска в отключенной среде. После настройки контейнера вам не потребуется значения ключей и конечных точек для отправки запросов API. Храните их защищенным образом, например в Azure Key Vault. Для этого процесса необходим только один ключ.

Скачивание контейнера Docker с помощью docker pull

Скачайте контейнер Docker, утвержденный для запуска в отключенной среде. Например:

Команда Docker pull Значение Формат
● ● ● docker pull [image]

docker pull [image]latest
Последний образ контейнера. ● ● ● mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout-3.0:latest

mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice-3.0:latest

Пример команды извлечения Docker

docker pull mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice:latest

Настройка контейнера для запуска в среде без подключения к Интернету

Отключенные образы контейнеров совпадают с подключенными контейнерами. Ключевое различие заключается в том, что отключенные контейнеры требуют файла лицензии. Этот файл лицензии скачан путем запуска контейнера в подключенном режиме с параметром downloadLicense, заданным значением true.

Теперь, когда контейнер скачан, необходимо выполнить docker run команду со следующим параметром:

  • DownloadLicense=True. Этот параметр скачивает файл лицензии, который позволяет контейнеру Docker запускаться, если он не подключен к Интернету. Он также содержит дату окончания срока действия, после чего файл лицензии недопустим для запуска контейнера. Файл лицензии можно использовать только в соответствующем утвержденном контейнере.

Внимание

Команда docker run создаст шаблон, который можно использовать для запуска контейнера. Шаблон содержит параметры, необходимые для скачанных моделей и файла конфигурации. Обязательно сохраните этот шаблон.

В следующем примере показано форматирование команды, используемой docker run с значениями заполнителей. Замените заполнители собственными значениями.

Заполнитель Значение Формат или пример
{IMAGE} Образ контейнера, который необходимо использовать. mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice
{LICENSE_MOUNT} Путь, по которому скачиваются лицензии и подключены. /host/license:/path/to/license/directory
{ENDPOINT_URI} Конечная точка для проверки подлинности запроса на обслуживание. Он представлен на странице ресурса Ключ и конечная точка на портале Azure. https://<your-custom-subdomain>.cognitiveservices.azure.com
{API_KEY} Ключ ресурса аналитики документов. Он представлен на странице ресурса Ключ и конечная точка на портале Azure. {string}
{CONTAINER_LICENSE_DIRECTORY} Расположение папки license в локальной файловой системе контейнера. /path/to/license/directory

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


docker run --rm -it -p 5000:5050 \

-v {LICENSE_MOUNT} \

{IMAGE} \

eula=accept \

billing={ENDPOINT_URI} \

apikey={API_KEY} \

DownloadLicense=True \

Mounts:License={CONTAINER_LICENSE_DIRECTORY}

В следующей команде замените заполнители пути к папке, конечной точке выставления счетов и ключу API, чтобы скачать файл лицензии для контейнера макета.

docker run -v {folder path}:/license --env Mounts:License=/license --env DownloadLicense=True --env Eula=accept --env Billing={billing endpoint} --env ApiKey={api key} mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout-3.0:latest

После настройки контейнера используйте следующий раздел, чтобы запустить контейнер в вашей среде с лицензией и соответствующими выделениями памяти и ЦП.

Модели и конфигурации контейнеров аналитики документов

После настройки контейнера значения для скачанных моделей аналитики документов и конфигурации контейнера будут созданы и отображаются в выходных данных контейнера.

Запуск контейнера в среде без подключения к Интернету

Скачав файл лицензии, вы можете запустить контейнер в отключенной среде с лицензией, соответствующей памятью и подходящими выделениями ЦП. В следующем примере показано форматирование docker run команды со значениями заполнителей. Замените эти заполнители собственными значениями.

При каждом запуске контейнера файл лицензии должен быть подключен к контейнеру, а расположение папки лицензии в локальной файловой системе контейнера должно быть указано.Mounts:License= Кроме того, необходимо указать выходное подключение, чтобы записи об использовании выставления счетов могли быть записаны.

Заполнитель Значение Формат или пример
{IMAGE} Образ контейнера, который необходимо использовать. mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice
{MEMORY_SIZE} Надлежащий объем памяти, который необходимо выделить для контейнера. 4g
{NUMBER_CPUS} Надлежащее количество ЦП, которое необходимо выделить для контейнера. 4
{LICENSE_MOUNT} Путь к расположению и подключенной лицензии. /host/license:/path/to/license/directory
{OUTPUT_PATH} Выходной путь для ведения журнала использования. /host/output:/path/to/output/directory
{CONTAINER_LICENSE_DIRECTORY} Расположение папки license в локальной файловой системе контейнера. /path/to/license/directory
{CONTAINER_OUTPUT_DIRECTORY} Расположение папки output в локальной файловой системе контейнера. /path/to/output/directory

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

docker run --rm -it -p 5000:5050 --memory {MEMORY_SIZE} --cpus {NUMBER_CPUS} \

-v {LICENSE_MOUNT} \

-v {OUTPUT_PATH} \

{IMAGE} \

eula=accept \

Mounts:License={CONTAINER_LICENSE_DIRECTORY}

Mounts:Output={CONTAINER_OUTPUT_DIRECTORY}

Запуск отключенного контейнера аналогичен запуску подключенного контейнера. Для отключенных контейнеров требуется добавленный параметр лицензии. Ниже приведен пример docker-compose.yml файла для запуска пользовательского контейнера в отключенном режиме. Добавьте переменную среды CUSTOM_LICENSE_MOUNT_PATH со значением, заданным в папку, содержащую скачанный файл лицензии, и OUTPUT_MOUNT_PATH переменную среды с заданным значением в папку, в которой хранятся журналы использования.

version: '3.3'
services:
 nginx:
  image: nginx:alpine
  container_name: reverseproxy
  volumes:
    - ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf
  ports:
    - "5000:5050"
 layout:
  container_name: azure-cognitive-service-layout
  image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout-3.0:latest
  environment:
    eula: accept
    apikey: ${FORM_RECOGNIZER_KEY}
    billing: ${FORM_RECOGNIZER_ENDPOINT_URI}
    Logging:Console:LogLevel:Default: Information
    SharedRootFolder: /shared
    Mounts:Shared: /shared
    Mounts:Output: /logs
    Mounts:License: /license
  volumes:
    - type: bind
      source: ${SHARED_MOUNT_PATH}
      target: /shared
    - type: bind
      source: ${OUTPUT_MOUNT_PATH}
      target: /logs
    - type: bind
      source: ${LAYOUT_LICENSE_MOUNT_PATH}
      target: /license
  expose:
    - "5000"

 custom-template:
  container_name: azure-cognitive-service-custom-template
  image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/custom-template-3.0:latest
  restart: always
  depends_on:
    - layout
  environment:
    AzureCognitiveServiceLayoutHost: http://azure-cognitive-service-layout:5000
    eula: accept
    apikey: ${FORM_RECOGNIZER_KEY}
    billing: ${FORM_RECOGNIZER_ENDPOINT_URI}
    Logging:Console:LogLevel:Default: Information
    SharedRootFolder: /shared
    Mounts:Shared: /shared
    Mounts:Output: /logs
    Mounts:License: /license
  volumes:
    - type: bind
      source: ${SHARED_MOUNT_PATH}
      target: /shared
    - type: bind
      source: ${OUTPUT_MOUNT_PATH}
      target: /logs
    - type: bind
      source: ${CUSTOM_LICENSE_MOUNT_PATH}
      target: /license
  expose:
    - "5000"

 studio:
  container_name: form-recognizer-studio
  image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/studio:3.0
  environment:
    ONPREM_LOCALFILE_BASEPATH: /onprem_folder
    STORAGE_DATABASE_CONNECTION_STRING: /onprem_db/Application.db
  volumes:
    - type: bind
      source: ${FILE_MOUNT_PATH} # path to your local folder
      target: /onprem_folder
    - type: bind
      source: ${DB_MOUNT_PATH} # path to your local folder
      target: /onprem_db
  ports:
    - "5001:5001"
  user: "1000:1000" # echo $(id -u):$(id -g)

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

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

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

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

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

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

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

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

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

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

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

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

Пример конечной точки HTTPS

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

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

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

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

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

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

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

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

Устранение неполадок

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

Совет

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

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