~/satyajit

Hunyuan Hy3: Tencent's 295B-A21B MoE, and the community 1M GGUF

mdjsonmcp

2026-07-08 · 14 min · explainer · llm · mixture-of-experts · long-context · quantization · inference-optimization

Hy3 is Tencent Hunyuan's newest open model — released as a preview checkpoint, Hy3 preview (295B A21B). It is a Mixture-of-Experts language model with 295 billion total parameters that activates 21 billion per token, ships open weights on Hugging Face and ModelScope, and serves a 256K native context. Tencent frames it as a hybrid fast-and-slow-thinking model: one set of weights, a reasoning_effort knob that goes from no_think to high. The pitch is efficiency — "intelligence comparable to flagship models with two to five times its parameter scale."

I read all three primary sources for this: the research page, the Tencent-Hunyuan/Hy3-preview repo, and a community Hy3-1M-GGUF build that YaRN-extends the context to 1,048,576 tokens for local inference. Two things are worth pinning down before any of the benchmark charts: the "1M" context is a community artifact, not a Tencent release, and the whole benchmark suite is provider-reported. Both matter, and I keep them separate below.

Where the 295B lives

The parameter accounting is the whole economic argument, so start there. Hy3 is 80 decoder layers of MoE, plus 1 extra multi-token-prediction (MTP) layer (3.8B params). Each MoE layer holds 192 experts; the router keeps the top-8 per token. So of 295B total, only ~21B is active on any given token — roughly a 7% activation rate. That sparsity is what lets a 295B model serve at the cost of a ~21B dense one.

Attention is grouped-query attention (GQA): 64 query heads but only 8 KV heads, head_dim 128, hidden size 4096. The 8-way sharing is not a detail — it is an 8× cut in KV-cache memory versus full multi-head attention, and it is the reason a 256K window is affordable at all (more on that below). The MTP layer drafts the next token so the main model can verify several tokens per step — speculative decoding, built into the weights rather than bolted on.

Walk one token through a block. Flip stages to see the KV grouping, the top-8 route, and the draft head:

Hy3 decoder block · one token, one forward pass295B-A21B
grouped-query attention · 8 KV heads, 8 query heads each = 64kv0kv1kv2kv3kv4kv5kv6kv7head_dim 128 · one KV projection feeds 8 query heads → the KV cache is 8× smaller than full MHA
this stage runs
8 KV heads read
out of
64 query heads
context length
256K native

grouped-query attention: 8 query heads share each KV head → 8× smaller KV cache than full MHA

Hy3 preview — 295B total / 21B active (top-8 of 192 experts)

token id ─▶ embed 4096 (vocab 120,832, RMSNorm)
              │
              ▼
┌────────────────────────────────────────────┐
│  × 80 decoder layers                        │
│                                             │
│   GQA:  64 query heads ── share ──▶ 8 KV    │   head_dim 128
│         (KV cache is 8× smaller than MHA)   │
│                                             │
│   MoE:  router → top-8 of 192 experts       │   ~21B active
│         intermediate 13312                  │
└────────────────────────────────────────────┘
              │
              ▼
MTP layer (3.8B) ─▶ draft next token ─▶ main model verifies
Hy3 preview block: GQA attention + top-8/192 MoE, ×80, then a shared MTP draft head for speculative decode.

If the MoE routing here is new, I built it from nothing in Mixture of Experts, from scratch — the router, the top-k gate, and why activating a sparse subset is the entire reason a model this large is cheap to run. The MTP head is the same idea I unpacked in Multi-Token Prediction: predict more than one token so a cheap draft can be verified in a single forward pass.

One honest architecture note Tencent does not hide but does not emphasize: this is the preview release. The card labels it 295B A21B, and the community GGUF card rounds the same weights to ~299B / ~17B active. I use Tencent's official figures (295B / 21B) throughout; the ~2% discrepancy is a community rounding, not a second model.

Training: one model, two speeds

Tencent is thin on the training story, and I will not pad it. What the sources actually say: Hy3 was built with "strengthened reinforcement learning and enhanced data quality and diversity," and refined "through use by global developers and across Tencent's large-scale real-world business scenarios." No token count, no data-mix percentages, no stage breakdown. Treat the training narrative as a claim.

The concrete, testable part is the hybrid thinking interface. A single reasoning_effort parameter switches inference mode:

That is exposed at serve time, so you pay for reasoning only when the task needs it. On an OpenAI-compatible endpoint you set it per request:

# after deploying Hy3 behind vLLM / SGLang (OpenAI-compatible)
resp = client.chat.completions.create(
    model="hy3-preview",
    messages=[{"role": "user", "content": "prove there are infinitely many primes"}],
    temperature=0.9,      # Tencent's recommended default
    top_p=1.0,
    extra_body={"chat_template_kwargs": {"reasoning_effort": "high"}},
)

The pretrained base model is where the numbers are cleanest, because base-model evals are the least harness-sensitive. On general knowledge Hy3-Base sits a hair under the larger open models — MMLU 87.42 (Kimi-K2 88.24, GLM-4.5 87.73, DeepSeek-V3 87.68) — but it leads its comparison set on several reasoning and math rows:

BenchmarkHy3-BaseKimi-K2DeepSeek-V3
MMLU87.4288.2487.68
MMLU-Pro65.7665.9863.98
MATH76.2871.2059.37
GSM8K95.37
LiveCodeBench-v634.86
CRUXEval-I71.19
SuperGPQA51.60
MMMLU (multilingual)80.1577.6379.54

The pattern holds across the suite: Hy3-Base trails the biggest models slightly on broad knowledge, then pulls ahead on math (MATH 76.28 vs DeepSeek-V3's 59.37 is not close) and code reasoning. For a model activating 21B, that is the interesting shape.

Long context: 256K trained, 1M borrowed

Here is where the honesty matters most. Hy3's trained context is 256K. The headline "1M" in this article's third source is a community build (satgeze/Hy3-1M-GGUF) that applies YaRN to stretch positional encoding out to 1,048,576 tokens. YaRN rescales RoPE frequencies so the model can index positions it never saw in training — it extends reach, it does not re-train competence. The GGUF card says so plainly: the 1M window is "unverified at full length," experimental, and not yet needle-certified.

So the useful mental model is two numbers: 256K you can lean on, and a 1M ceiling you should measure before trusting. Drag the window below and watch the KV-cache cost — and the point where you cross from trained into extrapolated:

context window · KV-cache cost (GQA, 8 KV heads)256K native
256K trained
4K32K256K1M
context
256K
262,144 tok
KV cache (fp16 / fp8)
80 / 40 GiB
on top of the weights
if it were full MHA
640 GiB
8× larger (64 KV heads)

GQA is what makes the window affordable: 8 KV heads instead of 64 shrinks the cache 8×. Even so, KV cost is linear in context — every doubling doubles the memory. This is inside the trained 256K window. Drag past it to enter the community 1M YaRN extension.

The KV-cache arithmetic is worth doing by hand, because it explains both the GQA choice and why 1M is expensive regardless of quality. Per token, the cache stores K and V for every layer:

bytes/token=2×nkv×dhead×L×b=2×8×128×80×b\text{bytes/token} = 2 \times n_{kv} \times d_{head} \times L \times b = 2 \times 8 \times 128 \times 80 \times b

With b=2b = 2 bytes (fp16) that is 320 KiB/token. Multiply by context:

Now the GQA payoff is obvious. Full MHA would use 64 KV heads, not 8, so every one of those numbers would be 8× larger — 640 GiB of cache at 256K. GQA is not a quality trick here; it is what makes the window fit in memory at all. If you want to push the cache down further, that is exactly the territory of TurboQuant KV-cache quantization and why how LLM inference works spends so long on the cache.

Tencent's own long-context numbers land where you'd expect for a 256K-trained model: on LongBench v2 Hy3 scores 65.4 (up from Hy2's 56.4), matching Kimi-K2.5 (65.6) and edging GLM-5 (62.5), while GPT-5.4 (67.4) and Gemini-3.1-Pro (67.1) lead. On AA-LCR it's 66.3. Competitive at its size, not a long-context leader.

Five grouped bar panels — AdvancedIF, AA-LCR, LongBench v2, CL-bench, CL-bench Life — comparing Hy3 preview and Hy2 (blue) against Gemini-3.1-Pro, GLM-5, Kimi-K2.5, and GPT-5.4. Hy3 improves clearly over Hy2 in every panel and matches GLM-5 and Kimi-K2.5, but GPT-5.4 and Gemini-3.1-Pro top most panels.
Context-learning and long-context suite. Hy3 (dark blue) over Hy2 (light blue); frontier models still lead the hardest panels (Tencent Hunyuan, Fig 3).

Quantization and running it locally

The base weights are ~590 GB in BF16 — multi-GPU territory. Three paths bring that down.

FP8, at serve time. vLLM quantizes the loaded BF16 weights online with --quantization fp8, roughly halving the footprint to ~295 GB (sources conflict on whether a standalone Hy3-FP8 checkpoint also ships — the runtime path is the one I'd rely on). Tencent's AngelSlim toolkit adds low-bit quantization and speculative-sampling support on top.

GGUF, for CPU/Mac. This is what the community Hy3-1M-GGUF build is for: llama.cpp-style quantization that runs on a single machine with lots of RAM instead of a rack of GPUs. The quant ladder trades size for quality. Pick a RAM budget and see what fits:

Hy3-1M-GGUF · size vs (illustrative) qualitycommunity build
RAM / VRAM budgetGB
BF16 (reference)
590 GB
FP8 (vLLM online)
295 GB
Q4_K_M
183 GB
Q3_K_M
130 GB
Q2_K
106 GB
MTP-IQ2_M
100 GB
IQ2_M
92 GB
IQ1_M
62 GB
at 128 GB the largest GGUF that fits is Q2_K (static quant; bootstraps the imatrix).

The bar is the exact on-disk size the card reports. The thin pip on the right is an illustrative quality ordering from bits-per-weight — not a measured score. Below Q2_K the model still forms sentences; the card is explicit that it proves coherence, not reasoning or long-context retrieval. Add KV-cache memory on top (see the context section): a 1M window is another 160–320 GB depending on cache precision.

The sizes on that chart are the exact ones the card reports; the quality pip is an illustrative ordering from bits-per-weight, not a measured score — the card is explicit that even the good quants prove "coherence and basic instruction-following, not reasoning, long-context retrieval, or factual accuracy." The practical reads:

Running it is a llama.cpp server with the model's chat template and the extended context:

# 256K context; needs a hy_v3-capable llama.cpp build
llama-server -m hy3-1M-IQ2_M.gguf -c 262144 -np 1 --jinja \
  --chat-template-file chat_template_llamacpp.jinja
 
# MTP speculative decode (draft head)
llama-server -m hy3-1M-MTP-IQ2_M.gguf -c 262144 --jinja \
  --spec-type draft-mtp --spec-draft-n-max 3 --spec-draft-p-min 0.75

Reported throughput: 24–25 tok/s generation on a MacBook Pro M3 Max (128 GB), dropping to 17–19 tok/s in long conversations. The MTP draft head gives +26–37% on CUDA (an RTX 5090) but is roughly neutral on Apple Silicon — speculative decode helps when verification is compute-bound, which it is on the GPU and mostly isn't on the Mac. That is an honest, useful asymmetry: don't expect the draft head to speed up your laptop.

For the datacenter path, the official serving stacks are vLLM and SGLang, both with the MTP/EAGLE draft and Hunyuan's tool + reasoning parsers:

vllm serve tencent/Hy3-preview \
  --tensor-parallel-size 8 \
  --speculative-config.method mtp --speculative-config.num_speculative_tokens 1 \
  --tool-call-parser hy_v3 --reasoning-parser hy_v3 \
  --enable-auto-tool-choice --served-model-name hy3-preview

The benchmarks, in full

The clearest way to read Hy3 is as a trajectory: what changed from Hy2 (the previous generation, Nov 2025) to Hy3 preview (Apr 2026). On the agentic suite the jump is large, and it lands Hy3 in the pack with GLM-5 and Kimi-K2.5 — below Claude Opus 4.6.

Four line panels — SWE-bench Verified, Terminal-Bench 2.0, BrowseComp, WideSearch — plotting each model from 2025-11 to 2026-04. Hy3 preview (blue) rises steeply from Hy2 to land near GLM-5 and Kimi-K2.5, below Claude Opus 4.6, on every panel.
Agent-benchmark trajectory from Hy2 to Hy3 preview against Kimi-K2/K2.5, GLM-4.7/GLM-5, and Claude Opus 4.5/4.6 (Tencent Hunyuan, Fig 1).

The four agent numbers, provider-reported:

The two coding-agent panels tell the "competitive, not leading" story cleanly. Hy3 tracks GLM-5 and Kimi-K2.5, and trails the Claude Opus 4.6 line:

SWE-bench Verified (%) — provider-reported
Hy3 preview
74.4
Kimi-K2.5
76.8
GLM-5
77.8
Claude Opus 4.6
80.8
050100
Terminal-Bench 2.0 (%) — provider-reported
Hy3 preview
54.4
Kimi-K2.5
50.8
GLM-5
56.2
Claude Opus 4.6
65.4
020406080

On raw reasoning and STEM the shape splits. Hy3 matches or leads its size class on GPQA-Diamond (87.2, vs GLM-5 86.0, Kimi-K2.5 87.6) and the Chinese-curriculum exams (China High School Biology Olympiad 87.8 — the top bar), but the frontier models pull away on the very hardest sets: on HLE (Humanity's Last Exam) Hy3 is 30.0 against GPT-5.4's 39.8 and Gemini-3.1-Pro's 44.4, and on the IMO Answer Bench it's 84.3 vs 89–92 for the closed pair. Note the asterisks in the figure: domestic models are scored on a text-only subset, so cross-vendor HLE/CHSBO numbers are not strictly like-for-like.

Six STEM bar panels — FrontierScience Olympiad, IMO Answer Bench, HLE, GPQA-Diamond, Tsinghua Qiuzhen math PhD qualifier, CHSBO 2025 — with Hy3 preview and Hy2 in blue against Gemini-3.1-Pro, GLM-5, Kimi-K2.5, and GPT-5.4. Hy3 tops GPQA and CHSBO in its class; GPT-5.4 and Gemini-3.1-Pro lead HLE and IMO.
STEM and reasoning suite. Hy3 leads its size class on GPQA and the Chinese-curriculum exams; the frontier pair leads the hardest sets. Note: domestic models on a text-only subset (Tencent Hunyuan, Fig 2).

The agentic Claw benchmarks (tool-use) are the honest ceiling: Hy3 improves hugely over Hy2 (ClawEval 32.4 → 55.0, WildClawBench 33.7 → 45.3) and edges Kimi-K2.5, but Claude Opus 4.6 is clearly ahead (ClawEval 66.3, WildClawBench 60.4).

Two bar panels — WildClawBench and ClawEval — with Hy3 preview and Hy2 in blue against GLM-5, Kimi-K2.5, and Claude Opus 4.6. Hy3 roughly doubles Hy2 and edges Kimi-K2.5, but Claude Opus 4.6 is the tallest bar in both.
Claw agentic tool-use benchmarks. Hy3 roughly doubles Hy2 and matches GLM-5 / Kimi-K2.5; Claude Opus 4.6 leads both (Tencent Hunyuan, Fig 4).

The take

Hy3's real claim isn't a leaderboard crown — it's efficiency at 21B active. It roughly matches GLM-5 and Kimi-K2.5 across coding, search, and STEM while activating a fraction of their parameters, and it packages the pieces that make a MoE cheap to serve: GQA (8 KV heads → 8× smaller cache), an MTP draft head for speculative decode, a 256K trained window, open weights, and a reasoning_effort knob so you pay for chain-of-thought only when you need it. That is a coherent systems story, and the base-model math scores (MATH 76.28) back the reasoning pitch.

The caveats are the usual open-weights ones, stated plainly. Every number is Tencent's own harness; independent reproduction reports treat them as upper bounds. This is a preview checkpoint. Hy3 trails Claude Opus 4.6, GPT-5.4, and Gemini-3.1-Pro on the hardest agentic and STEM tasks — sometimes by a wide margin (HLE 30.0 vs 44.4). And the eye-catching 1M context is a community YaRN extension, not a trained window: 256K is what I'd trust, 1M is what I'd measure. The community GGUF is a genuinely useful gift for anyone with a 128 GB Mac and patience — but the card is right to call it experimental. For a team that wants an open, agent-capable model at a real inference discount, and can either run 8×GPU tensor-parallel or a fat single box, Hy3 preview earns a look. As "flagship intelligence at 2–5× smaller" — that part is Tencent's claim, and worth checking yourself.


Built from the Hy3 research page, the Tencent-Hunyuan/Hy3-preview repo (295B-A21B, 256K context), and the community satgeze/Hy3-1M-GGUF build (YaRN 1M, experimental). All benchmark numbers are provider-reported; the four figures are reproduced from Tencent's model card for commentary. The interactive diagrams are illustrations of the mechanism, not measured traces — the architecture walk-through, the GGUF size ladder, and the KV-cache calculator all use the published configs and reported sizes, but the quality ordering in the quant explorer is illustrative, not benchmarked. The community 1M window is a third-party artifact, not a Tencent release.

Cite this article

For attribution, please use the following reference or BibTeX:

Satyajit Ghana, "Hunyuan Hy3: Tencent's 295B-A21B MoE, and the community 1M GGUF", ai.thesatyajit.com, July 2026.

bibtex
@misc{ghana2026hunyuanhy3,
  author = {Satyajit Ghana},
  title  = {Hunyuan Hy3: Tencent's 295B-A21B MoE, and the community 1M GGUF},
  url    = {https://ai.thesatyajit.com/articles/hunyuan-hy3},
  year   = {2026}
}
share