- 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
İ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.
Hacker News görüşleri
Home Assistant kurucusunun görüşü:
Başka bir kullanıcının deneyimi:
Yerel LLM test eden kullanıcı:
llava-v1.5-7b-q4modelinin ev otomasyonu görevlerinde etkili olduğunu belirtiyor.Home Assistant kullanıcısının geri bildirimi:
Mikrofon dizisiyle ilgili soru:
Donanım ve ayarlarla ilgili soru:
Mikrofon seçimi ve konuşma tanıma uygulaması hakkında ek bilgi talebi:
OpenAI API kullanan kullanıcının deneyimi:
Ağ yapılandırmasıyla ilgili soru: