11 पॉइंट द्वारा GN⁺ 2024-01-14 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 टिप्पणियां

 
xguru 2024-01-15

यह काफ़ी अच्छी तरह से व्यवस्थित था, इसलिए पढ़ने में मज़ा आया।
कहा जा रहा है कि Home Assistant में LLM फीचर जोड़े जाने वाले हैं, तो आगे चलकर इसे और भी आसानी से इस्तेमाल किया जा सकेगा।

जिस इंटीरियर शो के YouTube चैनल को मैं देखता हूँ, वहाँ भी कहा जा रहा था कि वे IoT प्रोडक्ट बना रहे हैं; अगर ऐसी जगहों पर भी शुरुआत से ही यह सोचा जाए कि इस तरह की चीज़ें इस्तेमाल की जा सकें, तो यह और भी दिलचस्प होगा।

 
GN⁺ 2024-01-14
Hacker News टिप्पणियाँ
  • Home Assistant के संस्थापक की राय:

    • Home Assistant इस साल इसी तरह की सुविधाओं को डिफ़ॉल्ट रूप से इंटीग्रेट करने की योजना बना रहा है।
    • एक standardized local LLM API की ज़रूरत पर ज़ोर देते हुए, वे ऐसी क्षमता चाहते हैं जिससे यह query किया जा सके कि मॉडल क्या कर सकता है।
    • वे ऐसा local LLM देखना चाहते हैं जो उपयोगी ढंग से काम करने के लिए OpenAI features जैसी क्षमताओं को support करे।
    • JSON बनाते समय वे ऐसा output चाहते हैं जिसे बिना errors के सीधे चलाया जा सके।
  • दूसरे उपयोगकर्ता का अनुभव:

    • उन्होंने बताया कि इंस्टॉल करने के बाद परिणामों के बारे में स्पष्ट विवरण की कमी है।
    • GPT-4 की तुलना में, छोटे models के साथ complex tasks करने में सीमाएँ होने का उल्लेख किया।
    • वे वास्तविक output examples देखना चाहते हैं।
  • local LLM का परीक्षण करने वाले उपयोगकर्ता:

    • उन्होंने बताया कि llava-v1.5-7b-q4 मॉडल home automation tasks के लिए प्रभावी है।
    • उनका कहना है कि उन्हें GPT-4 के समान स्तर के परिणाम मिले।
  • Home Assistant उपयोगकर्ता की प्रतिक्रिया:

    • उन्होंने माना कि AI के बारे में उनकी समझ कम है, और शुरुआत करने के लिए template के लिए आभार जताया।
    • उन्होंने बताया कि वे Home Assistant को कई जगह deploy करके उपयोगी रूप से इस्तेमाल कर रहे हैं।
  • microphone array के बारे में सवाल:

    • वे hobby के तौर पर इस्तेमाल होने वाले microphone array की प्रगति की स्थिति के बारे में जानना चाहते हैं।
    • Echo devices की तुलना में microphone performance पर सवाल उठाया।
  • hardware और setup के बारे में सवाल:

    • इस्तेमाल किए गए GPU मॉडल और कीमत की तुलना के बारे में पूछा।
    • quantization choice के बारे में specific जानकारी मांगी।
    • VRAM constraints के कारण, उन्होंने उम्मीद जताई कि कम quantization level पर भी accuracy बनी रहेगी।
  • microphone चयन और speech recognition implementation के बारे में अतिरिक्त जानकारी का अनुरोध:

    • वे भविष्य में microphone selection और speech recognition implementation पर अधिक विस्तृत जानकारी की उम्मीद कर रहे हैं।
  • OpenAI API का उपयोग करने वाले उपयोगकर्ता का अनुभव:

    • उन्होंने OpenAI की API का उपयोग करके एक simple Python wrapper लिखा।
    • local speech recognition और generation के लिए ESP32-Box और Willow project का उपयोग किया।
  • networking setup के बारे में सवाल:

    • वे जानना चाहते हैं कि complex networking setup की बजाय tailscale का उपयोग क्यों नहीं किया गया।
    • उन्होंने यह भी पूछा कि यह infrastructure कौन-सी flexibility प्रदान करता है।