Använda Speech-tjänstcontainrar med Kubernetes och Helm
Ett alternativ för att hantera dina Speech-containrar lokalt är att använda Kubernetes och Helm. Med Kubernetes och Helm för att definiera tal till text och text till talcontaineravbildningar skapar vi ett Kubernetes-paket. Det här paketet distribueras till ett Lokalt Kubernetes-kluster. Slutligen utforskar vi hur du testar de distribuerade tjänsterna och olika konfigurationsalternativ. Mer information om hur du kör Docker-containrar utan Kubernetes-orkestrering finns i installera och köra Speech-tjänstcontainrar.
Förutsättningar
Följande förutsättningar innan du använder Speech-containrar lokalt:
Obligatoriskt | Syfte |
---|---|
Azure-konto | Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar. |
Åtkomst till containerregistret | För att Kubernetes ska kunna hämta Docker-avbildningarna till klustret behöver det åtkomst till containerregistret. |
Kubernetes CLI | Kubernetes CLI krävs för att hantera delade autentiseringsuppgifter från containerregistret. Kubernetes behövs också före Helm, som är Kubernetes-pakethanteraren. |
Helm CLI | Installera Helm CLI, som används för att installera ett helm-diagram (containerpaketdefinition). |
Talresurs | För att kunna använda dessa containrar måste du ha: En Speech Azure-resurs för att hämta den associerade faktureringsnyckeln och faktureringsslutpunktens URI. Båda värdena är tillgängliga på sidorna Azure Portal Talöversikt och Nycklar och krävs för att starta containern. {API_KEY}: resursnyckel {ENDPOINT_URI}: Slutpunkts-URI-exemplet är: https://eastus.api.cognitive.microsoft.com/sts/v1.0 |
Den rekommenderade värddatorkonfigurationen
Se information om värddatorn för Speech Service-containern som referens. Det här helm-diagrammet beräknar automatiskt processor- och minneskraven baserat på hur många avkodningar (samtidiga begäranden) som användaren anger. Dessutom justeras den baserat på om optimeringar för ljud-/textindata har konfigurerats som enabled
. Helm-diagrammet är som standard två samtidiga begäranden och inaktiverar optimering.
Tjänst | CPU/container | Minne/container |
---|---|---|
tal till text | en avkodare kräver minst 1 150 millicores. Om är optimizedForAudioFile aktiverat krävs 1 950 millicores. (standard: två avkodare) |
Krävs: 2 GB Begränsad: 4 GB |
text till tal | en samtidig begäran kräver minst 500 millicores. Om är optimizeForTurboMode aktiverat krävs 1 000 millicores. (standard: två samtidiga begäranden) |
Krävs: 1 GB Begränsad: 2 GB |
Ansluta till Kubernetes-klustret
Värddatorn förväntas ha ett tillgängligt Kubernetes-kluster. Se den här självstudien om hur du distribuerar ett Kubernetes-kluster för en konceptuell förståelse av hur du distribuerar ett Kubernetes-kluster till en värddator.
Konfigurera Helm-diagramvärden för distribution
Besök Microsoft Helm Hub för alla offentligt tillgängliga helm-diagram som erbjuds av Microsoft. Från Microsoft Helm Hub hittar du det lokala Azure AI Speech-diagrammet. Azure AI Speech On-Premises är det diagram vi installerar, men vi måste först skapa en config-values.yaml
fil med explicita konfigurationer. Vi börjar med att lägga till Microsoft-lagringsplatsen i vår Helm-instans.
helm repo add microsoft https://microsoft.github.io/charts/repo
Därefter konfigurerar vi våra Helm-diagramvärden. Kopiera och klistra in följande YAML i en fil med namnet config-values.yaml
. Mer information om hur du anpassar Det lokala Helm-diagrammet för Azure AI-tal finns i anpassa helm-diagram. # {ENDPOINT_URI}
Ersätt kommentarerna och # {API_KEY}
med dina egna värden.
# 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}
Viktigt!
billing
Om värdena och apikey
inte tillhandahålls upphör tjänsterna att gälla efter 15 minuter. På samma sätt misslyckas verifieringen eftersom tjänsterna inte är tillgängliga.
Kubernetes-paketet (Helm-diagram)
Helm-diagrammet innehåller konfigurationen av vilka Docker-avbildningar som ska hämtas från mcr.microsoft.com
containerregistret.
Ett Helm-diagram är en samling filer som beskriver en relaterad uppsättning Kubernetes-resurser. Ett enda diagram kan användas för att distribuera något enkelt, till exempel en memcached-podd eller något komplext, till exempel en fullständig webbappsstack med HTTP-servrar, databaser, cacheminnen och så vidare.
De angivna Helm-diagrammen hämtar Docker-avbildningarna av Speech-tjänsten, både text till tal och tal till texttjänster från mcr.microsoft.com
containerregistret.
Installera Helm-diagrammet i Kubernetes-klustret
helm install
Kör kommandot för att installera helm-diagrammet och ersätt <config-values.yaml>
med rätt sökväg och filnamnsargument. Helm-diagrammet microsoft/cognitive-services-speech-onpremise
är tillgängligt på Microsoft Helm Hub.
helm install onprem-speech microsoft/cognitive-services-speech-onpremise \
--version 0.1.1 \
--values <config-values.yaml>
Här är ett exempel på utdata som du kan förvänta dig från en lyckad installationskörning:
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
Kubernetes-distributionen kan ta över flera minuter att slutföra. Kontrollera att både poddar och tjänster är korrekt distribuerade och tillgängliga genom att köra följande kommando:
kubectl get all
Du bör förvänta dig att se något som liknar följande utdata:
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
Verifiera Helm-distribution med Helm-tester
De installerade Helm-diagrammen definierar Helm-tester som fungerar som en bekvämlighet för verifiering. Dessa tester validerar tjänstens beredskap. För att verifiera både tal till text och text till tal-funktioner kör vi Helm-testkommandot .
helm test onprem-speech
Viktigt!
Dessa tester misslyckas om POD-statusen inte Running
är eller om distributionen inte visas under AVAILABLE
kolumnen. Ha tålamod eftersom det kan ta över tio minuter att slutföra.
Dessa tester ger olika statusresultat:
RUNNING: speech to text-readiness-test
PASSED: speech to text-readiness-test
RUNNING: text to speech-readiness-test
PASSED: text to speech-readiness-test
Som ett alternativ till att köra helm-testerna kan du samla in externa IP-adresser och motsvarande portar från kubectl get all
kommandot. Med hjälp av IP och port öppnar du en webbläsare och navigerar till http://<external-ip>:<port>:/swagger/index.html
för att visa API swagger-sidan(erna).
Anpassa Helm-diagram
Helm-diagram är hierarkiska. Eftersom hierarkisk möjliggör arv av diagram tillgodoser det även begreppet specificitet, där inställningar som är mer specifika åsidosätter ärvda regler.
Tal (paraplydiagram)
Värden i toppnivådiagrammet "paraply" åsidosätter motsvarande underdiagramsvärden. Därför bör alla lokala anpassade värden läggas till här.
Parameter | Description | Standard |
---|---|---|
speechToText.enabled |
Om tal till text-tjänsten är aktiverad. | true |
speechToText.verification.enabled |
Om funktionen helm test för tal till text-tjänsten är aktiverad. |
true |
speechToText.verification.image.registry |
Docker-avbildningslagringsplatsen som helm test använder för att testa tal till text-tjänsten . Helm skapar en separat podd i klustret för testning och hämtar testanvändningsavbildningen från det här registret. |
docker.io |
speechToText.verification.image.repository |
Docker-avbildningslagringsplatsen som helm test använder för att testa tal till text-tjänsten . Helm-testpodden använder den här lagringsplatsen för att hämta testanvändningsbilden . |
antsu/on-prem-client |
speechToText.verification.image.tag |
Docker-avbildningstaggen som används med helm test för tal till text-tjänsten . Helm-testpodden använder den här taggen för att hämta testanvändningsbilden . |
latest |
speechToText.verification.image.pullByHash |
Om docker-avbildningen för testanvändning hämtas av hash- Om true , speechToText.verification.image.hash ska läggas till, med giltigt värde för avbildningshash. |
false |
speechToText.verification.image.arguments |
Argumenten som används för att köra docker-avbildningen test-use . Helm-testpodden skickar dessa argument till containern när du kör 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 |
Om text till tal-tjänsten är aktiverad. | true |
textToSpeech.verification.enabled |
Om funktionen helm test för tal till text-tjänsten är aktiverad. |
true |
textToSpeech.verification.image.registry |
Docker-avbildningslagringsplatsen som helm test använder för att testa tal till text-tjänsten . Helm skapar en separat podd i klustret för testning och hämtar testanvändningsavbildningen från det här registret. |
docker.io |
textToSpeech.verification.image.repository |
Docker-avbildningslagringsplatsen som helm test använder för att testa tal till text-tjänsten . Helm-testpodden använder den här lagringsplatsen för att hämta testanvändningsbilden . |
antsu/on-prem-client |
textToSpeech.verification.image.tag |
Docker-avbildningstaggen som används med helm test för tal till text-tjänsten . Helm-testpodden använder den här taggen för att hämta testanvändningsbilden . |
latest |
textToSpeech.verification.image.pullByHash |
Om docker-avbildningen för testanvändning hämtas av hash- Om true , textToSpeech.verification.image.hash ska läggas till, med giltigt värde för avbildningshash. |
false |
textToSpeech.verification.image.arguments |
Argumenten som ska köras med docker-avbildningen test-use . Helm-testpodden skickar dessa argument till containern när du kör helm test . |
"./text-to-speech-client" "--input='What's the weather like'" "--host=$(TEXT_TO_SPEECH_HOST)" "--port=$(TEXT_TO_SPEECH_PORT)" |
Tal till text (underdiagram: diagram/speechToText)
Om du vill åsidosätta "paraplydiagrammet" lägger du till prefixet speechToText.
på valfri parameter för att göra det mer specifikt. Den åsidosätter till exempel motsvarande parameter, speechToText.numberOfConcurrentRequest
till exempel åsidosättningar numberOfConcurrentRequest
.
Parameter | Description | Standard |
---|---|---|
enabled |
Om tal till text-tjänsten är aktiverad. | false |
numberOfConcurrentRequest |
Antalet samtidiga begäranden för tal till text-tjänsten . Det här diagrammet beräknar automatiskt processor- och minnesresurser baserat på det här värdet. | 2 |
optimizeForAudioFile |
Om tjänsten behöver optimera för ljudinmatning via ljudfiler. Om true allokerar det här diagrammet mer CPU-resurs till tjänsten. |
false |
image.registry |
Avbildningsregistret för tal till text docker. | containerpreview.azurecr.io |
image.repository |
Lagringsplatsen för tal till text docker-avbildning. | microsoft/cognitive-services-speech-to-text |
image.tag |
Taggen speech to text docker image . | latest |
image.pullSecrets |
Bildhemligheterna för att hämta tal till text docker-avbildning. | |
image.pullByHash |
Om docker-avbildningen hämtas med hash. Om true , image.hash krävs. |
false |
image.hash |
Hash för tal till text docker-avbildning. Används endast när image.pullByHash: true . |
|
image.args.eula (krävs) |
Anger att du har godkänt licensen. Det enda giltiga värdet är accept |
|
image.args.billing (krävs) |
URI-värdet för faktureringsslutpunkten är tillgängligt på sidan talöversikt för Azure Portal. | |
image.args.apikey (krävs) |
Används för att spåra faktureringsinformation. | |
service.type |
Kubernetes-tjänsttypen för tal till text-tjänsten . Mer information och verifiera molnleverantörens support finns i anvisningarna för Kubernetes-tjänsttyper. | LoadBalancer |
service.port |
Porten för tal till text-tjänsten . | 80 |
service.annotations |
Tal till text-anteckningar för tjänstens metadata. Anteckningar är nyckelvärdepar. annotations: some/annotation1: value1 some/annotation2: value2 |
|
service.autoScaler.enabled |
Om autoskalning av vågrät podd är aktiverad. speech-to-text-autoscaler Om true distribueras den i Kubernetes-klustret. |
true |
service.podDisruption.enabled |
Om poddstörningsbudgeten är aktiverad. speech-to-text-poddisruptionbudget Om true distribueras den i Kubernetes-klustret. |
true |
Attitydanalys (underdiagram: diagram/speechToText)
Från och med v2.2.0 i tal till textcontainer och v0.2.0 i Helm-diagrammet används följande parametrar för attitydanalys med hjälp av Api:et för språktjänsten.
Parameter | Description | Värden | Standardvärde |
---|---|---|---|
textanalytics.enabled |
Om textanalystjänsten är aktiverad | sant/falskt | false |
textanalytics.image.registry |
Docker-avbildningsregistret för textanalys | giltigt Docker-avbildningsregister | |
textanalytics.image.repository |
Docker-avbildningslagringsplatsen för textanalys | giltig docker-avbildningslagringsplats | |
textanalytics.image.tag |
Docker-avbildningstaggen för textanalys | giltig docker-avbildningstagg | |
textanalytics.image.pullSecrets |
Bildhemligheterna för att hämta docker-avbildning för textanalys | giltigt namn på hemligheter | |
textanalytics.image.pullByHash |
Anger om du hämtar docker-avbildningen med hash. Om yes , image.hash måste också ha. Om no anger du det som "false". Standard är false . |
sant/falskt | false |
textanalytics.image.hash |
Docker-avbildningshashen för textanalys . Använd den endast med image.pullByHash:true . |
giltig docker-avbildningshash | |
textanalytics.image.args.eula |
Ett av de argument som krävs av textanalyscontainern , vilket indikerar att du har godkänt licensen. Värdet för det här alternativet måste vara: accept . |
accept , om du vill använda containern |
|
textanalytics.image.args.billing |
Ett av de argument som krävs av textanalyscontainern , som anger faktureringsslutpunktens URI. URI-värdet för faktureringsslutpunkten är tillgängligt på sidan talöversikt för Azure Portal. | giltig URI för faktureringsslutpunkt | |
textanalytics.image.args.apikey |
Ett av de argument som krävs av textanalyscontainern , som används för att spåra faktureringsinformation. | giltig apikey | |
textanalytics.cpuRequest |
Begärd CPU för textanalyscontainer | heltal | 3000m |
textanalytics.cpuLimit |
Den begränsade CPU:en för textanalyscontainer | 8000m |
|
textanalytics.memoryRequest |
Det begärda minnet för textanalyscontainern | 3Gi |
|
textanalytics.memoryLimit |
Det begränsade minnet för textanalyscontainern | 8Gi |
|
textanalytics.service.sentimentURISuffix |
Attitydanalysens URI-suffix, hela URI:n är i formatet "http://<service> :<port> /<sentimentURISuffix> ". |
text/analytics/v3.0-preview/sentiment |
|
textanalytics.service.type |
Typen av textanalystjänst i Kubernetes. Se Kubernetes-tjänsttyper | giltig Kubernetes-tjänsttyp | LoadBalancer |
textanalytics.service.port |
Porten för textanalystjänsten | heltal | 50085 |
textanalytics.service.annotations |
Anteckningarna som användare kan lägga till i metadata för textanalystjänsten . Till exempel: Anteckningar: some/annotation1: value1 some/annotation2: value2 |
anteckningar, en per rad | |
textanalytics.serivce.autoScaler.enabled |
Om vågrät autoskalning av poddar är aktiverat. Om aktiverad text-analytics-autoscaler , kommer att distribueras i Kubernetes-klustret |
sant/falskt | true |
textanalytics.service.podDisruption.enabled |
Om poddstörningsbudget är aktiverad. Om aktiverad text-analytics-poddisruptionbudget , kommer att distribueras i Kubernetes-klustret |
sant/falskt | true |
Text till tal (underdiagram: diagram/textToSpeech)
Om du vill åsidosätta "paraplydiagrammet" lägger du till prefixet textToSpeech.
på valfri parameter för att göra det mer specifikt. Den åsidosätter till exempel motsvarande parameter, textToSpeech.numberOfConcurrentRequest
till exempel åsidosättningar numberOfConcurrentRequest
.
Parameter | Description | Standard |
---|---|---|
enabled |
Om text till tal-tjänsten är aktiverad. | false |
numberOfConcurrentRequest |
Antalet samtidiga begäranden för text till tal-tjänsten . Det här diagrammet beräknar automatiskt processor- och minnesresurser baserat på det här värdet. | 2 |
optimizeForTurboMode |
Om tjänsten behöver optimera för textinmatning via textfiler. Om true allokerar det här diagrammet mer CPU-resurs till tjänsten. |
false |
image.registry |
Avbildningsregistret text till tal docker. | containerpreview.azurecr.io |
image.repository |
Lagringsplatsen för text till tal docker-avbildning. | microsoft/cognitive-services-text-to-speech |
image.tag |
Taggen text till tal docker-avbildning. | latest |
image.pullSecrets |
Bildhemligheterna för att hämta texten till tal docker-avbildningen. | |
image.pullByHash |
Om docker-avbildningen hämtas med hash. Om true , image.hash krävs. |
false |
image.hash |
Hash för text till tal docker-avbildning. Används endast när image.pullByHash: true . |
|
image.args.eula (krävs) |
Anger att du har godkänt licensen. Det enda giltiga värdet är accept |
|
image.args.billing (krävs) |
URI-värdet för faktureringsslutpunkten är tillgängligt på sidan talöversikt för Azure Portal. | |
image.args.apikey (krävs) |
Används för att spåra faktureringsinformation. | |
service.type |
Kubernetes-tjänsttypen för text till tal-tjänsten . Mer information och verifiera molnleverantörens support finns i anvisningarna för Kubernetes-tjänsttyper. | LoadBalancer |
service.port |
Porten för text till taltjänsten . | 80 |
service.annotations |
Text till tal-anteckningar för tjänstens metadata. Anteckningar är nyckelvärdepar. annotations: some/annotation1: value1 some/annotation2: value2 |
|
service.autoScaler.enabled |
Om autoskalning av vågrät podd är aktiverad. text-to-speech-autoscaler Om true distribueras den i Kubernetes-klustret. |
true |
service.podDisruption.enabled |
Om poddstörningsbudgeten är aktiverad. text-to-speech-poddisruptionbudget Om true distribueras den i Kubernetes-klustret. |
true |
Nästa steg
Mer information om hur du installerar program med Helm i Azure Kubernetes Service (AKS) finns här.