samai-27b ยท PonderNet + dMoE + MTP (Qwen3.8-27B backbone)

ๅฐ† samai-4b (tchbcb/samai-4b) ็š„่‡ช้€‚ๅบ”่ฎก็ฎ—ๆ”น้€ ๆ–นๆกˆ็งปๆคๅˆฐ Qwen/Qwen3.8-27B ็š„ 27B ๅ› ๆžœ/ๅ›พๆ–‡่ฏญ่จ€ๆจกๅž‹ใ€‚้ชจๅนฒๆƒ้‡ๅŽŸๆ ทไฟ็•™, ๆ–ฐๅขžๆจกๅ—ๆŒ‰็จ ๅฏ†็ญ‰ไปทๅŽŸๅˆ™ๅˆๅง‹ๅŒ– (้›ถ router = ๅˆๅง‹ไธŽๅŸบๅบง้€ไฝๅฏๅฏนๆ‹), ๅฏ็›ดๆŽฅ่ฟ›ๅ…ฅไธ‹ๆธธ SFTใ€‚

ๆžถๆž„

  • ้ชจๅนฒ: Qwen3.8-27B โ€” 64 ๅฑ‚ๆททๅˆ (48 gated-delta-net ็บฟๆ€งๆณจๆ„ๅŠ› + 16 GQA ๅ…จๆณจๆ„ๅŠ›, ๆฏ 4 ๅฑ‚ 1 ไธช), hidden 5120, MLP 17408, vocab 248320, MPE 262144, ๅŽŸ็”Ÿๅคšๆจกๆ€ๅŒ…่ฃ… (SigLIP ่ง†่ง‰ๅก” 27 ๅฑ‚, ๅŽŸๆ ทไฟ็•™ โ†’ samai-27b ไปๆ˜ฏๅ›พๆ–‡ๆจกๅž‹)
  • PonderNet: ๆœ€ๅŽ 8 ไธชๅ…จๆณจๆ„ๅŠ›ๅฑ‚ (L35/39/43/47/51/55/59/63) ๅ„่‡ชไธบ ponder ไฝ็‚น: ๅฑ‚ๅ†… learned-halting ๅพช็Žฏ (็‹ฌ็ซ‹ๅœๆœบๅคด, bias +4.0 โ†’ ๅˆๅง‹ ฮปโ‰ˆ0.982 โ‰ˆ 2 ๆญฅ), ๆ€่€ƒ่ฟญไปฃ็”จ"ๆ›ฟๆขๅผ KV"่ฏญไน‰ (่ฃๅ‰ช่‡ชๅฎถ KV ๆงฝไฝ้‡ๅ†™), ็ปˆๆญขๅŽ commit pass ็”จๆททๅˆ ่กจ็คบ้‡ๅ†™ KVใ€‚ๅˆปๆ„ๅช้€‰ๅ…จๆณจๆ„ๅŠ›ๅฑ‚ โ€” ็บฟๆ€งๆณจๆ„ๅŠ›ๅฑ‚็š„ delta-rule ้€’ๅฝ’็Šถๆ€ไธๅฏ้‡ๅ…ฅ, ๅฑ‚็บง ponder ๅฎŒๅ…จ็ป•ๅผ€่ฏฅ็Šถๆ€, ๅฎž็Žฐ้›ถ็Šถๆ€้ฃŽ้™ฉ
  • dMoE: 8 ไธช ponder ๅฑ‚็š„ MLP ๅ„ๆ‹† 8 ไธ“ๅฎถ (ๅฎฝๅบฆๅ‡ๅˆ† 2176) + ้›ถๅˆๅง‹ๅŒ– router (p=1/8 ๅ…จๆฟ€ๆดป = ็จ ๅฏ†็ญ‰ไปท่ตทๆญฅ), Switch ๅผ่ดŸ่ฝฝๅ‡่กก (aux = Nยทฮฃf_iยทP_i) + STE ๆขฏๅบฆ, tau=0.125
  • MTP: ็ปงๆ‰ฟๅŸบๅบงๅŽŸ็”Ÿ DeepSeek-V3 ๅผ MTP ๆƒ้‡ (fc 2Hโ†’H + pre_fc_norm_hidden/ embedding + 1 ๅฑ‚ๅ…จๆณจๆ„ๅŠ› decoder + norm), ่ฎญ็ปƒๆœŸไฝ็ฝฎ t ่พ“ๅ…ฅ [h_t, e_{t+1}] ้ข„ๆต‹ t+2 (CE, mtp_loss_weight=1), ๆŽจ็†่‡ชๅŠจๆ—่ทฏ

ๅ†’็ƒŸ้ชŒ่ฏ (่ฟทไฝ ้šๆœบๆƒ้‡, 26/26 PASS)

  • ็ญ‰ไปทๆ€ง: forced_steps=1 + ้›ถ router ไธŽๅŽŸ็”Ÿ Qwen3.8 ๅฎž็Žฐ้€ไฝๅฏนๆ‹ โ€” argmax ๅ…จๅฏน, maxdiff 1.0e-06 (fp32 GEMM ๅ™ชๅฃฐ), greedy ็”Ÿๆˆ token ๅบๅˆ—ๅฎŒๅ…จไธ€่‡ด
  • ่ฎญ็ปƒ่ทฏๅพ„: ไธป loss + ponder KL + MoE aux + MTP CE ๅ…จ้ƒจๆœ‰้™; router/halter/ expert/MTP ๆขฏๅบฆๅ…จ้ž้›ถ
  • ๅญ˜ๅ–้—ญ็Žฏ: save_pretrained โ†’ trust_remote_code ้‡่ฝฝ, logits ้€ไฝไธ€่‡ด (0.00e+00)

ไฝฟ็”จ

from transformers import AutoModelForImageTextToText, AutoTokenizer
import torch
m = AutoModelForImageTextToText.from_pretrained(
    "tchbcb/samai-27b", trust_remote_code=True,
    dtype=torch.bfloat16, device_map="auto")
tok = AutoTokenizer.from_pretrained("tchbcb/samai-27b")
out = m.generate(**tok.apply_chat_template(
    [{"role": "user", "content": "ไฝ ๅฅฝ"}], add_generation_prompt=True,
    tokenize=True, return_dict=True), max_new_tokens=256)
print(m.ponder_stats())   # ๆฏๅฑ‚ executed ๆญฅๆ•ฐ / ๅนณๅ‡ๆ€่€ƒๆญฅๆ•ฐ / MoE ๆฟ€ๆดปไธ“ๅฎถๆ•ฐ
  • AutoModelForCausalLM / AutoModel ไบฆๆณจๅ†ŒๅˆฐๅŒไธ€ๅฎž็Žฐ (trust_remote_code=True)
  • ่ฟ่กŒๆœŸๅฏ่ฐƒ: m.config.ponder_forced_steps=1 (็ญ‰ไปทๆจกๅผ/็›ด้€š), max_ponder_steps, commit_kv ็ญ‰

่ฎญ็ปƒ (SFT)

  • PonderNet: ponder_loss_beta KL ๆญฃๅˆ™ (Geometric ๅ…ˆ้ชŒ), ๅœๆœบๅคด bias +4 ่ตทๆญฅ
  • dMoE: moe_aux_weight ่ดŸ่ฝฝๅ‡่กก; router ไปŽ้›ถ่ตทๆญฅ, SFT ๅŽ็จ€็–ๅŒ– (4b ๅฎžๆต‹ 8โ†’1.4~4.8)
  • MTP: mtp_loss_weight ๆŽงๅˆถ t+2 ้ข„ๆต‹้กน (ๆŽจ็†ๆ—่ทฏ, ไป…่พ…ๅŠฉ่ฎญ็ปƒ)
  • ๆณจๆ„: 27B LoRA SFT ้œ€ๅคšๅกๆˆ– QLoRA (T4 16GB ไธๅฏ่กŒ); ่ฎญ็ปƒๆ—ถ้œ€ๅผ€ gradient_checkpointing ( ponder ๅพช็Žฏไฝฟๆฟ€ๆดป โ‰ˆ K ๅ€)

ๆƒ้‡ๆ‰‹ๆœฏ่ฏดๆ˜Ž

  • 19 ไธช safetensors ๅˆ†็‰‡: ๅŸบๅบง 18 (mlpโ†’experts ้”ฎๆ›ฟๆข) + extras 1 (้›ถ router ร—8 + halter ร—8, seed 42)
  • ่ฝฌๆข่„šๆœฌ s27_convert.py (ๆตๅผ: ้€ๅˆ†็‰‡ ไธ‹่ฝฝโ†’ๆ‰‹ๆœฏโ†’ไธŠไผ โ†’ๅˆ ้™ค, ๆ–ญ็‚น็ปญไผ )
  • ๅ†’็ƒŸ่„šๆœฌ s27_smoke.py; ๅปบๆจกไปฃ็  modeling_samai_27b.py (ๅ•ๆ–‡ไปถ, ไพ่ต– transformers โ‰ฅ5.8 ็š„ qwen3_5 ๅŽŸ็”Ÿๅฎž็Žฐ)

่‡ด่ฐขไธŽ่ฐฑ็ณป

samai-2b (r18) โ†’ samai-4b (XHToken/Spark-X2.5-4B) โ†’ samai-27b (Qwen3.8-27B); PonderNet ๆ€ๆƒณๆบ่‡ช PonderNet/ACT, MoE ่ทฏ็”ฑไธบ Switch ๅผ, MTP ็ป“ๆž„ๅฏน้ฝ DeepSeek-V3ใ€‚

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

Model tree for tchbcb/samai-27b

Base model

Qwen/Qwen3.8-27B
Finetuned
(776)
this model
Quantizations
1 model