Použití kontejnerů služby Speech s Kubernetes a Helmem

Jednou z možností správy kontejnerů služby Speech v místním prostředí je použití Kubernetes a Helmu. Pomocí Kubernetes a Helmu definujeme řeč na text a text na image kontejnerů řeči, vytvoříme balíček Kubernetes. Tento balíček se nasadí do místního clusteru Kubernetes. Nakonec prozkoumáme, jak otestovat nasazené služby a různé možnosti konfigurace. Další informace o spouštění kontejnerů Dockeru bez orchestrace Kubernetes najdete v tématu Instalace a spouštění kontejnerů služby Speech.

Požadavky

Před použitím kontejnerů služby Speech v místním prostředí jsou splněné následující požadavky:

Požaduje se Účel
Azure Account Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
Přístup ke službě Container Registry Aby kubernetes mohl načíst image Dockeru do clusteru, potřebuje přístup k registru kontejneru.
Rozhraní příkazového řádku Kubernetes Rozhraní příkazového řádku Kubernetes se vyžaduje ke správě sdílených přihlašovacích údajů z registru kontejneru. Kubernetes je také potřeba před Helmem, což je správce balíčků Kubernetes.
Rozhraní příkazového řádku Helm Nainstalujte rozhraní příkazového řádku Helm, které se používá k instalaci chartu Helm (definice balíčku kontejneru).
Prostředek služby Speech Abyste mohli tyto kontejnery používat, musíte mít:

Prostředek Azure služby Speech , který získá přidružený fakturační klíč a identifikátor URI koncového bodu fakturace. Obě hodnoty jsou k dispozici na stránkách Přehled služby Speech a Klíče na webu Azure Portal a vyžadují se ke spuštění kontejneru.

{API_KEY}: klíč prostředku

{ENDPOINT_URI}: Příklad identifikátoru URI koncového bodu: https://eastus.api.cognitive.microsoft.com/sts/v1.0

Odkazujte na podrobnosti o hostitelském počítači kontejneru služby Speech jako referenci. Tento chart Helm automaticky vypočítá požadavky na procesor a paměť na základě toho, kolik dekódů (souběžných požadavků) určuje uživatel. Kromě toho se upravuje na základě toho, zda optimalizace zvukového nebo textového vstupu jsou nakonfigurovány jako enabled. Chart Helm ve výchozím nastavení obsahuje dva souběžné požadavky a zakázání optimalizace.

Služba CPU / kontejner Paměť / kontejner
převod řeči na text jeden dekodér vyžaduje minimálně 1,150 milicores. Pokud je tato možnost optimizedForAudioFile povolená, je vyžadováno 1 950 milicores. (výchozí: dva dekodéry) Povinné: 2 GB
Omezeno: 4 GB
převod textu na řeč jeden souběžný požadavek vyžaduje minimálně 500 milicores. Pokud je tato optimizeForTurboMode možnost povolená, je vyžadováno 1 000 milicores. (výchozí: dva souběžné požadavky) Povinné: 1 GB
Omezeno: 2 GB

Připojení do clusteru Kubernetes

Očekává se, že hostitelský počítač bude mít dostupný cluster Kubernetes. V tomto kurzu o nasazení clusteru Kubernetes se dozvíte, jak na hostitelský počítač nasadit cluster Kubernetes.

Konfigurace hodnot chartu Helm pro nasazení

Navštivte Centrum Microsoft Helm pro všechny veřejně dostupné charty Helm, které nabízí Microsoft. V Centru Microsoft Helm najdete místní graf Azure AI Speech. Místní graf Azure AI Speech je graf, který nainstalujete, ale musíme nejprve vytvořit config-values.yaml soubor s explicitními konfiguracemi. Začněme přidáním úložiště Microsoftu do instance Helmu.

helm repo add microsoft https://microsoft.github.io/charts/repo

Dále nakonfigurujeme hodnoty grafu Helm. Zkopírujte a vložte následující YAML do souboru s názvem config-values.yaml. Další informace o přizpůsobení diagramu Helm služby Azure AI Speech v místním prostředí najdete v tématu Přizpůsobení chartů Helm. # {ENDPOINT_URI} Nahraďte komentáře # {API_KEY} vlastními hodnotami.

# These settings are deployment specific and users can provide customizations
# speech to text configurations
speechToText:
  enabled: true
  numberOfConcurrentRequest: 3
  optimizeForAudioFile: true
  image:
    registry: mcr.microsoft.com
    repository: azure-cognitive-services/speechservices/speech-to-text
    tag: latest
    pullSecrets:
      - mcr # Or an existing secret
    args:
      eula: accept
      billing: # {ENDPOINT_URI}
      apikey: # {API_KEY}

# text to speech configurations
textToSpeech:
  enabled: true
  numberOfConcurrentRequest: 3
  optimizeForTurboMode: true
  image:
    registry: mcr.microsoft.com
    repository: azure-cognitive-services/speechservices/neural-text-to-speech
    tag: latest
    pullSecrets:
      - mcr # Or an existing secret
    args:
      eula: accept
      billing: # {ENDPOINT_URI}
      apikey: # {API_KEY}

Důležité

Pokud tyto billing hodnoty apikey nejsou k dispozici, vyprší platnost služeb po 15 minutách. Podobně ověření selže, protože služby nebudou k dispozici.

Balíček Kubernetes (chart Helm)

Chart Helm obsahuje konfiguraci, ze které se mají image Dockeru načíst z registru kontejnerumcr.microsoft.com.

Chart Helm je kolekce souborů, které popisují související sadu prostředků Kubernetes. Jeden graf se může použít k nasazení něčeho jednoduchého, například podu memcached nebo něčeho složitého, například kompletního zásobníku webových aplikací se servery HTTP, databázemi, mezipaměťmi atd.

Poskytnuté grafy Helm načítá image Dockeru služby Speech, jak text na řeč, tak službu speech na textovou službu z registru kontejnerumcr.microsoft.com.

Instalace chartu Helm v clusteru Kubernetes

Spuštěním helm install příkazu nainstalujte chart Helm a nahraďte <config-values.yaml> odpovídající cestu a argument název souboru. Chart microsoft/cognitive-services-speech-onpremise Helm je k dispozici v Centru Microsoft Helm.

helm install onprem-speech microsoft/cognitive-services-speech-onpremise \
    --version 0.1.1 \
    --values <config-values.yaml> 

Tady je příklad výstupu, který můžete očekávat od úspěšného spuštění instalace:

NAME:   onprem-speech
LAST DEPLOYED: Tue Jul  2 12:51:42 2019
NAMESPACE: default
STATUS: DEPLOYED

RESOURCES:
==> v1/Pod(related)
NAME                             READY  STATUS             RESTARTS  AGE
speech-to-text-7664f5f465-87w2d  0/1    Pending            0         0s
speech-to-text-7664f5f465-klbr8  0/1    ContainerCreating  0         0s
neural-text-to-speech-56f8fb685b-4jtzh  0/1    ContainerCreating  0         0s
neural-text-to-speech-56f8fb685b-frwxf  0/1    Pending            0         0s

==> v1/Service
NAME            TYPE          CLUSTER-IP    EXTERNAL-IP  PORT(S)       AGE
speech-to-text  LoadBalancer  10.0.252.106  <pending>    80:31811/TCP  1s
neural-text-to-speech  LoadBalancer  10.0.125.187  <pending>    80:31247/TCP  0s

==> v1beta1/PodDisruptionBudget
NAME                                MIN AVAILABLE  MAX UNAVAILABLE  ALLOWED DISRUPTIONS  AGE
speech-to-text-poddisruptionbudget  N/A            20%              0                    1s
neural-text-to-speech-poddisruptionbudget  N/A            20%              0                    1s

==> v1beta2/Deployment
NAME            READY  UP-TO-DATE  AVAILABLE  AGE
speech-to-text  0/2    2           0          0s
neural-text-to-speech  0/2    2           0          0s

==> v2beta2/HorizontalPodAutoscaler
NAME                       REFERENCE                  TARGETS        MINPODS  MAXPODS  REPLICAS  AGE
speech-to-text-autoscaler  Deployment/speech-to-text  <unknown>/50%  2        10       0         0s
neural-text-to-speech-autoscaler  Deployment/neural-text-to-speech  <unknown>/50%  2        10       0         0s


NOTES:
cognitive-services-speech-onpremise has been installed!
Release is named onprem-speech

Dokončení nasazení Kubernetes může trvat několik minut. Pokud chcete ověřit, že jsou pody i služby správně nasazené a dostupné, spusťte následující příkaz:

kubectl get all

Měli byste očekávat, že se zobrazí něco podobného následujícímu výstupu:

NAME                                  READY     STATUS    RESTARTS   AGE
pod/speech-to-text-7664f5f465-87w2d   1/1       Running   0          34m
pod/speech-to-text-7664f5f465-klbr8   1/1       Running   0          34m
pod/neural-text-to-speech-56f8fb685b-4jtzh   1/1       Running   0          34m
pod/neural-text-to-speech-56f8fb685b-frwxf   1/1       Running   0          34m

NAME                     TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)        AGE
service/kubernetes       ClusterIP      10.0.0.1       <none>           443/TCP        3h
service/speech-to-text   LoadBalancer   10.0.252.106   52.162.123.151   80:31811/TCP   34m
service/neural-text-to-speech   LoadBalancer   10.0.125.187   65.52.233.162    80:31247/TCP   34m

NAME                             DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/speech-to-text   2         2         2            2           34m
deployment.apps/neural-text-to-speech   2         2         2            2           34m

NAME                                        DESIRED   CURRENT   READY     AGE
replicaset.apps/speech-to-text-7664f5f465   2         2         2         34m
replicaset.apps/neural-text-to-speech-56f8fb685b   2         2         2         34m

NAME                                                            REFERENCE                   TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
horizontalpodautoscaler.autoscaling/speech-to-text-autoscaler   Deployment/speech-to-text   1%/50%    2         10        2          34m
horizontalpodautoscaler.autoscaling/neural-text-to-speech-autoscaler   Deployment/neural-text-to-speech   0%/50%    2         10        2          34m

Ověření nasazení Helmu pomocí testů Helmu

Nainstalované grafy Helm definují testy Helmu, které slouží jako usnadnění ověřování. Tyto testy ověřují připravenost služby. Abychom ověřili převod řeči na text i text na řečové funkce, spustíme testovací příkaz Helm.

helm test onprem-speech

Důležité

Tyto testy selžou, pokud stav podu není Running nebo pokud nasazení není uvedené ve sloupci AVAILABLE . Buďte trpěliví, protože dokončení může trvat více než deset minut.

Tyto testy vypíše různé výsledky stavu:

RUNNING: speech to text-readiness-test
PASSED: speech to text-readiness-test
RUNNING: text to speech-readiness-test
PASSED: text to speech-readiness-test

Jako alternativu k provádění testů helmu můžete z příkazu shromáždit externí IP adresy a odpovídající porty kubectl get all . Pomocí IP adresy a portu otevřete webový prohlížeč a přejděte k http://<external-ip>:<port>:/swagger/index.html zobrazení stránek rozhraní API swagger.

Přizpůsobení chartů Helm

Charty Helm jsou hierarchické. Hierarchie umožňuje dědičnost grafu, zajišťuje také koncept specificity, kde nastavení, která jsou konkrétnější, přepsat zděděná pravidla.

Řeč (deštníkový graf)

Hodnoty v "deštníku" nejvyšší úrovně přepíší odpovídající hodnoty dílčího grafu. Proto by se sem měly přidat všechny místní přizpůsobené hodnoty.

Parametr Popis Výchozí
speechToText.enabled Určuje, jestli je povolená služba převodu řeči na text . true
speechToText.verification.enabled Určuje, jestli je povolená schopnost služby převodu helm testřeči na text . true
speechToText.verification.image.registry Úložiště imagí Dockeru, které helm test používá k testování řeči na textovou službu. Helm vytvoří samostatný pod v clusteru pro testování a stáhne image použití testu z tohoto registru. docker.io
speechToText.verification.image.repository Úložiště imagí Dockeru, které helm test používá k testování řeči na textovou službu. Testovací pod Helm používá toto úložiště k vyžádání image s použitím testu. antsu/on-prem-client
speechToText.verification.image.tag Značka image Dockeru používaná helm test pro službu převodu řeči na text . Testovací pod Helm používá tuto značku k vyžádání image s použitím testu. latest
speechToText.verification.image.pullByHash Určuje, jestli se image Dockeru pro testovací použití načítá hodnotou hash. speechToText.verification.image.hash Pokud trueby se měla přidat hodnota hash obrázku s platnou hodnotou hash obrázku. false
speechToText.verification.image.arguments Argumenty použité ke spuštění image Dockeru s použitím testu. Testovací pod Helm předá tyto argumenty kontejneru při spuštění helm test. "./speech-to-text-client"
"./audio/whatstheweatherlike.wav"
"--expect=What's the weather like"
"--host=$(SPEECH_TO_TEXT_HOST)"
"--port=$(SPEECH_TO_TEXT_PORT)"
textToSpeech.enabled Určuje, jestli je povolená služba převodu textu na řeč . true
textToSpeech.verification.enabled Určuje, jestli je povolená schopnost služby převodu helm testřeči na text . true
textToSpeech.verification.image.registry Úložiště imagí Dockeru, které helm test používá k testování řeči na textovou službu. Helm vytvoří samostatný pod v clusteru pro testování a stáhne image použití testu z tohoto registru. docker.io
textToSpeech.verification.image.repository Úložiště imagí Dockeru, které helm test používá k testování řeči na textovou službu. Testovací pod Helm používá toto úložiště k vyžádání image s použitím testu. antsu/on-prem-client
textToSpeech.verification.image.tag Značka image Dockeru používaná helm test pro službu převodu řeči na text . Testovací pod Helm používá tuto značku k vyžádání image s použitím testu. latest
textToSpeech.verification.image.pullByHash Určuje, jestli se image Dockeru pro testovací použití načítá hodnotou hash. textToSpeech.verification.image.hash Pokud trueby se měla přidat hodnota hash obrázku s platnou hodnotou hash obrázku. false
textToSpeech.verification.image.arguments Argumenty, které se mají provést s imagí Dockeru s použitím testu. Testovací pod Helm předá tyto argumenty kontejneru při spuštění helm test. "./text-to-speech-client"
"--input='What's the weather like'"
"--host=$(TEXT_TO_SPEECH_HOST)"
"--port=$(TEXT_TO_SPEECH_PORT)"

Převod řeči na text (dílčí graf: grafy/speechToText)

Pokud chcete přepsat "deštník" graf, přidejte předponu speechToText. u libovolného parametru, aby byla konkrétnější. Například přepíše odpovídající parametr, speechToText.numberOfConcurrentRequest například přepsání numberOfConcurrentRequest.

Parametr Popis Výchozí
enabled Určuje, jestli je povolená služba převodu řeči na text . false
numberOfConcurrentRequest Počet souběžných požadavků na službu převodu řeči na text . Tento graf automaticky vypočítá prostředky procesoru a paměti na základě této hodnoty. 2
optimizeForAudioFile Určuje, jestli služba potřebuje optimalizovat zvukový vstup prostřednictvím zvukových souborů. Pokud true, tento graf přidělí službě více prostředků procesoru. false
image.registry Registr imagí Dockeru pro převod řeči na text . containerpreview.azurecr.io
image.repository Úložiště imagí Dockeru pro převod řeči na text . microsoft/cognitive-services-speech-to-text
image.tag Značka image Dockeru pro převod řeči na text . latest
image.pullSecrets Tajné kódy obrázků pro vyžádání řeči na text image Dockeru.
image.pullByHash Určuje, jestli se image Dockeru načítá hodnotou hash. Je-li truepožadováno , image.hash false
image.hash Hodnota hash image dockeru pro převod řeči na text . Používá se pouze v případech, kdy image.pullByHash: true.
image.args.eula (povinné) Označuje, že jste přijali licenci. Jediná platná hodnota je accept
image.args.billing (povinné) Hodnota identifikátoru URI fakturačního koncového bodu je k dispozici na stránce Přehled řeči na webu Azure Portal.
image.args.apikey (povinné) Používá se ke sledování fakturačních údajů.
service.type Typ služby Kubernetes pro převod řeči na textovou službu. Další podrobnosti a ověření podpory poskytovatele cloudu najdete v pokynech k typům služby Kubernetes. LoadBalancer
service.port Port služby převodu řeči na text . 80
service.annotations Převod řeči na textové poznámky pro metadata služby. Poznámky jsou páry klíč-hodnota.
annotations:
  some/annotation1: value1
  some/annotation2: value2
service.autoScaler.enabled Určuje, jestli je povolené horizontální automatické škálování podů. Pokud true, nasadí se speech-to-text-autoscaler v clusteru Kubernetes. true
service.podDisruption.enabled Určuje, jestli je povolený rozpočet přerušení podů. Pokud true, nasadí se speech-to-text-poddisruptionbudget v clusteru Kubernetes. true

Analýza mínění (dílčí graf: grafy/speechToText)

Počínaje verzí 2.2.0 převodu řeči na textový kontejner a v0.2.0 grafu Helm se pro analýzu mínění pomocí rozhraní API služby Language používají následující parametry.

Parametr Popis Hodnoty Výchozí
textanalytics.enabled Jestli je povolená služba pro analýzu textu true/false false
textanalytics.image.registry Registr imagí Dockeru pro analýzu textu Platný registr imagí Dockeru
textanalytics.image.repository Úložiště imagí Dockeru pro analýzu textu Platné úložiště imagí Dockeru
textanalytics.image.tag Značka image Dockeru pro analýzu textu Platná značka image Dockeru
textanalytics.image.pullSecrets Tajné kódy obrázků pro vyžádání image Dockeru pro analýzu textu platný název tajných kódů
textanalytics.image.pullByHash Určuje, jestli načítáte image Dockeru hodnotou hash. image.hash Je-li yesnutné, aby měl také. Pokud noho nastavíte jako false. Výchozí hodnota je false. true/false false
textanalytics.image.hash Hodnota hash image Dockeru pro analýzu textu. Používejte ho pouze s image.pullByHash:true. Platná hodnota hash image Dockeru
textanalytics.image.args.eula Jeden z požadovaných argumentů kontejneru pro analýzu textu , který označuje, že jste licenci přijali. Hodnota této možnosti musí být: accept. accept, pokud chcete použít kontejner
textanalytics.image.args.billing Jeden z požadovaných argumentů podle kontejneru pro analýzu textu , který určuje identifikátor URI koncového bodu fakturace. Hodnota identifikátoru URI fakturačního koncového bodu je k dispozici na stránce Přehled řeči na webu Azure Portal. platný identifikátor URI koncového bodu fakturace
textanalytics.image.args.apikey Jeden z požadovaných argumentů kontejnerem pro analýzu textu , který se používá ke sledování fakturačních údajů. platný klíč rozhraní API
textanalytics.cpuRequest Požadovaný procesor pro kontejner pro analýzu textu int 3000m
textanalytics.cpuLimit Omezený procesor pro kontejner pro analýzu textu 8000m
textanalytics.memoryRequest Požadovaná paměť pro kontejner pro analýzu textu 3Gi
textanalytics.memoryLimit Omezená paměť pro kontejner pro analýzu textu 8Gi
textanalytics.service.sentimentURISuffix Přípona identifikátoru URI analýzy mínění, celý identifikátor URI je ve formátu "http://<service>:<port>/<sentimentURISuffix>". text/analytics/v3.0-preview/sentiment
textanalytics.service.type Typ služby pro analýzu textu v Kubernetes. Zobrazení typů služby Kubernetes platný typ služby Kubernetes LoadBalancer
textanalytics.service.port Port služby pro analýzu textu int 50085
textanalytics.service.annotations Uživatelé poznámek mohou přidat do metadat služby pro analýzu textu. Například:
Poznámky:
some/annotation1: value1
some/annotation2: value2
poznámky, jeden na každý řádek
textanalytics.serivce.autoScaler.enabled Určuje, jestli je povolené horizontální automatické škálování podů. Pokud je tato možnost povolená, text-analytics-autoscaler nasadí se v clusteru Kubernetes. true/false true
textanalytics.service.podDisruption.enabled Určuje, jestli je povolený rozpočet přerušení podu . Pokud je tato možnost povolená, text-analytics-poddisruptionbudget nasadí se v clusteru Kubernetes. true/false true

Převod textu na řeč (dílčí graf: grafy/textToSpeech)

Pokud chcete přepsat "deštník" graf, přidejte předponu textToSpeech. u libovolného parametru, aby byla konkrétnější. Například přepíše odpovídající parametr, textToSpeech.numberOfConcurrentRequest například přepsání numberOfConcurrentRequest.

Parametr Popis Výchozí
enabled Určuje, jestli je povolená služba převodu textu na řeč . false
numberOfConcurrentRequest Počet souběžných požadavků na službu Speech pro text. Tento graf automaticky vypočítá prostředky procesoru a paměti na základě této hodnoty. 2
optimizeForTurboMode Určuje, jestli služba potřebuje optimalizovat zadávání textu prostřednictvím textových souborů. Pokud true, tento graf přidělí službě více prostředků procesoru. false
image.registry Registr imagí Dockeru pro převod textu na řeč . containerpreview.azurecr.io
image.repository Úložiště imagí Dockeru pro převod textu na řeč . microsoft/cognitive-services-text-to-speech
image.tag Značka image dockeru pro převod textu na řeč . latest
image.pullSecrets Tajné kódy imagí pro načtení textu do image Dockeru pro řeč .
image.pullByHash Určuje, jestli se image Dockeru načítá hodnotou hash. Je-li truepožadováno , image.hash false
image.hash Hodnota hash image dockeru pro převod textu na řeč . Používá se pouze v případech, kdy image.pullByHash: true.
image.args.eula (povinné) Označuje, že jste přijali licenci. Jediná platná hodnota je accept
image.args.billing (povinné) Hodnota identifikátoru URI fakturačního koncového bodu je k dispozici na stránce Přehled řeči na webu Azure Portal.
image.args.apikey (povinné) Používá se ke sledování fakturačních údajů.
service.type Typ služby Kubernetes typu textu do služby Speech . Další podrobnosti a ověření podpory poskytovatele cloudu najdete v pokynech k typům služby Kubernetes. LoadBalancer
service.port Port služby Speech pro text. 80
service.annotations Text na poznámky řeči pro metadata služby. Poznámky jsou páry klíč-hodnota.
annotations:
  some/annotation1: value1
  some/annotation2: value2
service.autoScaler.enabled Určuje, jestli je povolené horizontální automatické škálování podů. Pokud true, nasadí se text-to-speech-autoscaler v clusteru Kubernetes. true
service.podDisruption.enabled Určuje, jestli je povolený rozpočet přerušení podů. Pokud true, nasadí se text-to-speech-poddisruptionbudget v clusteru Kubernetes. true

Další kroky

Další podrobnosti o instalaci aplikací s Helmem ve službě Azure Kubernetes Service (AKS) najdete tady.