[GN⁺] 스마트 홈 제어를 위한 완전 로컬 LLM 음성 비서 구축하기

GeekNewsxguru님께 허락을 받고 GN에 올라온 글들 중에 AI 관련된 소식들을 공유하고 있습니다. :smiley_cat:


소개

  • Siri와 Google 어시스턴트를 사용한 경험이 있음. 이들은 기기를 제어할 수 있지만, 커스터마이징이 불가능하고 클라우드 서비스에 의존함.
  • 새로운 것을 배우고자 하며, 삶에서 사용할 수 있는 멋진 것을 원함. 새로운 어시스턴트는 빈정대고 비꼬는 성격을 가지길 원함.
  • 모든 것이 로컬에서 실행되기를 원함. 예외 없이. 커피 머신이 국가의 반대편 서버와 대화할 이유가 없음.
  • 기본적인 "불 켜기" 기능 이상을 원함. 미래에 새로운 기능을 추가할 수 있기를 바람.

아키텍처

  • 방화벽, NIPS, VLAN 라우팅을 위해 Protectli Vault VP2420 사용.
  • 인터넷에 HomeAssistant를 노출시켜 VPN 없이 원격으로 사용할 수 있도록 함. 이를 위해 극단적인 보안 조치를 취함.
  • 저렴한 가격에 2.5기가를 얻기 위해 TRENDnet TEG-3102WS 관리형 스위치 선택.
  • eBay에서 대부분의 부품을 구매하여 가능한 저렴하게 조립한 컴퓨터에 RTX 4060Ti 두 개 사용. LLM에 대량의 컨텍스트를 공급하는 데 필요한 VRAM이 중요함.
  • HomeAssistant(와 WAF)를 실행하기 위해 Minisforum UM690 사용. Raspberry Pi 4도 가능하지만, 많은 서비스를 실행하고 Whisper가 CPU에 상당한 요구를 함.
  • 이더넷 케이블의 거대한 혼란.

추론 엔진

  • 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 설정이 없어 전체 확장 기능을 사용하지 않음.
  • 사용자 지정 통합을 찾았지만, 소프트웨어가 그렇게 작동하지 않는다는 것을 알고 있음. 설치 후 두 가지 문제가 더 발생함.

문제 해결

  • Mixtral은 특이한 채팅 템플릿을 사용함. 시스템 프롬프트를 허용하지 않고 발견되면 예외를 발생시킴.
  • vLLM은 OpenAI의 함수 호출 API를 지원하지 않음. 지원한다 해도 함수 호출에 특화된 모델을 실행해야 함.
  • Mixtral을 수정하기 위해 채팅 템플릿을 "시스템 프롬프트"를 받아들이도록 변경함. Librechat을 UI로 사용하여 시스템 프롬프트가 제대로 작동하도록 함.

JSON 출력

  • 모델이 함수를 호출할 수 없더라도 JSON을 출력하도록 요청하고 실행할 수 있음.
  • 사용자 지정 통합을 포크하여 HomeAssistant 서비스를 JSON으로 실행하는 기능을 추가함.

GlaDOS 프롬프트

  • GlaDOS 프롬프트를 수정하여 나만의 어시스턴트에서 사용함.
  • JSON 출력을 좋아하는 문제가 발생함. 간단한 질문에도 서비스 호출을 시도하는 JSON을 출력함.

해결책

  • 사용자가 작업을 요청한 경우 알려진 텍스트를 삽입하도록 요청함. "$ActionRequired"를 선택함.
  • 포크에서 이를 필터링하여 문제를 해결함.

최종 프롬프트

  • 더 많은 기기와 불필요한 엔티티가 적은 초기 프롬프트를 업데이트함.
  • 요청하지 않은 경우 작업을 수행하지 않도록 장려함.
  • 여러 시도 끝에 거의 완벽하게 작동하는 것을 얻음(4060Ti의 메모리 버스 제한으로 인해 약간 느림).

GN⁺의 의견

  • 이 프로젝트는 개인 정보 보호와 사용자 맞춤형 경험을 중시하는 사람들에게 매우 흥미로울 수 있음.
  • 로컬에서 실행되는 LLM을 사용하여 스마트 홈을 제어하는 것은 데이터 보안과 응답 속도 측면에서 큰 이점을 제공함.
  • 사용자가 직접 시스템을 구축하고 커스터마이징하는 과정은 기술 교육과 DIY 문화를 장려하는 좋은 예시임.

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를 사용하여 간단한 파이썬 래퍼를 작성함.
    • 로컬 음성 인식 및 생성을 위해 ESP32-Box와 Willow 프로젝트를 사용함.
  • 네트워킹 설정에 대한 질문:
    • 복잡한 네트워킹 설정 대신 tailscale을 사용하지 않은 이유에 대해 궁금해함.
    • 해당 인프라가 제공하는 유연성에 대한 설명을 요청함.

원문

출처 / GeekNews

1개의 좋아요