두 개의 구형 Android 휴대폰을 클러스터링하여 27B LLM을 로컬에서 실행했습니다. C++ RPC 분할 및 Hadamard
요약
본 글은 OOM 문제를 해결하기 위해 두 개의 Android 휴대폰을 클러스터링하고, 사용자 지정 C++ RPC 엔진을 사용하여 27B LLM을 로컬에서 실행한 방법을 소개합니다. 특히 가중치를 Hadamard 변환된 테르너리 형태로 유지하여 MAC 연산 없이 덧셈/뺄셈만으로 추론하는 혁신적인 접근 방식을 제시했습니다.
핵심 포인트
- 두 Android 휴대폰 클러스터링 및 C++ RPC 엔진 사용
- 27B LLM을 로컬에서 OOM 문제 해결하며 구동
- 가중치를 Hadamard 변환된 테르너리 형태로 유지하여 전력 효율성 극대화
여기서 8GB VRAM에 27B 모델을 돌리느라 고생하는 글이나, 휴대폰이 공간 난방기처럼 변한다는 불만을 많이 봤습니다. 저도 제 휴대폰에서 똑같은 OOM(Out of Memory) 벽에 부딪혔고, 그래서 하드웨어 분할 워크어라운드를 만들기로 했습니다. 저는 두 개의 Android 휴대폰을 간단한 USB 케이블로 클러스터링하기 위해 사용자 지정 C++ 엔진 (llama.rn의 포크)을 작성했습니다.
설정 및 성능:
- 모델: Ternary-Bonsai-2-27B (2.06 bpw / 6.52 GiB로 압축)
- Perplexity: 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의 텍스트 생성 속도.
비밀 병기 (휴대폰이 녹지 않는 이유): 저는 표준 양자화(quantization)를 사용하지 않았습니다. 가중치(weights)는 Hadamard-rotated basis에서 테르너리(-1, 0, 1)입니다. 오프라인으로 역회전(un-rotating)하여 (이는 2비트 원본을 파괴함) 대신, 가중치를 GGUF에 접은 상태로 유지하고 장치 ARM CPU에서 런타임에 Hadamard 변환을 적용하는 패치를 작성했습니다.
결과: 덧셈/뺄셈만 발생합니다. MAC 연산(MAC operations)은 없습니다. 최대 온도는 약 30°C를 유지합니다.
증명 및 링크:
- 🎥 원본 데모 (2분 45초, 한 번에 촬영): 🎬
- 📊 엔진 로그: https://gist.github.com/figkcoci-debug/76f41c409fc5afe5a431094cc228ddc0
- 📄 방법론: https://gist.github.com/figkcoci-debug/11871f60812d2d18de5214fda3d94160
저는 현재 이 연구를 더 발전시키기 위해 실험실 배치/보조금을 찾고 있는 고등학생입니다 (Hadamard 변환을 위한 사용자 지정 Vulkan compute shaders 작성 계획으로 t/s를 더욱 높일 예정입니다). /u/Grouchy-Zebra9780 님이 제출한 이 접근 방식에 대해 압축 및 Edge AI 커뮤니티의 의견을 듣고 싶습니다. [link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기