Installare ed eseguire contenitori voce con Docker

Usando i contenitori, è possibile usare un subset delle funzionalità del servizio Voce nel proprio ambiente. Questo articolo illustra come scaricare, installare ed eseguire un contenitore Voce.

Nota

I prezzi e i livelli di impegno dei contenitori disconnessi variano a seconda dei contenitori standard. Per altre informazioni, vedere Prezzi del servizio Voce.

Prerequisiti

Prima di usare i contenitori del servizio Voce, è necessario soddisfare i prerequisiti seguenti. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare. È necessario:

  • Docker installato in un computer host. Docker deve essere configurato per consentire ai contenitori di connettersi ai dati di fatturazione e inviarli ad Azure.
    • In Windows, è anche necessario configurare Docker per supportare i contenitori Linux.
    • È necessario avere una conoscenza di base dei concetti di Docker.
  • Una risorsa del servizio Voce con il piano tariffario gratuito (F0) o Standard (S).

Argomenti di fatturazione

I contenitori voce non sono concessi in licenza per l'esecuzione senza essere connessi ad Azure per la misurazione. È necessario configurare il contenitore per comunicare sempre le informazioni di fatturazione con il servizio di misurazione.

Sono necessari tre parametri principali per tutti i contenitori di Intelligenza artificiale di Azure. Le Condizioni di licenza software Microsoft devono essere presenti con il valore accept. Sono necessari anche un URI endpoint e una chiave API.

Le query al contenitore vengono fatturate al piano tariffario della risorsa di Azure usata per il ApiKey parametro .

Il docker run comando avvia il contenitore quando vengono fornite tutte e tre le opzioni seguenti con valori validi:

Opzione Descrizione
ApiKey Chiave API della risorsa Voce usata per tenere traccia delle informazioni di fatturazione.
Il ApiKey valore viene usato per avviare il contenitore ed è disponibile nella pagina Chiavi di portale di Azure della risorsa Voce corrispondente. Passare alla pagina Chiavi e selezionare l'icona Copia negli Appunti.
Billing Endpoint della risorsa Voce usata per tenere traccia delle informazioni di fatturazione.
L'endpoint è disponibile nella pagina panoramica portale di Azure della risorsa Voce corrispondente. Passare alla pagina Panoramica, passare il puntatore del mouse sull'endpoint e viene visualizzata un'icona Copia negli Appunti. Copiare e usare l'endpoint, se necessario.
Eula Indica che è la licenza per il contenitore è stata accettata.
Il valore di questa opzione deve essere impostato su accept.

Importante

Queste chiavi di sottoscrizione vengono usate per accedere all'API dei servizi di intelligenza artificiale di Azure. Non condividere le chiavi. Archiviarli in modo sicuro. Ad esempio, usare Azure Key Vault. È anche consigliabile rigenerare regolarmente queste chiavi. Per effettuare una chiamata API è necessaria una sola chiave. Quando si rigenera la prima chiave, è possibile usare la seconda chiave per l'accesso continuo al servizio.

Per eseguire il contenitore, sono necessari i valori dell'argomento di fatturazione. Questi valori consentono al contenitore di connettersi all'endpoint di fatturazione. Il contenitore segnala l'utilizzo ogni 10-15 minuti. Se il contenitore non si connette ad Azure entro la finestra temporale consentita, continuerà a essere eseguito ma non fornirà query finché l'endpoint di fatturazione non verrà ripristinato. Il tentativo di connessione viene effettuato 10 volte nello stesso intervallo di tempo di 10-15 minuti. Se non riesce a connettersi all'endpoint di fatturazione entro i 10 tentativi, il contenitore smette di gestire le richieste. Per un esempio delle informazioni inviate a Microsoft per la fatturazione, vedere domande frequenti sul contenitore di Intelligenza artificiale di Azure nella documentazione dei servizi di intelligenza artificiale di Azure.

Per altre informazioni su queste opzioni, vedere Configurare i contenitori.

Indicazioni e requisiti per i contenitori

La tabella seguente descrive l'allocazione minima e consigliata delle risorse per ogni contenitore Voce:

Contenitore Requisiti minimi Requisiti consigliati Modello di riconoscimento vocale
Riconoscimento vocale 4 core, 4 GB di memoria 8 core, 8 GB di memoria Da +4 a 8 GB di memoria
Riconoscimento vocale personalizzato 4 core, 4 GB di memoria 8 core, 8 GB di memoria Da +4 a 8 GB di memoria
Identificazione della lingua del riconoscimento vocale 1 core, 1 GB di memoria 1 core, 1 GB di memoria n/d
Sintesi vocale neurale 6 core, 12 GB di memoria 8 core, 16 GB di memoria n/d

Ogni core deve essere di almeno 2,6 gigahertz (GHz) o superiore.

Core e memoria corrispondono alle impostazioni --cpus e --memory che vengono usate come parte del comando docker run.

Nota

Le allocazioni minime e consigliate sono basate sui limiti di Docker, non sulle risorse del computer host. Ad esempio, parti della mappa di memoria dei contenitori di riconoscimento vocale di un modello linguistico di grandi dimensioni. È consigliabile che l'intero file sia in memoria. È necessario aggiungere altri 4-8 GB per caricare i modelli di riconoscimento vocale (vedere la tabella precedente). Inoltre, la prima esecuzione di uno dei contenitori potrebbe richiedere più tempo perché i modelli vengono inseriti in memoria.

Requisiti e consigli per i computer host

L'host è un computer basato su x64 che esegue il contenitore Docker. Può essere un computer dell'ambiente locale o un servizio di hosting Docker in Azure, tra cui:

Nota

I contenitori supportano l'input audio compresso per Speech SDK usando GStreamer. Per installare GStreamer in un contenitore, seguire le istruzioni linux per GStreamer in Usare l'input audio compresso codec con Speech SDK.

Supporto avanzato dell'estensione vettoriale

L'host è il computer che esegue il contenitore Docker. L'host deve supportareAdvanced Vector Extensions (AVX2). È possibile verificare il supporto di AVX2 negli host Linux con il comando seguente:

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

Avviso

Il computer host è necessario per supportare AVX2. Il contenitore non funzionerà correttamente senza il supporto di AVX2.

Eseguire il contenitore

Usare il comando docker run per eseguire il contenitore. Dopo l'esecuzione, il contenitore continua a essere eseguito fino a quando non si arresta il contenitore.

Prendere nota delle procedure consigliate seguenti con il docker run comando :

  • Carattere di continuazione riga: i comandi Docker nelle sezioni seguenti usano la barra rovesciata, \, come carattere di continuazione di riga. Sostituire o rimuovere questo carattere in base ai requisiti del sistema operativo host.
  • Ordine degli argomenti: non modificare l'ordine degli argomenti a meno che non si abbia familiarità con i contenitori Docker.

È possibile usare il comando docker images per visualizzare l'elenco delle immagini dei contenitori scaricate. Il comando seguente elenca l'ID, il repository e il tag di ogni immagine del contenitore scaricata, formattata come tabella:

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

Ecco un risultato di esempio:

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

Verificare che il contenitore sia in esecuzione

Per verificare se il contenitore è in esecuzione, sono disponibili diverse opzioni. Individuare l'indirizzo IP esterno e la porta esposta del contenitore in questione e aprire il Web browser preferito. Usare i vari URL di richiesta che seguono per verificare che il contenitore sia in esecuzione.

Gli URL di richiesta di esempio elencati di seguito sono http://localhost:5000, ma il contenitore specifico può variare. Assicurarsi di basarsi sull'indirizzo IP esterno del contenitore e sulla porta esposta.

Richiesta URL Scopo
http://localhost:5000/ Il contenitore fornisce un home page.
http://localhost:5000/ready Richiesto con GET, questo URL fornisce una verifica che il contenitore sia pronto per accettare una query sul modello. Questa richiesta può essere usata per i probe di attività e di idoneità di Kubernetes.
http://localhost:5000/status Richiesto anche con GET, questo URL verifica se la chiave API usata per avviare il contenitore è valida senza causare una query dell'endpoint. Questa richiesta può essere usata per i probe di attività e di idoneità di Kubernetes.
http://localhost:5000/swagger Il contenitore fornisce un set completo di documentazione per gli endpoint e una funzionalità Prova. Con questa funzionalità, è possibile immettere le impostazioni in un modulo HTML basato sul Web ed eseguire la query senza scrivere codice. Dopo che la query restituisce il risultato, viene fornito un comando CURL di esempio per illustrare il formato richiesto per il corpo e le intestazioni HTTP.

Arrestare il contenitore

Per arrestare il contenitore, nell'ambiente della riga di comando in cui è in esecuzione il contenitore selezionare CTRL+C.

Eseguire più contenitori nello stesso host

Se si intende eseguire più contenitori con porte esposte, assicurarsi di eseguire ogni contenitore con una porta esposta diversa. Eseguire ad esempio il primo contenitore sulla porta 5000 e il secondo sulla porta 5001.

È possibile avere questo contenitore e un contenitore di Intelligenza artificiale di Azure diverso in esecuzione nell'host insieme. È anche possibile avere più contenitori dello stesso contenitore di Azure per intelligenza artificiale in esecuzione.

URL host

Nota

Usare un numero di porta univoco se si eseguono più contenitori.

Protocollo Host URL Contenitori
WS ws://localhost:5000 Riconoscimento vocale

Riconoscimento vocale personalizzato
HTTP http://localhost:5000 Sintesi vocale neurale

Identificazione della lingua del riconoscimento vocale

Per altre informazioni sull'uso dei protocolli WSS e HTTPS, vedere Sicurezza dei contenitori nella documentazione dei servizi di intelligenza artificiale di Azure.

Risoluzione dei problemi

Quando si avvia o si esegue il contenitore, è possibile che si verifichino problemi. Usare un montaggio di output e abilitare la registrazione. In questo modo il contenitore può generare file di log utili quando si risolvono i problemi.

Suggerimento

Per altre informazioni sulla risoluzione dei problemi e indicazioni, vedere Domande frequenti sui contenitori di Intelligenza artificiale di Azure nella documentazione dei servizi di intelligenza artificiale di Azure.

Impostazioni di registrazione

I contenitori voce sono dotati di supporto per la registrazione di ASP.NET Core. Di seguito è riportato un esempio di neural-text-to-speech container attività avviata con la registrazione predefinita nella 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

Per altre informazioni sulla registrazione, vedere Configurare i contenitori voce e i record di utilizzo nella documentazione dei servizi di intelligenza artificiale di Azure.

Contenitore di diagnostica Microsoft

Se si verificano problemi durante l'esecuzione di un contenitore di Intelligenza artificiale di Azure, è possibile provare a usare il contenitore di diagnostica Microsoft. Usare questo contenitore per diagnosticare gli errori comuni nell'ambiente di distribuzione che potrebbero impedire il funzionamento dei contenitori di Intelligenza artificiale di Azure come previsto.

Per ottenere il contenitore, usare il comando seguente docker pull :

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

Eseguire quindi il contenitore. Sostituire {ENDPOINT_URI} con l'endpoint e sostituire {API_KEY} con la chiave alla risorsa:

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

Il contenitore verifica la connettività di rete all'endpoint di fatturazione.

Eseguire contenitori disconnessi

Per eseguire contenitori disconnessi (non connessi a Internet), è necessario inviare il modulo di richiesta e attendere l'approvazione. Per altre informazioni sull'applicazione e l'acquisto di un piano di impegno per l'uso di contenitori in ambienti disconnessi, vedere Usare i contenitori in ambienti disconnessi nella documentazione dei servizi di intelligenza artificiale di Azure.

Passaggi successivi