GLM-5.2를 로컬에서 실행하는 방법

2 hours ago 1
  • Z.ai의 새 오픈 모델 GLM-5.2는 744B 파라미터, 40B 활성 파라미터, 1M 컨텍스트 윈도를 갖춘 대형 모델을 로컬에서 다루는 사례라는 점이 핵심임
  • Unsloth는 Dynamic GGUF로 로컬 실행 경로를 제공하며, 권장 2-bit UD-IQ2_M quant는 239GB 디스크와 최소 245GB RAM급 환경을 요구함
  • Dynamic 1-bit는 약 76.2% top-1 accuracy와 86% 크기 감소, Dynamic 2-bit는 약 82% accuracy와 84% 크기 감소를 보여 “작아진 비율만큼 성능이 나빠진다”는 해석과 다름
  • 실행 방법은 Unsloth Studio와 llama.cpp 두 갈래이며, Studio는 MacOS·Windows·Linux에서 모델 검색·다운로드·실행, RAM offloading, multiGPU 감지를 지원함
  • 긴 컨텍스트를 실제로 쓰려면 llama.cpp의 KV cache quantization으로 메모리를 줄여야 하며, q4_0는 약 3.5배, q4_1은 약 3.2배 긴 컨텍스트를 가능하게 함

GLM-5.2 모델 개요

  • GLM-5.2는 Z.ai의 새 오픈 모델이며, Unsloth Dynamic GGUF를 통해 로컬 하드웨어에서 실행할 수 있음
  • 모델 사양은 다음과 같음
    • 전체 파라미터: 744B
    • 활성 파라미터: 40B
    • 최대 컨텍스트 윈도: 1,048,576
  • long-horizon coding, reasoning, agentic tasks에서 SOTA 성능을 제공한다고 소개됨
  • Artificial Analysis와 여러 벤치마크 기준으로 Claude 4.8 Opus, GPT-5.5, Gemini 3.1 Pro와 동급 성능을 보인다고 함
  • Unsloth는 Z.ai로부터 day-zero access를 제공받았다고 밝힘
  • GLM-5.2용 GGUF 모델 파일은 Hugging Face의 GLM-5.2-GGUF에서 받을 수 있음

권장 quant와 메모리 요구사항

  • 접근성과 정확도 균형을 위해 2-bit dynamic quant인 UD-IQ2_M 사용을 안내함
    • 디스크 사용량: 239GB
    • 256GB unified memory Mac에 직접 들어감
    • MoE offloading을 쓰면 1x24GB GPU + 256GB RAM에서도 잘 동작한다고 함
  • 1-bit quant는 223GB RAM에 들어가며, 8-bit는 810GB RAM이 필요함
  • 추론 하드웨어 요구사항 표에서 총 메모리는 RAM + VRAM 또는 unified memory를 뜻함
    • 표시된 총 메모리 수치: 223GB, 245GB, 290–360GB, 372–475GB, 570GB, 810GB
  • 최적 성능을 내려면 VRAM과 시스템 RAM을 합친 사용 가능 메모리가 quantized model file size를 충분히 넘어야 함

Thinking 모드와 샘플링 설정

  • GLM-5.2는 3개의 thinking mode를 제공함
    • non-thinking
    • thinking High
    • thinking Max
  • 복잡한 작업에는 Max Thinking 사용을 권장함
  • Unsloth Studio에서는 UI로 High/Max Thinking과 non-Thinking을 토글할 수 있음
  • 대부분의 사용 사례용 설정은 다음과 같음
    • temperature = 1.0
    • top_p = 0.95
    • 다른 모드에서는 top_p = 1.0
  • GLM-5.2는 기본적으로 reasoning을 사용하며, reasoning_effort는 "high", "max" 또는 비활성화를 선택할 수 있음
  • thinking 비활성화 예시는 다음과 같음
    • 일반 셸: --chat-template-kwargs '{"enable_thinking":false}'
    • Windows PowerShell: --chat-template-kwargs "{\"enable_thinking\":false}"
  • llama.cpp에서도 --reasoning on 또는 --reasoning off를 사용할 수 있음
  • reasoning effort 설정 예시는 다음과 같음
    • --chat-template-kwargs '{"reasoning_effort":"max"}'
    • --chat-template-kwargs '{"reasoning_effort":"high"}'
    • --chat-template-kwargs '{"enable_thinking":false}'

Dynamic GGUF 정확도와 KLD 해석

  • Unsloth는 GLM-5.2-GGUF quantization 정확도를 평가하기 위해 KLD(KL Divergence) 벤치마크를 사용함
  • Dynamic 4-bit UD-Q4_K_XL과 Dynamic 5-bit UD-Q5_K_XL은 대부분 lossless라고 안내됨
  • 더 작은 quant도 중요한 레이어는 higher precision으로, 덜 중요한 레이어는 low bits로 두는 동적 정밀도 배치 방식으로 동작함
  • pure top-1% accuracy 기준 수치는 다음과 같음
    • Dynamic 1-bit: 약 76.2% accuracy, 86% size reduction
    • Dynamic 2-bit: 약 82% accuracy, 84% size reduction
    • 정확도 비교: {b:76,82}
  • 86% 작다는 말은 86% 나쁘다는 뜻이 아니며, Dynamic 1-bit는 전체 1.5TB 모델보다 약 24% 낮은 정확도라는 해석이 붙음
  • “76% accuracy”는 “The capital of France is” 같은 질문에서 Paris 76%, Sydney 24%를 고른다는 뜻이 아님
    • 해당 예시에서는 Paris가 항상 100%, Sydney가 0%라고 함
    • 76% 수치는 전체 corpus의 filler words와 stop words 분포 변화까지 포함함
  • “Create a novel” 프롬프트처럼 여러 올바른 시작이 가능한 경우에는 baseline과 quantized 모델의 토큰 분포가 달라질 수 있음
    • baseline이 [I]를 100% 선택할 수 있고, quantized 모델이 [I] 76%, [The] 24%처럼 분포를 나눌 수 있음
    • 이 수치는 24% 확률로 gibberish나 잘못된 출력을 낸다는 뜻이 아님
  • KLD는 baseline인 BF16 또는 Q8_0 확률과 quantized version 확률 사이의 거리
    • quantization의 목표는 f(q(W))와 f(W) 사이의 KL divergence 평균을 최소화하는 것임
    • f는 language model forward, q는 quantization operation, W는 모델 파라미터 또는 weights임
    • KLD가 0이면 모델을 완벽히 재구성한 것임
  • 전체 학습 corpus 예시인 15T tokens 전체에 대해 KLD를 실행하는 것은 비용이 커서, Unsloth는 mean KLD와 작은 대표 subset sampling으로 최적화함
  • 99.9% KLD도 일반적으로 좋다고 하며, 4bit 이상부터 더 큰 uplift가 있어 massive out-of-distribution tasks에는 Dynamic 4-bit가 아마 가장 적합하다고 함

Unsloth Studio로 실행하기

  • Unsloth Studio는 local AI용 오픈소스 web UI이며 GLM-5.2 실행을 지원함
  • 주요 기능은 다음과 같음
    • MacOS, Windows, Linux에서 로컬 모델 실행
    • GGUF와 safetensor 모델 검색, 다운로드, 실행
    • RAM offloading과 multiGPU setup 자동 감지
    • llama.cpp를 통한 빠른 CPU + GPU inference
  • 설치 명령은 다음과 같음
  • 실행 명령은 다음과 같음
    • unsloth studio -H 0.0.0.0 -p 8888
    • 실행 후 브라우저에서 http://127.0.0.1:8888 또는 사용자별 URL을 열면 됨
  • HTTPS로 Studio를 안전하게 실행하는 방법도 제공됨
    • Windows, Mac, Linux에서 unsloth studio --secure
    • 무료 Cloudflare tunnel을 사용함
  • 첫 실행 시 계정 보안을 위해 password를 만들고 이후 다시 sign in해야 함
  • Studio Chat 탭에서 검색창에 GLM-5.2를 검색한 뒤 원하는 model과 quant를 다운로드함
  • 모델 실행 전 충분한 compute가 있는지 확인해야 함
  • Studio에서는 inference parameters가 자동 설정되어야 하지만, 사용자가 context length, chat template, 기타 설정을 수동으로 바꿀 수 있음
  • 추가 정보는 Unsloth Studio inference guide에 있음

llama.cpp로 실행하기

  • llama.cpp 튜토리얼은 UD-IQ2_M quant 실행을 다루며, 최소 245GB RAM이 필요함
  • 빠른 로컬 inference를 위해 llama.cpp를 사용함
  • GPU가 없거나 CPU inference만 원하면 -DGGML_CUDA=ON을 -DGGML_CUDA=OFF로 바꿈
  • Apple Mac / Metal 기기는 -DGGML_CUDA=OFF로 진행하면 되며, Metal support는 기본 활성화되어 있음
  • 빌드 절차는 다음 흐름임
    • apt-get update
    • apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev -y
    • git clone https://github.com/ggml-org/llama.cpp
    • cmake ... -DGGML_CUDA=ON
    • cmake --build ... --target llama-cli llama-mtmd-cli llama-server llama-gguf-split
    • cp llama.cpp/build/bin/llama-* llama.cpp
  • llama.cpp는 ollama run처럼 모델을 직접 load 및 download하는 데 사용할 수 있음
  • 원하는 quantization type 예시로 UD-IQ2_M을 선택하고, export LLAMA_CACHE="unsloth/GLM-5.2-GGUF"로 저장 위치를 강제할 수 있음
  • llama.cpp의 직접 다운로드 과정은 매우 느릴 수 있어 수동 다운로드 방식이 더 낫다고 안내함

수동 다운로드와 실행 예시

  • 더 빠른 수동 다운로드에는 huggingface_hub를 사용함
    • pip install huggingface_hub
    • hf download unsloth/GLM-5.2-GGUF --local-dir unsloth/GLM-5.2-GGUF --include "*UD-IQ2_M*"
  • near full precision용으로는 --include "*UD-Q8_K_XL*"을 사용할 수 있음
  • 다운로드가 멈추면 Hugging Face Hub, XET debugging을 확인하라고 안내함
  • Dynamic 1-bit 다운로드 명령은 다음과 같음
    • hf download unsloth/GLM-5.2-GGUF --local-dir unsloth/GLM-5.2-GGUF --include "*UD-IQ1_S*"
  • conversation mode의 모델 경로는 다음과 같음
    • 2-bit: unsloth/GLM-5.2-GGUF/UD-IQ2_M/GLM-5.2-UD-IQ2_M-00001-of-00006.gguf
    • 1-bit: unsloth/GLM-5.2-GGUF/UD-IQ1_S/GLM-5.2-UD-IQ1_S-00001-of-00006.gguf
  • llama-cli 실행 예시는 2-bit GGUF 첫 shard를 --model에 지정하고 다음 파라미터를 사용함
    • --temp 1.0
    • --top-p 0.95
    • --min-p 0.01
  • 직접 실행 예시에는 -hf unsloth/GLM-5.2-GGUF:UD-IQ2_M도 사용됨

생성 예시로 확인한 동작

  • 문서에는 2-bit GLM-5.2가 tool-calling과 SVG generation을 수행하는 예시가 포함됨
  • llama-cli 실행 후 “short Flappy Bird game” 생성을 요청한 결과가 이어짐
  • 생성된 단일 HTML/JavaScript 게임은 Sunset Flier라는 이름을 사용함
    • canvas, 시작 화면, 게임 오버 화면, HUD 점수, NEW BEST!, RETRY 버튼을 포함함
    • 외부 자산 없이 Web Audio API로 flap, score, hit, die 효과음을 생성함
    • 게임 상태는 READY, PLAYING, DYING, OVER 네 단계로 관리됨
    • 최고 점수는 localStorage.getItem('sunsetFlierBest')와 localStorage.setItem()으로 저장됨
  • 게임 로직에는 중력, 플랩 임펄스, 무작위 파이프, 충돌, 파티클, 화면 흔들림, 메달 시스템이 포함됨
    • GRAVITY = 0.42
    • MAX_FALL = 9
    • PIPE_W = 68
    • PIPE_GAP = 180
    • PIPE_SPEED = 2.6
    • PIPE_SPACING = 220
  • 입력은 마우스, 터치, 키보드 Space, ArrowUp, Enter를 지원함
  • 이 게임 예시는 1-bit quantization에서도 잘 작동했고 소리도 정상적으로 동작했다는 맥락으로 제시됨

긴 컨텍스트와 KV cache quantization

  • llama.cpp에서 긴 컨텍스트를 활용하려면 KV cache quantization으로 메모리 사용량을 줄여야 함
  • llama.cpp는 최근 KV cache quantization에 더 높은 정확도를 위한 기법을 추가했으며, 관련 PR은 https://github.com/ggml-org/llama.cpp/pull/21038
  • 지원되는 KV cache dtype은 다음과 같음
    • f32
    • f16
    • bf16
    • q8_0
    • q4_0
    • q4_1
    • iq4_nl
    • q5_0
    • q5_1
  • 기본값은 f16임
  • q4_0는 weight당 약 4.5비트이므로 컨텍스트 길이를 16 / 4.5, 약 3.5배 늘릴 수 있음
    • 예시로 기존에 10K를 지원하던 모델은 35K까지 가능 범위에 들어올 수 있음
  • q4_1은 shifting parameter가 추가되어 더 나을 가능성이 있고, weight당 5비트라 약 3.2배 긴 컨텍스트를 제공함
  • KV cache quantization 실행 예시는 GLM-5.2 GGUF 모델과 샘플링 파라미터를 지정함
    • 모델 경로: unsloth/GLM-5.2-GGUF/UD-IQ2_M/GLM-5.2-UD-IQ2_M-00001-of-00006.gguf
    • --temp 1.0
    • --top-p 0.95
    • --min-p 0.01
    • --cache-type-k q4_1
    • --cache-type-v q4_1

벤치마크 표에서 확인 가능한 수치

  • 문서에는 GLM-5.2 벤치마크 표가 이어지지만, 제공된 내용에는 열 헤더가 없어 각 숫자가 어떤 모델 또는 설정에 대응하는지는 확인할 수 없음
  • Reasoning 벤치마크에는 다음 행과 수치가 포함됨
    • HLE: 40.5, 49.8*, 41.4*, 45, 31, 41.4, 37, 37.7
    • AIME 2026: 99.2, 95.7, 98.3, 98.2, 95.3, 97, -, 94.6
    • GPQA-Diamond: 91.2, 93.6, 93.6, 94.3, 86.2, 90, 93, 90.1
  • Coding 벤치마크에는 다음 행과 수치가 포함됨
    • SWE-bench Pro: 62.1, 69.2, 58.6, 54.2, 58.4, 60.6, 59, 55.4
    • NL2Repo: 48.9, 69.7, 50.7, 33.4, 42.7, 47.2, 42.1, 35.5
    • Terminal Bench 2.1 (Terminus-2): 81.0, 85, 84, 74, 63.5, 75, 65, 64
  • Agentic 벤치마크에는 다음 행과 수치가 포함됨
    • MCP-Atlas (Public Set): 76.8, 77.8, 75.3, 69.2, 71.8, 76.4, 74.2, 73.6
    • Tool-Decathlon: 48.2, 59.9, 55.6, 48.8, 40.7, -, -, 52.8
Read Entire Article