apples2oranges: On-Device를 위한 소규모 언어 모델(SLM) 성능 비교 및 하드웨어 텔레메트리(Hardware Telemetry) 도구

apples2oranges 소개

최근 AI 개발 환경에서 점점 더 많은 관심을 받는 주제 중 하나가 바로 ‘온디바이스(On-Device) AI’입니다. 클라우드 서버에 의존하지 않고, 개인용 PC나 모바일 기기에서 직접 모델을 실행하는 방식은 개인정보 보호, 네트워크 의존성 감소, 그리고 응답 속도 향상이라는 장점을 가집니다. 이러한 흐름 속에서 **bitlyte.ai**에서 공개한 apples2oranges 프로젝트는 소규모 언어 모델(Small Language Models, SLM)을 다양한 On-Device 하드웨어 환경에서 손쉽게 비교하고 분석할 수 있도록 만들어진 오픈소스 도구입니다.

이 도구는 단순히 모델을 실행하는 것에 그치지 않고, 실시간 하드웨어 텔레메트리 데이터(전력 사용량, CPU/GPU 온도, 메모리 활용률 등)추론 성능 데이터(토큰 생성 속도, 첫 토큰 지연시간 등) 를 시각화하여 제공합니다. 즉, 특정 모델이 어떤 환경에서 효율적으로 동작하는지, 모델 양자화(Quantization)에 따른 성능-품질 트레이드오프가 어떤지 체계적으로 확인할 수 있습니다.

:warning: 주의:warning:: apples2oranges는 아직 초기 단계의 프로젝트이며, 완성도가 높은 엔터프라이즈급 도구라기보다는 커뮤니티 중심의 실험적인 플레이그라운드에 가깝습니다. 하지만 바로 그렇기 때문에 학생, 취미 개발자, 그리고 실무 개발자 모두가 자유롭게 참여하여 기능을 확장하고, 다양한 하드웨어-모델 조합을 검증할 수 있는 장을 제공합니다.

많은 분들이 이미 Ollama 같은 도구를 통해 로컬 환경에서 LLM을 실행해본 경험이 있을 것입니다. Ollama는 간단한 설치와 모델 실행을 제공하지만, apples2oranges는 비교와 분석이라는 점에서 차별화됩니다. Ollama가 “모델 실행” 자체에 초점을 맞췄다면, apples2oranges는 모델 A와 B를 나란히 실행해 응답 품질과 속도를 직접 비교하고, 동시에 하드웨어 리소스 사용량을 실시간으로 추적할 수 있다는 특징이 있습니다.

즉, Ollama가 개인 사용자의 “LLM 클라이언트”라면, apples2oranges는 성능 실험 및 최적화를 위한 벤치마킹 도구라고 할 수 있습니다. 특히 양자화된 모델들을 비교하며 성능-품질 밸런스를 직접 검증할 수 있는 기능은 현업 개발자들에게 큰 의미가 있습니다.

apples2oranges의 주요 기능

사이드-바이-사이드(Side-by-Side) 모델 비교

apples2oranges는 두 개의 언어 모델을 동시에 불러와 동일한 질문이나 프롬프트에 대해 어떻게 응답하는지를 나란히 비교할 수 있습니다. 이를 통해 단순히 성능 수치만이 아니라, 실제 대화 품질 차이까지 직접 확인할 수 있습니다. 또한 실행 중에는 메모리 사용량을 최소화하기 위해 모델을 로드하고 실행한 뒤, 필요하지 않을 때는 언로드하는 방식으로 메모리를 효율적으로 관리합니다. 특히 CPU 온도가 기준점에 도달할 때까지 기다린 후 두 번째 모델을 실행하는 기능은 비교 결과의 신뢰성을 높여주며, 다양한 양자화 레벨을 적용한 모델들을 동시에 실험해 성능과 품질 간의 균형을 체감할 수 있게 해줍니다.

예를 들어, 한 스타트업 개발자가 고객 지원용 챗봇을 구축한다고 가정해 보겠습니다. 동일한 프롬프트에 대해 7B 모델과 13B 모델이 각각 어떻게 응답하는지 apples2oranges에서 나란히 실행해 본다면, 작은 모델이 충분히 실무에 쓸 수 있을지 혹은 더 큰 모델이 필요한지 객관적으로 판단할 수 있습니다. 또한 같은 모델이라도 4비트 양자화 버전과 8비트 버전을 비교해 보면, 응답 품질 차이는 얼마나 되는지, 대신 전력 소모와 응답 속도는 어떻게 달라지는지를 바로 확인할 수 있습니다. 이런 비교는 리소스가 제한된 엣지 디바이스에서 어떤 모델을 채택할지 결정할 때 큰 도움이 됩니다.

성능 및 하드웨어 분석

단순한 응답 비교뿐만 아니라 추론 과정에서 발생하는 다양한 성능 데이터를 수집하고 시각화할 수 있습니다. 예를 들어, 모델이 첫 번째 토큰을 생성하기까지 걸리는 시간(TTFT; Time to First Token)이나 초당 생성되는 토큰 수(TPS; Tokens per Second) 같은 성능 지표를 확인할 수 있습니다. 동시에 CPU와 GPU의 전력 소비량, 온도, 클럭 주파수 같은 하드웨어 데이터도 함께 추적됩니다. 사용자는 이러한 데이터를 실시간 대시보드로 모니터링할 수 있으며, 여러 번의 세션을 저장하고 불러와 최대 7개까지 성능 데이터를 동시에 비교할 수도 있습니다. 더 나아가 3차원 산점도나 레이더 차트와 같은 다양한 시각화 기법을 활용해 결과를 직관적으로 분석할 수 있습니다.

예컨대 게임 개발자가 로컬 NPC 대화 시스템에 LLM을 적용하려 할 때, 중요한 것은 모델의 반응 속도와 하드웨어 부담입니다. apples2oranges를 이용하면 특정 모델이 첫 응답을 생성하기까지 걸리는 시간(TTFT)을 측정하여, 실제 게임 환경에서의 응답 지연이 문제가 될지 미리 알 수 있습니다. 또, 초당 토큰 생성 속도(TPS)를 비교하면 긴 대화를 얼마나 빠르게 이어갈 수 있는지도 검증할 수 있습니다. 동시에 CPU/GPU 사용률과 발열 데이터를 확인해 보면, 노트북이나 휴대 기기에서 장시간 실행했을 때 과열이나 성능 저하가 발생할 가능성도 예측할 수 있습니다. 이러한 데이터는 개발자가 최적화 포인트를 찾는 데 매우 실질적인 기준을 제공합니다.

텔레메트리(Telemetry) 수집

apples2oranges는 하드웨어와 모델 실행 상황에 대한 상세한 텔레메트리 데이터를 제공합니다. 예를 들어, 시스템 메모리 사용량, CPU 코어별 점유율, 센서별 CPU 온도, GPU의 활용률과 온도, 초당 토큰 생성 속도, 전력 및 에너지 소비량을 모두 기록할 수 있습니다. 또한, 수집한 데이터를 바탕으로 시간에 따른 변화를 차트로 표시하여, 단순히 성능을 확인하는 차원을 넘어 모델과 하드웨어의 상호작용을 깊이 이해할 수 있도록 돕습니다.

AI 연구자가 모델 최적화 실험을 하는 상황을 가정해보겠습니다. 같은 하드웨어에서 두 모델을 실행하면서 apples2oranges가 제공하는 RAM 사용량, CPU 코어별 점유율, GPU 활용률, 전력 소모량 데이터를 모니터링하면, 어떤 모델이 메모리 친화적인지 혹은 어떤 모델이 전력 효율적인지를 쉽게 알 수 있습니다. 특히 배터리로 구동되는 엣지 디바이스를 대상으로 연구할 때는 “성능은 조금 낮더라도 전력 효율이 좋은 모델”을 선택하는 것이 더 현실적일 수 있습니다. 이런 맥락에서 텔레메트리 데이터는 단순한 기술적 정보가 아니라, 모델 선택과 제품 설계 방향을 결정하는 중요한 지표로 활용될 수 있습니다.

개발자 친화적인 기능

개발자를 위해 apples2oranges는 GGUF 포맷을 사용하는 다양한 모델을 지원하며, 모델 실행 환경을 손쉽게 설정하고 저장할 수 있는 기능을 제공합니다. 또한 실행 중 발생한 대화 내용과 하드웨어 텔레메트리 데이터를 SQLite 데이터베이스에 자동으로 저장하여, 나중에 동일한 조건에서 다시 분석하거나 비교할 수 있습니다. 이 기능은 단순히 한 번의 실행 결과에 의존하지 않고, 여러 실행 환경을 누적 비교하며 최적의 모델·하드웨어 조합을 찾고자 하는 개발자에게 특히 유용합니다.

팀에 소속된 머신러닝 엔지니어가 여러 차례의 실험을 진행하며, 각각의 세션에서 얻은 대화 기록과 성능 데이터를 나중에 다시 분석하고 싶다고 합시다. apples2oranges는 모든 세션 데이터를 SQLite 데이터베이스에 저장하기 때문에, 엔지니어는 모델 버전, 양자화 설정, 하드웨어 상태에 따른 결과를 나중에 불러와 정리할 수 있습니다. 예를 들어 “같은 7B 모델이라도 맥북 M1 환경과 M2 환경에서 응답 속도와 발열이 얼마나 다른가?” 같은 분석을 장기간에 걸쳐 축적할 수 있습니다. 또한 모델 실행 설정을 미리 저장해두고 빠르게 전환할 수 있어, 반복적인 실험 과정에서 생산성을 높일 수 있습니다.

apples2oranges 설치 및 실행

apples2oranges를 설치 및 사용하기 위해서는 macOS 11 이상이 필요합니다. 즉, 현재는 macOS에서만 실행 가능(Apple Silicon 추천)하며, 대규모 모델 실행 시에는 많은 메모리가 필요합니다. 아직 멀티모달 모델이나 OpenAI나 Anthropic과 같은 외부 모델 제공자의 API 연동은 제공되지 않습니다. 하지만, 로드맵에 따르면 Windows/Linux 지원, 멀티모달 확장, API 연동 기능들은 추가될 예정입니다.

설치 전, Node.js 18+ 및 Rust 1.77.2+가 설치되어 있어야 하며, 비교를 하려는 모델들은 GGUF 포맷으로 가지고 있어야 합니다.

설치 과정은 다음과 같습니다:

저장소 복제

먼저 GitHub 저장소를 복제합니다:

git clone https://github.com/bitlyte-ai/apples2oranges.git
cd apples2oranges

복제한 apples2oranges 프로젝트 디렉터리로 들어와 준비를 마칩니다.

의존성 설치

프로젝트는 Node.js와 npm을 기반으로 UI를 구성하고 있으며, Rust로 작성된 백엔드가 존재합니다. 따라서 필요한 의존성을 설치해야 합니다:

npm install

앞에서 설명한 것과 같이 Rust는 미리 설치되어 있어야 하며, 최신 버전(1.77.2 이상)을 사용하는 것이 좋습니다.

하드웨어 모니터링 설정 (선택 사항)

apples2oranges의 핵심 장점 중 하나는 실시간 하드웨어 텔레메트리 수집입니다.

macOS에서 sudo 권한 없이도 CPU, GPU 데이터를 수집할 수 있도록 macmon 같은 도구를 추가로 설치할 수 있습니다.

이 과정은 필수는 아니지만, 모델 성능과 하드웨어 자원을 함께 분석하려는 경우 꼭 권장됩니다.

GGUF 모델 다운로드

apples2oranges는 GGUF 포맷 모델만 지원합니다. Hugging Face Hub에서 원하는 모델을 골라 다운로드하고, apples2oranges 실행 시 경로를 지정하면 됩니다.

빌드 및 실행

이제 전체 프로젝트를 빌드합니다:

npm run tauri build

빌드가 완료되면 실행 가능한 앱(apples2oranges.app)이 생성됩니다. 빌드 결과물의 위치는 보통 다음과 같습니다:

src-tauri/target/release/bundle/macos/apples2oranges.app

macOS 보안 설정 및 첫 실행

애플 개발자 서명이 아직 완료되지 않았기 때문에, 처음 실행 시 보안 경고가 발생할 수 있습니다. 이 경우 다음 과정을 따라야 합니다:

  1. apples2oranges.app을 마우스 오른쪽 클릭합니다.
  2. “열기(Open)“를 선택합니다.
  3. 경고창이 나타나면 “열기(Open)” 버튼을 눌러 실행합니다.

이 과정은 처음 한 번만 하면 되고, 이후에는 정상적으로 실행됩니다.

개발 모드 실행 (추천)

공식 문서에서는 현재 개발자 모드 실행을 권장합니다.

이 모드에서는 더 많은 기능에 접근할 수 있습니다.

npm run tauri dev

이러한 과정을 거쳐 apples2oranges를 실행하고, 준비해둔 GGUF 모델을 불러와 실험을 시작할 수 있습니다.

apples2oranges 기반 오픈소스 구성 요소

  • llama.cpp: 로컬 환경에서 대형 언어 모델을 실행할 수 있는 핵심 엔진
  • llama-cpp-rs (llama-cpp-2): Rust 환경에서 llama.cpp를 사용할 수 있게 해주는 바인딩 라이브러리
  • Tauri: Rust 백엔드 + 웹 프론트엔드(React/TypeScript)로 가볍고 크로스플랫폼 데스크톱 앱을 만들 수 있는 프레임워크
  • macmon: sudo 권한 없이도 Apple Silicon 하드웨어 상태(전력, 온도, CPU/GPU 활용률)를 모니터링할 수 있는 도구
  • Rusqlite: Rust에서 SQLite를 사용할 수 있게 해주는 라이브러리로, 세션 데이터(대화 + 텔레메트리)를 저장 및 관리

라이선스

apples2oranges 프로젝트는 Apache 2.0 라이선스로 공개 및 배포되고 있습니다. 상업적 이용이 가능하며, 라이선스 조건에 따라 사용, 수정, 재배포가 허용됩니다.

:github: apples2oranges 프로젝트 GitHub 저장소




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: