목차
-
- 서론
-
- 기능 설명
-
- 요구 사항
-
- 시작하기
-
- 사용법
-
- 결론
1. 서론 §
저는 실험이 필요할 때, 채팅(웹 검색 및 이미지 인식 기능을 갖춘 LLM)과 이미지를 생성하거나 수정하는 모델을 모두 사용할 수 있는 로컬 AI를 컴퓨터에서 간단하게 체험할 방법을 원했습니다. 대부분의 가이드들은 많은 것을 설치하고 수천 개의 파일 중에서 모델을 선택해야 하므로, 저는 이 과정을 대신 해주는 작은 프로젝트를 만들었습니다.
이름은 다소 나쁜 말장난인데, 'braindead'는 깊게 생각하지 않고 그냥 시작한다는 의미이고, 'local intelligence'는 자체 컴퓨터에서 어느 정도의 '지능'을 구동한다는 의미입니다. :)
본 블로그 게시물에서는 이 프로젝트와 이를 시작하는 방법을 소개합니다.
2. 기능 설명 §
이 프로젝트는 podman을 사용하여 몇 개의 컨테이너를 실행합니다: OpenAI API와 호환되는 LLM 서버, 이미지 생성 서버, 웹 검색용 SearXNG, 그리고 웹 인터페이스 역할을 하는 Open WebUI입니다. 모든 것이 단일 주소 뒤에 위치하며, 외부 서비스에 노출해야 할 경우 토큰으로 보호됩니다.
제가 정말 좋아하는 기능 중 하나는 LLM과 이미지 모델 사이를 선택하거나 한 모델에서 다른 모델로 전환할 필요가 없다는 것입니다. 메모리에는 오직 하나의 모델만 로드되며, 요청이 도착하면 적절한 모델이 로드되고, 몇 분 동안 요청이 없으면 언로드되어 사용하지 않을 때 GPU 메모리가 다시 확보됩니다.
문서에는 일반적인 가정용 하드웨어와 다양한 요구 사항에 맞춰 준비된 모델 목록이 있습니다: 소형 텍스트 모델, 이미지를 이해하는 모델, 이미지 생성 모델, 그리고 기존 이미지를 수정할 수 있는 두 가지 모델입니다. 모델을 변경하는 것은 설정 블록을 복사하고 재시작하는 것만으로 충분하며, 클라이언트 측에서는 아무것도 변경할 필요가 없습니다.
3. 요구 사항 §
소프트웨어 측면에서는 rootless 모드를 사용하는 podman 5.0 이상 버전의 Linux 시스템만 필요합니다 (모든 것이 사용자 계정 하에서 실행되며, root 권한이 필요하지 않습니다). 이 프로젝트는 현재 AMD 그래픽 카드를 대상으로 하며, 제가 가지고 있지 않기 때문에 NVIDIA 카드로는 테스트된 적이 없습니다.
하드웨어 측면에서는 여전히 메모리(VRAM)가 있는 GPU가 필요합니다. 모델은 최대 12GB의 VRAM까지 테스트되었으며, 가장 큰 모델들은 일부가 RAM에서 실행되므로 RAM도 필요합니다. 이 목록을 사용하면 강력한 게이밍 컴퓨터 없이 몇 가지를 시도해 볼 수 있어야 하지만, 가장 작은 모델조차도 약 4GB의 VRAM과 8GB의 RAM이 필요합니다. 저는 2021년에 조립한 컴퓨터를 사용하는데, 여기에는 32GB의 RAM과 Radeon RX 6700 XT(2021년 1월 출시)가 장착되어 있으며, 여전히 매우 잘 작동합니다.
4. 시작하기 §
이 프로젝트는 자체 문서를 가지고 있지만, 여기에는 주요 단계들이 나와 있습니다.
사용자는 GPU에 접근할 수 있어야 하며, render 및 video 그룹에 속해야 합니다. 그런 다음 로그아웃했다가 다시 로그인하십시오:
sudo usermod -aG render,video $USER
프로젝트 디렉토리에서 설치하고 모든 것이 정상인지 확인합니다. 두 번째 명령어는 사용자의 AMD 그래픽 카드를 나열해야 합니다:
복사/붙여넣기 명령어를 실행하면 모델이 ~/.local/share/ia-locale/models에 다운로드되며, 기본 모델들은 약 8GB의 용량을 차지합니다. 그런 다음 서비스를 시작하는데, 모든 런타임(runtimes)용 컨테이너를 다운로드하는 데 몇 분이 걸릴 수 있습니다:
명령어 ia info는 OpenAI API와 호환되는 클라이언트에서 사용할 주소, 토큰 및 모델 이름을 표시합니다.
5. 사용법 §
가장 간단한 사용 방법은 컴퓨터 자체에서만 접근 가능한 웹 인터페이스인 http://127.0.0.1:3000의 Open WebUI를 이용하는 것입니다. 입력 상자의 + 메뉴에서 채팅을 하거나, 사진을 보내거나, 웹 검색 또는 이미지 생성을 활성화할 수 있습니다.
지금까지 Qwen3.6 35B-A3B를 웹 검색과 결합하여 사용해 본 결과 좋은 결과를 얻었습니다. 상당히 잘 작동합니다. 다만 속도가 느리다는 점은 감수해야 합니다. 답변을 하기 전에 '생각하는' 과정이 있고, 모델의 절반이 RAM에서 실행되기 때문에 답변에 몇 분 정도 걸릴 수 있지만, 로컬 환경에서 구동된다는 장점이 있습니다. 35B 모델에 웹 검색 기능을 결합하면 모든 것을 알 필요 없이 정보를 수집하고 이를 '이해'할 만큼 충분히 똑똑하게 작동하여 오래된 정보로 응답하는 일을 막아줍니다.
저는 또한 친구들 커뮤니티에서 사용되는 Mattermost 봇인 Camille과 함께 이 모델을 사용합니다. 누군가 호출(ping)하면 답장하는 방식입니다. 모든 사람이 원하는 대로 설정할 수 있으며, 요청이 텍스트인지 이미지인지에 따라 두 가지 다른 모델을 사용합니다. Mistral은 Ministral을 사용할 수 있게 해주는 무료 API를 제공하는데, 지능은 다소 부족하지만 시도해 보기에는 좋습니다.
6. 결론 §
기적 같은 결과를 기대해서는 안 됩니다. 이 과정은 느리고 답변을 처리하는 동안 컴퓨터가 뜨거워지고 소음이 발생할 것입니다. 이는 항상 훨씬 더 진보된 모델과 (모델이 한 번에 처리할 수 있는 텍스트 양인) 컨텍스트 창(context window)을 사용하는 LLMs as a service와는 거리가 멀며, 집에서 구동할 수 있는 수준보다 훨씬 크기 때문입니다. 몇십만 유로 또는 달러를 지출하더라도 이를 따라잡기는 어려울 것입니다.
하지만 로컬 AI를 가지고 놀아보고 자신의 하드웨어가 무엇을 할 수 있는지 확인하는 좋은 방법이며, 웹 검색 결과 외에는 컴퓨터 밖으로 아무것도 나가지 않습니다.
작은 모델들이 어리석게 들릴지 모르지만, 여전히 특정 작업에 사용될 수 있습니다. 예를 들어 단순히 컨텍스트를 이해하고 '예' 또는 '아니오'라고 말하는 것만 필요하다면 말입니다. 이는 CI(Continuous Integration)에 잘 통합되거나 로컬 스팸을 필터링하는 데 사용될 수도 있습니다. 만약 35B 모델을 구동할 수 있다면, 훨씬 더 많은 멋진 작업이 가능해집니다.