2 puan yazan GN⁺ 2023-11-03 | 1 yorum | WhatsApp'ta paylaş
  • Talk-Llama, terminalde mikrofona konuştuğunuzda Whisper’ın sesi metne dönüştürdüğü ve LLaMA’nın yanıt verdiği bir whisper.cpp örneğidir
  • Mikrofon sesini yakalamak için SDL2 gerekir ve derleme sırasında CMake seçeneği WHISPER_SDL2=ON etkinleştirilmelidir
  • Çalıştırırken -mw ile Whisper modeli belirtilir; gerçek zamanlı sohbet için base veya small modeli önerilir
  • -ml için ggml uyumlu LLaMA modeli belirtilir ve model hazırlama yöntemi için llama.cpp yönergelerinin izlenmesi gerekir
  • --session FILE kullanıldığında model durumu kaydedilip yüklenebilir; böylece uzun sohbetlerde veya birden fazla çalıştırma boyunca bağlamın korunması mümkün olur

Terminalde sesli sohbet örneği

  • whisper.cpp/examples/talk-llama, terminalde LLaMA yapay zekasıyla sesli sohbet etmeye yönelik bir örnektir
  • 2 Kasım 2023 itibarıyla performans demosunun M2 Ultra üzerinde Whisper Medium + LLaMA v2 13B Q8_0 kombinasyonuyla çalıştırıldığı belirtilmiştir
  • Önceki demo, CPU üzerinde çalıştırma örneği olarak ayrı bir videoyla sunulmuştur

Derleme ve çalıştırma akışı

  • whisper-talk-llama, mikrofon sesini yakalamak için SDL2 kütüphanesine bağımlıdır
  • İşletim sistemine göre SDL2 kurulum örnekleri şöyledir
    • Debian tabanlı Linux: sudo apt-get install libsdl2-dev
    • Fedora Linux: sudo dnf install SDL2 SDL2-devel
    • Mac OS: brew install sdl2
  • CMake derlemesinde WHISPER_SDL2=ON seçeneği etkinleştirilir
    • cmake -B build -S . -DWHISPER_SDL2=ON
    • cmake --build build --config Release
  • Çalıştırma örneğinde Whisper modeli, LLaMA modeli, prompt ve iş parçacığı sayısı birlikte belirtilir
    • ./build/bin/whisper-talk-llama -mw ./models/ggml-small.en.bin -ml ../llama.cpp/models/llama-13b/ggml-model-q4_0.gguf -p "Georgi" -t 8

Model belirtme seçenekleri

  • -mw argümanı kullanılacak Whisper modelini belirtir
    • Gerçek zamanlı deneyim için base veya small modeli önerilir
  • -ml argümanı kullanılacak LLaMA modelini belirtir
    • ggml uyumlu LLaMA modelinin nasıl edinileceği için llama.cpp yönergelerine bakılması istenir

Oturum dosyasıyla bağlamı sürdürme

  • whisper-talk-llama, daha tutarlı ve kesintisiz sohbetler için oturum yönetimini destekler
  • Önceki etkileşimlerin bağlamını koruyarak kullanıcı isteklerini daha doğal biçimde anlayıp yanıtlayabilir
  • Oturum desteği, çalıştırma sırasında --session FILE komut satırı seçeneğiyle etkinleştirilir
    • Her etkileşimden sonra whisper-talk-llama model durumu belirtilen dosyaya kaydedilir
    • Dosya yoksa yeni oluşturulur
    • Dosya varsa model durumu bu dosyadan yüklenir ve önceki oturum devam ettirilir
  • Uzun sohbetlerde veya birden fazla oturum boyunca AI assistant ile etkileşime girerken önceki etkileşimleri hatırlamak ve daha alakalı bağlamsal yanıtlar sunmak için kullanışlıdır
  • Örnek çalıştırma:
    • ./build/bin/whisper-talk-llama --session ./my-session-file -mw ./models/ggml-small.en.bin -ml ../llama.cpp/models/llama-13b/ggml-model-q4_0.gguf -p "Georgi" -t 8

Ses çıkışı ve geri bildirim

  • Oluşturulan metin yanıtını sesli dinlemek için TTS aracı gerekir
  • İstenen TTS motoru kullanılabilir; ihtiyaca göre speak betiği düzenlenebilir
  • Varsayılan ayar MacOS say veya Windows SpeechSynthesizer kullanır
  • Geri bildirimlerin GitHub Discussion #672 üzerinden alınabileceği belirtilir

1 yorum

 
GN⁺ 2023-11-03
Hacker News yorumları
  • Bunu burada görmek eğlenceli :)
    Videoda gösterilenden bu yana Apple Silicon performansı muhtemelen çok daha iyi hale gelmiştir. whisper.cpp artık tamamen GPU üzerinde çalışıyor ve son birkaç ayda llama.cpp’nin üretim hızı da ciddi ölçüde iyileşti

    • Yeni demo videosu commit’ine kadar sadece 13 dakika geçmiş, fena değil :D
      Performans gerçekten de etkileyici
    • Görünüşe göre artık epey ünlüsünüz. GitHub’ı yakından takip eden çok kişi olması kuvvetle muhtemel
    • Yeni demoyu en üste taşımak için bir PR gönderdim. Bence yeni demo çok daha iyi
    • Bunu çalıştırmak için Apple Silicon en maliyet etkin seçenek mi, yoksa güçlü bir homelab Linux sunucusunda daha ucuza yapılabilir mi?
    • En yeni distilled Llama ile de çalışır mı?
  • Harika. Yakın zamanda bir projede Llama’yı açık kaynak bir ses sentezi modeline bağlamayı denedim; içinde pek çok ilginç mühendislik unsuru vardı
    Kişisel olarak en kullanışlı kodlama yardımcıları, zor düşünme veya problem çözme işini üstlenmeye çalışmak yerine, docstring’lerden argüman ve tip üretmek ya da tersini yapmak gibi elle yapılan işleri azaltan araçlar. Daha karmaşık işler için yardımcı araca oldukça iyi bir başlangıç noktası vermek gerekiyor
    Kod yazarken sık sık kendi kendime konuşurum; böyle bir araç söylediklerimi bağlam vektörü olarak embedding’e dönüştürüp ek girdi olarak kullanabilse ve modele daha iyi bir başlangıç noktası verebilse gerçekten fütüristik ve faydalı olurdu. Copilot’u geç benimseyenlerdenim ve her zaman kullanmıyorum, ama benzer bir şey bilen varsa merak ederim

  • 270 gün içinde açık ağırlık önerisi gerçeğe dönüşürse, birkaç ay sonra fiilen yasaklanabilir de

    • Bu iddia Biden’ın başkanlık kararnamesinin metniyle desteklenmiyor. Sadece çeşitli kamu kurumlarından güvenlik değerlendirme çerçeveleri oluşturmaları, açık ağırlıklı modeller için ilk değerlendirmeleri yapmaları ve 270 gün içinde başkana tavsiyeler sunmaları isteniyor
      Benim bulabildiğim kadarıyla açık ağırlıklı modelleri yasaklayan hiçbir şey yok. Nihai tavsiyelerde “yasaklayın” denmesi için de pek sebep görünmüyor
      Örneğin hükümetin açık ağırlıklı modelleri benimsemenin yükünü çok artırıp OpenAI satın almayı çok daha cazip hale getirecek şekilde yerleşik oyuncuların lehine tavsiyeler getirmesini hayal edebilirim. Ama bu, başlangıçta söylenen şeyden farklı
      Kararname oldukça okunabilir görünüyor; metinde benim kaçırdığım bir şey mi var?
      https://www.whitehouse.gov/briefing-room/presidential-action...
    • Ağırlıkların yasaklanacağına dair bir şey göremiyorum. Benim gördüğüm bölüm daha çok açık ağırlıkların riskleri ve faydaları hakkında bir rapor hazırlanmasını istemeye benziyor
      Kapsamın açık uçlu olmasının endişe verici olduğuna katılıyorum, ama gerçek yasak nerede?
    • Bu ne kadar ciddi bir tehdit? Sektör liderlerine danışmadan böyle aptalca bir şeyi nasıl uygulayabilirler?
  • Arch ve Debian’da ./talk-llama çalıştırınca floating point exception alıyorum. sdl2lib ve ffmpegi de kontrol ettim, ilgili issue’ya (https://github.com/ggerganov/whisper.cpp/issues/1325) da baktım ama çözülmedi. Bunu yaşayan başka biri var mı?

    • PopOS 22.04’te aynı hatayla uğraştım; şu yardımcı oldu:
      https://github.com/ggerganov/whisper.cpp/issues/352#issuecom...
      Neyin değiştiğinden emin değilim ama temel olarak ffmpeg ve libsdl2-devi kaldırıp depo kök dizininde make çalıştırdım. Sonra libsdl2 ve ffmpegi kurup make talk-llama yaptım
      4 çekirdekli i7-8550U ve 16 GB RAM ile epey yavaş
      Depo kök dizininde kabaca şöyle yaptım:
      $ sudo apt purge ffmpeg
      $ make clean
      $ git pull
      $ make
      $ sudo apt install libsdl2-dev
      $ make talk-llama
      $ ./talk-llama -mw ./models/ggml-small.en.bin -ml ../llama.cpp/models/llama-2-13b.Q4_0.gguf -p "t0mk" -t 8\n\n
  • Llama’nın üretimi bitirmesini beklemeden metin akışını alıp hemen seslendiren bir metinden sese çözümü yok mu?
    Model tamponu, ses sentezi motoru duraksamayacak kadar hızlı doldurursa mümkün olabilir gibi görünüyor

    • Tamponda tek kelime kalınca llama.cpp’nin “um”, “uhh” gibi şeyler üretmesini sağlamak yeterli olur :D
    • Cümlenin nereye gittiğini bilmek, zamanlama ve vurguyu daha iyi ayarlamayı sağlar. Yoksa BM tercümanları gibi düz bir şekilde birbirine eklenen kelimeler hissi verebilir
    • ElevenLabs ve Gemelo.AI tam da bu kullanım için metin girişi akışını destekleyen servisler. Bildiğim kadarıyla açık kaynak artımlı ses sentezi (Incremental TTS) modeli yok, ama token’ları tamponlayıp noktalama işareti geldiğinde ses sentezi modeline göndererek benzer şekilde uygulanabilir
  • LLM yanıtının tamamı bitene kadar beklemek yerine, üretildiği anda yaklaşık 6 tokenlık gruplar halinde ses sentezine akış olarak gönderirsek gecikmeyi azaltabilir miyiz?

    • Evet, o sırada bunu yapmayı planlıyordum ama araya başka işler girdi. Bu basit örnek birçok şekilde iyileştirilebilir
      Şu anda yalnızca temel bir uyarlamalı eşik kullanan konuşma sonu algılama daha iyi hale getirilebilir; büyük LLM hesaplama yaparken küçük bir LLM’in genel ve hızlı yanıtlar üretmesi de sağlanabilir. Ses sentezi de chunk ya da cümle bazında akış olarak verilebilir
      Bu tür chatbot’ların daha iyi açık kaynak sürümlerinden birinin https://github.com/yacineMTB/talk olduğunu düşünüyorum. Şu anda benzer projelerin daha fazla olması da çok olası
  • Llama için en iyi sohbet arayüzü nedir? Bir 3090’ım var; terminalden hızlı kodlama işleri için bir model çalıştırmayı denemek istiyorum

    • ollama’nın kullanımı gerçekten çok kolay. Gerektiğinde modelleri indiren tek bir binary; Docker’ın imajları alma biçimine benziyor
      pacman -S ollama
      ollama serve
      ollama run llama2:13b 'insert prompt'
      https://ollama.ai/
    • Ses desteği de olan açık kaynak bir proje var:
      https://github.com/cogentapps/chat-with-gpt
      ElevenLabs ve OpenAI API kullanacak şekilde yapılmış gibi görünüyor, ama yerel Whisper.cpp ve Llama’ya göre ayarlamak da kolay olabilir
    • Açık kaynak değil ama şimdilik ücretsiz olan lmstudio.ai var. Sohbet geçmişi, fena olmayan bir ayarlar arayüzü, kolay prompt yönetimi, model yönetimi ve keşfi, basit kurulum, çapraz platform desteği ve diğer araçlara bağlanmak için API sunucusu özelliği bile var
      İşe alım yapıyorlar ve açıklanmış bir gelir modeli yok; bu yüzden yakında ücretsiz özelliklerin bir kısmını ücretli yapmaları ya da bilerek kısıtlamaları gibi değişiklikler bekliyorum. Yine de tamamen llama.cpp’ye dayanan ücretsiz LLM’ler için ince uygulamaların sağlayıcı kilidi yaratması zor. Özelliklerden çok açık kaynak önceliğinizse ben de ollama’yı öneririm
    • Kurulumu en kolay olan şu: https://faraday.dev/
      Teknik sorular için şu anda Wizard’ın öne çıktığını düşünüyorum
    • “En iyi” ile ne kastettiğinize bağlı. Mümkün olan en hızlı, son teknoloji çıkarımsa 4090 üzerinde ExLlama ya da ExLlamaV2’dir
  • ollama, yerel açık kaynak LLM çalıştırmak için gerçekten tatmin edici; peki Whisper ya da en yeni açık kaynak ses sentezi modelleri tarafında bunun karşılığı ne? Whisper’ı yerelde bu kadar basit kurmayı sağlayan bir proje pek bilmiyorum

  • Bunun ne yapabildiğini basitçe açıklayabilir misiniz? Sohbetin bağlamını öğrenip koruyarak bir tür uzun süreli bellek oluşturabilir mi?

    • LLM uzmanı değilim ama anladığım kadarıyla yapı, ses tanıma → Llama → ses sentezi hattını üçüncü taraf sunucular yerine kendi PC’nizde çalıştırıyor
      LLM’in bağlam sınırı, kullanıcının seçtiği modele ve ayarlara bağlıdır. Örneğin Llama 2, Wizard Vicuna vb. hangi modeli kullandığınıza ve bağlam penceresini nasıl ayarladığınıza göre değişir. LLM’in kullanıcıya “yanıt vermekten” çok, kullanıcı ile faydalı bir assistant arasındaki konuşma geçmişinde en olası sonraki içeriği tahmin ettiğini; bunun sonucunda da faydalı bir assistant gibi davranmayı başarıp gerçekten faydalı bir assistant’a dönüştüğünü düşünmek kafa karıştırıcı olabilir
      Pipeline’ı değiştirirseniz bu tür davranışlar da mümkün gibi görünüyor. Yapı ses tanıma → Wrapper[Llama] → ses sentezi haline gelir ve Wrapper, Llama’nın işini yapmasına izin verirken giriş metnine ek işlemler uygulayabilirse işler ilginçleşir
      Wrapper konuşmayı analiz edip “bu kişinin adı Bob, erkek, 35 yaşında, köpekleri seviyor ve düzenli olmayı tercih ediyor; saat 17.00’de kızını araması için hatırlatma istiyor; Antarktika mafyasının sızma ajanı ve kendisiyle güçlü bir Polonya aksanıyla konuşulmasını tercih ediyor” gibi temel unsurları çıkarabilir ve buna göre davranabilir
      Örneğin HomeAssistant üzerinden saat 17.00 için hatırlatma oluşturabilir, ses sentezi motorunu Polonya aksanına ayarlayabilir ve sonraki çalıştırmaların başlangıç konuşma geçmişini değiştirebilir. İç sohbet konuşmasına kişinin adını eklemek, sonraki konuşmanın ön tanıtımına ilgi alanlarını ve kişiliğini sıkıştırılmış biçimde vermek gibi
      Böylece başka araçların gerçekleştirdiği eylemler üzerinden etkileşimlilik, sonraki konuşma geçmişini değiştirerek de süreklilik oluşturulabilir
  • Bu gerçekten güçlü bir ELIZA havası veriyor