메뉴
BL
r/LocalLLaMA 15일 전

네트워크 없이 구동되는 오프라인 로봇, 젯슨 오린과 젬마 3 탑재

IMP
6/10
핵심 요약

Reddit 사용자가 Wi-Fi나 셀룰러 연결 없이 엔비디아 젯슨 오린 NX와 소형 언어 모델인 Gemma 3 4B만으로 완전한 오프라인 로봇을 제작했습니다. 프롬프트 구조 최적화를 통해 캐시 적용 시 첫 토큰 생성 시간(TTFT)을 약 200ms로 단축하고 30개 이상의 센서 데이터를 실시간으로 자연어로 처리하는 점이 기술적으로 주목받습니다.

번역된 본문

이 로봇은 'Sparky(스파키)'라는 이름으로, 젯슨(Jetson) 디바이스 위에서 완전히 독립적으로 구동됩니다. llama.cpp를 활용해 Gemma 3 4B 모델을 Q4_K_M 양자화 포맷으로 구동하며, q8_0 KV 캐시(KV cache)와 플래시 어텐션(flash attention)을 적용했습니다. 12K 컨텍스트(context)를 사용하며, 모델 카드에서 제공하는 기본 시스템 역할과 샘플러 설정을 유지합니다. 캐시 적용 시 첫 토큰 생성 시간(TTFT, Time To First Token)은 약 200ms이며, 지속적으로 초당 14~15개의 토큰(tok/s)을 생성합니다.

음성 인식(STT)을 위한 SenseVoiceSmall, 43Hz로 입모양을 동기화하는 음성 합성(TTS)용 Piper, 그리고 상단 디스플레이에 얼굴을 표현하는 PixiJS가 탑재되었습니다. 현재 Gemma 3 자체에 비전(Vision) 및 광학 문자 인식(OCR) 기능이 내장되어 있어 기존에 사용하던 BLIP 서브프로세스는 제거되었습니다. 30개 이상의 센서 데이터는 매 대화 턴마다 자연어로 변환되어 프롬프트에 통합됩니다.

이번 프로젝트의 가장 큰 성과는 캐시 안정성을 위한 프롬프트 구조 최적화입니다. 프롬프트 상단에는 페르소나와 도구(tools)를 배치하고, 중간에 대화 기록을 둔 뒤, 변동성이 큰 센서 및 비전 데이터는 가장 최근 사용자 메시지의 끝부분에 배치했습니다. 이처럼 동적으로 변하는 컨텍스트를 시스템 블록 밖으로 이동시키는 것만으로 캐시 적용 TTFT가 수 초에서 약 200ms로 극적으로 단축되었습니다.

기기 외부의 네트워크 연결(네트워크 인터페이스)은 전혀 없으며, 오직 버튼 행, 조이스틱, 아날로그 엔코더 노브만을 통해 기기 내부에서 모든 설정을 변경할 수 있습니다.

현재 다른 분들 중에서 Orin급 하드웨어에서 Gemma 3 4B(E4B, 최신 버전 명칭 반영)를 구동하고 계신 분이 있는지 궁금합니다. 초당 토큰 생성 속도(tok/s)를 비교해 보고, 프리픽스 캐시(prefix cache)를 낭비하지 않으면서 센서나 도구 컨텍스트를 어떻게 처리하고 계신지 알아보고 싶습니다.

원문 보기
원문 보기 (영어)
Sparky runs entirely on the Jetson. Gemma 4 E4B at Q4\_K\_M via llama.cpp with q8\_0 KV cache and flash attention. 12K context, native system role, sampler defaults from the model card. Cached TTFT around 200ms, sustained 14-15 tok/s. SenseVoiceSmall for STT, Piper for TTS with 43Hz mouth sync, PixiJS face on the lid display. Vision and OCR are native to Gemma 4 now so the BLIP subprocess is gone. 30+ sensors fold into the prompt as natural language every turn. One of the biggest wins was prompt structure for cache stability. Persona and tools at the top, history in the middle, volatile sensor and vision data at the end of the latest user turn. Moving dynamic context out of the system block dropped cached TTFT from multi-second to \~200ms. Configurable entirely on-device via a button row, a joystick, and an analog encoder knob. No network interface at all. Curious if anyone else is running E4B on Orin-class hardware. I'd love to compare tok/s and how you're handling sensor or tool context without blowing your prefix cache.