11 poin oleh GN⁺ 2024-01-14 | 2 komentar | Bagikan ke WhatsApp
  • Pernah menggunakan Siri dan Google Assistant. Keduanya bisa mengendalikan perangkat, tetapi tidak bisa dikustomisasi dan bergantung pada layanan cloud.
  • Ingin mempelajari hal baru, serta menginginkan sesuatu yang keren dan bisa digunakan dalam kehidupan sehari-hari. Asisten baru ini diharapkan memiliki kepribadian yang sinis dan sarkastik.
  • Ingin semuanya berjalan secara lokal. Tanpa pengecualian. Tidak ada alasan mesin kopi harus berbicara dengan server di sisi lain negara.
  • Menginginkan lebih dari sekadar fungsi dasar seperti "menyalakan lampu". Berharap bisa menambahkan fitur baru di masa depan.

Arsitektur

  • Menggunakan Protectli Vault VP2420 untuk firewall, NIPS, dan routing VLAN.
  • Mengekspos HomeAssistant ke internet agar bisa digunakan dari jarak jauh tanpa VPN. Untuk itu, diterapkan langkah-langkah keamanan yang ekstrem.
  • Memilih switch terkelola TRENDnet TEG-3102WS untuk mendapatkan 2,5 gigabit dengan harga murah.
  • Menggunakan dua RTX 4060Ti pada komputer rakitan yang disusun semurah mungkin dengan membeli sebagian besar komponennya dari eBay. VRAM penting untuk memasok konteks dalam jumlah besar ke LLM.
  • Menggunakan Minisforum UM690 untuk menjalankan HomeAssistant (dan WAF). Raspberry Pi 4 juga memungkinkan, tetapi banyak layanan dijalankan dan Whisper cukup menuntut CPU.
  • Kekacauan besar kabel Ethernet.

Mesin inferensi

  • Memilih vLLM karena menginginkan LLM umum yang juga bisa digunakan di luar HomeAssistant. Sangat cepat, dan satu-satunya engine yang dapat melayani banyak klien secara bersamaan.
  • Mendukung server API yang kompatibel dengan OpenAI, sehingga segalanya menjadi jauh lebih mudah.
  • Memilih model Mixtral dari Mistral AI karena titik kompromi antara VRAM dan performanya sangat pas.

Kuantisasi model

  • Karena tidak bisa menjalankan model fp32 penuh, dipilih versi yang sudah dikuantisasi.
  • Kuantisasi, seperti MP3, sedikit menurunkan kualitas namun sangat memperbaiki kebutuhan sumber daya.
  • Harus memilih antara GPTQ dan AWQ, dan karena seluruh status smart home perlu dikirim ke model, dipilih GPTQ.

Integrasi HomeAssistant

  • Menggunakan addon Whisper dan Piper bawaan HomeAssistant OS, tetapi mengunduh model suara GlaDOS khusus dari HuggingFace.
  • HomeAssistant sebenarnya sudah memiliki integrasi OpenAI, tetapi karena tidak bisa mengendalikan perangkat dan tidak memiliki pengaturan base_url untuk memaksanya berbicara dengan server OpenAI palsu alih-alih server OpenAI, fitur ekstensinya tidak digunakan secara penuh.
  • Menemukan integrasi kustom, tetapi tahu bahwa perangkat lunak tidak bekerja seperti itu. Setelah pemasangan, muncul dua masalah lagi.

Pemecahan masalah

  • Mixtral menggunakan template chat yang aneh. Ia tidak menerima system prompt dan akan melempar exception jika menemukannya.
  • vLLM tidak mendukung function calling API milik OpenAI. Kalaupun mendukung, harus menjalankan model yang dikhususkan untuk function calling.
  • Untuk memodifikasi Mixtral, template chat diubah agar menerima "system prompt". Librechat digunakan sebagai UI agar system prompt berfungsi dengan benar.

Output JSON

  • Walaupun model tidak bisa memanggil fungsi, ia tetap bisa diminta untuk mengeluarkan JSON dan kemudian mengeksekusinya.
  • Meng-fork integrasi kustom tersebut dan menambahkan kemampuan untuk mengeksekusi layanan HomeAssistant melalui JSON.

Prompt GlaDOS

  • Memodifikasi prompt GlaDOS untuk digunakan pada asisten buatan sendiri.
  • Muncul masalah karena terlalu menyukai output JSON. Bahkan untuk pertanyaan sederhana, ia mengeluarkan JSON yang mencoba memanggil layanan.

Solusi

  • Meminta agar teks tertentu yang sudah dikenal disisipkan jika pengguna benar-benar meminta tindakan. Dipilih "$ActionRequired".
  • Memfilter hal ini di fork untuk menyelesaikan masalah.

Prompt akhir

  • Memperbarui prompt awal dengan lebih banyak perangkat dan lebih sedikit entitas yang tidak perlu.
  • Mendorong agar tidak melakukan tindakan jika tidak diminta.
  • Setelah beberapa kali percobaan, hasilnya hampir sempurna (sedikit lambat karena keterbatasan memory bus pada 4060Ti).

Pendapat GN⁺

  • Proyek ini bisa sangat menarik bagi orang-orang yang mengutamakan privasi dan pengalaman yang disesuaikan untuk pengguna.
  • Menggunakan LLM yang berjalan secara lokal untuk mengendalikan smart home memberikan keuntungan besar dari sisi keamanan data dan kecepatan respons.
  • Proses membangun dan mengustomisasi sistem sendiri oleh pengguna adalah contoh yang baik dalam mendorong pendidikan teknis dan budaya DIY.

2 komentar

 
xguru 2024-01-15

Penjelasannya rapi, jadi seru untuk dibaca.
Katanya Home Assistant berencana menambahkan fitur LLM, jadi ke depannya sepertinya akan bisa digunakan dengan lebih mudah.

Bahkan di kanal YouTube acara interior yang saya tonton juga katanya sedang membuat produk IoT, jadi akan lebih menarik kalau tempat-tempat seperti itu sejak awal juga memikirkan agar hal seperti ini bisa dimanfaatkan.

 
GN⁺ 2024-01-14
Pendapat Hacker News
  • Pendapat pendiri Home Assistant:

    • Home Assistant berencana mengintegrasikan fitur serupa secara bawaan tahun ini.
    • Menekankan perlunya API LLM lokal yang terstandarisasi, dan menginginkan kemampuan untuk melakukan kueri tentang apa yang bisa dilakukan model.
    • Ingin melihat LLM lokal yang mendukung fitur serupa dengan kemampuan OpenAI agar dapat bekerja secara berguna.
    • Menginginkan hasil yang bisa langsung dijalankan tanpa kesalahan saat menghasilkan JSON.
  • Pengalaman pengguna lain:

    • Menunjukkan bahwa setelah instalasi, penjelasan yang jelas tentang hasilnya masih kurang.
    • Menyebutkan bahwa dibandingkan GPT-4, model kecil memiliki keterbatasan dalam menjalankan tugas yang kompleks.
    • Ingin melihat contoh output nyata.
  • Pengguna yang menguji LLM lokal:

    • Menyatakan bahwa model llava-v1.5-7b-q4 efektif untuk tugas otomasi rumah.
    • Mengatakan bahwa mereka mendapatkan hasil yang mirip dengan GPT-4.
  • Umpan balik pengguna Home Assistant:

    • Mengakui kurang memahami AI, dan menyampaikan terima kasih atas template untuk memulai.
    • Menyebutkan bahwa mereka menempatkan Home Assistant di beberapa lokasi dan menggunakannya dengan berguna.
  • Pertanyaan tentang array mikrofon:

    • Penasaran dengan tingkat kemajuan array mikrofon yang digunakan sebagai hobi.
    • Mengajukan pertanyaan tentang performa mikrofon dibandingkan perangkat Echo.
  • Pertanyaan tentang perangkat keras dan pengaturan:

    • Menanyakan model GPU yang digunakan dan perbandingan harganya.
    • Meminta informasi spesifik tentang pilihan kuantisasi.
    • Berharap akurasi tetap terjaga bahkan pada tingkat kuantisasi rendah karena keterbatasan VRAM.
  • Permintaan informasi tambahan tentang pemilihan mikrofon dan implementasi pengenalan suara:

    • Mengharapkan informasi yang lebih rinci ke depannya tentang pemilihan mikrofon dan implementasi pengenalan suara.
  • Pengalaman pengguna yang memakai OpenAI API:

    • Menulis wrapper Python sederhana menggunakan API OpenAI.
    • Menggunakan ESP32-Box dan proyek Willow untuk pengenalan dan generasi suara lokal.
  • Pertanyaan tentang pengaturan jaringan:

    • Penasaran mengapa tidak menggunakan tailscale alih-alih pengaturan jaringan yang rumit.
    • Meminta penjelasan tentang fleksibilitas yang disediakan infrastruktur tersebut.