11 ポイント 投稿者 GN⁺ 2024-01-14 | 2件のコメント | WhatsAppで共有
  • SiriやGoogleアシスタントを使ったことがある。これらはデバイスを制御できるが、カスタマイズできず、クラウドサービスに依存している。
  • 新しいことを学びたく、生活の中で使えるクールなものを求めている。新しいアシスタントには、皮肉っぽく嫌味な性格を持たせたい。
  • すべてをローカルで動かしたい。例外はない。コーヒーマシンが国の反対側にあるサーバーと通信する理由はない。
  • 基本的な「電気をつけて」機能以上のものを求めている。将来的に新機能を追加できるようにしたい。

アーキテクチャ

  • ファイアウォール、NIPS、VLANルーティングのためにProtectli Vault VP2420を使用。
  • HomeAssistantをインターネットに公開し、VPNなしでリモート利用できるようにしている。そのために極端なセキュリティ対策を講じている。
  • 安価に2.5ギガを確保するため、TRENDnet TEG-3102WSマネージドスイッチを選択。
  • eBayで大半の部品を購入し、できるだけ安く組んだコンピューターにRTX 4060Tiを2枚使用。LLMに大量のコンテキストを与えるのに必要なVRAMが重要。
  • HomeAssistant(とWAF)を動かすためにMinisforum UM690を使用。Raspberry Pi 4でも可能だが、多くのサービスを動かし、WhisperがCPUにかなり負荷をかける。
  • Ethernetケーブルがひどく入り乱れている。

推論エンジン

  • HomeAssistantの外でも使える汎用LLMが欲しかったため、vLLMを選択。非常に高速で、複数クライアントに同時にサービス提供できる唯一のエンジン。
  • OpenAI互換APIサーバーをサポートしており、構成がかなり楽になる。
  • VRAMと性能のトレードオフがちょうどよかったため、Mistral AIのMixtralモデルを選択。

モデル量子化

  • 完全なfp32モデルは動かせないため、量子化版を選択。
  • 量子化はMP3のように品質を少し落とす一方、必要リソースを大幅に改善する。
  • GPTQとAWQのどちらかを選ぶ必要があり、スマートホームの状態全体をモデルに渡す必要があるため、GPTQを選択。

HomeAssistant統合

  • HomeAssistant OS標準のWhisperとPiperアドオンを使ったが、HuggingFaceからカスタムGlaDOS音声モデルをダウンロードした。
  • HomeAssistantにはすでにOpenAI統合があるが、デバイスを制御できず、OpenAIサーバーの代わりに偽のOpenAIサーバーと通信させるためのbase_url設定もないため、拡張機能全体は使わなかった。
  • カスタム統合を見つけたが、ソフトウェアはそんなふうには動かないと分かっている。インストール後、さらに2つの問題が発生した。

問題解決

  • Mixtralは独特なチャットテンプレートを使う。システムプロンプトを許可せず、見つけると例外を投げる。
  • vLLMはOpenAIの関数呼び出しAPIをサポートしていない。仮に対応していても、関数呼び出し特化モデルを動かす必要がある。
  • Mixtralを修正するため、チャットテンプレートをシステムプロンプトを受け入れられるよう変更。UIにはLibreChatを使い、システムプロンプトが正しく動くようにした。

JSON出力

  • モデルが関数を呼び出せなくても、JSONを出力するよう求めて実行できる。
  • カスタム統合をフォークし、HomeAssistantサービスをJSONで実行する機能を追加した。

GlaDOSプロンプト

  • GlaDOSプロンプトを修正して、自分専用のアシスタントで使った。
  • JSON出力を好みすぎる問題が発生した。単純な質問に対しても、サービス呼び出しを試みるJSONを出力してしまう。

解決策

  • ユーザーが作業を依頼した場合に、既知のテキストを挿入するよう求めた。$ActionRequiredを選択。
  • フォーク側でこれをフィルタリングし、問題を解決した。

最終プロンプト

  • より多くのデバイスに対応し、不要なエンティティが少ない初期プロンプトへ更新。
  • 求められていない場合はアクションを実行しないよう促した。
  • 何度も試行した末に、ほぼ完璧に動作するものを得た(4060Tiのメモリバス制限のため少し遅い)。

GN⁺の見解

  • このプロジェクトは、プライバシーとユーザーに合わせた体験を重視する人にとって非常に興味深いかもしれない。
  • ローカルで動作するLLMを使ってスマートホームを制御することは、データセキュリティと応答速度の面で大きな利点をもたらす。
  • ユーザー自身がシステムを構築してカスタマイズする過程は、技術教育とDIY文化を促進する良い例になっている。

2件のコメント

 
xguru 2024-01-15

よく整理されていて、楽しく読めました。
Home AssistantがLLM機能を追加する予定とのことなので、今後はもっと簡単に利用できそうですね。

私が見ているインテリア紹介のYouTubeチャンネルでもIoT製品を作ると言っていましたが、そういうところでもこうしたものを最初から活用できるように考えてくれると、さらに面白くなりそうです

 
GN⁺ 2024-01-14
Hacker Newsの意見
  • Home Assistant創業者の意見:

    • Home Assistantは今年、同様の機能をデフォルトで統合する計画。
    • 標準化されたローカルLLM APIの必要性を強調し、モデルが何をできるかを問い合わせられる機能を求めている。
    • LLMが有用に動作するために、OpenAIの機能と類似した機能をサポートするローカルLLMを見たいとしている。
    • JSON生成時にエラーなくそのまま実行できる成果物を望んでいる。
  • 他のユーザーの経験:

    • インストール後の結果に関する明確な説明が不足していると指摘。
    • GPT-4と比べて、小規模モデルで複雑な作業を行うには限界があると述べている。
    • 実際の出力例を見たいとしている。
  • ローカルLLMをテストしたユーザー:

    • llava-v1.5-7b-q4モデルがホームオートメーション作業に効果的だと明かしている。
    • GPT-4に近いレベルの結果を得られたという。
  • Home Assistantユーザーのフィードバック:

    • AIへの理解が不足していることを認めつつ、始めるためのテンプレートに感謝を示している。
    • Home Assistantを複数の場所に配置して有用に使っていると述べている。
  • マイクアレイに関する質問:

    • 趣味で使えるマイクアレイの進歩状況について知りたがっている。
    • Echoデバイスと比べたマイク性能に疑問を呈している。
  • ハードウェアおよび設定に関する質問:

    • 使用したGPUモデルと価格比較について質問している。
    • 量子化の選択に関する具体的な情報を求めている。
    • VRAM制約のため、低い量子化レベルでも精度が維持されることを期待している。
  • マイク選定と音声認識実装に関する追加情報の要望:

    • 今後、マイク選定と音声認識実装に関する詳しい情報が出ることを期待している。
  • OpenAI APIを使ったユーザーの経験:

    • OpenAIのAPIを使ってシンプルなPythonラッパーを書いた。
    • ローカルの音声認識と生成のためにESP32-BoxとWillowプロジェクトを使用している。
  • ネットワーク設定に関する質問:

    • 複雑なネットワーク設定の代わりにtailscaleを使わなかった理由を知りたがっている。
    • そのインフラが提供する柔軟性についての説明を求めている。