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 |
Doporučená konfigurace hostitelského počítače
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í ke 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 true by 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 true by 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 true pož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 yes nutné, aby měl také. Pokud no ho 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: anotace: 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 true pož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.