Qwen3.5-2B-SpeedX

Qwen3.5-2B-SpeedX ใฏใ€Qwen/Qwen3.5-2B ใ‚’ใƒ™ใƒผใ‚นใซใ€่‡ชๅทฑๅ›žๅธฐๆŽจ่ซ–ใฎ้ซ˜้€ŸๅŒ–ใจๅ›บๅฎšใ‚ตใ‚คใ‚บใฎๅ†ๅธฐใƒกใƒขใƒชใ‚’็›ฎ็š„ใจใ—ใฆๅค‰ๆ›ใ—ใŸใ€ๅฎŸ้จ“็š„ใชใƒ†ใ‚ญใ‚นใƒˆๅฐ‚็”จใƒชใ‚ซใƒฌใƒณใƒˆใƒขใƒ‡ใƒซใงใ™ใ€‚

ๅ…ƒใฎ Qwen3.5-2B ใฎใƒ†ใ‚ญใ‚นใƒˆใƒใƒƒใ‚ฏใƒœใƒผใƒณใฏใ€ใƒใ‚คใƒ†ใ‚ฃใƒ–ใฎ Gated DeltaNet๏ผˆGDN๏ผ‰ ใƒฌใ‚คใƒคใƒผใจใƒ•ใƒซใ‚ขใƒ†ใƒณใ‚ทใƒงใƒณใƒฌใ‚คใƒคใƒผใ‚’็ต„ใฟๅˆใ‚ใ›ใŸๆง‹ๆˆใงใ™ใ€‚

SpeedX ใงใฏใ€6ๅฑคใฎใƒ•ใƒซใ‚ขใƒ†ใƒณใ‚ทใƒงใƒณใƒฌใ‚คใƒคใƒผใ‚’่’ธ็•™ๆธˆใฟใฎใƒใ‚คใƒ†ใ‚ฃใƒ– GDN ใƒฌใ‚คใƒคใƒผใธ็ฝฎใๆ›ใˆใ€24 / 24 ๅฑคใ™ในใฆใŒๅ†ๅธฐ็š„ใƒˆใƒผใ‚ฏใƒณใƒŸใ‚ญใ‚ทใƒณใ‚ฐใ‚’่กŒใ†ๆง‹ๆˆใธๅค‰ๆ›ใ—ใฆใ„ใพใ™ใ€‚

ๆœฌใƒขใƒ‡ใƒซใฏๅฎŸ้จ“็š„ใช็ ”็ฉถ็”จใƒใ‚งใƒƒใ‚ฏใƒใ‚คใƒณใƒˆใงใ‚ใ‚Šใ€Qwen ใฎๅ…ฌๅผใƒชใƒชใƒผใ‚นใงใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚

ไธปใช็‰นๅพด

  • ็ด„ 1.92B ใƒ‘ใƒฉใƒกใƒผใ‚ฟ
  • 24 / 24 ๅฑคใฎๅ†ๅธฐๅž‹ Gated DeltaNet
  • ใƒ•ใƒซใ‚ขใƒ†ใƒณใ‚ทใƒงใƒณใƒฌใ‚คใƒคใƒผ 3, 7, 11, 15, 19, 23 ใ‚’ใƒใ‚คใƒ†ใ‚ฃใƒ– GDN ใซ็ฝฎๆ›
  • ๅค‰ๆ›ๅพŒใฎใƒ†ใ‚ญใ‚นใƒˆใ‚นใ‚ฟใƒƒใ‚ฏใงใฏใ€ใƒˆใƒผใ‚ฏใƒณๅ˜ไฝใฎใƒ•ใƒซใ‚ขใƒ†ใƒณใ‚ทใƒงใƒณ KV ใ‚ญใƒฃใƒƒใ‚ทใƒฅใ‚’ไฝฟ็”จใ—ใชใ„
  • ใƒ‡ใ‚ณใƒผใƒ‰ๆ™‚ใฎๅ†ๅธฐ็Šถๆ…‹ใ‚ตใ‚คใ‚บใฏใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆ้•ทใซๅฏพใ—ใฆไธ€ๅฎš
  • ใ‚ซใ‚นใ‚ฟใƒ ใƒชใƒขใƒผใƒˆใ‚ณใƒผใƒ‰ใ‚’ๅˆฉ็”จใ—ใŸ Hugging Face Transformers ไบ’ๆ›
  • Qwen ใƒใ‚คใƒ†ใ‚ฃใƒ– GDN ใ‚ซใƒผใƒใƒซๅ‘ใ‘ใซ่จญ่จˆ
  • ๅฎŸ้จ“็š„ใช Triton / CUDA Graph / FP8 ๆŽจ่ซ–ใƒฉใƒณใ‚ฟใ‚คใƒ 
  • ใƒ†ใ‚ญใ‚นใƒˆ็”Ÿๆˆๅฐ‚็”จ
  • ไธŠๆตใƒขใƒ‡ใƒซใฎใƒžใƒซใƒใƒขใƒผใƒ€ใƒซ / Vision ใ‚ณใƒณใƒใƒผใƒใƒณใƒˆใฏๅซใพใ‚Œใชใ„

ใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃ

ๅ…ƒใฎ Qwen3.5-2B ใƒ†ใ‚ญใ‚นใƒˆใ‚นใ‚ฟใƒƒใ‚ฏ๏ผš

GDN โ†’ GDN โ†’ GDN โ†’ Full Attention

SpeedX๏ผš

GDN โ†’ GDN โ†’ GDN โ†’ GDN

ใ“ใฎๆง‹ๆˆใ‚’ๅ…จ24ๅฑคใซใ‚ใŸใฃใฆ็นฐใ‚Š่ฟ”ใ—ใพใ™ใ€‚

ๅ†ๅธฐ็Šถๆ…‹ใฏๆฌกๅผใซๅพ“ใ„ใพใ™ใ€‚

[ S_t = F(S_{t-1}, x_t) ]

ใ—ใŸใŒใฃใฆใ€ใƒ‡ใ‚ณใƒผใƒ‰็Šถๆ…‹ใฎใƒกใƒขใƒชไฝฟ็”จ้‡ใฏใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆ้•ทใซๅฏพใ—ใฆๆฆ‚ใญ

[ M_{\mathrm{state}} = O(1) ]

ใจใชใ‚Šใพใ™ใ€‚

ใ“ใ‚Œใฏใ€ใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆ้•ท (T) ใซๅฟœใ˜ใฆใƒกใƒขใƒชไฝฟ็”จ้‡ใŒๆฆ‚ใญ

[ M_{\mathrm{KV}} = O(T) ]

ใจๅข—ๅŠ ใ™ใ‚‹ใ€ใƒˆใƒผใ‚ฏใƒณๅ˜ไฝใฎ Transformer KV ใ‚ญใƒฃใƒƒใ‚ทใƒฅใจใฏ็•ฐใชใ‚Šใพใ™ใ€‚

NVIDIA L4 ใƒ™ใƒณใƒใƒžใƒผใ‚ฏ

ๅ˜ไธ€ใฎ NVIDIA L4 22.03 GiBใ€ใƒใƒƒใƒใ‚ตใ‚คใ‚บ 1ใ€Greedy Decoding ใงๆธฌๅฎšใ€‚

Exact BF16 CUDA Graph

Context Official Qwen3.5-2B SpeedX exact Speedup
256 25.90 tok/s 60.75 tok/s 2.35ร—
1,024 26.63 tok/s 60.58 tok/s 2.28ร—
4,096 26.06 tok/s 60.67 tok/s 2.33ร—
16,384 26.46 tok/s 60.68 tok/s 2.29ร—

Experimental FP8 runtime

Context Official Qwen3.5-2B SpeedX FP8 Speedup
256 25.90 tok/s 79.27 tok/s 3.06ร—
1,024 26.63 tok/s 78.85 tok/s 2.96ร—
4,096 26.06 tok/s 78.47 tok/s 3.01ร—
16,384 26.46 tok/s 78.38 tok/s 2.96ร—

ใ“ใ‚Œใ‚‰ใฎ็ตๆžœใฏใ€ๆœฌใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฎๆœ€้ฉๅŒ–ๆธˆใฟใƒฉใƒณใ‚ฟใ‚คใƒ ใ‚’ไฝฟ็”จใ—ใŸใ‚‚ใฎใงใ™ใ€‚

ๆจ™ๆบ–็š„ใช Hugging Face ใฎ model.generate() ใงใ€ไธŠ่จ˜ใฎ CUDA Graph / FP8 ใฎๆ€ง่ƒฝๅ€คใ‚’ใใฎใพใพๅ†็พใงใใ‚‹ใจใฏ้™ใ‚Šใพใ›ใ‚“ใ€‚

16K ใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆใงใฏใ€ๆœ€้ฉๅŒ–ใ•ใ‚ŒใŸ Exact Recurrent Path ใซใŠใ„ใฆใ€ใŠใŠใ‚ˆใไปฅไธ‹ใฎ Prefill ๆ€ง่ƒฝใ‚’ๆธฌๅฎšใ—ใพใ—ใŸใ€‚

  • Official Qwen3.5-2B prefill: 10.85k tok/s
  • SpeedX prefill: 13.79k tok/s
  • Ratio: ็ด„ 1.27ร—

ใ‚ฏใ‚คใƒƒใ‚ฏใ‚นใ‚ฟใƒผใƒˆ

ใ‚ซใ‚นใ‚ฟใƒ ใƒขใƒ‡ใƒซใ‚ณใƒผใƒ‰ใŒๅซใพใ‚Œใฆใ„ใ‚‹ใŸใ‚ใ€trust_remote_code=True ใŒๅฟ…่ฆใงใ™ใ€‚

pip install -U \
  "transformers @ git+https://github.com/huggingface/transformers.git@e453228ef83ce0d756f7621ef8607220ebf5da6a" \
  "kernels>=0.16.0,<0.17" \
  "accelerate>=1.1.0" \
  "safetensors>=0.8.0"
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

MODEL_ID = "JLLM/Qwen3.5-2B-SpeedX"

tokenizer = AutoTokenizer.from_pretrained(
    MODEL_ID,
    trust_remote_code=True,
)

model = AutoModelForCausalLM.from_pretrained(
    MODEL_ID,
    trust_remote_code=True,
    torch_dtype=torch.bfloat16,
    device_map="cuda",
).eval()

inputs = tokenizer(
    "Explain recurrent memory in neural networks.",
    return_tensors="pt",
).to("cuda")

with torch.inference_mode():
    output = model.generate(
        **inputs,
        max_new_tokens=128,
        do_sample=False,
    )

print(tokenizer.decode(output[0], skip_special_tokens=True))

ใƒใƒฃใƒƒใƒˆไพ‹

messages = [
    {"role": "system", "content": "You are a precise technical assistant."},
    {"role": "user", "content": "Compare recurrent state memory with a Transformer KV cache."},
]

text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True,
)

inputs = tokenizer(text, return_tensors="pt").to("cuda")

with torch.inference_mode():
    output = model.generate(
        **inputs,
        max_new_tokens=256,
        do_sample=False,
    )

print(tokenizer.decode(output[0], skip_special_tokens=True))

ๅค‰ๆ›ๆ–นๆณ•

ๅ…ƒใฎใƒ†ใ‚ญใ‚นใƒˆใ‚นใ‚ฟใƒƒใ‚ฏใซใฏใ€18ๅฑคใฎใƒใ‚คใƒ†ใ‚ฃใƒ– GDN ใƒฌใ‚คใƒคใƒผใจ6ๅฑคใฎใƒ•ใƒซใ‚ขใƒ†ใƒณใ‚ทใƒงใƒณใƒฌใ‚คใƒคใƒผใŒๅซใพใ‚Œใฆใ„ใพใ™ใ€‚

SpeedX ใฏๆ—ขๅญ˜ใฎใƒใ‚คใƒ†ใ‚ฃใƒ– GDN ใƒฌใ‚คใƒคใƒผใ‚’็ถญๆŒใ—ใ€ไปฅไธ‹ใฎใƒ•ใƒซใ‚ขใƒ†ใƒณใ‚ทใƒงใƒณใƒฌใ‚คใƒคใƒผใ‚’็ฝฎๆ›ใ—ใพใ™ใ€‚

3, 7, 11, 15, 19, 23

็ฝฎๆ›ๅ…ˆใซใฏใƒใ‚คใƒ†ใ‚ฃใƒ–ใฎ Qwen3_5GatedDeltaNet ใƒขใ‚ธใƒฅใƒผใƒซใ‚’ไฝฟ็”จใ—ใพใ™ใ€‚

็ฝฎๆ›ใ•ใ‚ŒใŸใƒฌใ‚คใƒคใƒผใฏใ€่ฟ‘ๅ‚ใซใ‚ใ‚‹ใƒใ‚คใƒ†ใ‚ฃใƒ– GDN ใƒฌใ‚คใƒคใƒผใ‚’ๅŸบใซๅˆๆœŸๅŒ–ใ—ใ€ๅ…ƒใฎใƒ•ใƒซใ‚ขใƒ†ใƒณใ‚ทใƒงใƒณใƒฌใ‚คใƒคใƒผใฎๅ‡บๅŠ›ใ‚’ๆ•™ๅธซใจใ—ใฆ่’ธ็•™ใ—ใพใ™ใ€‚

ๅฎŸ้จ“็š„ใชใƒฌใ‚คใƒคใƒผๅ˜ไฝใฎ็›ฎ็š„้–ขๆ•ฐใงใฏใ€ๆญฃ่ฆๅŒ– MSE ใจ Cosine Distance ใ‚’็ต„ใฟๅˆใ‚ใ›ใฆใ„ใพใ™ใ€‚

[ \mathcal{L}

\frac{|y_S-y_T|_2^2} {\mathbb{E}[y_T^2]+\epsilon} + \lambda \left(1-\cos(y_S,y_T)\right). ]

ๅˆถ้™ไบ‹้ …

ๅฎŸ้จ“็š„ใช่’ธ็•™

ใ“ใฎใƒใ‚งใƒƒใ‚ฏใƒใ‚คใƒณใƒˆใฏใ€ไธปใจใ—ใฆๅ†ๅธฐๅž‹ใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃใธใฎๅค‰ๆ›ใจ้ซ˜้€ŸๆŽจ่ซ–ใƒฉใƒณใ‚ฟใ‚คใƒ ใ‚’ๆคœ่จผใ™ใ‚‹ใŸใ‚ใซไฝœๆˆใ•ใ‚Œใฆใ„ใพใ™ใ€‚

Smoke Distillation ใฎๅญฆ็ฟ’ใ‚นใ‚ฑใ‚ธใƒฅใƒผใƒซใฏ็Ÿญใ„ใŸใ‚ใ€ๅ…ƒใฎ Qwen3.5-2B ใŒๆŒใคๆŽจ่ซ–่ƒฝๅŠ›ใ€ไบ‹ๅฎŸ็Ÿฅ่ญ˜ใ€ๅคš่จ€่ชžๆ€ง่ƒฝใ€ๅ„็จฎใƒ™ใƒณใƒใƒžใƒผใ‚ฏๆ€ง่ƒฝใ‚’ๅฎŒๅ…จใซ็ถญๆŒใ—ใฆใ„ใ‚‹ใจไปฎๅฎšใ™ในใใงใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚

ๆœฌๆ ผ็š„ใช็”จ้€”ใงใฏใ€ใ‚ˆใ‚Š้•ทๆœŸ้–“ใฎ่’ธ็•™ใพใŸใฏ็ถ™็ถšไบ‹ๅ‰ๅญฆ็ฟ’ใ‚’ๆŽจๅฅจใ—ใพใ™ใ€‚

ใƒ†ใ‚ญใ‚นใƒˆๅฐ‚็”จ

ไธŠๆตใฎ Qwen3.5-2B ใฏใƒžใƒซใƒใƒขใƒผใƒ€ใƒซใƒขใƒ‡ใƒซใงใ™ใŒใ€SpeedX ใซๅซใพใ‚Œใ‚‹ใฎใฏๅค‰ๆ›ๆธˆใฟใฎใƒ†ใ‚ญใ‚นใƒˆ็”Ÿๆˆใ‚นใ‚ฟใƒƒใ‚ฏใฎใฟใงใ™ใ€‚

ๅ…ƒใƒขใƒ‡ใƒซใฎ Vision ใ‚นใ‚ฟใƒƒใ‚ฏใฏๆไพ›ใ•ใ‚Œใพใ›ใ‚“ใ€‚

ใ‚ซใ‚นใ‚ฟใƒ ใ‚ณใƒผใƒ‰

ไปฅไธ‹ใ‚’ๆœ‰ๅŠนๅŒ–ใ™ใ‚‹ๅ‰ใซใ€ใƒชใƒใ‚ธใƒˆใƒชๅ†…ใฎใ‚ณใƒผใƒ‰ใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚

trust_remote_code=True

ๆœ€้ฉๅŒ–ใƒฉใƒณใ‚ฟใ‚คใƒ ใจใƒใ‚งใƒƒใ‚ฏใƒใ‚คใƒณใƒˆใฎ้•ใ„

็ด„ 60 tok/s ใฎ Exact ๆ€ง่ƒฝใ€ใŠใ‚ˆใณ็ด„ 79 tok/s ใฎ FP8 ๆ€ง่ƒฝใฏใ€ไปฅไธ‹ใ‚’ๅซใ‚€ใƒฉใƒณใ‚ฟใ‚คใƒ ๅ›บๆœ‰ใฎๆœ€้ฉๅŒ–ใซไพๅญ˜ใ—ใฆใ„ใพใ™ใ€‚

  • ใƒใ‚คใƒ†ใ‚ฃใƒ– GDN ใ‚ซใƒผใƒใƒซ
  • Triton Fusion
  • Persistent CUDA Graph Greedy Decoding
  • ้ธๆŠž็š„ใช็ฒพๅบฆๅˆถๅพก / FP8 ๅฎŸ่กŒ

้€šๅธธใฎ Hugging Face ่ชญใฟ่พผใฟ็ตŒ่ทฏใฏใ€ไธปใจใ—ใฆไบ’ๆ›ๆ€งใ‚’ๆไพ›ใ™ใ‚‹ใŸใ‚ใฎใ‚‚ใฎใงใ™ใ€‚

ๆƒณๅฎš็”จ้€”

SpeedX ใฏใ€ไปฅไธ‹ใฎ็ ”็ฉถใ‚’ไธปใช็”จ้€”ใจใ—ใฆๆƒณๅฎšใ—ใฆใ„ใพใ™ใ€‚

  • ใƒชใ‚ซใƒฌใƒณใƒˆ่จ€่ชžใƒขใƒ‡ใƒซ
  • ๅ›บๅฎšใ‚ตใ‚คใ‚บ็Šถๆ…‹ใซใ‚ˆใ‚‹ใƒ‡ใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐ
  • KV ใ‚ญใƒฃใƒƒใ‚ทใƒฅใ‚’ไฝฟ็”จใ—ใชใ„ใƒ‡ใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐ
  • ้•ทใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆๅ†ๅธฐใƒกใƒขใƒช
  • Gated DeltaNet ใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃ
  • CUDA Graph ๆŽจ่ซ–
  • ใƒชใ‚ซใƒฌใƒณใƒˆใƒขใƒ‡ใƒซใฎ้‡ๅญๅŒ–

ใƒ‡ใƒข

Hugging Face Space๏ผš

JLLM/Qwen-speed

ใƒ™ใƒผใ‚นใƒขใƒ‡ใƒซ

ไปฅไธ‹ใฎใƒขใƒ‡ใƒซใ‹ใ‚‰ๆดพ็”Ÿใ—ใฆใ„ใพใ™ใ€‚

Qwen/Qwen3.5-2B

ไธŠๆตใƒขใƒ‡ใƒซใฎใƒขใƒ‡ใƒซใ‚ซใƒผใƒ‰ใŠใ‚ˆใณใƒฉใ‚คใ‚ปใƒณใ‚นใ‚‚ไฝตใ›ใฆ็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚

ใƒฉใ‚คใ‚ปใƒณใ‚น

ไธŠๆตใฎ Qwen3.5-2B ใฎใƒขใƒ‡ใƒซใƒกใ‚ฟใƒ‡ใƒผใ‚ฟใซๅพ“ใ„ใ€Apache-2.0 ใจใ—ใพใ™ใ€‚

ๅผ•็”จ

SpeedX ใ‚’ๅฎŸ้จ“็ญ‰ใงไฝฟ็”จใ™ใ‚‹ๅ ดๅˆใฏใ€ไธŠๆตใฎ Qwen ้–ข้€ฃ็ ”็ฉถใ‚’ๅผ•็”จใ—ใŸใ†ใˆใงใ€ๆœฌใƒใ‚งใƒƒใ‚ฏใƒใ‚คใƒณใƒˆใŒ Qwen3.5-2B ใ‚’ๅฎŸ้จ“็š„ใซๅ†ๅธฐๅž‹ใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃใธๅค‰ๆ›ใ—ใŸใƒขใƒ‡ใƒซใงใ‚ใ‚‹ใ“ใจใ‚’ๆ˜Ž่จ˜ใ—ใฆใใ ใ•ใ„ใ€‚

็พๆ™‚็‚นใงใฏใ€SpeedX ๅฐ‚็”จใฎๆŠ€่ก“ใƒฌใƒใƒผใƒˆใฏๅ…ฌ้–‹ใ•ใ‚Œใฆใ„ใพใ›ใ‚“ใ€‚


Downloads last month
419
Safetensors
Model size
2B params
Tensor type
BF16
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for j-llm/Qwen3.5-2B-SpeedX

Finetuned
Qwen/Qwen3.5-2B
Finetuned
(643)
this model

Collection including j-llm/Qwen3.5-2B-SpeedX