안드로이드 폰 2대를 클러스터링해서 27B LLM을 로컬에서 돌려봄. C++ RPC 분할과 하다마드 삼진법 연산으로 RAM 제한 우회 (발열 없음)
I clustered two old Android phones to run a 27B LLM locally. Bypassed RAM limits via C++ RPC split and Hadamard Ternary math (No overheating)
핵심 요약
고등학생이 안드로이드 폰 2대를 연결해 27B 모델을 구동하는 C++ 엔진을 개발하고, 하다마드 변환을 통해 발열 없이 효율적인 추론을 구현함.
- 하드웨어 클러스터링 — USB 케이블로 안드로이드 폰 2대를 연결해 메모리 부족 문제 해결함
- 하다마드 삼진법 연산 — 덧셈과 뺄셈만 사용하는 방식으로 연산 효율을 극대화하고 발열을 30도 수준으로 억제함
- 커스텀 C++ 엔진 — llama.rn을 포크하여 RPC 기반의 모델 레이어 분할 및 실시간 변환을 구현함
- 성능 지표 — 27B 모델을 2.8 tok/s 속도로 구동하며 기존 2비트 양자화 대비 준수한 성능을 보여줌

여기 8GB VRAM으로 27B 모델 돌리다가 쩔쩔매거나, 폰이 무슨 온열기마냥 뜨거워진다고 징징대는 글들 많이 봤거든. 나도 폰으로 돌리다가 똑같이 OOM(메모리 부족) 벽에 부딪혀서, 그냥 하드웨어 두 개를 묶어서 쓰는 꼼수를 만들어봤음.
llama.rn을 포크해서 커스텀 C++ 엔진을 짰는데, 이걸로 안드로이드 폰 두 대를 USB 케이블 하나로 묶어서 클러스터링하는 방식임.
세팅 & 성능:
-
모델: Ternary-Bonsai-2-27B (2.06 bpw / 6.52 GiB로 압축). 퍼플렉서티: 14.26 (기준치 14.05 대비).
-
클러스터 모드 (Xiaomi redme 100 pro max + ROG 7): 커스텀 RPC를 통해 USB 케이블로 레이어를 4.36 GiB / 2.15 GiB로 쪼갬. 속도: ~2.8 tok/s (느린 폰이 병목이긴 한데, 싱크는 완벽하게 맞음).
-
솔로 모드 (Xiaomi 15 단독): 5.6 tok/s로 텍스트 생성.
핵심 비결 (폰이 안 녹는 이유):
표준 양자화 안 썼음. 가중치를 Hadamard 회전 기저에서 삼진법(-1, 0, 1)으로 처리했거든. 오프라인에서 역회전 시키면 2비트 원본 데이터가 다 날아가 버리니까, 그냥 GGUF에 가중치를 접어둔 상태로 두고, 기기 ARM CPU에서 런타임에 Hadamard 변환을 적용하는 패치를 짰음.
결과: 덧셈/뺄셈만 하면 됨. MAC 연산은 아예 없음. 최고 온도가 30도 근처에서 놂.
증거 & 링크:
🎥 원본 데모 (2분 45초, 원테이크):

