Freigeben über


Container in getrennten (Offline)-Umgebungen

Unterstützung für Container ist derzeit mit der Document Intelligence-Version 2022-08-31 (GA) für alle Modelle und 2023-07-31 (GA) für Lese-, Layout-, Rechnungs-, Beleg- und ID-Dokumentmodelle verfügbar:

✔️ Weitere Informationen finden Sie unter Document Intelligence v3.0-Container in getrennten Umgebungen für unterstützte Containerdokumentation.

Dieser Inhalt gilt für:Häkchenv3.0 (GA)Häkchenv3.1 (GA)

Was sind nicht verbundene Container?

Azure KI-Container bieten Ihnen die Flexibilität, einige Dokument Intelligenz-Dienste lokal in Containern auszuführen. Verbundene Container werden lokal in Ihrer Umgebung ausgeführt und senden Nutzungsinformationen zur Abrechnung an die Cloud. Nicht verbundene Container sind für Szenarien vorgesehen, in denen zur Ausführung der Container keine Verbindung mit der Cloud benötigt wird.

Azure KI Dokument Intelligenz-Container ermöglichen es Ihnen, Dokument Intelligenz-APIs mit den Vorteilen der Containerisierung zu nutzen. Nicht verbundene Container werden über Mindestabnahme-Preise angeboten, die im Vergleich zur nutzungsbasierten Bezahlung zu einem reduzierten Preis angeboten werden. Bei Tarifen mit Mindestabnahmen können Sie die Dokument Intelligenz-Features zu einer festen Gebühr und mit vorhersagbaren Gesamtkosten nutzen, basierend auf den Anforderungen Ihrer Workload.

Erste Schritte

Bevor Sie versuchen, einen Docker-Container in einer Offline-Umgebung auszuführen, stellen Sie sicher, dass Sie die folgenden Anforderungen vertraut sind, um den Container erfolgreich herunterzuladen und zu verwenden:

  • Anforderungen und Empfehlungen für den Hostcomputer.
  • Der Docker-Befehl pull zum Herunterladen des Containers
  • Wie Sie überprüfen, ob ein Container ausgeführt wird.
  • Wie Sie Abfragen an den Endpunkt des Containers senden, sobald dieser ausgeführt wird.

Anfordern des Zugriffs zur Verwendung von Containern in nicht verbundenen Umgebungen

Bevor Sie Dokument Intelligenz-Container in nicht verbundenen Umgebungen einsetzen können, müssen Sie zunächst ein Anforderungsformular ausfüllen und einreichen und einen Mindestabnahmeplan erwerben.

Erstellen einer neuen Ressource im Azure-Portal

Beginnen Sie, indem Sie eine neue Ressource im Portal bereitstellen.

  • Stellen Sie sicher, dass Sie für den Tarif die Option Commitment tier disconnected containers DC0 auswählen.

  • Wählen Sie aus den Tarifen mit Mindestabnahme die geeignete Tarifoption aus: „Benutzerdefiniert“, „Lesen“ oder „Vordefiniert“.

    Screenshot, der die Tarifkonfiguration einer nicht verbundenen Instanz im Azure-Portal zeigt.

Container Minimum Empfohlen Prepaidtarifplan
Read 8 Kerne, 10 GB Arbeitsspeicher 8 Kerne, 24 GB Arbeitsspeicher OCR (Read)
Layout 8 Kerne, 16 GB Arbeitsspeicher 8 Kerne, 24 GB Arbeitsspeicher Vordefiniert
Business Card 8 Kerne, 16 GB Arbeitsspeicher 8 Kerne, 24 GB Arbeitsspeicher Vordefiniert
General Document 8 Kerne, 12 GB Arbeitsspeicher 8 Kerne, 24 GB Arbeitsspeicher Vordefiniert
ID Document 8 Kerne, 8 GB Arbeitsspeicher 8 Kerne, 24 GB Arbeitsspeicher Vordefiniert
Invoice 8 Kerne, 16 GB Arbeitsspeicher 8 Kerne, 24 GB Arbeitsspeicher Vordefiniert
Receipt 8 Kerne, 11 GB Arbeitsspeicher 8 Kerne, 24 GB Arbeitsspeicher Vordefiniert
Custom Template 8 Kerne, 16 GB Arbeitsspeicher 8 Kerne, 24 GB Arbeitsspeicher Benutzerdefinierte API

Erfassen erforderlicher Parameter

Für sämtliche Azure KI Services-Container sind drei Parameter erforderlich:

  • Die Lizenzbedingungen müssen mit dem Wert accept vorhanden sein.
  • Die Endpunkt-URL für Ihre Ressource aus dem Azure-Portal.
  • Der API-Schlüssel für Ihre Ressource aus dem Azure-Portal.

Beim ersten Ausführen des Containers werden sowohl eine Endpunkt-URL als auch ein API-Schlüssel benötigt, um ihn für die Verwendung ohne Internetverbindung zu konfigurieren. Sie können den Schlüssel und den Endpunkt auf der Seite Schlüssel und Endpunkt für Ihre Ressource im Azure-Portal finden:

Screenshot: Seite mit Schlüsseln und Endpunkt im Azure-Portal

Wichtig

Sie verwenden Ihren Schlüssel und Endpunkt nur, um den Container so zu konfigurieren, dass er in einer nicht verbundenen Umgebung ausgeführt wird. Nachdem Sie den Container konfiguriert haben, benötigen Sie die Schlüssel- und Endpunktwerte nicht zum Senden von API-Anforderungen. Speichern Sie diese beispielsweise sicher mit Azure Key Vault. Für diesen Prozess ist nur ein Schlüssel erforderlich.

Herunterladen eines Docker-Containers mit docker pull

Laden Sie den Docker-Container herunter, der für die Ausführung in einer nicht verbundenen Umgebung genehmigt ist. Beispiel:

Docker-Pullbefehl Wert Format
● ● ● docker pull [image]

docker pull [image]latest
Das neueste Containerimage. ● ● ● mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout-3.0:latest

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

Beispiel für Docker-Pullbefehl

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

Konfigurieren des Containers für die Ausführung in einer nicht verbundenen Umgebung

Die Images nicht verbundener Container sind mit denen von verbundenen Containern identisch. Der Hauptunterschied besteht darin, dass für die getrennten Container eine Lizenzdatei benötigt wird. Diese Lizenzdatei wird heruntergeladen, wenn der Container im verbundenen Modus gestartet wird und der Parameter „downloadLicense“ auf „true“ festgelegt ist.

Nachdem Ihr Container heruntergeladen wurde, müssen Sie den Befehl docker run mit dem folgenden Parameter ausführen:

  • DownloadLicense=True. Dieser Parameter lädt eine Lizenzdatei herunter, mit der Ihr Docker-Container ausgeführt werden kann, wenn er nicht mit dem Internet verbunden ist. Sie enthält auch ein Ablaufdatum, nach dem die Lizenzdatei nicht mehr für die Ausführung des Containers gültig ist. Sie können die Lizenzdatei nur in entsprechenden genehmigten Containern verwenden.

Wichtig

Der Befehl docker run generiert eine Vorlage, die Sie zum Ausführen des Containers verwenden können. Die Vorlage enthält Parameter, die Sie für die heruntergeladenen Modelle und die Konfigurationsdatei benötigen. Stellen Sie sicher, dass Sie diese Vorlage speichern.

Das folgende Beispiel zeigt die Formatierung für den mit Platzhalterwerten zu verwendenden Befehl docker run. Ersetzen Sie diese Platzhalterwerte durch eigene Werte.

Platzhalter Wert Format oder Beispiel
{IMAGE} Das Containerimage, das Sie verwenden möchten. mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice
{LICENSE_MOUNT} Der Pfad, in den die Lizenz heruntergeladen und eingebunden wird. /host/license:/path/to/license/directory
{ENDPOINT_URI} Der Endpunkt für Ihre Service Request-Authentifizierung. Sie finden ihn im Azure-Portal auf der Seite Key and endpoint (Schlüssel und Endpunkt) Ihrer Ressource. https://<your-custom-subdomain>.cognitiveservices.azure.com
{API_KEY} Der Schlüssel für Ihre Dokument Intelligenz-Ressource. Sie finden ihn im Azure-Portal auf der Seite Key and endpoint (Schlüssel und Endpunkt) Ihrer Ressource. {string}
{CONTAINER_LICENSE_DIRECTORY} Speicherort des Lizenzordners im lokalen Dateisystem des Containers. /path/to/license/directory

Beispiel für Befehl 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}

Ersetzen Sie im folgenden Befehl die Platzhalter für Ordnerpfad, Abrechnungsendpunkt und API-Schlüssel, um eine Lizenzdatei für den Layoutcontainer herunterzuladen.

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

Nachdem der Container konfiguriert wurde, verwenden Sie den nächsten Abschnitt, um den Container in Ihrer Umgebung mit der Lizenz und den entsprechenden Arbeitsspeicher- und CPU-Zuteilungen auszuführen.

Modelle und Konfiguration für Dokument Intelligenz-Container

Nachdem Sie den Container konfiguriert haben, werden die Werte für die heruntergeladenen Dokument Intelligenz-Modelle und die Containerkonfiguration generiert und in der Containerausgabe angezeigt.

Ausführen des Containers in einer nicht verbundenen Umgebung

Nachdem Sie die Lizenzdatei heruntergeladen haben, können Sie den Container in einer nicht verbundenen Umgebung mit Ihrer Lizenz, dem entsprechenden Arbeitsspeicher und den entsprechenden CPU-Zuteilungen ausführen. Das folgende Beispiel zeigt die Formatierung des Befehls docker run mit Platzhalterwerten. Ersetzen Sie diese Platzhalterwerte durch eigene Werte.

Immer wenn der Container ausgeführt wird, muss die Lizenzdatei in den Container eingebunden und der Speicherort des Lizenzordners im lokalen Dateisystem des Containers muss mit Mounts:License= angegeben werden. Außerdem muss eine Ausgabeeinbindung angegeben werden, sodass Einträge für die Abrechnung des Verbrauchs geschrieben werden können.

Platzhalter Wert Format oder Beispiel
{IMAGE} Das Containerimage, das Sie verwenden möchten. mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice
{MEMORY_SIZE} Die geeignete Größe des Arbeitsspeichers, der für Ihren Container zugeordnet werden soll. 4g
{NUMBER_CPUS} Die geeignete Anzahl von CPUs, die für Ihren Container zugeordnet werden soll. 4
{LICENSE_MOUNT} Der Pfad, in dem sich die Lizenz befindet und eingebunden ist. /host/license:/path/to/license/directory
{OUTPUT_PATH} Der Ausgabepfad für die Protokollierung von Verwendungseinträgen. /host/output:/path/to/output/directory
{CONTAINER_LICENSE_DIRECTORY} Speicherort des Lizenzordners im lokalen Dateisystem des Containers. /path/to/license/directory
{CONTAINER_OUTPUT_DIRECTORY} Speicherort des Ausgabeordners im lokalen Dateisystem des Containers. /path/to/output/directory

Beispiel für Befehl 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}

Das Starten eines getrennten Containers ähnelt dem Starten eines verbundenen Containers. Für nicht verbundene Container ist ein zusätzlicher Lizenzparameter erforderlich. Nachfolgend sehen Sie eine beispielhafte Datei „docker-compose.yml“ zum Starten eines benutzerdefinierten Containers im getrennten Modus. Fügen Sie die Umgebungsvariable CUSTOM_LICENSE_MOUNT_PATH mit einem Wert hinzu, der auf den Ordner festgelegt ist, der die heruntergeladene Lizenzdatei enthält und die Umgebungsvariable OUTPUT_MOUNT_PATH mit einem Wert hinzu, der auf den Ordner festgelegt ist, der die Verwendungsprotokolle enthält.

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)

Andere Parameter und Befehle

Im Folgenden finden Sie einige weitere Parameter und Befehle, die Sie benötigen, um den Container auszuführen.

Verwendungseinträge

Beim Betrieb von Docker-Containern in einer nicht verbundenen Umgebung schreibt der Container Verwendungseinträge in ein Volume, wo sie im Laufe der Zeit gesammelt werden. Sie können auch einen REST-API-Endpunkt aufrufen, um einen Bericht zur Dienstnutzung zu generieren.

Argumente zum Speichern von Protokollen

Wenn er in einer nicht verbundenen Umgebung ausgeführt wird, muss eine Ausgabeeinbindung für den Container verfügbar sein, um Nutzungsprotokolle zu speichern. Im folgenden Beispiel würden Sie z. B. -v /host/output:{OUTPUT_PATH} und Mounts:Output={OUTPUT_PATH} einbeziehen und {OUTPUT_PATH} durch den Pfad ersetzen, unter dem die Protokolle gespeichert werden:

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

Abrufen von Einträgen mithilfe der Containerendpunkte

Der Container stellt zwei Endpunkte zum Zurückgeben von Einträgen zu seiner Nutzung bereit.

Abrufen aller Einträge

Der folgende Endpunkt stellt einen Bericht bereit, der alle im eingebundenen Verzeichnis der Abrechnungseinträge erfassten Nutzungen zusammenfasst.

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

Beispiel für HTTPS-Endpunkt

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

Der Endpunkt des Nutzungsprotokolls gibt eine JSON-Antwort wie im folgenden Beispiel zurück:

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

Abrufen der Einträge für einen bestimmten Monat

Der folgende Endpunkt stellt einen Bericht bereit, in dem die Nutzung für einen bestimmten Monat und ein bestimmtes Jahr zusammengefasst wird.

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

Dieser Endpunkt der Nutzungsprotokolle gibt eine JSON-Antwort wie im folgenden Beispiel zurück:

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

Problembehandlung

Führen Sie den Container mit aktivierter Ausgabebereitstellung und Protokollierung aus. Diese Einstellungen ermöglichen es dem Container, Protokolldateien zu generieren, die für die Fehlerbehebung bei Problemen hilfreich sind, die beim Starten oder Ausführen des Containers auftreten.

Tipp

Weitere Informationen zur Problembehandlung und Anleitungen finden Sie unter Nicht verbundene Container: Häufig gestellte Fragen (FAQ).

Nächste Schritte