Installieren und Ausführen von Speech-Containern mit Docker

Die Verwendung von Containern ermöglicht es Ihnen, eine Teilmenge der Features des Speech-Diensts in Ihrer eigenen Umgebung zu verwenden. In diesem Artikel erfahren Sie, wie Sie einen Speech-Container herunterladen, installieren und ausführen.

Hinweis

Die Preise für getrennte Container und die Mindestabnahmen weichen von den Standardcontainern ab. Weitere Informationen finden Sie unter Preise für den Speech-Dienst.

Voraussetzungen

Für die Verwendung von Speech-Dienstcontainern müssen folgende Voraussetzungen erfüllt sein. Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen. Erforderlich:

  • Docker ist auf einem Hostcomputer installiert. Docker muss so konfiguriert werden, dass die Container eine Verbindung mit Azure herstellen und Abrechnungsdaten an Azure senden können.
    • Unter Windows muss Docker auch für die Unterstützung von Linux-Containern konfiguriert werden.
    • Sie sollten über grundlegende Kenntnisse der Docker-Konzepte verfügen.
  • Eine Speech-Dienstressource im Tarif „Free“ (F0) oder „Standard“ (S)

Abrechnungsargumente

Für Speech-Container besteht die Lizenz zur Ausführung nur, wenn sie zu Messzwecken mit Azure verbunden sind. Sie müssen Ihren Container so konfigurieren, dass immer Abrechnungsinformationen an den Messungsdienst übermittelt werden.

Für alle Azure KI-Container werden drei primäre Parameter benötigt. Die Microsoft-Software-Lizenzbedingungen müssen mit dem Wert accept vorhanden sein. Außerdem werden ein Endpunkt-URI und ein API-Schlüssel benötigt.

Abfragen des Containers werden gemäß des Tarifs der Azure-Ressource in Rechnung gestellt, die für den Parameter ApiKey verwendet wird.

Der Befehl docker run startet den Container, wenn alle drei der folgenden Optionen gültige Werte aufweisen:

Option BESCHREIBUNG
ApiKey Der API-Schlüssel der Speech-Ressource, die zum Nachverfolgen von Abrechnungsinformationen verwendet wird.
Der ApiKey-Wert wird zum Starten des Containers verwendet und ist im Azure-Portal auf der Seite Schlüssel der entsprechenden Speech-Ressource verfügbar. Wechseln Sie zur Seite Schlüssel, und wählen Sie das Symbol In Zwischenablage kopieren aus.
Billing Der Endpunkt der Speech-Ressource, die zum Nachverfolgen von Abrechnungsinformationen verwendet wird.
Der Endpunkt ist im Azure-Portal auf der Seite Übersicht der entsprechenden Cognitive Services-Ressource verfügbar. Wechseln Sie zur Seite Übersicht, zeigen Sie auf den Endpunkt, und das Symbol In Zwischenablage kopieren wird angezeigt. Kopieren Sie den Endpunkt, und verwenden Sie ihn bei Bedarf.
Eula Gibt an, dass Sie die Lizenz für den Container akzeptiert haben.
Der Wert dieser Option muss auf accept festgelegt werden.

Wichtig

Diese Abonnementschlüssel werden für den Zugriff auf Ihre Azure KI Services-API verwendet. Geben Sie Ihre Schlüssel nicht weiter. Speichern Sie diese sicher. Verwenden Sie beispielsweise Azure Key Vault. Außerdem wird empfohlen, diese Schlüssel regelmäßig neu zu generieren. Für einen API-Aufruf ist nur ein Schlüssel erforderlich. Beim Neugenerieren des ersten Schlüssels können Sie den zweiten Schlüssel für den kontinuierlichen Zugriff auf den Dienst verwenden.

Der Container benötigt die Abrechnungsargumentwerte, um ausgeführt werden zu können. Diese Werte ermöglichen es dem Container, eine Verbindung mit dem Abrechnungsendpunkt herzustellen. Der Container meldet die Nutzung etwa alle 10 bis 15 Minuten. Wenn der Container nicht innerhalb des zulässigen Zeitfensters eine Verbindung mit Azure herstellt, wird der Container weiterhin ausgeführt, verarbeitet aber keine Anfragen, bis der Abrechnungsendpunkt wiederhergestellt wurde. Es erfolgen 10 Verbindungsversuche im gleichen Zeitintervall von 10 bis 15 Minuten. Wenn die Verbindung mit dem Abrechnungsendpunkt nicht innerhalb der 10 Versuche hergestellt werden kann, wird die Bereitstellung von Anforderungen durch den Container beendet. Ein Beispiel für die Informationen, die zur Abrechnung an Microsoft gesendet werden, finden Sie in den häufig gestellten Fragen zu Azure KI-Containern in der Azure KI Services-Dokumentation.

Weitere Informationen zu diesen Optionen finden Sie unter Konfigurieren von Containern.

Containeranforderungen und -empfehlungen

Die folgende Tabelle beschreibt die minimale und empfohlene Zuordnung von Ressourcen für jeden Speech-Container:

Container Minimum Empfohlen Sprachmodell
Spracherkennung 4 Kerne, 4 GB Arbeitsspeicher 8 Kerne, 8 GB Arbeitsspeicher +4 bis 8 GB Arbeitsspeicher
Benutzerdefinierte Spracherkennung 4 Kerne, 4 GB Arbeitsspeicher 8 Kerne, 8 GB Arbeitsspeicher +4 bis 8 GB Arbeitsspeicher
Speech-Sprachenerkennung 1 Kern, 1 GB Arbeitsspeicher 1 Kern, 1 GB Arbeitsspeicher
Neuronale Sprachsynthese 6 Kerne, 12 GB Arbeitsspeicher 8 Kerne, 16 GB Arbeitsspeicher

Jeder Kern muss eine Geschwindigkeit von mindestens 2,6 GHz aufweisen.

Kern und Arbeitsspeicher entsprechen den Einstellungen --cpus und --memory, die im Rahmen des Befehls docker run verwendet werden.

Hinweis

Die Mindest- und empfohlenen Zuordnungen basieren auf Docker-Grenzwerten, nicht auf den Ressourcen des Hostcomputers. Beispielsweise bilden Spracherkennungs-Container Teile eines großen Sprachmodells ab. Wir empfehlen, dass die gesamte Datei in den Arbeitsspeicher passen sollte. Sie müssen zusätzliche 4 bis 8 GB hinzufügen, um die Sprachmodelle zu laden (siehe vorherige Tabelle). Außerdem dauert die erste Ausführung jedes Containers unter Umständen länger, da Modelle in den Arbeitsspeicher ausgelagert werden.

Anforderungen und Empfehlungen für den Hostcomputer

Der Host ist ein x64-basierter Computer, auf dem der Docker-Container ausgeführt wird. Dies kann ein lokaler Computer oder ein Docker-Hostingdienst in Azure sein, z. B.:

Hinweis

Container unterstützen komprimierte Audioeingaben an das Speech SDK mithilfe von GStreamer. Befolgen Sie zum Installieren von GStreamer in einem Container die Linux-Anweisungen für GStreamer im Artikel Verwenden von per Codec komprimierter Audioeingabe mit dem Speech SDK.

Unterstützung von Advanced Vector Extensions

Der Host ist der Computer, auf dem der Docker-Container ausgeführt wird. Der Host muss Unterstützung für Advanced Vector Extensions (AVX2) bieten. Sie können die AVX2-Unterstützung auf Linux-Hosts mit dem folgenden Befehl überprüfen:

grep -q avx2 /proc/cpuinfo && echo AVX2 supported || echo No AVX2 support detected

Warnung

Der Hostcomputer muss AVX2 unterstützen. Ohne AVX2-Unterstützung funktioniert der Container nicht ordnungsgemäß.

Ausführen des Containers

Verwenden Sie den Befehl docker run, um den Container auszuführen. Nach dem Ausführen wird der Container so lange ausgeführt, bis Sie den Container beenden.

Beachten Sie die folgenden bewährten Methoden für den docker run-Befehl:

  • Zeilenfortsetzungszeichen: In den Docker-Befehlen in den folgenden Abschnitten wird der umgekehrte Schrägstrich (\) als Zeilenfortsetzungszeichen verwendet. Ersetzen oder entfernen Sie dieses Zeichen entsprechend den Anforderungen des Hostbetriebssystems.
  • Reihenfolge der Argumente: Ändern Sie die Reihenfolge der Argumente nur, wenn Sie mit Docker-Containern vertraut sind.

Mithilfe des Befehls docker images können Sie Ihre heruntergeladenen Containerimages auflisten. Mit dem folgenden Befehl werden die ID, das Repository und das Tag der einzelnen heruntergeladenen Containerimages in Form einer Tabelle aufgelistet:

docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

Hier sehen Sie ein Beispielergebnis:

IMAGE ID         REPOSITORY                TAG
<image-id>       <repository-path/name>    <tag-name>

Überprüfen auf aktive Container

Es gibt mehrere Möglichkeiten zu überprüfen, ob ein Container aktiv ist. Suchen Sie die externe IP-Adresse und den verfügbar gemachten Port des betreffenden Containers, und öffnen Sie Ihren bevorzugten Webbrowser. Verwenden Sie die folgenden verschiedenen URLs für Anforderungen, um zu überprüfen, ob der Container ausgeführt wird.

Die hier aufgeführten Beispiel-URLs für Anforderungen sind http://localhost:5000, aber Ihr spezifischer Container kann variieren. Stellen Sie sicher, dass Sie sich auf die externe IP-Adresse Ihres Containers und den verfügbar gemachten Port beziehen.

Anforderungs-URL Zweck
http://localhost:5000/ Der Container stellt eine Homepage bereit.
http://localhost:5000/ready Diese mit GET angeforderte URL ermöglicht es, zu überprüfen, ob der Container eine Abfrage des Modells akzeptiert. Diese Anforderung kann für Live- und Bereitschaftstests von Kubernetes verwendet werden.
http://localhost:5000/status Diese URL wird auch mit GET angefordert und überprüft, ob der zum Starten des Containers verwendete API-Schlüssel gültig ist, ohne dass eine Endpunktabfrage veranlasst wird. Diese Anforderung kann für Live- und Bereitschaftstests von Kubernetes verwendet werden.
http://localhost:5000/swagger Der Container stellt eine umfassende Dokumentation für die Endpunkte sowie die Funktion Jetzt ausprobieren bereit. Diese Funktion ermöglicht Ihnen die Eingabe Ihrer Einstellungen in einem webbasierten HTML-Formular, sodass Sie die Abfrage ausführen können, ohne Code schreiben zu müssen. Nach der Rückgabe der Abfrage wird ein cURL-Beispielbefehl bereitgestellt, der das erforderliche Format für HTTP-Header und -Text veranschaulicht.

Beenden des Containers

Zum Herunterfahren des Containers drücken Sie in der Befehlszeilenumgebung, in der der Container ausgeführt wird, STRG+C.

Ausführen mehrerer Container auf dem gleichen Host

Wenn Sie beabsichtigen, mehrere Container mit offengelegten Ports auszuführen, stellen Sie sicher, dass jeder Container mit einem anderen offengelegten Port ausgeführt wird. Führen Sie beispielsweise den ersten Container an Port 5000 und den zweiten Container an Port 5001 aus.

Sie können diesen Container zusammen mit einem anderen Azure KI-Container auf dem Host ausführen. Sie können auch mehrere Container desselben Azure KI-Containers ausführen.

Host-URLs

Hinweis

Verwenden Sie eine eindeutige Portnummer, wenn Sie mehrere Container verwenden.

Protocol Host-URL Container
WS ws://localhost:5000 Spracherkennung

Benutzerdefinierte Spracherkennung
HTTP http://localhost:5000 Neuronale Sprachsynthese

Speech-Sprachenerkennung

Weitere Informationen zur Verwendung von WSS- und HTTPS-Protokollen finden Sie unter Containersicherheit in der Azure KI Services-Dokumentation.

Problembehandlung

Wenn Sie den Container starten oder ausführen, kann es zu Problemen kommen. Verwenden Sie eine Bereitstellung für die Ausgabe, und aktivieren Sie die Protokollierung. Auf diese Weise kann der Container Protokolldateien generieren, die bei der Behandlung von Problemen helfen.

Tipp

Weitere Informationen und Anleitungen zur Problembehandlung finden Sie unter Häufig gestellte Fragen (FAQ) zu Azure KI Services-Containern in der Azure KI Services-Dokumentation.

Logging-Einstellungen

Speech-Container werden mit Unterstützung für die ASP.NET Core-Protokollierung bereitgestellt. Hier sehen Sie ein Beispiel für den gestarteten neural-text-to-speech container mit Standardprotokollierung an der Konsole:

docker run --rm -it -p 5000:5000 --memory 12g --cpus 6 \
mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech \
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY} \
Logging:Console:LogLevel:Default=Information

Weitere Informationen zur Protokollierung finden Sie unter Konfigurieren von Speech-Containern und unter Nutzungsdatensätze in der Azure KI Services-Dokumentation.

Microsoft-Diagnosecontainer

Wenn Sie Probleme beim Ausführen eines Azure KI-Containers haben, können Sie versuchen, den Microsoft-Diagnosecontainer zu verwenden. Verwenden Sie diesen Container zum Diagnostizieren häufiger Fehler in Ihrer Bereitstellungsumgebung, die ggf. verhindern, dass Azure KI-Container wie erwartet funktionieren.

Zum Abrufen des Containers verwenden Sie den folgenden Befehl: docker pull

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

Führen Sie dann den Container aus. Ersetzen Sie {ENDPOINT_URI} durch Ihren Endpunkt, und ersetzen Sie {API_KEY} durch den Schlüssel für Ihre Ressource:

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

Der Container überprüft die Netzwerkkonnektivität mit dem Abrechnungsendpunkt.

Ausführen nicht verbundener Container

Um nicht (mit dem Internet) verbundene Container auszuführen, müssen Sie dieses Anforderungsformular übermitteln und auf die Genehmigung warten. Weitere Informationen zur Anwendung und zum Erwerb eines Mindestabnahmeplans für den Einsatz von Containern in nicht verbundenen Umgebungen finden Sie unter Verwenden von Containern in nicht verbundenen Umgebungen in der Dokumentation zu Azure KI Services.

Nächste Schritte