NVIDIA NIM, NVIDIA AI Enterprise’in bir parçası olarak, çoklu bulut, veri merkezi ve iş istasyonlarında önceden eğitilmiş ve özelleştirilmiş AI modelleri için GPU hızlandırmalı çıkarım mikro hizmetleri sunan konteynerler ile hizmet vermektedir. Artık konuşma ve çeviri için NIM mikro hizmetleri mevcuttur.
Yeni konuşma ve çeviri mikro hizmetleri, NVIDIA Riva’dan yararlanmakta ve otomatik konuşma tanıma (ASR), sinir ağı makine çevirisi (NMT) ve metinden sese (TTS) hizmetlerini sağlamaktadır.
NVIDIA konuşma ve çeviri NIM mikro hizmetlerini uygulamalarınıza entegre etmek, yalnızca gelişmiş ASR, NMT ve TTS ile küresel kullanıcı deneyimini ve erişilebilirliği artırmanın ötesinde bir fayda sağlar. Müşteri hizmetleri botları, interaktif sesli asistanlar veya çok dilli içerik platformları inşa ediyorsanız, bu NIM mikro hizmetleri, yüksek performanslı AI çıkarımı sağlamakta ve uygulamalarınızı ses ile etkinleştirmek için gereken esneklik ve doğruluğu sunmaktadır.
Temel Çıkarım Görevleri
Bu yazıda, tarayıcınızdan direkt olarak konuşma ve çeviri model arayüzlerini kullanarak ses transkribe etme, metni çevirmeye ve sentetik sesler üretmeye dair temel çıkarım görevleri yapmayı öğreneceksiniz. Ayrıca bu esnek mikro hizmetleri kendi altyapınızda nasıl çalıştıracağınızı, API’lardan nasıl erişeceğinizi ve uygulamalarınıza nasıl entegre edeceğinizi de öğrenebilirsiniz.
Konuşma ve Çeviri NIM ile Hızlı Çıkarım
Konuştaki NIM mikro hizmetleri, API kataloğunda bulunmaktadır. Tek bir butona tıklayarak, İngilizce konuşmaları transkribe edebilir, 30’dan fazla dil arasında metni çevirebilir veya metni doğal sesli konuşmaya dönüştürebilirsiniz. API kataloğu, konuşma ve çeviri NIM mikro hizmetlerinin temel yeteneklerini keşfetmek için rahat bir başlangıç noktası sunmaktadır.
Bu araçların gerçek gücü, verilerinizin bulunduğu her yerde dağıtılabilme esnekliğindedir. Bu mikro hizmetleri her uyumlu NVIDIA GPU üzerinde çalıştırabilir, API’lar aracılığıyla erişebilir ve uygulamalarınıza sorunsuz bir şekilde entegre edebilirsiniz. Bu çok yönlülük, konuşma NIM mikro hizmetlerinin yerel iş istasyonlarından bulut ve veri merkezi altyapısına kadar uzanan çeşitli ortamlarda dağıtılmasını sağlar.
NVIDIA Riva Python Müşterileri ile NIM Mikro Hizmetlerini Çalıştırma
Bu bölüm, nvidia-riva/python-clients GitHub reposunu klonlamayı ve sağlanan betikleri kullanarak NVIDIA API katalog Riva son noktasında basit çıkarım görevlerini çalıştırmayı anlatmaktadır.
Kısa bir süre içinde konuşma NIM mikro hizmetlerini test etmek için API kataloğundaki NIM sayfasına gidin ve Try API sekmesine tıklayın. Bu komutları kullanmak için bir NVIDIA API anahtarına ihtiyacınız olacaktır. Eğer hala bir anahtarınız yoksa, yalnızca Get API Key butonuna tıklamanız yeterlidir. Şimdi neler yapabileceğinize dair bazı örnekler bulabilirsiniz.
Akış Modunda Ses Transkribe Etme
Aşağıdaki komutu kullanarak bir ses dosyasını gerçek zamanlı olarak transkribe edebilirsiniz.
python python-clients/scripts/asr/transcribe_file.py
--server grpc.nvcf.nvidia.com:443 --use-ssl
--metadata function-id "1598d209-5e27-4d3c-8079-4751568b1081"
--metadata "authorization" "Bearer
$API_KEY_REQUIRED_IF_EXECUTING_OUTSIDE_NGC"
--language-code en-US
--input-file <ses_dosyanızın_yolu>
İngilizceden Almancaya Metin Çevirme
Aşağıdaki komut, “Bu, Riva metin çevirisi için bir örnek metin” ifadesini Almancaya çevirir. Çevrilen cümle “Dies ist ein Beispieltext für Riva Textübersetzung” olacaktır.
python python-clients/scripts/nmt/nmt.py
--server grpc.nvcf.nvidia.com:443 --use-ssl
--metadata function-id "647147c1-9c23-496c-8304-2e29e7574510"
--metadata "authorization" "Bearer
$API_KEY_REQUIRED_IF_EXECUTING_OUTSIDE_NGC"
--text "This is an example text for Riva text translation"
--source-language-code en
--target-language-code de
Sentetik Ses Üretimi
Aşağıdaki komut, “Bu ses, NVIDIA’nın metinden sese modelinden üretilmiştir” ifadesini sese dönüştürür ve ses çıktısını audio.wav
adıyla kaydeder. Bu, uzak bir sistemde terminalde çalışıyorsanız ve ses çıkışı yerel mikrofonunuza yönlendirilemiyorsa oldukça kullanışlıdır.
python python-clients/scripts/tts/talk.py
--server grpc.nvcf.nvidia.com:443 --use-ssl
--metadata function-id "0149dedb-2be8-4195-b9a0-e57e0e14f972"
--metadata authorization "Bearer
$API_KEY_REQUIRED_IF_EXECUTING_OUTSIDE_NGC"
--text "Bu ses, NVIDIA’nın metinden sese modelinden üretilmiştir"
--voice "English-US.Female-1"
--output audio.wav
NVIDIA ile Yerel Olarak Çalıştırma
Eğer advanced NVIDIA data center GPU’lar erişiminiz varsa, konuşma NIM mikro hizmetlerini yerel olarak çalıştırabilirsiniz. ASR, NMT ve TTS NIM iniş sayfalarındaki Docker sekmelerindeki talimatları izleyerek bunu gerçekleştirebilirsiniz. Alternatif olarak, her docker run
parametresini açıkladığı ve kurulum sürecini rehberlik ettiği daha ayrıntılı Getting Started belgelerine başvurabilirsiniz.
NGC API anahtarı, NIM mikro hizmetlerini NVIDIA konteyner kayıt defterinden (nvcr.io
) çekmek ve kendi sisteminizde çalıştırmak için gereklidir. Daha önce ürettiğiniz NVIDIA API anahtarı bu amaçla kullanılabilir. Ayrıca, ASR, NMT veya TTS NIM iniş sayfasına giderek Docker sekmesini seçip Get API Key butonuna tıklayarak bir anahtar alabilirsiniz.
NIM Mikro Hizmetlerini RAG Pipeline ile Entegre Etme
Bu bölümde, ASR ve TTS NIM mikro hizmetlerini sisteminizde başlatmayı ve NVIDIA Generative AI Examples GitHub reposundan temel bilgiye dayalı etkileşim (RAG) pipeline’ı ile nasıl bağlayacağınızı öğreneceksiniz. Bu yapı, belgeleri bir bilgi tabanına yüklemenizi, bu belgeler hakkında sesli sorular sormanızı ve yanıtları sentetik, doğal seslerle almanızı sağlar.
Çevreyi Ayarlama
NIM mikro hizmetlerini başlatmadan önce, NGC API anahtarınızı sisteminize NGC_API_KEY
olarak dışa aktarın, bunu terminalde doğrudan veya çevresel kaynak dosyanız üzerinden yapabilirsiniz.
Daha sonra, NVIDIA konteyner kayıt defterine giriş yapın:
echo "$NGC_API_KEY" | docker login nvcr.io --username '$oauthtoken'
--password-stdin
Ardından, bir LOCAL_NIM_CACHE
dizini oluşturun:
export LOCAL_NIM_CACHE=<yol/nim_cache>
mkdir -p "$LOCAL_NIM_CACHE"
chmod 777 $LOCAL_NIM_CACHE
Bu dizinde modellerinizi saklayacak ve NIM konteynerlerine monte edeceksiniz. chmod 777 komutunu atlamadığınızdan emin olun, aksi takdirde NIM Docker konteyneri model dosyalarını LOCAL_NIM_CACHE
dizinine indirmek için gerekli izne sahip olmayacaktır.
Varsayılan olarak, konuşma NIM mikro hizmetleri model dosyalarını yalnızca çalışmakta olan bir konteynerin içinde erişilebilen bir konuma indirecektir. Eğer yalnızca bir Riva hizmetini aynı zamanda çalıştırmayı planlıyorsanız, LOCAL_NIM_CACHE
tanımlanmamalı ya da bir NIM konteynerini durdurup diğerini başlatmadan önce LOCAL_NIM_CACHE
dizininizi temizlemelisiniz.
ASR NIM’i Başlatma
ASR NIM’i başlatmak için aşağıdaki betiği kullanın:
export CONTAINER_NAME=parakeet-ctc-1.1b-asr
docker run -it --rm --name=$CONTAINER_NAME
--runtime=nvidia
--gpus '"device=0"'
--shm-size=8GB
-e NGC_API_KEY=$NGC_API_KEY
-e NIM_MANIFEST_PROFILE=9136dd64-4777-11ef-9f27-37cfd56fa6ee
-e NIM_HTTP_API_PORT=9000
-e NIM_GRPC_API_PORT=50051
-p 9000:9000
-p 50051:50051
-v "$LOCAL_NIM_CACHE:/home/nvs/.cache/nim"
nvcr.io/nim/nvidia/parakeet-ctc-1.1b-asr:1.0.0
Eğer LOCAL_NIM_CACHE
dizini boş ise (ilk defa bu komutu çalıştırıyorsanız), tamamlanması 20-30 dakika sürebilir. Bu süre zarfında, NIM akustik (çevrimdışı, gecikme için optimize edilmiş ve akış için optimize edilmiş) ve noktalama modellerini .tar.gz dosyaları olarak indirecek ve daha sonra bunları konteyner içinde çıkaracaktır.
TTS NIM’i Başlatma
ASR NIM’i durdurduktan sonra (Ctrl+C ile veya farklı bir terminalde docker stop
veya docker container stop
ile) TTS NIM’i başlatın:
export CONTAINER_NAME=fastpitch-hifigan-tts
docker run -it --rm --name=$CONTAINER_NAME
--runtime=nvidia
--gpus '"device=0"'
--shm-size=8GB
-e NGC_API_KEY=$NGC_API_KEY
-e NIM_MANIFEST_PROFILE=3c8ee3ee-477f-11ef-aa12-1b4e6406fad5
-e NIM_HTTP_API_PORT=9000
-e NIM_GRPC_API_PORT=50051
-p 9000:9000
-p 50051:50051
-v "$LOCAL_NIM_CACHE:/home/nvs/.cache/nim"
nvcr.io/nim/nvidia/fastpitch-hifigan-tts:1.0.0
TTS NIM’in başlatılması, ASR NIM’e göre çok daha hızlı olmalıdır; çünkü bileşen modellerinin toplam alanı daha azdır. Ancak, her iki NIM için de aynı LOCAL_NIM_CACHE
dizinini kullandığımız için, TTS NIM hem ASR hem de TTS modellerini başlatacaktır.
NIM Mikro Hizmetlerini RAG Pipeline ile Bağlama
RAG web uygulaması, NVIDIA Generative AI Examples GitHub reposunun bir parçasıdır. Repo’yu klonladıktan sonra, yapmanız gereken en önemli şey RAG/examples/basic_rag/langchain/docker-compose.yaml dosyasını düzenlemektir. rag-playground hizmeti için PLAYGROUND_MODE
değerini ses olarak ayarlayın ve bu hizmete aşağıdaki environment
değişkenlerini ekleyin:
services:
...
rag-playground:
...
environment:
...
RIVA_API_URI: <riva-ip-adresi>:50051
TTS_SAMPLE_RATE: 48000
RIVA_API_URI’yi, varsayılan bir değerle ayarlarsanız (aşağıda gösterildiği gibi), varsayılan değerin etrafına çift tırnak koymamaya dikkat edin. Eğer koyarsanız, Python os modülü, Riva URI tanımındaki çift tırnakları da metin olarak dahil edecektir, bu da sorun yaratacaktır.
RIVA_API_URI: ${RIVA_API_URI:-<riva-ip-adresi>:50051}
localhost ile çalıştığınızda dahi, IP adresinizi veya kalıcı bir ana bilgisayar adını belirtmeniz gerekir; aksi takdirde localhost
çalışmayacaktır.
ASR ve TTS yeteneklerini bir RAG pipeline’ına eklemeye yönelik daha ayrıntılı talimatları Generative AI Examples repo’daki ASR ve TTS senkronizasyonu bölümünde bulabilirsiniz.
Docker-compose dosyasını uygun şekilde düzenledikten sonra, aşağıdaki komutu bu dosyanın bulunduğu dizinde çalıştırın:
docker compose up -d --build
Ayrıca, ağ içindeki her bir konteynerin çalıştığını doğrulayın:
docker ps --format "table {{.ID}}t{{.Names}}t{{.Status}}"
Test Etme
Kurulumunuzu test etmek için tarayıcınızda localhost:8090 adresine gidin. Eğer RAG uygulamasını uzaktan bir sistemde çalıştırıyorsanız, <uzak-IP-adresi>:8090
kullanın. Arayüz (Şekil 1 ve 2), büyük dil modeline (LLM) ses ya da metin ile soru sormanızı ve sözlü bir yanıt almanızı sağlar. Eğer modeller mevcutsa, ASR ve TTS dillerini menü seçenekleriyle değiştirebilirsiniz.
Belgeler üzerinde sorgulama yapmak için sağ üst köşedeki Knowledge Base sekmesine tıklayın. Burada PDF, düz metin veya markdown dosyalarını yükleyebilirsiniz. İçerikler çok boyutlu vektörler olarak ayrıştırılır ve bir vektör veritabanında indekslenir, bu şekilde LLM yeni bilgiler temelinde sorulara yanıt verebilir.
Örneğin, NVIDIA Blackwell Platform Arrives to Power a New Era of Computing başlıklı basın bülteninin bir PDF versiyonunu yükleyin. Varsayılan LLM’nin bu bilgiyle önceden eğitilmediğini unutmayın. Ardından, Converse sekmesine geri dönün, mikrofon simgesine tıklayın ve uygulamaya “NVIDIA Blackwell GPU’sunun kaç transistörü var?” diye sorun. Bilgi tabanı olmadan, LLM doğru yanıtı veremez (Şekil 1).
Artık bilgi tabanı aktifken aynı soruyu tekrar sorun. Bu sefer, tam RAG pipeline’ını kullanarak, LLM doğru yanıtı verilen yeni bilgiler üzerinden sağlıyor (Şekil 2).
Uygulamalarınıza Çok Dilliliği Ekleyin
Bu yazıda, NVIDIA konuşma ve çeviri NIM mikro hizmetlerini nasıl kuracağınızı ve bunları doğrudan tarayıcınız aracılığıyla interaktif konuşma ve çeviri model arayüzlerini kullanarak nasıl test edeceğinizi öğrendiniz. NIM konuşma ve çeviri mikro hizmetlerinin dağıtımındaki esnekliği ve bunları belge tabanlı bilgi geri kazanımı ile synthesize ses yanıtları için RAG pipeline’ına nasıl entegre edebileceğinizi keşfettiniz.
Güçlü çok dilli konuşma AI’yı kendi uygulamalarınıza eklemeye hazır mısınız? Konuşma NIM mikro hizmetlerini deneyerek ASR, NMT ve TTS’yi pipeline’larınıza eklemenin ne kadar kolay olduğunu görün. API’ları keşfedin ve bu NIM mikro hizmetlerinin uygulamalarınızı nasıl dönüştürebileceğini öğrenin.