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:
- REST-API
2022-08-31 (GA)
- REST-API
2023-07-31 (GA)
- Clientbibliotheken mit dem Ziel
REST API 2022-08-31 (GA)
- Clientbibliotheken mit dem Ziel
REST API 2023-07-31 (GA)
✔️ Weitere Informationen finden Sie unter Document Intelligence v3.0-Container in getrennten Umgebungen für unterstützte Containerdokumentation.
Dieser Inhalt gilt für: Version 3.0 (GA) Version 3.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 das entsprechende Preisniveau aus mindestens einer benutzerdefinierten, gelesenen oder vordefinierten Verpflichtungsstufe aus.
Container | Minimum | Empfohlen | Prepaidtarifplan |
---|---|---|---|
Read |
8 Kerne, 10 GB Arbeitsspeicher |
8 Kerne, 24 GB Arbeitsspeicher |
OCR (Lesen) |
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:
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).