11 puan yazan GN⁺ 2024-01-14 | 2 yorum | WhatsApp'ta paylaş
  • Siri ve Google Asistan kullanma deneyimim vardı. Bunlar cihazları kontrol edebiliyor, ancak özelleştirilemiyor ve bulut hizmetlerine bağımlı.
  • Yeni bir şey öğrenmek istiyordum ve günlük hayatta kullanabileceğim havalı bir şey istedim. Yeni asistanın alaycı ve iğneleyici bir kişiliğe sahip olmasını istedim.
  • Her şeyin yerelde çalışmasını istedim. İstisnasız. Kahve makinesinin ülkenin öbür ucundaki bir sunucuyla konuşması için hiçbir neden yok.
  • Temel bir "ışığı aç" işlevinden fazlasını istedim. Gelecekte yeni özellikler ekleyebilmek istedim.

Mimari

  • Güvenlik duvarı, NIPS ve VLAN yönlendirmesi için Protectli Vault VP2420 kullanıldı.
  • HomeAssistant internete açılarak VPN olmadan uzaktan kullanılabilir hale getirildi. Bunun için son derece sıkı güvenlik önlemleri alındı.
  • Uygun fiyata 2.5 gigabit elde etmek için TRENDnet TEG-3102WS yönetilebilir switch seçildi.
  • Çoğu parça eBay'den alınarak mümkün olduğunca ucuza toplanmış bir bilgisayarda iki adet RTX 4060Ti kullanıldı. LLM'ye büyük miktarda bağlam sağlamak için gereken VRAM kritik önemdeydi.
  • HomeAssistant'ı (ve WAF'ı) çalıştırmak için Minisforum UM690 kullanıldı. Raspberry Pi 4 de kullanılabilirdi, ancak çok sayıda servis çalışıyor ve Whisper CPU'yu ciddi şekilde zorluyor.
  • Devasa bir Ethernet kablosu karmaşası.

Çıkarım motoru

  • HomeAssistant dışında da kullanılabilecek genel amaçlı bir LLM istendiği için vLLM seçildi. Son derece hızlı ve aynı anda birden fazla istemciye hizmet verebilen tek motor.
  • OpenAI uyumlu API sunucusunu desteklemesi işleri büyük ölçüde kolaylaştırdı.
  • VRAM ile performans arasındaki denge mükemmel uyduğu için Mistral AI'nin Mixtral modeli seçildi.

Model kuantizasyonu

  • Tam fp32 modeli çalıştırmak mümkün olmadığı için kuantize bir sürüm seçildi.
  • Kuantizasyon, MP3 gibi kaliteyi biraz düşürürken kaynak gereksinimlerini büyük ölçüde iyileştiriyor.
  • GPTQ ile AWQ arasında seçim yapılması gerekiyordu; akıllı evin tüm durumunu modele aktarmak gerektiğinden GPTQ seçildi.

HomeAssistant entegrasyonu

  • HomeAssistant OS'nin varsayılan Whisper ve Piper eklentileri kullanıldı, ancak HuggingFace'ten özel bir GlaDOS ses modeli indirildi.
  • HomeAssistant'ta zaten OpenAI entegrasyonu var, ancak cihazları kontrol edemiyor ve OpenAI sunucuları yerine sahte bir OpenAI sunucusuyla konuşmaya zorlayacak base_url ayarı olmadığı için tam genişletme yetenekleri kullanılmadı.
  • Özel bir entegrasyon bulundu, ancak yazılımın o şekilde çalışmadığı biliniyordu. Kurulumdan sonra iki sorun daha ortaya çıktı.

Sorun giderme

  • Mixtral alışılmadık bir sohbet şablonu kullanıyor. Sistem prompt'unu kabul etmiyor ve bunu algılarsa istisna fırlatıyor.
  • vLLM, OpenAI'nin function calling API'sini desteklemiyor. Desteklese bile, function calling'e özel eğitilmiş bir model çalıştırmak gerekecekti.
  • Mixtral'ı düzeltmek için sohbet şablonu, "sistem prompt" kabul edecek şekilde değiştirildi. Sistem prompt'unun düzgün çalışması için arayüz olarak Librechat kullanıldı.

JSON çıktısı

  • Model fonksiyon çağıramasa bile JSON çıktısı üretmesi istenebilir ve bu çıktı çalıştırılabilir.
  • Özel entegrasyon fork edilerek HomeAssistant servislerini JSON ile çalıştırma yeteneği eklendi.

GlaDOS prompt'u

  • GlaDOS prompt'u düzenlenerek kişisel asistanda kullanıldı.
  • JSON üretmeyi fazla sevme sorunu ortaya çıktı. Basit sorularda bile servis çağırmaya çalışan JSON üretiyordu.

Çözüm

  • Kullanıcı bir görev istediğinde bilinen bir metin eklemesi istendi. Bunun için "$ActionRequired" seçildi.
  • Fork içinde bu filtrelenerek sorun çözüldü.

Son prompt

  • Daha fazla cihaz ve daha az gereksiz entity içeren başlangıç prompt'u güncellendi.
  • İstenmediği sürece eylem gerçekleştirmemesi teşvik edildi.
  • Birçok denemenin ardından neredeyse kusursuz çalışan bir sonuç elde edildi (4060Ti'nin bellek veri yolu sınırlamaları nedeniyle biraz yavaş olsa da).

GN⁺'nin görüşü

  • Bu proje, gizliliğe ve kullanıcıya özel deneyime önem verenler için oldukça ilgi çekici olabilir.
  • Yerelde çalışan bir LLM ile akıllı evi kontrol etmek, veri güvenliği ve yanıt hızı açısından büyük avantajlar sağlar.
  • Kullanıcının sistemi bizzat kurup özelleştirmesi, teknik eğitim ve DIY kültürünü teşvik eden iyi bir örnek.

2 yorum

 
xguru 2024-01-15

İyi derlenmiş olduğu için keyifle okudum.
Home Assistant'ın LLM özellikleri eklemeyi planladığı söyleniyor; bu yüzden ileride kullanımı daha da kolay olacak gibi görünüyor.

Benim takip ettiğim bir iç mimari/dekorasyon şovu YouTube kanalında da IoT ürünleri yapacaklarını söylüyorlardı; böyle yerler de en baştan bunları nasıl kullanabileceklerini düşünürse daha da ilgi çekici olabilir.

 
GN⁺ 2024-01-14
Hacker News görüşleri
  • Home Assistant kurucusunun görüşü:

    • Home Assistant bu yıl benzer işlevleri varsayılan olarak entegre etmeyi planlıyor.
    • Standartlaştırılmış bir yerel LLM API'sine ihtiyaç olduğunu vurguluyor ve modelin neler yapabildiğinin sorgulanabilmesini istiyor.
    • LLM'in faydalı şekilde çalışabilmesi için OpenAI işlevlerine benzer yetenekleri destekleyen yerel LLM'ler görmek istiyor.
    • JSON üretirken hatasız, doğrudan çalıştırılabilir çıktılar istiyor.
  • Başka bir kullanıcının deneyimi:

    • Kurulumdan sonra ortaya çıkan sonuca dair net bir açıklama olmadığını belirtiyor.
    • GPT-4 ile karşılaştırıldığında, küçük modellerin karmaşık işleri yerine getirmede sınırlı kaldığını söylüyor.
    • Gerçek çıktı örnekleri görmek istiyor.
  • Yerel LLM test eden kullanıcı:

    • llava-v1.5-7b-q4 modelinin ev otomasyonu görevlerinde etkili olduğunu belirtiyor.
    • GPT-4'e benzer seviyede sonuçlar aldığını söylüyor.
  • Home Assistant kullanıcısının geri bildirimi:

    • Yapay zeka konusundaki bilgisinin sınırlı olduğunu kabul ediyor ve başlangıç için bir şablon paylaşılmasından dolayı teşekkür ediyor.
    • Home Assistant'ı birden fazla yerde kurup faydalı şekilde kullandığını belirtiyor.
  • Mikrofon dizisiyle ilgili soru:

    • Hobi amaçlı kullanılan mikrofon dizilerinin ne kadar ilerlediğini merak ediyor.
    • Echo cihazlarıyla karşılaştırıldığında mikrofon performansını sorguluyor.
  • Donanım ve ayarlarla ilgili soru:

    • Kullanılan GPU modeli ve fiyat karşılaştırması hakkında soru soruyor.
    • Kuantizasyon seçimiyle ilgili daha somut bilgi istiyor.
    • VRAM kısıtları nedeniyle düşük kuantizasyon seviyelerinde bile doğruluğun korunacağını umuyor.
  • Mikrofon seçimi ve konuşma tanıma uygulaması hakkında ek bilgi talebi:

    • Gelecekte mikrofon seçimi ve konuşma tanıma uygulamasıyla ilgili daha ayrıntılı bilgi bekliyor.
  • OpenAI API kullanan kullanıcının deneyimi:

    • OpenAI API'sini kullanarak basit bir Python sarmalayıcı yazdığını söylüyor.
    • Yerel konuşma tanıma ve üretimi için ESP32-Box ve Willow projesini kullandığını belirtiyor.
  • Ağ yapılandırmasıyla ilgili soru:

    • Karmaşık ağ yapılandırmaları yerine neden tailscale kullanılmadığını merak ediyor.
    • Söz konusu altyapının sağladığı esneklik hakkında açıklama istiyor.