How to use from
Docker Model Runner
docker model run hf.co/axteam/GLM-4.7-Flash-FP8-dynamic
Quick Links

GLM-4.7-Flash ยท FP8 (dynamic)

8-bit quantization of zai-org/GLM-4.7-Flash for vLLM serving. Quantized by axteam.

Base model zai-org/GLM-4.7-Flash
Method FP8 (dynamic)
Format compressed-tensors float-quantized (scheme FP8_DYNAMIC)
Weights / activations W8A8 โ€” FP8 E4M3 weights (per-channel), dynamic per-token FP8 activations
Architecture MoE (GLM-4.7 Lite ยท Glm4MoeLite) ยท 31.2B ยท 202K context ยท text-only
Size on disk ~32.2 GB
Calibration None (data-free)
License mit

Quantization details

  • Scheme โ€” W8A8 โ€” FP8 E4M3 weights (per-channel), dynamic per-token FP8 activations, stored as compressed-tensors float-quantized (scheme FP8_DYNAMIC).
  • Kept in BF16 โ€” token embeddings, the LM head, and all RMSNorms. Only attention & MLP projections are quantized. In addition, the MoE router is left unquantized: mlp.gate.weight in BF16 and mlp.gate.e_score_correction_bias in FP32, as in the original. The MTP layer (model.layers.47: eh_proj, shared_head.head) is quantized like the other layers.
  • Post-training quantization (no retraining). Tokenizer / chat_template identical to the original.

Benchmarks (measured)

Every column was measured with the same harness and settings โ€” lm-evaluation-harness on vLLM, greedy, completion-style prompts without a chat template (0- or 5-shot, as listed in each row). MMLU here is lm-eval's generative variant (mmlu_generative: the model writes the answer letter and only an exact match on the first line counts), so it is not directly comparable with MMLU scores measured another way (e.g. log-likelihood scoring). Percentages are recovery vs. the BF16 original.

Benchmark BF16 (original) FP8-dynamic (this repo) NVFP4A16
MMLU (5-shot, generative) 72.19 71.78 (99.4%) 69.97 (96.9%)
GSM8K (5-shot, strict) 83.70 82.71 (98.8%) 79.83 (95.4%)
ARC-Challenge (0-shot) 57.51 57.51 (100.0%) 55.03 (95.7%)
Winogrande (5-shot) 74.51 73.32 (98.4%) 73.40 (98.5%)
KMMLU (5-shot, direct) 50.04 50.15 (100.2%) 47.38 (94.7%)
HAE-RAE (0-shot) 64.89 63.89 (98.4%) 59.67 (91.9%)
Average 67.14 66.56 (99.1%) 64.21 (95.6%)

Requirements

Runtime vLLM โ€” the architecture is in vLLM โ‰ฅ 0.15.0; tested here with vLLM 0.32.0.
vLLM install vLLM 0.32 itself needs Python 3.11โ€“3.14, torch 2.13 (CUDA 13.0 build, so an NVIDIA driver with CUDA 13 support), transformers โ‰ฅ5.16.1,<5.20 and compressed-tensors 0.17.0 (both pinned by vLLM; 0.17.0 reads this checkpoint, which was saved with 0.19.0 โ€” do not upgrade it separately).
GPU NVIDIA Turing (sm75, e.g. T4) or newer. FP8 math runs on Ada / Hopper / Blackwell (sm89+); on Turing and Ampere vLLM switches to weight-only FP8 automatically. V100 (sm70) is not supported. (Kernel choice per GPU from vLLM 0.32's selection code; only B200 was run here.)
Memory Weights: 32.2 GB. Add KV cache (grows with context length ร— concurrent requests) and a few GB for activations / CUDA graphs; use --tensor-parallel-size N when the weights do not fit one GPU.
Transformers (without vLLM) transformers>=5.15.0.
trust_remote_code not needed

Usage (vLLM)

Start an OpenAI-compatible server:

vllm serve axteam/GLM-4.7-Flash-FP8-dynamic --max-model-len 32768

Query it:

curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{
  "model": "axteam/GLM-4.7-Flash-FP8-dynamic",
  "messages": [{"role": "user", "content": "๋Œ€ํ•œ๋ฏผ๊ตญ์˜ ์ˆ˜๋„๋Š” ์–ด๋””์ธ๊ฐ€์š”?"}],
  "temperature": 1.0, "max_tokens": 512
}'

Offline inference in Python:

from vllm import LLM, SamplingParams

llm = LLM(model="axteam/GLM-4.7-Flash-FP8-dynamic", max_model_len=32768)
params = SamplingParams(temperature=1.0, max_tokens=1024)
out = llm.chat([{"role": "user", "content": "Explain model quantization in two sentences."}], params)
print(out[0].outputs[0].text)

Recommended sampling (from the original generation_config.json): temperature=1.0. Thinking mode is on by default in the chat template; to turn it off pass chat_template_kwargs={"enable_thinking": False} (Python llm.chat(..., chat_template_kwargs=...), or "chat_template_kwargs": {"enable_thinking": false} in the request body).

Reducing KV-cache memory (optional, serve-time)

The KV cache is kept in BF16 by default. KV-cache precision is a runtime choice, independent of the weight quantization above; for long contexts or large batches FP8 roughly halves KV-cache memory:

vllm serve axteam/GLM-4.7-Flash-FP8-dynamic --kv-cache-dtype fp8

License

Quantized derivative of zai-org/GLM-4.7-Flash (mit).


ํ•œ๊ตญ์–ด ์š”์•ฝ

zai-org/GLM-4.7-Flash์˜ FP8 (W8A8) ์–‘์žํ™” ๋นŒ๋“œ ยท ์ œ์ž‘ axteam

๊ฐœ์š”

ํ•ญ๋ชฉ ๋‚ด์šฉ
์›๋ณธ ๋ชจ๋ธ zai-org/GLM-4.7-Flash
์–‘์žํ™” ๋ฐฉ์‹ FP8 ๋™์  ์–‘์žํ™” (W8A8)
์ €์žฅ ํ˜•์‹ compressed-tensors float-quantized (scheme FP8_DYNAMIC)
๋ชจ๋ธ ๊ตฌ์กฐ MoE (GLM-4.7 Lite, Glm4MoeLite) ยท 31.2B ยท ์ปจํ…์ŠคํŠธ 202K ยท ํ…์ŠคํŠธ ์ „์šฉ
์šฉ๋Ÿ‰ ์•ฝ 32.2 GB
๋ณด์ • ๋ฐ์ดํ„ฐ ์—†์Œ (๊ฐ€์ค‘์น˜ ์Šค์ผ€์ผ์€ ๊ฐ€์ค‘์น˜๋งŒ์œผ๋กœ ๊ณ„์‚ฐ, ํ™œ์„ฑํ™” ์Šค์ผ€์ผ์€ ์‹คํ–‰ ์‹œ ๊ณ„์‚ฐ)

์–‘์žํ™” ์ƒ์„ธ

  • ๊ฐ€์ค‘์น˜: FP8(E4M3), ์ถœ๋ ฅ ์ฑ„๋„๋ณ„ ์Šค์ผ€์ผ
  • ํ™œ์„ฑํ™”: ์‹คํ–‰ ์‹œ ํ† ํฐ๋ณ„ ๋™์  FP8
  • ์–‘์žํ™” ์ ˆ์ฐจ: PTQ(ํ•™์Šต ํ›„ ์–‘์žํ™”, ์žฌํ•™์Šต ์—†์Œ), ๊ฐ€์ค‘์น˜ ์Šค์ผ€์ผ์€ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•˜๊ณ  ํ™œ์„ฑํ™” ์Šค์ผ€์ผ์€ ์‹คํ–‰ ์‹œ ํ† ํฐ๋งˆ๋‹ค ๊ณ„์‚ฐ
  • BF16 ์œ ์ง€: ํ† ํฐ ์ž„๋ฒ ๋”ฉ, LM ํ—ค๋“œ, ๋ชจ๋“  RMSNorm, MoE ๋ผ์šฐํ„ฐ ๊ฐ€์ค‘์น˜(mlp.gate.weight)
  • FP32 ์œ ์ง€: MoE ๋ผ์šฐํ„ฐ ๋ณด์ • ํŽธํ–ฅ(mlp.gate.e_score_correction_bias), ์›๋ณธ๊ณผ ๋™์ผ
  • ์–‘์žํ™” ๋Œ€์ƒ: ์–ดํ…์…˜ยทMLP ์„ ํ˜•์ธต(projection) (MTP ์ธต model.layers.47๋„ ๋‹ค๋ฅธ ์ธต๊ณผ ๊ฐ™์ด ์–‘์žํ™”)
  • ์›๋ณธ ํŒŒ์ผ: ํ† ํฌ๋‚˜์ด์ €ยทchat template์€ ์›๋ณธ๊ณผ ๋™์ผ

ํ’ˆ์งˆ (์‹ค์ธก)

  • ๋ฒค์น˜๋งˆํฌ ํ‰๊ท : 66.56 (์›๋ณธ 67.14, 99.1%) โ€” MMLU(์ƒ์„ฑํ˜•)ยทGSM8KยทARC-ChallengeยทWinograndeยทKMMLUยทHAE-RAE 6์ข… ํ‰๊ท , lm-evaluation-harness + vLLM, chat template ์—†๋Š” ์™„์„ฑํ˜• ํ”„๋กฌํ”„ํŠธ(๊ณผ์ œ๋ณ„ 0ยท5-shot, ํ‘œ ์ฐธ๊ณ )ยทgreedy, ๋ชจ๋“  ๋นŒ๋“œ๋ฅผ ๊ฐ™์€ ์„ค์ •์œผ๋กœ ์ธก์ •
  • ํ•œ๊ตญ์–ด ๋ฒค์น˜๋งˆํฌ: KMMLU 50.15 (์›๋ณธ 50.04, 100.2%) ยท HAE-RAE 63.89 (์›๋ณธ 64.89, 98.4%)
  • MMLU ๋ฐฉ์‹: lm-eval ์ƒ์„ฑํ˜• ๋ณ€ํ˜•(mmlu_generative) โ€” ๋ชจ๋ธ์ด ๋‹ต ๊ธ€์ž๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ฒซ ์ค„์ด ์ •ํ™•ํžˆ ์ผ์น˜ํ•ด์•ผ ์ •๋‹ต์œผ๋กœ ์ฑ„์ ํ•˜๋ฏ€๋กœ, ๋‹ค๋ฅธ ๋ฐฉ์‹(์˜ˆ: log-likelihood ์ฑ„์ )์œผ๋กœ ์žฐ MMLU ์ ์ˆ˜์™€ ์ง์ ‘ ๋น„๊ต ๋ถˆ๊ฐ€

์š”๊ตฌ์‚ฌํ•ญ

  • ์‹คํ–‰ ์—”์ง„: vLLM 0.15.0 ์ด์ƒ(์ด ๊ตฌ์กฐ๋ฅผ ์ง€์›ํ•˜๋Š” ์ฒซ ๋ฒ„์ „), ์ด ๋นŒ๋“œ๋Š” vLLM 0.32.0์—์„œ ์‹คํ–‰ ํ™•์ธ
  • vLLM 0.32 ์„ค์น˜ ์กฐ๊ฑด: Python 3.11~3.14, torch 2.13(CUDA 13.0 ๋นŒ๋“œ, CUDA 13 ์ง€์› ๋“œ๋ผ์ด๋ฒ„ ํ•„์š”), transformers 5.16.1 ์ด์ƒ 5.20 ๋ฏธ๋งŒ, compressed-tensors 0.17.0 โ€” transformersยทcompressed-tensors๋Š” vLLM์ด ๋ฒ„์ „์„ ๊ณ ์ •ํ•˜๋ฏ€๋กœ compressed-tensors๋ฅผ ๋”ฐ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์ง€ ๋ง ๊ฒƒ (์ด ์ฒดํฌํฌ์ธํŠธ๋Š” 0.19.0์œผ๋กœ ์ €์žฅ๋์ง€๋งŒ 0.17.0์—์„œ๋„ ๋กœ๋“œ๋จ)
  • GPU: NVIDIA Turing(sm75, ์˜ˆ: T4) ์ด์ƒ, V100(sm70) ๋ฏธ์ง€์› โ€” FP8 ์—ฐ์‚ฐ์€ AdaยทHopperยทBlackwell(sm89 ์ด์ƒ)์—์„œ ์ˆ˜ํ–‰, TuringยทAmpere๋Š” vLLM์ด ๊ฐ€์ค‘์น˜ ์ „์šฉ FP8๋กœ ์ž๋™ ์ „ํ™˜ (GPU๋ณ„ ์ง€์› ์—ฌ๋ถ€๋Š” vLLM 0.32 ์ปค๋„ ์„ ํƒ ์ฝ”๋“œ ๊ธฐ์ค€, ์‹ค์ œ ์‹คํ–‰์€ B200์—์„œ๋งŒ ํ™•์ธ)
  • ๋ฉ”๋ชจ๋ฆฌ: ๊ฐ€์ค‘์น˜ 32.2 GB + KV ์บ์‹œ(์ปจํ…์ŠคํŠธ ๊ธธ์ด ร— ๋™์‹œ ์š”์ฒญ ์ˆ˜์— ๋น„๋ก€) + ํ™œ์„ฑํ™”ยทCUDA graph์šฉ ์ˆ˜ GB โ€” GPU ํ•œ ์žฅ์— ๋‹ค ๋“ค์–ด๊ฐ€์ง€ ์•Š์œผ๋ฉด --tensor-parallel-size N์œผ๋กœ ๋ถ„์‚ฐ
  • Transformers๋กœ ์ง์ ‘ ์‚ฌ์šฉ: transformers 5.15.0 ์ด์ƒ
  • trust_remote_code: ๋ถˆํ•„์š”

์‚ฌ์šฉ๋ฒ•

  • ์„œ๋ฒ„ ์‹คํ–‰: vllm serve axteam/GLM-4.7-Flash-FP8-dynamic --max-model-len 32768 โ€” OpenAI ํ˜ธํ™˜ API
  • Python: LLM(model="axteam/GLM-4.7-Flash-FP8-dynamic", max_model_len=32768).chat(...) โ€” ์ „์ฒด ์˜ˆ์‹œ๋Š” ์œ„ ์˜์–ด ๋ณธ๋ฌธ 'Usage (vLLM)' ์ ˆ ์ฐธ๊ณ 
  • ๊ถŒ์žฅ ์ƒ˜ํ”Œ๋ง: temperature=1.0 (์›๋ณธ generation_config.json ๊ธฐ์ค€)
  • thinking ๋ชจ๋“œ: ๊ธฐ๋ณธ ์ผœ์ง โ€” ๋„๋ ค๋ฉด chat_template_kwargs={"enable_thinking": False} ์ „๋‹ฌ(Python์€ llm.chat() ์ธ์ž, HTTP๋Š” ์š”์ฒญ ๋ณธ๋ฌธ์˜ "chat_template_kwargs": {"enable_thinking": false})
  • KV ์บ์‹œ ์ ˆ๊ฐ(์„ ํƒ): vllm serve์— --kv-cache-dtype fp8 ์ถ”๊ฐ€ โ€” ๊ธฐ๋ณธ BF16์ธ KV ์บ์‹œ๋ฅผ FP8๋กœ ์ €์žฅํ•ด KV ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•ฝ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์ž„ (๊ธด ์ปจํ…์ŠคํŠธยท๋™์‹œ ์š”์ฒญ์ด ๋งŽ์„ ๋•Œ ์œ ๋ฆฌ, ๊ฐ€์ค‘์น˜ ์–‘์žํ™”์™€ ๋ณ„๊ฐœ์ธ ์‹คํ–‰ ์˜ต์…˜)

๋ผ์ด์„ ์Šค

  • ๋ผ์ด์„ ์Šค: MIT โ€” ์›๋ณธ ๋ชจ๋ธ์˜ ๋ผ์ด์„ ์Šค๋ฅผ ๊ทธ๋Œ€๋กœ ๋”ฐ๋ฆ„
  • ๊ถŒ๋ฆฌ: ์›๋ณธ ๋ชจ๋ธ์˜ ๊ถŒ๋ฆฌ๋Š” Z.ai์—๊ฒŒ ์žˆ์Œ, ์ด ๋ฆฌํฌ๋Š” ์–‘์žํ™” ํŒŒ์ƒ๋ฌผ
Downloads last month
149
Safetensors
Model size
31B params
Tensor type
F32
ยท
BF16
ยท
F8_E4M3
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for axteam/GLM-4.7-Flash-FP8-dynamic

Quantized
(111)
this model