• 모더, 라즈베리 파이 제로 기반 USB 스틱에 LLM 탑재... 실용적 성능까지는 부족해

    가성비 좋은 로컬 LLM.

    article image

    로컬 LLM 사용이 증가하면서, 많은 사용자들이 LLM 구동을 위한 자체 PC나 시스템을 구축하고 있어, 클라우드 서버 어딘가에서 LLM을 구동하는 방식은 빠르게 구시대적인 접근법이 되고 있습니다.

    빈 파암(Binh Pham)은 라즈베리 파이 제로(Raspberry Pi Zero)를 이용해, 이 장치를 추가 부품 없이 로컬에서 LLM을 실행할 수 있는 소형 USB 드라이브처럼 활용하는 실험을 했습니다. 이 프로젝트는 llama.cpp와 llamafile 덕분에 가능했는데, 이 두 도구는 오프라인 환경에서 경량 챗봇 경험을 제공하도록 설계된 명령어 세트와 패키지 조합입니다.

    그러나 Pi Zero는 출시된 지 8년이 지난 구형 장비였기 때문에, 단순히 llama.cpp를 설치하여 실행하는 것과는 상황이 달랐습니다. 파암은 먼저 장치를 USB 인터페이스에 장착하고, 장치 자체를 담을 하우징 케이스를 3D 프린팅하는 등 물리적인 수정 작업을 거쳐야 했습니다.

    이러한 하드웨어 문제를 해결했음에도 불구하고, Pi Zero W의 512MB RAM 메모리 용량 제한이라는 추가적인 난관에 봉착하며 프로젝트는 복잡해졌습니다. 장치에 llama.cpp를 컴파일하는 과정에서 오류가 발생했고, 누구도 Pi Zero나 Pi One에 llama.cpp를 컴파일한 전례가 없었습니다.

    문제의 근본 원인은 Pi Zero의 CPU가 ARMv6 아키텍처로 작동한다는 점이었습니다. 이를 극복하기 위해 파암은 llama.cpp의 ARMv8 명령어 세트를 수정하여 변환하고, 최신 하드웨어에 맞춰진 모든 표기나 최적화를 제거하는 고난도의 작업을 진행해야 했습니다.

    Pi Zero에서 작동하도록 llama.cpp 소스 코드를 편집한 후, 그는 소프트웨어적인 부분의 문제들을 해결해야 했습니다. 이후 그의 관심은 이 소프트웨어 경험 자체를 가능한 한 완벽하게 매끄럽게 만드는 데 집중되었습니다.

    LLM 자체는 텍스트 파일을 입력받아 이를 주 프롬프트(main prompt)로 활용하는 구조를 가집니다. 이에 파암은 텍스트 프롬프트를 기반으로 이야기를 생성하고, 그 결과를 완전히 채워진 파일(fully populated file) 형태로 출력하는 자체 구현체를 만들었습니다.

    토큰 제한을 64로 설정하고, 그는 15M부터 136M까지 다양한 크기의 모델을 이용해 여러 벤치마크를 수행했습니다. Tiny15M 모델은 토큰당 223ms의 속도를 기록한 반면, 더 큰 Lamini-T5-Flan-77M 모델은 2.5초/토큰의 속도를, SmolLM2-136M 모델은 2.2초/토큰의 속도를 달성했습니다.

    이러한 토큰 속도는 다수의 실제 응용 분야에서 사용하기에는 지나치게 느린 수준을 의미합니다. 흥미로운 실험적인 프로젝트이지만, 구형의 경량 하드웨어로 로컬 LLM을 구동하는 방식은 실용적인 가치를 제공하기 어려울 수 있습니다. 대신, 라즈베리 파이 5에서 Deepseek과 같이 훨씬 더 복잡한 모델을 사용하는 방식을 고려하는 것이 더 나을 수 있습니다.

    [출처:] https://www.tomshardware.com/raspberry-pi/raspberry-pi-zero/pi-zero-llm-usb-stick