본문으로 건너뛰기
r/LLMDevs조회 2

Qwythos-9B의 Q4_K_M과 Q8_0 양자화 비교와 벤치마크 호환성 보고서이다.

Qwythos-9B을 Q4_K_M과 Q8_0로 벤치마크한 결과와 툴링·포맷 호환성 문제를 로그와 스크립트로 문서화했다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

이 글은 Qwen3.5-9B 기반 Qwythos-9B를 Q4_K_M과 Q8_0 양자화로 lm_eval + llama.cpp 환경에서 평가한 결과와 그 과정에서 마주친 툴링·포맷 호환성 문제를 기록한 것이다. 모델이 추론 논리를 별도 필드로 반환하거나 IFEval 의존성이 누락되는 등 출력 스키마와 런타임 의존성 불일치가 실제 점수를 50–80%까지 왜곡했고 로그가능도 기반 측정은 여러 백엔드 포맷 불일치로 차단되었다. 수치적으로는 GSM8K에서 Q4_K_M이 80.89%이고 Q8_0이 84.31%였으며 IFEval은 60.00% 대 66.00%, HumanEval pass@1은 양자화 모두 0%로 기록되었고 GGUF 파일 크기는 Q4_K_M 5.24 GiB 대 Q8_0 8.90 GiB로 Q8_0이 디스크·VRAM 비용을 크게 늘렸다. 결론적으로 최신 모델을 평가하려면 단순 실행 시간을 넘는 출력 포맷 검증과 의존성 확인, 필요 시 맞춤 스코어러 개발을 예산에 포함해야 한다는 실용적 교훈이 도출된다.

실용적 조언

  • llama.cpp 서버를 사용할 때 모델이 reasoning을 별도 필드로 반환할 가능성을 우선 점검하고, 필요한 경우 --reasoning-preserve 플래그를 활성화하여 벤치마크 허브가 빈 응답을 수집하지 않도록 해야 한다; 이 절차는 출력 스키마 불일치로 인한 대규모 잘못된 점수 산출을 예방한다.
  • 벤치마크 실행 전에는 lm_eval와 같은 허브의 모든 런타임 의존성을 사전에 확인하고 설치하여 ModuleNotFoundError로 인한 장시간 실행 실패를 방지해야 한다; 특히 IFEval 관련으로 요구되는 langdetect와 immutabledict가 누락되는 사례가 발견되었다.
  • HumanEval과 같은 코드 실행 기반 과제는 chat API 출력에서 불필요한 'thinking' 블록을 제거하고 실행 가능한 코드 스니펫만 추출하는 전처리기를 적용하거나 local-completions 형식으로 호출하는 방안을 마련해야 pass@ 지표의 왜곡을 피할 수 있다.
  • 로그가능도 기반 평가를 수행하려면 사용 중인 추론 엔진과 백엔드가 요구하는 logprobs 포맷과 기능을 명확히 매핑해야 하며, transformers가 특정 GGUF 아키텍처를 지원하지 않으면 해당 조합으로는 측정이 불가능하므로 사전 호환성 검증이 필요하다.
  • 새로운 모델 릴리스에 대해 벤치마크를 실행할 때는 단순히 평가 시간만 예산에 포함하지 말고 툴링 호환성 확인과 런타임 포맷 조정, 맞춤 스코어러 개발에 드는 디버깅 시간까지 포함하여 계획을 세워야 한다.

섹션별 상세

01
Qwen3.5 기반 Qwythos-9B 모델은 추론 출력에서 추론 과정(‘reasoning’)을 별도 응답 필드로 분리하는 행동을 보였고, 이로 인해 llama.cpp 서버를 --reasoning-preserve 옵션 없이 실행하면 벤치마크 허브가 빈 응답을 받아들여 점수가 50%에서 80%까지 크게 하락했다. 작동 원리는 모델이 표준 단일 텍스트 완료 대신 두 필드를 반환하고 허브는 기본적으로 하나의 텍스트 필드를 기대하기 때문에 발생했다. 실제로 작성자는 옵션을 빠르게 확인하지 못하면 오류나 예외가 없이 '그럴듯한' 잘못된 숫자가 산출된다고 기록했다. 이 사례는 새로운 아키텍처나 파인튜닝된 모델을 도입할 때 출력 스키마와 서버 플래그가 평가 결과를 직접적으로 결정한다는 실무적 함의를 제공한다.
02
IFEval 실행 과정에서는 lm_eval 허브의 일부 테스트가 명시되지 않은 파이썬 의존성(langdetect, immutabledict)을 필요로 했고, 누락 시 수시간이 걸리는 런에서 중간에 ModuleNotFoundError가 발생하는 형태로 문제가 드러났다. 근본적 원인은 패키지 명세와 실행 환경의 불일치이며, 작동 흐름은 허브가 테스트 준비 과정에서 해당 모듈을 임포트하려다 실패하는 식으로 진행되었다. 작성자는 이 실패가 런을 중단시키는 형태로 나타났다고 보고했고, 이런 오류는 긴 벤치마크 실행 후에 발견되면 시간과 계산 자원을 낭비하게 만든다. 따라서 벤치마크 준비 단계에서 의존성 목록을 사전 검증하는 과정이 필수적이라는 실용적 결론이 도출된다.
03
HumanEval 과제는 lm_eval에서 기본적으로 local-completions 백엔드를 기대하지만 Qwythos-9B를 chat API 형태로 호출할 경우 형식 불일치가 발생하여 작성자는 채팅 응답에서 'thinking blocks'를 제거하고 코드 부분만 추출하여 code_eval 메트릭으로 실행하는 맞춤 스코어러를 작성했다. 작동 방식은 채팅형 응답을 파싱해 논리적 추론 블록을 필터링하고, 남은 텍스트를 실행 가능한 코드로 추출한 다음 기존 평가 루틴으로 전달하는 순서였다. 그 결과 두 양자화 모두에서 pass@1이 0%로 기록되었고, 이는 포맷 불일치와 평가 백엔드의 기대치가 성능 지표에 직접적인 영향을 미쳤음을 보여준다. 실무적으로는 HumanEval 같은 코드 평가를 자동화할 때 입력/출력 포맷을 허브와 추론 엔진 사이에서 명확히 맞춰야 정확한 결과를 확보할 수 있다.
04
로그가능도(loglikelihood)를 기반으로 하는 평가 항목들(HellaSwag, ARC 등)은 세 가지 다른 접근에서 모두 차단되었고 그 이유는 로컬 chat-completions가 loglikelihood를 지원하지 않으며 local-completions은 구형 OpenAI logprobs 포맷을 기대하고, transformers 백엔드는 해당 GGUF를 로드하지 못하는 등 상호 불일치 때문이다. 작동 흐름을 따라가면 각각의 레이어가 서로 다른 포맷과 기능을 전제로 설계되어 있어 한 지점의 불일치가 전체 파이프라인을 막는 병목으로 작동했다. 작성자는 이들 항목을 임시 우회하지 않고 'blocked' 상태로 남겨 두었다고 기록했으며, 이는 무리한 워크어라운드가 다른 지표를 은밀하게 훼손할 위험이 있음을 의미한다. 결과적으로 loglikelihood 기반 측정은 현재 스택에서 안정적으로 수행하기 어렵다는 한계가 확인되었다.
05
벤치마크 원시 점수와 파일 크기 비교는 Q8_0가 약간 높은 정확도를 보인 반면 디스크·VRAM 비용이 더 컸다는 구체적 트레이드오프를 보여준다. GSM8K에서 Q4_K_M이 80.89%인 반면 Q8_0은 84.31%였고 IFEval(프롬프트-레벨 strict)에서는 Q4_K_M이 60.00%이고 Q8_0이 66.00%였으며 HumanEval pass@1은 두 양자화에서 모두 0%로 기록되었다. GGUF 파일 크기는 Q4_K_M이 5.24 GiB이고 Q8_0이 8.90 GiB로 Q8_0이 디스크/VRAM 기준으로 약 70% 더 컸다는 주석이 함께 제시되었다. 작성자는 이 결과를 temperature 0.0으로 통제한 상대 비교로 명시하고 모델 카드에서 추천하는 temperature 0.6과는 다르다고 밝혀 측정치의 범위를 분명히 했으며, 따라서 사용자들은 정확도 소폭 향상과 메모리·디스크 비용 증가 사이에서 선택해야 한다는 실무적 판단을 도출할 수 있다.
벤치마크 결과와 GGUF 파일 크기를 나란히 보여주는 4개의 바 차트 이미지이다.
Chart이미지는 GSM8K, IFEval, HumanEval, 그리고 GGUF 파일 크기 비교를 한눈에 제공하며 각 양자화별 점수를 숫자로 표기하고 있다. 차트 상의 수치는 본문과 일치하여 GSM8K에서 Q4_K_M 80.89% 대 Q8_0 84.31%, IFEval에서 60.00% 대 66.00%, HumanEval pass@1은 양자화 모두 0%로 나타나며 GGUF 파일 크기는 Q4_K_M 5.24 GiB, Q8_0 8.90 GiB로 표시되어 Q8_0의 디스크·VRAM 비용 증가를 시각적으로 확인할 수 있다. 이 이미지는 논의된 성능-비용 트레이드오프와 측정값을 직접 근거로 제공하므로 벤치마크 해석과 툴링 결정에 실질적 가치를 가진다.
첫 번째 이미지의 프리뷰 복제본으로 동일한 네 가지 차트를 포함하고 있다.
Chart프리뷰 이미지는 원본과 같은 수치와 레이아웃을 제공하여 GSM8K, IFEval, HumanEval의 비교와 GGUF 파일 크기 차이를 반복적으로 확인하게 해준다. 이 중복 이미지는 포스트 본문에서 인용된 점수와 파일 크기 표기를 시각적으로 재확인하는 근거 역할을 하며, 특히 Q8_0의 일관된 성능 우위와 크기 부담을 함께 보여준다. 따라서 벤치마크 수치의 신뢰도와 토론의 근거를 보강하는 용도로 평가에 기여한다.

용어 해설

GGUF 파일 형식(GGUF)
GGUF는 모델 가중치와 메타데이터를 단일 바이너리로 저장하는 파일 형식으로, 디스크와 VRAM 사용량에 직접적인 영향을 준다. 이 형식은 변환된 모델을 로컬 추론 엔진으로 로드할 때 호환성 문제를 일으킬 수 있고, 모델 아키텍처 지원 여부에 따라 로드 실패가 발생한다. 벤치마크 환경에서는 GGUF 파일 크기와 로더의 아키텍처 지원 여부가 실행 가능성과 성능 측정 결과에 큰 영향을 미친다.
양자화(Quantization)
Quantization은 모델 파라미터를 낮은 비트 표현으로 변환하여 메모리 사용량과 연산 비용을 줄이는 기법이다. Q4_K_M이나 Q8_0 같은 설정은 서로 다른 정밀도와 압축 방법을 사용하여 추론 정확도와 파일/메모리 크기 사이의 트레이드오프를 만든다. 벤치마크에서는 동일 조건(예: temperature 0.0)에서 서로 다른 quant 설정의 정확도와 디스크/VRAM 요구량을 직접 비교해야 의미가 있다.
lm_eval 벤치마크 허브(lm_eval)
lm_eval는 다양한 벤치마크를 자동화하여 모델 성능을 측정하는 테스트 허브로, 백엔드와 출력 형식 기대치가 결과 재현성에 결정적인 영향을 준다. 이 툴은 completions 타입(로컬 completions, local-chat-completions 등)과 특정 출력 필드(예: reasoning 보존 여부)에 민감하며, 불일치가 있으면 무효한 결과가 생성될 수 있다. 모델과 추론 서버의 출력 스펙을 맞추는 것이 안정적인 측정의 전제조건이다.

언급된 도구

lm_eval중립

다양한 벤치마크를 자동화해 모델 성능을 측정하는 평가 허브로 사용되었다

llama.cpp중립

로컬 추론 서버 역할을 하며 출력 스키마와 서버 플래그가 평가 결과에 직접 영향을 미쳤다

transformers중립

HF 백엔드에서 GGUF를 로드하려 했으나 Qwen35 아키텍처 미지원으로 일부 경로가 차단되었다

Neo중립

작성자가 평가 과정의 디버깅을 자동화하기 위해 사용한 autonomous AI engineering agent로 언급되었다

AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 07. 03.수집 2026. 07. 03.출처 타입 REDDIT

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.