Installer et exécuter des conteneurs Speech avec Docker

En utilisant des conteneurs, vous pouvez utiliser un sous-ensemble des fonctionnalités du service Speech dans votre propre environnement. Dans cet article, vous allez apprendre à télécharger, installer et exécuter un conteneur Speech.

Remarque

Les niveaux de tarification et d’engagement des conteneurs déconnectés sont différents des conteneurs standard. Pour plus d’informations, consultez les tarifs du service Speech.

Prérequis

Vous devez répondre aux prérequis suivants avant d’utiliser les conteneurs du service Speech. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer. Ce dont vous avez besoin :

  • Docker installé sur un ordinateur hôte. Vous devez configurer Docker pour permettre aux conteneurs de se connecter à Azure et de lui envoyer des données de facturation.
    • Sous Windows, vous devez également configurer Docker pour prendre en charge les conteneurs Linux.
    • Vous devez disposer d’une connaissance élémentaire des concepts liés à Docker.
  • Une ressource de service Speech avec le niveau tarifaire Gratuit (F0) ou Standard (S).

Arguments de facturation

Les conteneurs Speech ne sont pas concédés sous licence pour s’exécuter sans être connectés à Azure pour le comptage. Vous devez configurer votre conteneur de façon à ce qu’il communique en permanence les informations de facturation au service de mesure.

Trois paramètres principaux sont obligatoires pour tous les conteneurs Azure AI. Les termes du contrat de licence logiciel Microsoft doivent être présents avec la valeur Accepter. Un URI de point de terminaison et une clé API sont également nécessaires.

Les requêtes sur le conteneur sont facturées au niveau tarifaire de la ressource Azure utilisée pour le paramètre ApiKey.

La commande docker run démarre le conteneur quand les trois options suivantes ont des valeurs valides :

Option Description
ApiKey Clé API de la ressource Speech utilisée pour le suivi des informations de facturation.
La valeur ApiKey est utilisée pour démarrer le conteneur et est disponible sur la page Clés de la ressource Speech correspondante sur le portail Azure. Accédez à la page Clés, puis sélectionnez l’icône Copier dans le Presse-papiers.
Billing Point de terminaison de la ressource Speech utilisé pour le suivi des informations de facturation.
Le point de terminaison est disponible sur la page Vue d’ensemble du portail Azure de la ressource Speech correspondante. Accédez à la page Vue d’ensemble, puis pointez sur le point de terminaison pour afficher une icône Copier dans le Presse-papiers. Copiez et utilisez le point de terminaison si nécessaire.
Eula Indique que vous avez accepté la licence pour le conteneur.
La valeur de cette option doit être définie sur accepter.

Important

Ces clés d’abonnement sont utilisées pour accéder à votre API Azure AI Services. Ne partagez pas vos clés. Stockez-les en toute sécurité. Par exemple, utilisez Azure Key Vault. Nous vous recommandons également de regénérer ces clés régulièrement. Une seule clé est nécessaire pour effectuer un appel d’API. Lors de la régénération de la première clé, vous pouvez utiliser la deuxième clé pour un accès continu au service.

Le conteneur a besoin des valeurs d’arguments de facturation pour s’exécuter. Ces valeurs permettent au conteneur de se connecter au point de terminaison de facturation. Le conteneur crée des rapports sur l’utilisation toutes les 10 à 15 minutes. Si le conteneur ne se connecte pas à Azure dans la fenêtre de temps imparti, il continue de s’exécuter, mais ne traite pas les requêtes tant que le point de terminaison de facturation n’est pas restauré. Une tentative de connexion est effectuée 10 fois, toutes les 10 à 15 minutes. S’il ne parvient pas à se connecter au point de terminaison de facturation au cours de ces 10 essais, le conteneur cesse de traiter les demandes. Pour obtenir un exemple des informations envoyées à Microsoft pour la facturation, consultez la FAQ sur les conteneurs Azure AI dans la documentation Azure AI services.

Pour plus d’informations sur ces options, consultez Configurer des conteneurs.

Exigences et suggestions relatives au conteneur

Le tableau suivant indique l’allocation de ressources minimale et recommandée pour chaque conteneur Speech :

Conteneur Minimum Recommandé Modèle vocal
Reconnaissance vocale 4 cœurs, 4 Go de mémoire 8 cœurs, 8 Go de mémoire +4 à 8 Go de mémoire
Conteneur de reconnaissance vocale personnalisée 4 cœurs, 4 Go de mémoire 8 cœurs, 8 Go de mémoire +4 à 8 Go de mémoire
Identification de la langue parlée 1 cœur, 1 Go de mémoire 1 cœur, 1 Go de mémoire n/a
Synthèse vocale neuronale 6 cœurs, 12 Go de mémoire 8 cœurs, 16 Go de mémoire n/a

Chaque cœur doit être cadencé à au moins 2,6 gigahertz (GHz).

Le nombre de cœurs et la quantité de mémoire correspondent aux paramètres --cpus et --memory qui sont utilisés dans le cadre de la commande docker run.

Notes

Les allocations minimale et recommandée sont basées sur les limites de Docker, pas sur les ressources de l’ordinateur hôte. Prenons l’exemple des parties de la carte mémoire des conteneurs de reconnaissance vocale d’un grand modèle linguistique. Il est recommandé que le fichier entier tienne en mémoire. Vous devez ajouter 4 à 8 Go de mémoire supplémentaire pour charger les modèles vocaux (voir le tableau ci-dessus). De plus, la première exécution d’un conteneur risque de prendre plus de temps parce que les modèles sont paginés en mémoire.

Spécifications et recommandations relatives à l’ordinateur hôte

L’hôte est un ordinateur x64 qui exécute le conteneur Docker. Il peut s’agir d’un ordinateur local ou d’un service d’hébergement Docker dans Azure, comme :

Notes

Les conteneurs prennent en charge les entrées audio compressées dans le SDK Speech en utilisant GStreamer. Pour installer GStreamer dans un conteneur, suivez les instructions Linux associées dans Utilisation d’une entrée audio compressée par codec avec le kit SDK Speech.

Prise en charge d’Advanced Vector Extension

L’hôte est l’ordinateur qui exécute le conteneur Docker. L’hôte doit prendre en chargeAdvanced Vector Extensions (AVX2). Vous pouvez vérifier cette prise en charge AVX2 sur les hôtes Linux avec la commande suivante :

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

Avertissement

L’ordinateur hôte doit obligatoirement prendre en charge AVX2. Le conteneur ne fonctionnera pas correctement sans prise en charge AVX2.

Exécuter le conteneur

Utilisez la commande docker run pour exécuter le conteneur. Une fois en cours d’exécution, le conteneur continue à s’exécuter jusqu’à ce que vous l’arrêtiez.

Prenez note des meilleures pratiques suivantes avec la commande docker run :

  • Caractère de continuation de ligne : Les commandes Docker dans les sections suivantes utilisent la barre oblique inverse, \, comme caractère de continuation de ligne. Remplacez ou supprimez ce caractère en fonction des exigences de votre système d’exploitation hôte.
  • Ordre des arguments : ne changez pas l’ordre des arguments, sauf si vous avez une connaissance approfondie des conteneurs Docker.

Vous pouvez utiliser la commande docker images pour lister vos images conteneurs téléchargées. La commande suivante liste l’ID, le référentiel et la balise de chaque image conteneur téléchargée dans un tableau :

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

Voici un exemple de résultat :

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

Valider l’exécution d’un conteneur

Il existe plusieurs façons de confirmer que le conteneur s’exécute. Recherchez l’adresse IP externe et le port exposé du conteneur en question, puis ouvrez le navigateur web de votre choix. Utilisez les différentes URL de requête suivantes pour vérifier que le conteneur est en cours d’exécution.

Les exemples d’URL de requête listés ici sont http://localhost:5000, mais votre conteneur spécifique peut varier. Veillez à vous fier à l’adresse IP externe de votre conteneur et au port exposé.

URL de la demande Objectif
http://localhost:5000/ Le conteneur fournit une page d’accueil.
http://localhost:5000/ready Demandée avec la fonction d’extraction, cette URL permet de vérifier que le conteneur est prêt à accepter une requête sur le modèle. Cette requête peut être utilisée pour les probes liveness et readiness de Kubernetes.
http://localhost:5000/status Également demandée avec la fonction d’extraction, cette URL permet de vérifier si la clé API servant à démarrer le conteneur est valide sans provoquer de requête de point de terminaison. Cette requête peut être utilisée pour les probes liveness et readiness de Kubernetes.
http://localhost:5000/swagger Le conteneur fournit un ensemble complet de documentation pour les points de terminaison et une fonctionnalité Essayer. Avec cette fonctionnalité, vous pouvez entrer vos paramètres dans un formulaire HTML basé sur le web, et constituer la requête sans avoir à écrire du code. Une fois la requête retournée, un exemple de commande CURL est fourni pour illustrer les en-têtes HTTP, et le format du corps qui est nécessaire.

Arrêter le conteneur

Pour arrêter le conteneur, dans l’environnement de ligne de commande où le conteneur est en cours d’exécution, sélectionnez Ctrl+C.

Exécuter plusieurs conteneurs sur le même hôte

Si vous envisagez d’exécuter plusieurs conteneurs avec les ports exposés, veillez à exécuter chaque conteneur avec un port exposé différent. Par exemple, exécutez le premier conteneur sur le port 5000 et le second conteneur sur le port 5001.

Ce conteneur et un autre conteneur Azure AI peuvent s’exécuter en même temps sur l’hôte. Plusieurs conteneurs du même conteneur Azure AI peuvent aussi être en cours d’exécution.

URL de l’hôte

Notes

Utilisez un numéro de port unique si vous exécutez plusieurs conteneurs.

Protocol URL de l’hôte Containers
WS ws://localhost:5000 Reconnaissance vocale

Conteneur de reconnaissance vocale personnalisée
HTTP http://localhost:5000 Synthèse vocale neuronale

Identification de la langue parlée

Pour plus d’informations sur l’utilisation des protocoles WSS et HTTPS, consultez Sécurité des conteneurs dans la documentation Azure AI services.

Dépannage

Lorsque vous démarrez ou exécutez le conteneur, vous risquez de rencontrer des problèmes. Utilisez une montage de sortie et activez la journalisation. Ainsi, le conteneur peut générer des fichiers journaux utiles quand vous résolvez des problèmes.

Conseil

Pour plus d’informations et d’aide sur la résolution des problèmes, consultez la Foire aux questions (FAQ) sur les conteneurs Azure AI services dans la documentation Azure AI services.

Paramètres de journalisation

Les conteneurs Speech sont fournis avec la prise en charge de la journalisation ASP.NET Core. Voici un exemple de neural-text-to-speech container démarré avec la journalisation par défaut dans la console :

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

Pour plus d’informations sur la journalisation, consultez Configurer des conteneurs Speech et Enregistrements d’utilisation dans la documentation Azure AI services.

Conteneur de diagnostics Microsoft

Si vous rencontrez des problèmes lors de l’exécution d’un conteneur Azure AI, essayez d’utiliser le conteneur de diagnostics Microsoft. Utilisez ce conteneur pour diagnostiquer dans votre environnement de déploiement les erreurs courantes pouvant nuire au bon fonctionnement des conteneurs Azure AI.

Pour obtenir le conteneur, utilisez la commande docker pull suivante :

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

Exécutez ensuite le conteneur. Remplacez {ENDPOINT_URI} par votre point de terminaison et {API_KEY} par la clé de votre ressource :

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

Le conteneur teste la connectivité réseau avec le point de terminaison de facturation.

Exécuter des conteneurs déconnectés

Pour exécuter des conteneurs déconnectés (non connectés à Internet), vous devez envoyer ce formulaire de demande et attendre l’approbation. Pour plus d’informations sur l’application et l’achat d’un plan d’engagement pour utiliser des conteneurs dans des environnements déconnectés, consultez Utiliser des conteneurs dans des environnements déconnectés dans la documentation Azure AI services.

Étapes suivantes