실행 프로그램과 확장

최종 업데이트

내 로컬 LLM 속도를 직접 재려면? sparkDash 사용법

한 요청 속도와 동시 처리량을 sparkDash에서 따로 측정하고, 장비·모델·요청 조건을 기록해 결과를 비교해요.

sparkDash는 DGX Spark와 NVIDIA GPU1 호스트, 로컬 LLM2 서버를 한 화면에서 모니터링하고 decode3, prefill4, 품질 벤치마크를 실행하는 대시보드예요. decode 테스트는 여러 동시 요청에서 prose·code·structured·JSON을 선택하고, prefill은 1K~300K 문맥 크기를 순서대로 시험해 TTFT5와 prefill tok/s를 기록해요. 요청 수와 입력 길이가 다르면 결과도 다른 작업을 나타내므로, 같은 엔진·모델·GPU 전력·prompt6·답변 길이로 맞춰 비교해요.

실행 조건과 핵심 내용
  • decode는 동시 요청별 tok/s와 aggregate를 구분해요.
  • prefill은 입력 token 처리량과 첫 token 대기시간을 기록해요.
  • GPU 전력, 엔진, 모델 ID, prompt, 병렬 수를 함께 남겨요.

먼저 측정할 작업과 서버를 정해요

sparkDash의 decode 벤치마크는 서버가 답변을 생성할 때의 token7 속도를 측정해요. prefill 벤치마크는 입력 prompt를 읽고 첫 token을 내기까지의 처리량8과 시간을 기록해요. 긴 문서를 읽히는 사용자는 prefill과 TTFT를, 답변을 길게 생성하는 사용자는 decode를 우선 살펴요.

현재 README는 sparkDash 2.40.0을 안내해요. 원격 GPU 장비도 SSH로 등록할 수 있고, 각 LLM server 주소와 포트를 추가해 backend와 model을 감지해요. 로컬 LLM이 준비됐다면 서버 port를 확인하고, remote unit은 sparkDash 호스트에서 SSH 접속이 되는 계정을 준비해요.

코드처럼 보이는 줄이 표시된 큰 모니터와 데스크톱 타워, 노트북이 놓인 책상
벤치마크와 함께 실행 조건을 저장하면 차이를 다시 추적할 수 있어요.

공식 저장소에서 dashboard를 실행해요

먼저 저장소를 내려받고 배포용 Docker Compose를 실행해요. 기본 설정은 127.0.0.1에만 바인딩되므로 같은 장비에서 http://127.0.0.1:5555를 열어요. 이 dashboard는 서버 모니터링과 벤치마크 결과를 보여주며, LLM 모델 자체를 설치하거나 내려받지는 않아요.

sparkDash를 loopback에서 시작
git clone https://github.com/MiaAI-Lab/sparkDash.git
cd sparkDash
docker compose up --build -d

첫 화면에서 Add unit을 눌러 This host를 선택하거나 원격 장비의 LAN 주소와 SSH 사용자를 입력해요. 이어 LLM ports 단계에서 TensorFold의 기본 port 8888 또는 실행 중인 API9의 실제 port를 더해요. SSH 공개키가 Docker 컨테이너 안에서 보여야 원격 Linux 수집이 작동해요. 다른 컴퓨터에서 dashboard를 볼 때는 직접 외부에 열지 말고 loopback SSH 터널을 사용해요.

원격 접속은 SSH 터널로 연결
ssh -N -L 5555:127.0.0.1:5555 user@sparkdash-host
검은 화면의 모니터와 소형 데스크톱, 여러 팬이 보이는 PC 본체
GPU와 모델 서버가 준비되면 decode 및 prefill 테스트를 실행해요.

decode 벤치마크에서 요청 수를 바꿔요

LLM unit에서 벤치마크를 열고 요청 유형을 prose, structured, code, JSON 중 하나로 고른 뒤 동시 요청 수와 reply 길이를 지정해요. lab protocol은 temperature 0, thinking off를 사용해요. 실행 중에는 자체 stream에서 token/s를 계산하고 결과를 저장해요. 동시 요청 수를 늘릴 때는 합산 tok/s와 요청별 속도를 모두 읽어요.

예를 들어 네 요청이 각각 평균 25 tok/s를 내면 서버 합계는 100 tok/s예요. 개인이 체감하는 속도는 요청별 token 속도와 첫 토큰 지연(TTFT)으로 따로 확인해요. 비교할 때는 prose 요청끼리, structured 요청끼리 같은 유형으로 맞춰요.

prefill과 장비 조건을 남기고 다시 비교해요

prefill bench는 context 크기를 1K에서 300K 사이로 바꾸며 tok/s와 TTFT를 기록해요. prompt 크기마다 고유한 prefix를 사용하므로 cache hit가 달라붙은 숫자와 첫 prompt 처리를 구별할 수 있어요. 32K prompt의 prefill 속도만 보지 말고 첫 token까지 걸린 시간도 함께 확인해요.

결과 옆에 GPU 모델과 전력 제한, TensorFold·모델 버전, quant, context, KV cache10, parallel 수를 기록해요. 서버가 지원하면 KV 사용량과 실행·대기 요청도 health panel에서 볼 수 있어요. 결과가 크게 다르면 sparkDash unit의 GPU와 API 연결 상태부터 확인하고 같은 workload를 다시 돌려요.

문서와 차트가 보이는 노트북 주변에 쌓인 인쇄물과 펼친 노트
결과를 비교할 때 모델과 workload 조건을 함께 대조해요.

용어 각주

  1. GPU — 많은 계산을 병렬로 처리하는 프로세서입니다. AI 모델 실행에서는 모델 계산을 맡습니다.

    본문으로 돌아가기
  2. 대규모 언어 모델 — 대규모 텍스트 데이터에서 언어 패턴을 학습해 문맥에 맞는 텍스트를 처리하고 생성하는 모델입니다.

    본문으로 돌아가기
  3. 토큰 디코드 — 입력과 앞서 만든 답변을 바탕으로 다음 출력 토큰을 차례로 생성하는 단계입니다.

    본문으로 돌아가기
  4. 프리필 — LLM이 입력 프롬프트를 읽고 각 토큰의 내부 표현을 계산하는 단계입니다. 입력이 길수록 처리할 토큰이 많아집니다.

    본문으로 돌아가기
  5. 첫 토큰 지연 — 요청을 보낸 뒤 첫 출력 토큰이 도착하기까지 걸린 시간입니다.

    본문으로 돌아가기
  6. 프롬프트 — 모델에 보내는 입력문입니다. 생성 모델에서는 만들 결과를 설명하는 문장이 되어 출력의 구성과 내용을 크게 좌우합니다.

    본문으로 돌아가기
  7. 토큰 — 모델이 입력이나 출력을 나누어 처리하는 단위입니다.

    본문으로 돌아가기
  8. 처리량 — 일정 시간 동안 처리하거나 생성한 작업량입니다. 토큰/초, 요청/초처럼 단위를 함께 확인해야 비교할 수 있습니다.

    본문으로 돌아가기
  9. API — 프로그램의 기능을 다른 코드에서 호출하기 위한 약속된 인터페이스입니다.

    본문으로 돌아가기
  10. KV 캐시 — 어텐션에서 이전 토큰의 키·값을 저장해 다음 토큰 생성 때 재사용하는 메모리입니다. 문맥 길이와 배치 크기에 따라 용량이 달라집니다.

    본문으로 돌아가기

자주 묻는 질문

이 글에서 가장 먼저 확인할 것은 무엇인가요?
sparkDash는 DGX Spark와 NVIDIA GPU 호스트, 로컬 LLM 서버를 한 화면에서 모니터링하고 decode, prefill, 품질 벤치마크를 실행하는 대시보드예요. decode 테스트는 여러 동시 요청에서 prose·code·structured·JSON을 선택하고, prefill은 1K~300K 문맥 크기를 순서대로 시험해 TTFT와 prefill tok/s를 기록해요. 요청 수와 입력 길이가 다르면 결과도 다른 작업을 나타내므로, 같은 엔진·모델·GPU 전력·prompt·답변 길이로 맞춰 비교해요.