4GB VRAM 환경에서 단일 Gemma 4 E2B로 비전 + 오디오 + 추론을 실시간으로 로컬 실행하기
요약
4GB VRAM 환경에서 Gemma 4 E2B 모델을 활용해 비전, 오디오, 추론을 통합 수행하는 로컬 도구 ScreenMind를 소개합니다. pHash 캐싱과 최적화된 파이프라인을 통해 저사양 GPU에서도 효율적인 실시간 화면 모니터링 및 RAG 기능을 구현했습니다.
핵심 포인트
- Gemma 4 E2B 단일 모델로 비전, 오디오, 채팅/RAG 통합 수행
- pHash 캐시를 활용해 중복된 화면 분석을 방지하고 모델 호출 최적화
- 4GB VRAM(GTX 1650) 환경에서도 작동하도록 백그라운드 서비스 최적화
- MCP 지원을 통해 Claude 및 Cursor와 연동 가능
저는 제 화면을 모니터링하고 나중에 이를 검색하거나 채팅할 수 있게 해주는 로컬 도구에서, llama-server를 통해 단일 Gemma 4 E2B 모델을 실행하고 있습니다. 이 하나의 모델이 다음 세 가지 작업을 모두 수행합니다:
- 화면을 보고 구조화된 정보로 변환 (어떤 앱인지, 무엇을 하고 있는지, 대략적인 레이아웃 등)
- 오디오 — E2B의 오디오 인코더(audio encoder)를 사용하여 음성 메모 및 회의 전사(transcription)를 수행하므로, Whisper를 별도로 추가할 필요가 없었습니다.
- 실제 채팅/RAG (화면 기록을 기반으로 구축된 RAG와 채팅해 볼 수 있습니다) + 일일 요약
단일 GPU에서 하나의 모델을 사용하기 때문에 모든 기능이 VRAM을 두고 경쟁합니다 (저는 이를 4GB GTX 1650에서 구축했으므로 여유 공간이 많지 않습니다). 솔직히 말해서 대부분의 노력은 AI 부분보다는 백그라운드 서비스에 가깝게 만들고 싶었기 때문에 최적화에 집중되었습니다.
- 채팅이 화면 분석을 중단시킵니다. llama-server는
--parallel 1옵션으로 실행됩니다 (단일 슬롯 — 4GB 환경에서는 느린 두 개의 응답보다 하나의 좋은 응답을 얻는 것이 낫기 때문입니다). 스크린샷을 분석하는 도중에 채팅 메시지를 보내면, 진행 중인 요청을 종료합니다. HTTP 연결을 닫으면 llama-server는 1초 이내에 슬롯을 해제하며, 슬롯이 실제로 비워질 때까지 기다린 후 답변합니다. 중단된 분석 작업은 큐(queue)의 맨 앞으로 돌아가므로 아무것도 손실되지 않습니다. - 동일한 화면을 반복해서 분석하지 않도록 퍼셉추얼 해시(Perceptual-hash) 캐시를 사용합니다. 모델을 호출하기 전에 프레임을 pHash(perceptual hash)로 처리하여 동일한 앱+창에 대해 마지막으로 수행했던 프레임과 비교합니다. 기본적으로 동일하다면 -> 이전 결과를 재사용하여 모델 호출을 생략합니다. 약간 변경되었다면 -> 레이아웃을 재사용하여 빠르게 통과합니다. 실제로 다르다면 -> 전체 파이프라인을 실행합니다. 채팅 앱은 제 에디터보다 더 빨리 상태가 변하므로, 더 짧은 윈도우(window)를 가집니다. 일상적으로 이 방식은 대부분의 모델 호출을 건너뛰게 해줍니다.
"fast" 모드는 어시스턴트(assistant)에게 빈 <think></think>를 미리 채워 넣어(prefill) 추론 토큰(reasoning tokens)을 건너뜁니다. OCR (easyocr)은 텍스트 형태로 입력되어 모델이 모든 텍스트를 일일이 읽느라 자원을 낭비하지 않도록 하며, 스크린샷은 크기에 맞게 768px로 축소됩니다. 임베딩 (embeddings)은 CPU에서 MiniLM으로 실행되므로 GPU를 전혀 사용하지 않으며, 게임이나 비디오 에디터가 포커스(focus)되어 있을 때는 캡처(capture)가 일시 중지됩니다.
fast 모드 속도: GTX 1650에서 프레임당 약 12초 (모델이 시스템 RAM으로 넘쳐흐름), 전체가 VRAM에 들어가는 RTX 3060에서는 약 3~4초 (이것이 진정한 도약입니다), RTX 4090에서는 약 1초입니다. (제 근사치입니다.)
이 도구는 ScreenMind라는 이름의 오픈 소스입니다. 얼마 전 아주 거친 버전을 공개했는데 그 이후로 많이 발전했습니다. 현재는 pip install screenmind로 설치할 수 있으며, 터미널에서 모델을 다운로드하거나 전환할 필요가 없도록 앱 내 모델 허브(model hub)를 갖추고 있습니다. 또한 멀티 모델 (multi-model)을 지원하며 Linux/Wayland에서도 실행됩니다. 별(star)은 약 170개 정도 받았습니다. 또한 MCP를 통해 Claude/Cursor에 모든 것을 노출합니다.
저장소 (repo): https://github.com/ayushh0110/ScreenMind
데모 (demo): https://youtu.be/2agdzzO-w38?si=aLLEp4zde3azFtLW
(사람들은 항상 "이거 그냥 Recall 아닌가요?"라고 묻습니다. 차이점은 Recall/screenpipe는 주로 가공되지 않은 OCR 텍스트를 쏟아내는 반면, 여기서는 모델이 실제로 프레임을 읽고 OCR은 단지 문맥 (context)으로만 사용된다는 점입니다.)
화면을 말 그대로 지켜보고 있기 때문에 개인정보 보호 (Privacy) 또한 고려했습니다: 100% 로컬 (local) 실행, 모델 다운로드 이후에는 네트워크 호출 제로, 텔레메트리 (telemetry) 없음. 스크린샷은 저장 시 암호화되며, 캡처된 텍스트에서 신용카드 / API 키 / 비밀번호 등을 저장하기 전에 자동으로 비식별화 (redact) 합니다. 대시보드에는 시크릿 모드 (incognito) 토글과 PIN 잠금 기능도 있습니다.
어쨌든, 현재 멀티 모니터 지원 작업을 진행 중이니 혹시 아이디어가 있다면 알려주세요.. 그럼 이만!
https://i.redd.it/ywmf1etojtbh1.gif
submitted by /u/Top_Speaker_7785
[link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기