- Siri और Google Assistant इस्तेमाल करने का अनुभव है। ये डिवाइस कंट्रोल कर सकते हैं, लेकिन इन्हें कस्टमाइज़ नहीं किया जा सकता और ये cloud services पर निर्भर हैं।
- कुछ नया सीखना है और ऐसा कुछ बढ़िया चाहिए जिसे रोज़मर्रा की ज़िंदगी में इस्तेमाल किया जा सके। नया assistant तंज़िया और हल्का व्यंग्यपूर्ण व्यक्तित्व रखे, ऐसी इच्छा है।
- सब कुछ लोकल पर चलना चाहिए। बिना किसी अपवाद के। coffee machine को देश के दूसरे छोर पर मौजूद server से बात करने की कोई ज़रूरत नहीं है।
- सिर्फ़ बुनियादी "लाइट ऑन करो" फ़ंक्शन से आगे बढ़कर कुछ चाहिए। भविष्य में नए features जोड़ पाने की इच्छा है।
आर्किटेक्चर
- firewall, NIPS, VLAN routing के लिए Protectli Vault VP2420 का इस्तेमाल।
- HomeAssistant को इंटरनेट पर expose किया ताकि VPN के बिना remotely इस्तेमाल किया जा सके। इसके लिए बहुत कड़े security measures अपनाए गए।
- कम कीमत में 2.5 gigabit पाने के लिए TRENDnet TEG-3102WS managed switch चुना गया।
- eBay से ज़्यादातर parts खरीदकर जितना हो सके सस्ते में assembled computer बनाया गया, जिसमें RTX 4060Ti के दो GPU इस्तेमाल हुए। LLM को बड़ा context देने के लिए VRAM अहम है।
- HomeAssistant (और WAF) चलाने के लिए Minisforum UM690 का इस्तेमाल। Raspberry Pi 4 भी चल सकता है, लेकिन कई services चलानी हैं और Whisper CPU पर काफ़ी मांग करता है।
- Ethernet cables का बहुत बड़ा झंझट।
inference engine
- HomeAssistant के बाहर भी इस्तेमाल किए जा सकने वाले general-purpose LLM की ज़रूरत थी, इसलिए vLLM चुना गया। यह बहुत तेज़ है और एक साथ कई clients को service दे सकने वाला लगभग इकलौता engine है।
- यह OpenAI-compatible API server को support करता है, जिससे काम काफ़ी आसान हो गया।
- VRAM और performance के trade-off के लिहाज़ से सबसे सही बैठने वाला Mistral AI का Mixtral model चुना गया।
model quantization
- पूरा fp32 model चलाना संभव नहीं था, इसलिए quantized version चुना गया।
- quantization, MP3 की तरह, quality को थोड़ा कम करता है लेकिन resource requirements को काफ़ी बेहतर बना देता है।
- GPTQ और AWQ में से चुनना था, और क्योंकि पूरे smart home state को model तक पहुँचाना था, इसलिए GPTQ चुना गया।
HomeAssistant integration
- HomeAssistant OS के default Whisper और Piper add-ons इस्तेमाल किए गए, लेकिन HuggingFace से custom GlaDOS voice model डाउनलोड किया गया।
- HomeAssistant में पहले से OpenAI integration है, लेकिन वह डिवाइस कंट्रोल नहीं कर सकता और OpenAI servers की जगह fake OpenAI server से बात करने के लिए मजबूर करने वाला
base_url setting भी नहीं है, इसलिए पूरा extension feature इस्तेमाल नहीं किया गया।
- एक custom integration मिला, लेकिन यह भी समझ में आया कि software वैसे काम नहीं करता। install करने के बाद दो और समस्याएँ सामने आईं।
समस्या समाधान
- Mixtral एक अजीब chat template इस्तेमाल करता है। यह system prompt स्वीकार नहीं करता और यदि वह मिल जाए तो exception फेंक देता है।
- vLLM, OpenAI के function-calling API को support नहीं करता। और अगर करता भी, तो function calling के लिए विशेष model चलाना पड़ता।
- Mixtral को ठीक करने के लिए chat template बदला गया ताकि वह "system prompt" स्वीकार कर सके। UI के तौर पर Librechat इस्तेमाल किया गया ताकि system prompt सही से काम करे।
JSON output
- भले ही model functions call न कर सके, उससे JSON output देने के लिए कहा जा सकता है और उसे चलाया जा सकता है।
- custom integration को fork करके HomeAssistant services को JSON के ज़रिए execute करने की क्षमता जोड़ी गई।
GlaDOS prompt
- GlaDOS prompt को संशोधित करके अपने assistant में इस्तेमाल किया गया।
- JSON output को पसंद करने वाली एक समस्या सामने आई। साधारण सवालों पर भी यह service call करने की कोशिश वाला JSON output दे देता था।
समाधान
- जब user कोई task मांगे, तब एक ज्ञात text insert करने के लिए कहा गया। इसके लिए "$ActionRequired" चुना गया।
- fork में इसे filter करके समस्या हल की गई।
अंतिम prompt
- शुरुआती prompt को update किया गया ताकि ज़्यादा devices हों और अनावश्यक entities कम हों।
- यह भी प्रोत्साहित किया गया कि अनुरोध न होने पर कोई action न किया जाए।
- कई कोशिशों के बाद लगभग पूरी तरह काम करने वाला सेटअप मिल गया (4060Ti की memory bus limitation के कारण थोड़ा धीमा है)।
GN⁺ की राय
- यह project privacy और personalized experience को महत्व देने वालों के लिए बहुत दिलचस्प हो सकता है।
- लोकल पर चलने वाले LLM से smart home कंट्रोल करना data security और response speed, दोनों के लिहाज़ से बड़े फ़ायदे देता है।
- user द्वारा खुद system बनाना और उसे customize करना, technical learning और DIY culture को बढ़ावा देने का अच्छा उदाहरण है।
2 टिप्पणियां
यह काफ़ी अच्छी तरह से व्यवस्थित था, इसलिए पढ़ने में मज़ा आया।
कहा जा रहा है कि Home Assistant में LLM फीचर जोड़े जाने वाले हैं, तो आगे चलकर इसे और भी आसानी से इस्तेमाल किया जा सकेगा।
जिस इंटीरियर शो के YouTube चैनल को मैं देखता हूँ, वहाँ भी कहा जा रहा था कि वे IoT प्रोडक्ट बना रहे हैं; अगर ऐसी जगहों पर भी शुरुआत से ही यह सोचा जाए कि इस तरह की चीज़ें इस्तेमाल की जा सकें, तो यह और भी दिलचस्प होगा।
Hacker News टिप्पणियाँ
Home Assistant के संस्थापक की राय:
दूसरे उपयोगकर्ता का अनुभव:
local LLM का परीक्षण करने वाले उपयोगकर्ता:
Home Assistant उपयोगकर्ता की प्रतिक्रिया:
microphone array के बारे में सवाल:
hardware और setup के बारे में सवाल:
microphone चयन और speech recognition implementation के बारे में अतिरिक्त जानकारी का अनुरोध:
OpenAI API का उपयोग करने वाले उपयोगकर्ता का अनुभव:
networking setup के बारे में सवाल: