사기 전에 속도와 비용부터

모델별 실행 레시피

Gemma 4 12B 서빙 설정: Q4 데스크톱과 BF16 서버

Gemma 4 12B를 작은 장비에서 써보려면 모든 기능을 한꺼번에 켜기보다 텍스트 답변 하나부터 확인하는 편이 좋습니다. 그 답이 정상적으로 끝나는 설정을 남기고, 긴 문서와 이미지·음성을 차례로 더해보겠습니다. 어디서 메모리와 기다림이 늘어나는지 찾는 과정입니다.

실행 레시피

장비별 설정

한 사람이 사용할 때

사용할 장비를 고르면 실행 명령과 조정할 옵션이 나옵니다.

가용 메모리: 56GB / 대역폭: 307GB/s

운용 프로필

Apple MacBook Pro M5 Pro (64GB)

메모리 적정

권장 런타임: LM Studio (MLX 4비트 (GGUF Q4_K_M과 별도 형식)) · 문서화된 런타임 설정

설치 직후 처음 실행하거나 매일 안정적으로 사용할 때

선택 프로필 문맥

16,384 토큰

런타임 문서 기반MBP M5 Pro 64GB · Q4 · 요청 1개

런타임 문서에 따른 시작 설정입니다. 아래 순서로 조정하며 속도를 비교하세요.

계산기 예상 디코드

31.3 ~ 34.8 tok/s

단일 사용자 예상치

계산기 예상 TTFT

21.3 ~ 46.3초

프리필: 354 ~ 769 tok/s

예상 메모리 점유

9.61GB / 56GB

남은 여유: 약 46.4GB

서버 주소

http://127.0.0.1:1234

로컬 전용 127.0.0.1

예상치는 계산기의 추천 양자화·가속과 16,384토큰 기준입니다. 위 실행 설정의 실측값은 아닙니다.

이 프로필의 실제 설정

적용값왜 이렇게 잡았나
가중치MLX 4비트 (GGUF Q4_K_M과 별도 형식)MLX 모델 디렉터리를 사용합니다. GGUF의 Q4_K_M과 같은 파일 형식이 아닙니다.
입력 길이 확인16,384lms load의 context-length와 실제 로드 결과를 함께 확인합니다.
KV 캐시모델 설정에서 확인이 실행 명령은 KV 캐시 정밀도를 지정하지 않습니다.
프리필 배치런타임 설정에서 확인llama.cpp의 batch-size와 ubatch-size를 MLX 설정값으로 대신 쓰지 않습니다.
동시 요청1한 요청의 속도를 확인합니다. 여러 요청의 합산 처리량과 구분합니다.
메모리 여유2GB 이상모델을 불러온 뒤 실제 메모리와 스왑 여부를 확인합니다.

MBP M5 Pro 64GB 실행 명령어 (LM Studio)

LM Studio MLX 엔진 · 로컬 MLX 4비트 모델
# lms ls에서 확인한 MLX 4비트 모델 식별자를 입력
MODEL_ID=""
lms ls
: "${MODEL_ID:?MLX 모델 식별자를 입력하세요}"
lms load "$MODEL_ID" --gpu=max --context-length=16384
lms server start --port 1234
먼저 이 설정으로 기준 속도를 기록한 뒤 아래 튜닝 순서를 따라 한 항목씩 바꿉니다.

실행 후 확인

  1. 01서버 시작 로그에서 모델 적재 완료와 실제 컨텍스트 길이를 확인합니다.
  2. 02준비 실행 뒤 요청은 하나씩 보냅니다. 길이가 같은 서로 다른 입력 세 개로 첫 입력 처리 시간을 기록합니다.
  3. 03같은 입력을 반복한 결과는 캐시 재사용으로 따로 기록합니다. 첫 입력 결과와 합치지 않습니다.
  4. 04프리필 tok/s, 디코드 tok/s, 피크 메모리를 함께 기록한 뒤 한 항목씩만 바꿉니다.

바뀌는 점

  • 문맥과 동시 요청을 보수적으로 잡아 장비의 최대 처리량보다 낮게 나올 수 있습니다.

한 항목씩 조정

속도를 올리는 순서

여러 값을 한꺼번에 바꾸면 원인을 찾기 어렵습니다.

  1. STEP 1

    기준값 저장

    첫 입력과 캐시 재사용을 구분하고 각각 세 번 기록합니다. 프리필·디코드·피크 메모리를 함께 비교합니다.

    멈출 때: 오류가 있거나 메모리 여유가 2GB보다 작으면 다음 단계로 넘어가지 않습니다.

  2. STEP 2

    프리필 청크 조정

    1,024 → 2,048 → 4,096 순서로 올리며 긴 입력의 TTFT와 피크 메모리를 비교합니다.

    멈출 때: TTFT가 줄지 않거나 메모리 정점이 급증하면 직전 값으로 돌아갑니다.

  3. STEP 3

    KV 캐시 조정

    문맥이 부족할 때만 F16/BF16 기준값과 Q8 캐시를 같은 질문으로 비교합니다.

    멈출 때: 출력 차이가 생기거나 필요한 문맥이 이미 확보됐다면 기본 정밀도를 유지합니다.

  4. STEP 4

    MTP·투기 디코딩

    지원 모델에서만 켠 뒤 코드와 일반 문장을 나눠 수락률과 실제 디코드 tok/s를 측정합니다.

    멈출 때: 세 번의 중앙값이 기준보다 좋아지지 않으면 끕니다.

  5. STEP 5

    문맥 확장

    실제로 필요한 길이까지 두 배씩 늘리고 중간 정보 검색과 스왑 여부를 확인합니다.

    멈출 때: 검색 정확도가 떨어지거나 스왑·메모리 압축이 시작되면 한 단계 줄입니다.

내 장비 측정 기록 보내기

같은 조건으로 3회 이상 측정한 JSON을 가져오세요. 전송 버튼을 누르기 전에는 이 브라우저에서만 확인합니다.

장비·모델·실행 조건과 측정값만 받습니다. 질문·답변·원본 로그·파일 경로는 넣지 마세요.

기록 파일이 없다면, 실행 중인 로컬 서버에서 측정 도구로 만들 수 있습니다. Node.js 20 이상이 필요하며 결과를 자동 전송하지 않습니다.

검토한 이용자 제출 기록입니다. 이 사이트의 직접 측정과는 구분합니다.

설정 오류 제보

선택한 설정에서 막힌 부분을 알려주세요. 제보는 관리자만 확인합니다.

전송할 설정 · MBP M5 Pro 64GB · Gemma 4 12B · 균형 설정

Q4 파일인지 공식 가중치인지 확인합니다

데스크톱에서는 현재 앱이 지원하는 GGUF 또는 MLX Q4 변환본을 선택합니다. 16GB급 장비라도 운영체제와 캐시 여유에 따라 실행 범위가 달라집니다. 받을 파일의 실제 크기를 확인하고 짧은 문맥에서 시작하세요.

공식 google/gemma-4-12B-it의 BF16 가중치는 약 24GB 규모입니다. 아래 vLLM 예시는 이를 담을 더 큰 NVIDIA 환경의 경로로, Q4 데스크톱 명령과 다릅니다. 같은 모델 이름 때문에 두 경로의 메모리 조건을 섞지 마세요.

처음에는 이미지나 음성 대신 짧은 한국어 질문을 씁니다. 텍스트 기준값을 얻은 뒤 지원되는 입력을 추가해야 어떤 기능에서 부담이 커졌는지 구분할 수 있습니다.

Q4 파일인지 공식 가중치인지 확인합니다
Q4 파일인지 공식 가중치인지 확인합니다

LM Studio와 공식 서버 중 한 경로를 고릅니다

LM Studio에서는 목록에서 확인한 실제 모델 식별자를 넣고 8K 문맥 예시로 시작합니다. 부족하다면 더 줄여 정상 적재부터 확인하세요. --gpu=max는 요청한 설정이며 실제로 어떤 부분이 GPU에 올라갔는지는 앱의 표시와 로그로 확인합니다.

LM Studio의 서버 주소는 여기서 1234 포트, vLLM 예시는 8000입니다. 다른 명령의 주소를 섞지 마세요. LM Studio의 네트워크 제공 설정에서도 로컬 접근 범위를 확인하고, 다른 기기에 공개할 경우 인증과 방화벽을 먼저 준비합니다.

프로그램이 켜졌다는 것만으로 모델이 준비된 것은 아닙니다. 적재 완료와 실제 문맥 설정을 확인한 뒤 질문을 보냅니다. 대기 중에 여러 요청을 겹쳐 보내면 첫 실행의 메모리 상태를 이해하기 어려워집니다.

LM Studio CLI 로컬 서빙 (데스크톱 16GB~24GB)
# 1. 모델 목록 확인
lms ls

# 2. GPU 최대 오프로드 및 8K 컨텍스트로 모델 로드
lms load <gemma-4-12b-identifier> --gpu=max --context-length=8192

# 3. 로컬 서버 데몬 구동 (127.0.0.1:1234)
lms server start --port 1234
모델 적재 완료 후 서버 주소와 로컬 네트워크 제공 설정을 확인합니다.
공식 vLLM 텍스트 서빙 (NVIDIA GPU)
vllm serve google/gemma-4-12B-it   --host 127.0.0.1   --port 8000   --max-model-len 8192   --gpu-memory-utilization 0.90
32GB 이상 NVIDIA 환경에서 공식 instruction 가중치를 127.0.0.1:8000으로 서빙합니다.

짧은 한국어 답변으로 처음 확인합니다

아래 요청의 모델 이름을 실제 식별자로 바꿉니다. 문장이 중간에 멈추는지, 요청한 언어로 답하는지 먼저 확인하세요. 스트리밍을 요청하면 조각이 도착하는 모습도 볼 수 있지만 정확한 tok/s는 런타임 측정값을 따로 사용합니다.

준비 실행 뒤 같은 질문 세 번의 첫 토큰·생성 속도·피크 메모리를 기록합니다. 이어서 평소 요약할 문서로 바꾸어 차이를 봅니다. 간단한 자기소개가 된다는 사실만으로 긴 업무 문서도 충분하다고 결론 내리지는 않습니다.

생성 결과의 품질도 함께 보세요. 짧은 질문에는 잘 답해도 날짜나 예외 조건을 놓칠 수 있습니다. 정답을 확인할 수 있는 문서 질문을 하나 남기면 설정 변경 뒤 비교하기 좋습니다.

OpenAI 호환 API 테스트
curl -N http://127.0.0.1:1234/v1/chat/completions   -H "Content-Type: application/json"   -d '{
    "model": "<gemma-4-12b-identifier>",
    "messages": [
      {"role": "user", "content": "한국어로 자기소개를 간단히 작성해줘."}
    ],
    "max_tokens": 512,
    "stream": true
  }'
127.0.0.1:1234 포트로 로컬 API 호출을 검증합니다.
짧은 한국어 답변으로 처음 확인합니다
짧은 한국어 답변으로 처음 확인합니다

이미지와 오디오를 추가할 때

현재 모델 파일과 앱이 지원하는 입력인지 먼저 확인합니다. 한 종류씩 추가하고 메모리가 얼마나 늘었는지 보세요. 텍스트만 쓸 때 남던 공간이 인코더와 입력 처리에 사용될 수 있습니다.

작은 메모리에서 실패한다면 문맥과 동시 요청 수를 먼저 낮춥니다. 캐시 정밀도나 오프로드를 바꿀 때도 한 항목씩 비교하세요. 이미 Q4인 모델에 다시 Q4를 고르는 식으로는 다른 원인의 부족을 해결하지 못합니다.

매일 필요한 입력에서만 문제가 반복된다면 더 큰 메모리를 검토할 이유가 있습니다. 반대로 텍스트 작업이 충분하다면 멀티모달 최대 조건을 위해 장비 전체를 키울 필요는 없을 수 있습니다.

작은 모델을 계속 쓰는 것도 선택입니다

12B가 평소 문서를 충분히 처리하고 기다림도 괜찮다면 더 큰 모델로 올라가지 않아도 됩니다. 부족한 질문이 생겼을 때 그 질문을 다음 모델에 그대로 보내 비교하는 편이 차이를 알기 쉽습니다.

안정적으로 쓴 파일과 앱 버전, 입력 길이를 저장하세요. 다시 설치하거나 업데이트할 때 돌아갈 기준이 됩니다. 작은 장비에서 성공한 작업 하나가 생기면 다음에 필요한 성능도 더 구체적으로 말할 수 있습니다.

작은 모델을 계속 쓰는 것도 선택입니다
작은 모델을 계속 쓰는 것도 선택입니다

NVFP4로 실행하려면

Gemma 4 로더가 포함된 SGLang 분기가 필요합니다. FFN은 NVFP4, 어텐션은 BF16입니다.

SGLang · AxionML/Gemma-4-12B-NVFP4

수정 내역

사이트의 안내가 바뀐 기록입니다. 설치된 엔진·모델 버전을 자동으로 확인한 결과는 아닙니다.

  1. Mac의 모델 형식과 실행 설정 정정

    Mac의 MLX 실행 경로를 GGUF Q4_K_M과 구분하고, 엔진 이름·모델 형식·명령의 표기를 맞췄습니다. 명령에서 지정하지 않는 KV 캐시 정밀도와 프리필 배치는 모델·런타임 설정에서 확인하도록 바꿨습니다.

    명령이 그대로인데 배치만 커진 것처럼 보이던 MLX 속도 프로필도 제거했습니다.

  2. 첫 입력과 캐시 재사용의 기록 분리

    검증 순서에서 처음 읽는 입력과 같은 입력을 반복한 결과를 따로 기록하도록 바꿨습니다. 캐시 효과를 프리필 처리량이나 장비 차이로 합산하지 않습니다.

  3. 장비·프로필 저장과 다시 열기 추가

    실행 가능한 프로필은 장비와 함께 이 브라우저에 최대 5개까지 저장하고, 가이드 목록에서 다시 열 수 있게 했습니다. 저장한 뒤 공개 설정이 바뀌거나 프로필이 없어지면 실행 전에 다시 확인하도록 안내합니다.

  4. 실행 엔진 설명으로 이어지는 링크 추가

    설정에 표시된 엔진 이름에서 해당 실행 프로그램의 설명으로 이어지도록 했습니다. 엔진이 확인되지 않은 경로에는 임의의 프로그램을 연결하지 않습니다.