Dedicated Endpoints

Run this model inference on single tenant GPU with unmatched speed and reliability at scale.

Learn more
Container

Run this model inference with full control and performance in your environment.

Learn more

Get help setting up a custom Dedicated Endpoints.

Talk with our engineer to get a quote for reserved GPU instances with discounts.

README

License: apache-2.0

At a glance

Base model
FormatBF16
Total params185B
Active / token
Experts / layer80
Layers92
Hidden size5120
Context202,752
On-disk size370 GB

Which variant should I pick?

VariantFormatLink
GLM-4.7-185B (this)BF16link
GLM-4.7-185B-W4A16W4A16link
GLM-4.7-202BBF16link
GLM-4.7-218B-W4A16W4A16link
GLM-4.7-REAP-40-W4A16W4A16link

GLM-4.7-REAP-50

✨ Highlights

50% Expert-Pruned GLM-4.7 optimized for code generation, function calling, and agentic workflows.

Created using REAP (Router-weighted Expert Activation Pruning) by Cerebras:

  • 358B → 179B: 50% of MoE experts pruned (80/160 remaining)
  • Calibrated for Code & Tools: Preserves coding and function-calling capabilities
  • One-Shot Compression: No fine-tuning required
  • Drop-in Compatible: Works with vLLM, Transformers, SGLang

📋 Model Specifications

PropertyValue
Base Modelzai/glm-4.7
ArchitectureSparse Mixture-of-Experts (SMoE)
Original Parameters358B
Pruned Parameters179B
Compression50% experts removed
Experts per Layer80 (was 160)
MoE Layers92
Activated Experts8 per token
PrecisionBF16
Disk Size~345GB
VRAM Required~345GB

🔬 Calibration Dataset: Deep Dive

REAP's effectiveness depends critically on calibration data that represents the target use case. We specifically optimized for code generation, function/tool calling, and agentic workflows.

Why These 3 Datasets?

DatasetSamplesPurposeWhy It Matters
evol-codealpaca-v1700Code generation51% of mix — Code tasks activate specific expert pathways; pruning without code calibration destroys coding ability
xlam-function-calling-60k330Function/tool calling24% of mix — Tool use requires structured JSON output; experts handling schema generation must be preserved
SWE-smith-trajectories330Agentic multi-turn24% of mix — Real SWE-bench trajectories with tool calls, file edits, and multi-step reasoning

The Science Behind Dataset Selection

markdown

REAP Algorithm:
1. Forward pass calibration samples through model
2. Record which experts activate and their magnitudes
3. Compute saliency = router_weight × activation_norm
4. Prune lowest-saliency experts
Key Insight: Experts are TASK-SPECIFIC
├── Some experts specialize in natural language
├── Some experts specialize in code syntax
├── Some experts specialize in JSON/structured output
└── Some experts specialize in multi-turn context
If calibration lacks code → code-specialized experts appear "unused" → get pruned → model loses coding ability

Cerebras' Original Mix (from paper)

Cerebras used the same 3 datasets in their GLM-4.6 REAP experiments:

  • evol-codealpaca-v1 for code generation
  • xlam-function-calling-60k for tool calling
  • SWE-smith-trajectories for agentic tasks

We followed this exact recipe for reproducibility.

Combined Dataset

Our calibration mix: 0xSero/glm47-reap-calibration-v2


📦 Related Models

ModelParamsExpertsSizeFormat
GLM-4.7-REAP-30251B112~470GBBF16
GLM-4.7-REAP-35233B104~439GBBF16
GLM-4.7-REAP-40218B96~407GBBF16
GLM-4.7-REAP-45197B88~370GBBF16
GLM-4.7-REAP-50179B80~345GBBF16
GLM-4.7-REAP-40-W4A16218B96~108GBGPTQ
GLM-4.7-REAP-50-W4A16179B80~92GBGPTQ

🚀 Deployment

vLLM (Recommended)

bash

vllm serve 0xSero/GLM-4.7-185B \
--tensor-parallel-size 8 \
--trust-remote-code \
--dtype bfloat16

Transformers

python

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained(
"0xSero/GLM-4.7-185B",
torch_dtype=torch.bfloat16,
device_map="auto",
trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained("0xSero/GLM-4.7-185B", trust_remote_code=True)
messages = [{"role": "user", "content": "Write a Python function to merge two sorted lists."}]
inputs = tokenizer.apply_chat_template(messages, return_tensors="pt", add_generation_prompt=True)
outputs = model.generate(inputs.to(model.device), max_new_tokens=512, temperature=0.7)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

🧩 Reproduction

REAP Pruning Script

python

#!/usr/bin/env python3
"""
REAP Pruning Script for MoE Models
Adapted from: https://github.com/CerebrasResearch/reap
"""
import subprocess
import sys
def run_reap(
model_path: str,
compression_ratio: float,
dataset: str = "0xSero/glm47-reap-calibration-v2",
samples: int = 1360,
seed: int = 42,
distance: str = "angular",
reuse_observations: str = None,
):
"""
Run REAP expert pruning.
Args:
model_path: Path to base model
compression_ratio: 0.30 = prune 30%, keep 70%
dataset: Calibration dataset (code + tools + agentic)
samples: Number of calibration samples
seed: Random seed for reproducibility
distance: Distance metric for expert clustering
reuse_observations: Path to pre-computed observations for instant pruning
"""
cmd = [
sys.executable, "src/reap/prune.py",
"--model-name", model_path,
"--dataset-name", dataset,
"--compression-ratio", str(compression_ratio),
"--prune-method", "reap",
"--seed", str(seed),
"--samples_per_category", str(samples),
"--model_max_length", "2048",
"--distance_measure", distance,
"--record_pruning_metrics_only", "true",
]
if reuse_observations:
# Instant pruning: skip calibration, reuse precomputed expert scores
cmd.extend(["--load_observations", reuse_observations])
subprocess.run(cmd, check=True)
# Example: Create 40% pruned model
run_reap(
model_path="/path/to/GLM-4.7",
compression_ratio=0.40, # Prune 40% of experts
)

Observation Reuse (Instant Multi-Ratio Pruning)

REAP computes expert saliency scores during calibration. These scores are compression-ratio independent, enabling instant pruning at any ratio:

bash

# First run: compute observations (~5 hours)
python prune.py --compression-ratio 0.40 --output_file_name observations.pt
# Subsequent runs: instant pruning (<5 minutes)
python prune.py --compression-ratio 0.30 --load_observations observations.pt
python prune.py --compression-ratio 0.50 --load_observations observations.pt

⚖️ License

Apache 2.0 (inherited from GLM-4)


License & citation

License inherited from the base model.

bibtex

@misc{lasby2025reap,
title = {REAP the Experts: Why Pruning Prevails for One-Shot MoE Compression},
author = {Mike Lasby and Ivan Lazarevich and Nish Sinnadurai and Sean Lie and Yani Ioannou and Vithursan Thangarasa},
year = {2025}, eprint = {2510.13999}, archivePrefix = {arXiv}
}

Sponsors

Made possible by NVIDIA · TNG Technology · Lambda · Prime Intellect · Hot Aisle.

Model provider

0xSero

Model tree

Base

this model

Modalities

Input

Text

Output

Text

Pricing

Dedicated Endpoints

View details

Supported Functionality

Model APIs

Dedicated Endpoints

Container

More information

Explore FriendliAI today