CoolFace
Modelpublic

Akicou/LLaDA2.2-Flash-REAM-50B

sourceHugging Faceupdated 2mo agoView on Hugging Face
1likes60downloads
Model Card

Akicou/LLaDA2.2-Flash-REAM-50B

This repository contains a REAM-compressed version of inclusionAI/LLaDA2.2-flash, produced with `Akicou/ream` โ€” a REAM/REAP-style Mixture-of-Experts compression framework.

It is not an official inclusionAI release.

๐Ÿง  Methodology: REAM

REAM (Router Expert Activation Merging) โ€” originally proposed by SamsungSAILMontreal/ream (Jha et al., 2026) โ€” is a compression technique for MoE models that combines expert merging with pseudo-pruning:

  1. 1.Calibration โ€” Run a small set of hardcoded prompts through the model to collect router logits and expert output activations.
  2. 2.REAP Saliency โ€” Compute per-expert importance as S[i] = mean(||h_i(x)|| ร— p_i(x)) over tokens routed to expert i.
  3. 3.Pseudo-Grouping โ€” Select the top-K most salient experts as centroids, then assign nearby experts using gated similarity (50% hidden state + 50% router logit distribution).
  4. 4.Merge โ€” Within each group, merge experts with saliency-weighted averaging (--fast-merge).
  5. 5.Prune โ€” Non-centroid experts are removed. The router is shrunk to match the new expert count, keeping only centroid rows.

This implementation follows the original REAM paper closely, including:

  • โ€”Centroid-only router update (REAP-style)
  • โ€”Zero saliency edge-case handling (unused experts get a small non-zero value)
  • โ€”Single-layer sequential hooks to avoid OOM on large models

๐Ÿ“Š Compression Details

MetricOriginal (LLaDA2.2-flash)REAM-50BChange
Routed Experts/Layer256128-128 (-50%)
MoE Layers31 (layer 0 is dense)31โ€”
Top-k per token88โ€”
Calibration100 samples, hardcoded promptsโ€”โ€”
Merge MethodSaliency-weighted avg (--fast-merge)โ€”โ€”
GroupingREAM pseudo-group (group_size=16)โ€”โ€”

The per-layer sigmoid-router expert_bias vector (analogous to DeepSeek's e_score_correction_bias) is correctly shrunk alongside the router weights on every layer.

๐Ÿ›  How It Was Created

bash
python examples/compress_sequential.py \
    --model inclusionAI/LLaDA2.2-flash \
    --output ./LLaDA2.2-Flash-REAM-50B \
    --target-ratio 0.5 \
    --samples 100 \
    --max-seq-len 512 \
    --batch-size 4 \
    --max-tokens 2048 \
    --cpu-merge \
    --fast-merge \
    --seed 42

Hardware: 4ร— NVIDIA H100 (80GB each), 192 vCPUs, 2TB RAM

โš ๏ธ Important Notes

  • โ€”This is a calibrated merge (100 hardcoded prompts), not a full evaluation-grade calibration.
  • โ€”No benchmark evaluation is claimed here โ€” this is an experimental release intended as a starting point for fine-tuning.
  • โ€”The model uses trust_remote_code=True (same as the base LLaDA2.2-flash).
  • โ€”Shared experts and dense layer 0 are left untouched.
  • โ€”The per-layer router expert_bias is correctly shrunk (256 โ†’ 128) alongside mlp.gate.weight.
  • โ€”LLaDA2 is a block-diffusion (dLLM) model. Its custom generate() is a non-autoregressive, block-wise iterative refinement loop and targets transformers==5.2.0 (the base model's version); on newer transformers (โ‰ฅ 5.3) the refactored GenerationMixin breaks it, so pin that version for inference. The forward / loss path works on the current stack, so the checkpoint is fine-tune ready regardless.
  • โ€”The tokenizer files are copied verbatim from the base model (tokenizer.save_pretrained() was found to re-serialize the fast tokenizer incorrectly, producing byte-level fallback; the original tokenizer.json / tokenizer_config.json / chat_template.jinja / custom tokenization_llada2.py are used as-is).

๐Ÿงช Output Verification (Smoke Test)

Real generation from this checkpoint (transformers==5.2.0, temperature=0.0, block_length=32, gen_length=512, threshold=0.5, eos_early_stop=True). Note: like the base model, inputs must satisfy num_tokens % block_size(32) == 0.

User: What is the Heyting Algebra thingamajig?

Model Output:

The term "Heyting Algebra thingamajig" appears to be a fictional or made-up term, possibly derived from a combination of words such as "Heyting" and "Algebra" along with "thingamajig."
This is a calibrated-merge release: a 50%-compressed checkpoint with no fine-tuning yet. Generation is coherent but visibly lower-quality / more literal than the 256-expert base (which gives a full intuitionistic-logic explanation). Fine-tuning is expected to recover quality. Forward + cross-entropy loss verified (loss โ‰ˆ 0.19 on a sample sentence).

๐Ÿ”ง Integrity Checks

  • โ€”All 31 MoE layers merged 256 โ†’ 128 experts (50.0% compression).
  • โ€”model.config.num_experts == 128, num_experts_per_tok == 8.
  • โ€”mlp.gate.weight (128, 4096) and mlp.gate.expert_bias (128,) confirmed per layer; shared experts present; lm_head.weight preserved (tie_word_embeddings=False).
  • โ€”Tokenizer byte-for-byte identical to the base model (apply_chat_template โ†’ 19 tokens for the smoke-test prompt, matching the base).

๐Ÿ“ฆ Basic Usage (forward / fine-tuning path)

python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "Akicou/LLaDA2.2-Flash-REAM-50B"

tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    dtype=torch.bfloat16,
    device_map="auto",
    trust_remote_code=True,
)

# NOTE: block-diffusion models require token length to be a multiple of block_size (32).
text = "The quick brown fox jumps over the lazy dog. " * 3
inputs = tokenizer(text, return_tensors="pt").to(model.device)

outputs = model(**inputs, labels=inputs.input_ids)
print("loss:", float(outputs.loss))

For diffusion generation, follow the base model's recommended recipe (temperature=0.0, block_length=32, threshold=0.5, editing_threshold=0.0, gen_length=512, eos_early_stop=True) with a compatible transformers version.

๐Ÿ“œ Citation

bibtex
@article{jha2026ream,
  title={REAM: Merging Improves Pruning of Experts in LLMs},
  author={Jha, Saurav and Hashemzadeh, Maryam and Pasand, Ali Saheb and Parviz, Ali and Lee, Min-Joong and Knyazev, Boris},
  journal={arXiv preprint arXiv:2604.04356},
  year={2026}
}

@misc{llada2,
  title={LLaDA2.2-flash},
  author={inclusionAI},
  year={2026},
  url={https://huggingface.co/inclusionAI/LLaDA2.2-flash}
}

Attribution

All architecture, tokenizer, and original weights are from inclusionAI/LLaDA2.2-flash. This repository contains a REAM-compressed derivative checkpoint.