Menggunakan kontainer layanan Speech dengan Kubernetes dan Helm
Salah satu opsi untuk mengelola kontainer Speech di lokasi adalah dengan menggunakan Kubernetes dan Helm. Menggunakan Kubernetes dan Helm untuk menentukan ucapan ke teks dan teks ke gambar kontainer ucapan, kami membuat paket Kubernetes. Paket ini disebarkan ke kluster Kubernetes lokal. Terakhir, kami menjelajahi cara menguji layanan yang disebarkan dan berbagai opsi konfigurasi. Untuk mengetahui informasi selengkapnya tentang menjalankan kontainer Docker tanpa orkestrasi Kubernetes, lihat menginstal dan menjalankan kontainer layanan Speech.
Prasyarat
Prasyarat berikut sebelum menggunakan kontainer Speech lokal:
Diperlukan | Tujuan |
---|---|
Akun Azure | Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai. |
Akses Container Registry | Agar Kubernetes dapat menarik gambar docker ke dalam kluster, kubernetes memerlukan akses ke registri kontainer. |
Kubernetes CLI | Kubernetes CLI diperlukan untuk mengelola informasi masuk bersama dari registri kontainer. Kube juga diperlukan sebelum Helm, yang merupakan manajer paket Kube. |
Helm CLI | Instal Helm CLI, yang digunakan untuk memasang grafik helm (definisi paket kontainer). |
Sumber daya Ucapan | Untuk menggunakan kontainer ini, Anda harus memiliki: Sumber daya Speech Azure untuk mendapatkan kunci penagihan terkait dan URI titik akhir penagihan. Kedua nilai tersedia di halaman Gambaran Umum Speech dan Kunci portal Azure dan diperlukan untuk memulai kontainer. {API_KEY}: kunci sumber daya {ENDPOINT_URI}: contoh URI titik akhir adalah: https://eastus.api.cognitive.microsoft.com/sts/v1.0 |
Konfigurasi komputer host yang direkomendasikan
Lihat detail komputer host kontainer layanan Speech sebagai referensi. Bagan helm ini otomatis menghitung persyaratan CPU dan memori berdasarkan berapa banyak dekode (permintaan bersamaan) yang ditentukan pengguna. Selain itu, ini menyesuaikan berdasarkan apakah pengoptimalan untuk input audio/teks dikonfigurasi sebagai enabled
. Bagan helm default ke, dua permintaan bersamaan dan menonaktifkan pengoptimalan.
Layanan | CPU/Kontainer | Memori/Kontainer |
---|---|---|
ucapan ke teks | satu dekoder membutuhkan minimal 1.150 milicore. Jika optimizedForAudioFile diaktifkan, diperlukan 1.950 milicore. (default: dua dekoder) |
Diperlukan: 2 GB Terbatas: 4 GB |
teks ke ucapan | satu permintaan bersamaan membutuhkan minimal 500 milicore. Jika optimizeForTurboMode diaktifkan, diperlukan 1.000 milicore. (default: dua permintaan bersamaan) |
Diperlukan: 1 GB Terbatas: 2 GB |
Menyambungkan ke kluster Kubernetes
Komputer host diharapkan memiliki kluster Kub yang tersedia. Lihat tutorial penyebaran kluster Kubernetes untuk pemahaman konseptual tentang cara menyebarkan kluster Kubernetes ke komputer host.
Mengonfigurasi nilai bagan Helm untuk penyebaran
Buka Microsoft Helm Hub untuk semua bagan helm yang tersedia untuk umum yang ditawarkan oleh Microsoft. Dari Microsoft Helm Hub, Anda menemukan Bagan Azure AI Speech Lokal. Azure AI Speech On-Premises adalah bagan yang kami instal, tetapi kita harus terlebih dahulu membuat config-values.yaml
file dengan konfigurasi eksplisit. Mari mulai dengan menambahkan repositori Microsoft ke instans Helm.
helm repo add microsoft https://microsoft.github.io/charts/repo
Selanjutnya, kami mengonfigurasi nilai bagan Helm kami. Salin dan tempel YAML berikut ke dalam file bernama config-values.yaml
. Untuk informasi selengkapnya tentang menyesuaikan Bagan Helm Azure AI Speech Lokal, lihat mengkustomisasi bagan helm. Ganti # {ENDPOINT_URI}
dan # {API_KEY}
berikan komentar dengan nilai Anda sendiri.
# 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}
Penting
Jika nilai billing
dan apikey
tidak disediakan, layanan akan kedaluwarsa setelah 15 menit. Demikian juga, verifikasi akan gagal karena layanan tidak akan tersedia.
Paket Kubernetes (Chart Helm)
Bagan Helm berisi konfigurasi gambar docker mana yang ditarik dari mcr.microsoft.com
registri kontainer.
Bagan Helm adalah kumpulan file yang menjelaskan sekumpulan sumber daya Kubernetes terkait. Satu bagan mungkin digunakan untuk menyebarkan sesuatu yang sederhana, seperti pod yang di-cache, atau sesuatu yang kompleks, seperti tumpukan aplikasi web lengkap dengan server HTTP, database, cache, dan sebagainya.
Bagan Helm yang disediakan menarik gambar docker layanan Ucapan, baik teks ke ucapan maupun layanan ucapan ke teks dari mcr.microsoft.com
registri kontainer.
Menginstal bagan Helm pada kluster Kubernetes
Jalankan helm install
perintah untuk menginstal bagan helm, mengganti <config-values.yaml>
dengan jalur dan argumen nama file yang sesuai. Bagan microsoft/cognitive-services-speech-onpremise
Helm tersedia di Microsoft Helm Hub.
helm install onprem-speech microsoft/cognitive-services-speech-onpremise \
--version 0.1.1 \
--values <config-values.yaml>
Berikut adalah contoh output yang mungkin Anda harapkan untuk dilihat dari eksekusi penginstalan yang berhasil:
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
Proses penyebaran Kube dapat memakan waktu lebih dari beberapa menit. Untuk mengonfirmasi bahwa kedua pod dan layanan disebarkan dan tersedia dengan benar, jalankan perintah berikut:
kubectl get all
Anda pasti berharap untuk melihat sesuatu yang mirip dengan output berikut:
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
Memverifikasi penyebaran Helm dengan pengujian Helm
Bagan Helm yang diinstal mendefinisikan pengujian Helm, yang berfungsi sebagai kenyamanan untuk verifikasi. Pengujian ini memvalidasi kesiapan layanan. Untuk memverifikasi fitur ucapan ke teks dan teks ke ucapan, kami menjalankan perintah uji Helm.
helm test onprem-speech
Penting
Pengujian ini akan gagal jika status POD tidak Running
atau jika penyebaran tidak tercantum di kolom AVAILABLE
. Bersabarlah karena ini bisa memakan waktu lebih dari sepuluh menit untuk selesai.
Pengujian ini menghasilkan berbagai hasil status:
RUNNING: speech to text-readiness-test
PASSED: speech to text-readiness-test
RUNNING: text to speech-readiness-test
PASSED: text to speech-readiness-test
Sebagai alternatif untuk menjalankan pengujian helm, Anda dapat mengumpulkan alamat IP Eksternal dan port yang sesuai dari perintah kubectl get all
. Dengan menggunakan IP dan port, buka browser web dan navigasi ke http://<external-ip>:<port>:/swagger/index.html
untuk melihat halaman API swagger.
Menyesuaikan bagan Helm
Grafik Helm bersifat hierarkis. Bersifat hierarkis memungkinkan pewarisan bagan, ini juga memenuhi konsep kekhususan, yang mana pengaturan yang lebih spesifik mengesampingkan aturan yang diwariskan.
Ucapan (bagan umbrella)
Nilai dalam bagan "umbrella" tingkat teratas mengesampingkan nilai sub-bagan terkait. Oleh karena itu, semua nilai yang disesuaikan di tempat harus ditambahkan di sini.
Parameter | Deskripsi | Default |
---|---|---|
speechToText.enabled |
Apakah layanan ucapan ke teks diaktifkan. | true |
speechToText.verification.enabled |
helm test Apakah kemampuan untuk layanan ucapan ke teks diaktifkan. |
true |
speechToText.verification.image.registry |
Repositori gambar docker yang helm test menggunakan untuk menguji ucapan ke layanan teks . Helm membuat pod terpisah di dalam klaster untuk pengujian dan menarik gambat test-penggunaan dari registri ini. |
docker.io |
speechToText.verification.image.repository |
Repositori gambar docker yang helm test menggunakan untuk menguji ucapan ke layanan teks . Pod uji helm menggunakan repositori ini untuk menarik gambar tes penggunaan. |
antsu/on-prem-client |
speechToText.verification.image.tag |
Tag gambar docker digunakan dengan helm test untuk layanan ucapan ke teks . Pod uji helm menggunakan tag ini untuk menarik gambar tes penggunaan. |
latest |
speechToText.verification.image.pullByHash |
Apakah gambar docker tes penggunaan ditarik oleh hash. Jika true , speechToText.verification.image.hash harus ditambahkan, dengan nilai hash gambar yang valid. |
false |
speechToText.verification.image.arguments |
Argumen yang digunakan untuk mengeksekusi gambar docker tes penggunaan. Pod uji helm meneruskan argumen ini ke kontainer saat menjalankan 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 |
Apakah layanan teks ke ucapan diaktifkan. | true |
textToSpeech.verification.enabled |
helm test Apakah kemampuan untuk layanan ucapan ke teks diaktifkan. |
true |
textToSpeech.verification.image.registry |
Repositori gambar docker yang helm test menggunakan untuk menguji ucapan ke layanan teks . Helm membuat pod terpisah di dalam klaster untuk pengujian dan menarik gambat test-penggunaan dari registri ini. |
docker.io |
textToSpeech.verification.image.repository |
Repositori gambar docker yang helm test menggunakan untuk menguji ucapan ke layanan teks . Pod uji helm menggunakan repositori ini untuk menarik gambar tes penggunaan. |
antsu/on-prem-client |
textToSpeech.verification.image.tag |
Tag gambar docker digunakan dengan helm test untuk layanan ucapan ke teks . Pod uji helm menggunakan tag ini untuk menarik gambar tes penggunaan. |
latest |
textToSpeech.verification.image.pullByHash |
Apakah gambar docker tes penggunaan ditarik oleh hash. Jika true , textToSpeech.verification.image.hash harus ditambahkan, dengan nilai hash gambar yang valid. |
false |
textToSpeech.verification.image.arguments |
Argumen yang digunakan untuk mengeksekusi gambar docker tes penggunaan. Pod uji helm meneruskan argumen ini ke kontainer saat menjalankan helm test . |
"./text-to-speech-client" "--input='What's the weather like'" "--host=$(TEXT_TO_SPEECH_HOST)" "--port=$(TEXT_TO_SPEECH_PORT)" |
Ucapan ke teks (sub-bagan: bagan/speechToText)
Untuk mengganti bagan "payung", tambahkan awalan speechToText.
pada parameter apa pun untuk membuatnya lebih spesifik. Misalnya, itu akan mengambil alih parameter yang sesuai misalnya, speechToText.numberOfConcurrentRequest
mengambil alih numberOfConcurrentRequest
.
Parameter | Deskripsi | Default |
---|---|---|
enabled |
Apakah layanan ucapan ke teks diaktifkan. | false |
numberOfConcurrentRequest |
Jumlah permintaan bersamaan untuk layanan ucapan ke teks . Bagan ini secara otomatis menghitung sumber daya CPU dan memori, berdasarkan nilai ini. | 2 |
optimizeForAudioFile |
Apakah layanan perlu mengoptimalkan input audio melalui file audio. Jika true , bagan ini akan mengalokasikan lebih banyak sumber daya CPU ke layanan. |
false |
image.registry |
Registri gambar docker ucapan ke teks. | containerpreview.azurecr.io |
image.repository |
Repositori gambar docker ucapan ke teks. | microsoft/cognitive-services-speech-to-text |
image.tag |
Tag gambar docker ucapan ke teks . | latest |
image.pullSecrets |
Rahasia gambar untuk menarik gambar docker ucapan ke teks . | |
image.pullByHash |
Apakah gambar docker ditarik oleh hash. Jika true , image.hash diperlukan. |
false |
image.hash |
Hash gambar docker ucapan ke teks . Hanya digunakan ketika image.pullByHash: true . |
|
image.args.eula (diperlukan) |
Menunjukkan bahwa Anda telah menerima lisensi. Satu-satunya nilai yang valid adalah accept |
|
image.args.billing (diperlukan) |
Nilai URI titik akhir tagihan tersedia di halaman Gambaran umum Ucapan portal Microsoft Azure. | |
image.args.apikey (diperlukan) |
Digunakan untuk melacak informasi tagihan. | |
service.type |
Jenis layanan Kubernetes dari layanan ucapan ke teks . Lihat petunjuk jenis layanan Kubernetes untuk detail lebih lanjut dan verifikasi dukungan penyedia cloud. | LoadBalancer |
service.port |
Port layanan ucapan ke teks . | 80 |
service.annotations |
Anotasi ucapan ke teks untuk metadata layanan. Anotasi adalah pasangan nilai kunci. annotations: some/annotation1: value1 some/annotation2: value2 |
|
service.autoScaler.enabled |
Apakah Autoscaler Pod Horizontal diaktifkan. Jika true , akanspeech-to-text-autoscaler disebarkan di kluster Kube. |
true |
service.podDisruption.enabled |
Apakah Anggaran Gangguan Pod diaktifkan. Jika true , akanspeech-to-text-poddisruptionbudget disebarkan di kluster Kube. |
true |
Analisis sentimen (sub-bagan: bagan/speechToText)
Dimulai dengan v2.2.0 dari kontainer ucapan ke teks dan v0.2.0 dari bagan Helm, parameter berikut digunakan untuk analisis sentimen menggunakan API layanan Bahasa.
Parameter | Deskripsi | Values | Default |
---|---|---|---|
textanalytics.enabled |
Apakah layanan analitik teks diaktifkan | benar/salah | false |
textanalytics.image.registry |
Registri gambar docker analitik teks | registri gambar docker valid | |
textanalytics.image.repository |
Repositori gambar docker analitik teks | repositori gambar docker valid | |
textanalytics.image.tag |
Tag gambar docker analitik teks | Tag gambar docker valid | |
textanalytics.image.pullSecrets |
Rahasia gambar untuk menarik gambar docker analitik teks | nama rahasia valid | |
textanalytics.image.pullByHash |
Menentukan apakah Anda menarik gambar docker dengan hash. Jika yes , image.hash diperlukan untuk memiliki juga. Jika no , atur sebagai 'false'. Defaultnya adalah false . |
benar/salah | false |
textanalytics.image.hash |
Hash gambar docker analitik teks. Hanya menggunakannya dengan image.pullByHash:true . |
Hash gambar docker valid | |
textanalytics.image.args.eula |
Salah satu argumen yang diperlukan oleh kontainer analitik teks, yang menunjukkan bahwa Anda telah menerima lisensi. Nilai opsi ini harus: accept . |
accept , jika Anda ingin menggunakan kontainer |
|
textanalytics.image.args.billing |
Salah satu argumen yang diperlukan oleh kontainer analitik teks, yang menentukan URI titik akhir penagihan. Nilai URI titik akhir tagihan tersedia di halaman Gambaran umum Ucapan portal Microsoft Azure. | URI titik akhir tagihan valid | |
textanalytics.image.args.apikey |
Salah satu argumen yang diperlukan oleh kontainer analitik teks, yang digunakan untuk melacak informasi penagihan. | apikey valid | |
textanalytics.cpuRequest |
CPU yang diminta untuk kontainer analitik teks | int | 3000m |
textanalytics.cpuLimit |
CPU yang teratas untuk kontainer analitik teks | 8000m |
|
textanalytics.memoryRequest |
Memori yang diminta untuk kontainer analitik teks | 3Gi |
|
textanalytics.memoryLimit |
Memori yang diminta untuk kontainer analitik teks | 8Gi |
|
textanalytics.service.sentimentURISuffix |
Analisis sentimen akhiran URI, seluruh URI dalam format "http://<service> :<port> /<sentimentURISuffix> ". |
text/analytics/v3.0-preview/sentiment |
|
textanalytics.service.type |
Jenis layanan analitik teks di Kube. Lihat jenis layanan Kube | jenis layanan Kube yang valid | LoadBalancer |
textanalytics.service.port |
Port layanan analitik teks | int | 50085 |
textanalytics.service.annotations |
Anotasi yang dapat ditambahkan pengguna ke metadata layanan analitik teks. Contohnya: anotasi: some/annotation1: value1 some/annotation2: value2 |
anotasi, satu per setiap baris | |
textanalytics.serivce.autoScaler.enabled |
Apakah Autoscaler Pod Horizontal diaktifkan. Jika diaktifkan, text-analytics-autoscaler akan disebarkan di kluster Kube |
benar/salah | true |
textanalytics.service.podDisruption.enabled |
Apakah Anggaran Gangguan Pod diaktifkan. Jika diaktifkan, text-analytics-poddisruptionbudget akan disebarkan di kluster Kube |
benar/salah | true |
Teks ke ucapan (sub-bagan: bagan/textToSpeech)
Untuk mengganti bagan "payung", tambahkan awalan textToSpeech.
pada parameter apa pun untuk membuatnya lebih spesifik. Misalnya, itu akan mengambil alih parameter yang sesuai misalnya, textToSpeech.numberOfConcurrentRequest
mengambil alih numberOfConcurrentRequest
.
Parameter | Deskripsi | Default |
---|---|---|
enabled |
Apakah layanan teks ke ucapan diaktifkan. | false |
numberOfConcurrentRequest |
Jumlah permintaan bersamaan untuk layanan teks ke ucapan . Bagan ini secara otomatis menghitung sumber daya CPU dan memori, berdasarkan nilai ini. | 2 |
optimizeForTurboMode |
Apakah layanan perlu mengoptimalkan input teks melalui file teks. Jika true , bagan ini akan mengalokasikan lebih banyak sumber daya CPU ke layanan. |
false |
image.registry |
Registri gambar docker teks ke ucapan. | containerpreview.azurecr.io |
image.repository |
Repositori gambar docker teks ke ucapan . | microsoft/cognitive-services-text-to-speech |
image.tag |
Tag gambar docker teks ke ucapan. | latest |
image.pullSecrets |
Rahasia gambar untuk menarik teks ke gambar docker ucapan . | |
image.pullByHash |
Apakah gambar docker ditarik oleh hash. Jika true , image.hash diperlukan. |
false |
image.hash |
Hash gambar docker teks ke ucapan . Hanya digunakan ketika image.pullByHash: true . |
|
image.args.eula (diperlukan) |
Menunjukkan bahwa Anda telah menerima lisensi. Satu-satunya nilai yang valid adalah accept |
|
image.args.billing (diperlukan) |
Nilai URI titik akhir tagihan tersedia di halaman Gambaran umum Ucapan portal Microsoft Azure. | |
image.args.apikey (diperlukan) |
Digunakan untuk melacak informasi tagihan. | |
service.type |
Jenis layanan Kubernetes dari layanan teks ke ucapan . Lihat petunjuk jenis layanan Kubernetes untuk detail lebih lanjut dan verifikasi dukungan penyedia cloud. | LoadBalancer |
service.port |
Port layanan teks ke ucapan . | 80 |
service.annotations |
Anotasi teks ke ucapan untuk metadata layanan. Anotasi adalah pasangan nilai kunci. annotations: some/annotation1: value1 some/annotation2: value2 |
|
service.autoScaler.enabled |
Apakah Autoscaler Pod Horizontal diaktifkan. Jika true , akantext-to-speech-autoscaler disebarkan di kluster Kube. |
true |
service.podDisruption.enabled |
Apakah Anggaran Gangguan Pod diaktifkan. Jika true , akantext-to-speech-poddisruptionbudget disebarkan di kluster Kube. |
true |
Langkah berikutnya
Untuk detail lebih lanjut tentang pemasangan aplikasi dengan Helm di Azure Kubernetes Service, kunjungi di sini.