모델별 실행 레시피

Qwen3.8-27B 장비별 설정: Mac oMLX·RTX llama.cpp

Qwen3.8-27B를 띄웠는데 다른 사람의 기록보다 느립니다. 같은 모델 이름이어도 파일과 문맥, 실행 앱이 다르면 출발점이 다를 수 있습니다. 여기서는 Mac의 oMLX와 RTX의 llama.cpp 설정을 먼저 구분하고, 어디서 기다리는지 확인하며 하나씩 조정합니다.

하드웨어별 속도 튜닝 및 서빙 레시피 요약

가중치, KV 캐시, 프리필 배치, 동시 요청과 가속 기능을 분리하고 균형·속도·긴 문맥 프로필로 제공합니다.

하드웨어적합도권장 런타임운용 프로필시작 문맥토큰 생성
MBP M5 Pro 48GB (41GB)메모리 적정oMLX균형 설정 · 생성 속도 · MTP · 긴 문맥16,384 토큰13.9 ~ 15.4 tok/s
Studio M5 Ultra 256GB (236GB)메모리 적정oMLX균형 설정 · 생성 속도 · MTP · 긴 문맥16,384 토큰54.2 ~ 60.2 tok/s
Studio M5 Ultra 512GB (480GB)메모리 적정oMLX균형 설정 · 생성 속도 · MTP · 긴 문맥16,384 토큰54.2 ~ 60.2 tok/s
RTX 4090 24GB (22.5GB)메모리 적정llama.cpp (CUDA)균형 설정 · 프리필 우선 · 긴 문맥8,192 토큰38.3 ~ 51.9 tok/s
2× RTX 3090 48GB (NVLink) (45GB)메모리 적정llama.cpp (멀티 GPU)균형 설정 · 프리필 우선 · 긴 문맥16,384 토큰57.5 ~ 79.8 tok/s
RTX PRO 6000 96GB (93GB)메모리 적정llama.cpp (CUDA)균형 설정 · 프리필 우선 · 긴 문맥16,384 토큰87.6 ~ 96.6 tok/s
DGX Spark 128GB (116GB)메모리 적정SGLang + DFlash2공개 측정 재현 설정16,384 토큰47.9 tok/s
Ryzen AI Max+ 395 128GB (96GB)메모리 적정llama.cpp (ROCm/HIP)균형 설정 · 프리필 우선 · 긴 문맥16,384 토큰11.2 ~ 12.5 tok/s

상세 페이지에서 프로필별 실행 명령, 적용값, 멈춰야 할 조건과 측정 순서를 확인할 수 있습니다. 실행 명령은 모델 파일과 실행 프로그램가 확인된 조합에만 표시합니다.

내 파일과 실행 앱부터 맞춥니다

장비 선택기에서 현재 장비를 고르면 사용할 경로와 명령을 볼 수 있습니다. 데스크톱에서는 호환되는 Q4 GGUF 또는 MLX 변환본을 기준으로 확인합니다. 약 17GB대라는 파일 크기 안내는 출발점일 뿐 실제 다운로드와 실행 점유를 확인해야 합니다.

공식 BF16 모델 ID를 서버에 넘기는 경로는 같은 Q4 파일을 여는 것이 아닙니다. 27B 가중치만 단순 계산해도 약 54GB 규모이며 작업 공간이 더 필요합니다. 아래 공식 서버 예시를 24GB GPU의 Q4 명령처럼 복사하지 마세요.

텍스트 질문부터 정상 실행한 뒤 이미지 입력과 추가 가속을 확인합니다. 첫 로드에서 모델 파일과 비전·MTP 지원을 동시에 바꾸면 어느 부분 때문에 실패했는지 찾기 어렵습니다.

잘 되는 설정을 하나 남깁니다

Mac oMLX와 RTX llama.cpp의 명령은 위 장비 선택기에 맞춰 사용합니다. 요청은 한 개로 두고 표시된 문맥에서 시작하세요. 더 큰 문맥이나 공격적인 메모리 설정으로 바로 넘어가기보다 정상 답변을 남기는 것이 먼저입니다.

준비 실행 뒤 프리필, 첫 토큰 시간, 디코드와 피크 메모리를 세 번 기록합니다. 처음 읽는 문서는 입력 캐시가 재사용되지 않았는지 확인하고, 같은 입력의 반복 결과는 따로 남깁니다. 이후 청크나 캐시 정밀도를 바꿀 때 이 기록으로 돌아와 실제 이득을 판단합니다.

아래 vLLM 명령은 공식 가중치를 담을 수 있는 별도 NVIDIA 서버 경로입니다. 선택기의 데스크톱 명령과 혼합하지 마세요. 서버는 우선 127.0.0.1에만 두고 다른 기기에서 접근시킬 계획이면 인증과 접근 제한을 별도로 준비합니다.

공식 vLLM 서버 구동 (BF16 가중치)

vllm serve Qwen/Qwen3.8-27B   --host 127.0.0.1   --port 8000   --max-model-len 8192   --gpu-memory-utilization 0.90

공식 BF16 가중치와 런타임 여유가 확보된 NVIDIA 서버에서 127.0.0.1로 실행합니다.

서버가 켜진 것과 답변이 되는 것은 다릅니다

모델 목록을 확인해 실제로 로드된 식별자를 요청에 넣습니다. oMLX는 이 가이드의 8000, llama.cpp는 8080처럼 선택한 명령의 주소를 사용해야 합니다. 아래 예시 주소와 다르면 그 부분을 맞춘 뒤 짧은 질문을 보내세요.

답변이 조각으로 도착하는지, 생각 과정과 최종 답이 앱에서 구분되는지 확인합니다. 생각 토큰을 오래 생성하는 경우 화면에 최종 문장이 늦게 보일 수 있습니다. 이 시간을 순수 프리필로 잘못 기록하지 않도록 서버 로그도 함께 봅니다.

기본 질문이 완료되면 평소 문서를 보내보세요. 짧은 인사말에서 나온 최고 tok/s보다 그 문서의 첫 답변과 완료 시간이 실제 사용에 더 가깝습니다.

API 엔드포인트 헬스체크 및 챗 요청 검증

# 1. 로드된 모델 목록 확인
curl -N http://127.0.0.1:8000/v1/models

# 2. OpenAI 호환 챗 완성 API 호출
curl -N http://127.0.0.1:8000/v1/chat/completions   -H "Content-Type: application/json"   -d '{
    "model": "<local-model-identifier>",
    "messages": [
      {"role": "user", "content": "로컬 LLM 서빙의 장점을 세 가지로 요약해줘."}
    ],
    "temperature": 0.6,
    "max_tokens": 1024,
    "stream": true
  }'

oMLX는 8000, llama.cpp는 8080 포트를 사용합니다. 실행한 런타임에 맞춰 주소를 바꿉니다.

느리다면 먼저 어느 구간인지 봅니다

입력을 넣은 뒤 오래 기다리면 프리필 청크와 입력 길이, 캐시 상태를 확인합니다. 답변이 시작된 뒤 느리다면 CPU로 넘어간 가중치가 있는지, 메모리 압박이나 스왑이 생겼는지 봅니다. 두 문제를 MTP 단계 수 하나로 해결하려고 하면 원인을 놓칠 수 있습니다.

지원되는 파일과 런타임에서 MTP를 켠 뒤에는 같은 질문으로 기본값과 비교합니다. 평균 승인 길이가 낮거나 검증 비용이 크면 켜도 이득이 없을 수 있습니다. 캐시 정밀도와 MTP를 한 번에 바꾸지 마세요.

원하는 긴 문맥에서 메모리가 부족하다면 우선 요청 수와 길이를 줄여 돌아갈 기준을 확보합니다. 계속 필요한 작업에서만 한계가 반복되는지 확인한 뒤 상위 메모리 구성을 검토합니다.

좋은 기록보다 계속 쓸 설정을 남깁니다

코드 수정과 문서 요약을 모두 한다면 두 종류의 질문을 남겨보세요. 한쪽에서만 빨라지는 설정도 있습니다. 속도뿐 아니라 실제 결과의 오류와 실행 실패 여부를 함께 확인해야 합니다.

마지막으로 모델 파일·앱 버전·문맥·가속 옵션을 저장합니다. 업데이트 뒤 문제가 생겨도 정상 구성을 되찾을 수 있습니다. 처음부터 가장 빠른 숫자를 찾기보다 내 작업이 끝까지 되는 설정을 만든 뒤 속도를 올리는 편이 유지하기 쉽습니다.

수정 내역

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

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

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

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

  2. Qwen 27B Spark 설정에서 다른 엔진의 옵션 제거

    단일·이중 Spark의 SGLang 설정에 llama.cpp 전용 투기 디코딩 옵션이 붙지 않도록 수정했습니다. DFlash2·DSpark 구성은 각 전용 모델과 실행 경로를 유지합니다.

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

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

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

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

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

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