Ling-3.0-tiny ยท CuteHuman

The emoji-first chat persona, fine-tuned onto Ling-3.0-tiny โ€” a 7.9 B hybrid MoE that answers like a person, not a manual.

7.89 B params  ยท  1.3 B active per token  ยท  bf16, 14.70 GiB in 4 shards  ยท  131,072 context  ยท  text only  ยท  MIT

Base Params Context License


๐Ÿ’พ Want the same persona at 4.49 GiB? โ†’ Ling-3.0-tiny ยท CuteHuman (GGUF)

The identical fine-tune, quantized for llama.cpp: Q4_K_M at 4.49 GiB. This repo is the full bf16 checkpoint (14.70 GiB, 4 shards) โ€” load it with from_pretrained, no adapter to mount. model tends to speak Chinese and act cuter in Chinese.

๐Ÿ–ผ Demo

Both shots come from a chat client with the CoT trace collapsed โ€” the WORK row is the reasoning panel, the ANSWER row is the reply. Turn it on to see the thinking trace.

ไธญๆ–‡ ยท ไฝ ๅฅฝๅ— โ†’ ่ฎก็ฎ—8.2ร—9.12/2.3 โ†’ ๆ่ฟฐ้ธต้ธŸ็š„ๅค–่ง‚

Greeting, then a two-step arithmetic walk-through that keeps its decimals (74.784 รท 2.3 โ‰ˆ 32.51), then an ostrich description. Emoji come out unprompted.

Chinese chat demo: a greeting answered with a smiley, an arithmetic request worked out in two numbered steps to 32.51, and a long description of an ostrich, each answer carrying emoji
ไธญๆ–‡ ยท โ€œไฝ ๅฅฝๅ‘€๏ผ๐Ÿ˜Š ๅพˆ้ซ˜ๅ…ด่งๅˆฐไฝ ๏ผโ€ โ†’ ๅˆ†ๆญฅ็ฎ—ๅผ 8.2 ร— 9.12 = 74.784 โ†’ 74.784 รท 2.3 โ‰ˆ 32.51 โ†’ ้ธต้ธŸๅค–่ง‚ๆ่ฟฐ

English ยท hey โ†’ nothing โ†’ im feel so sleepy in the morning โ†’ how is your day?

Small talk that stays warm, then sleep advice, then an answer about its own day.

English chat demo: a greeting answered with a star emoji, a no-thanks reply that stays warm and wishes a good day, practical advice about feeling sleepy in the morning, and a closing question about the assistant's own day
English ยท โ€œHeyy! What can I help you with today? ๐ŸŒŸโ€ โ†’ โ€œThatโ€™s cool! No worries at all. ๐Ÿ˜„โ€ โ†’ morning advice โ†’ โ€œMy day? Iโ€™m always ready to listen and chat with you!โ€

๐Ÿ“ Specs

Base inclusionAI/Ling-3.0-tiny (MIT)
Architecture BailingMoeV3ForCausalLM ยท 24 layers โ€” 3:1 KDA linear-attention : MLA ยท hidden 1536 ยท 16 heads, head_dim 128
MoE 128 routed experts, top-8 + 1 shared expert, expert FFN 512 ยท first_k_dense_replace=1
Attention q_lora_rank 256 ยท kv_lora_rank 512 ยท partial RoPE 0.5 ยท rope_theta 6,000,000
Parameters 7,893,389,856 total (bf16, from model.safetensors.index.json) โ€” 1.3 B activated per token
On disk 4 shards, 14.70 GiB (15,788,003,880 B on disk)
Context 131,072 tokens (max_position_embeddings)
Vocab 157,184
EOS `<
License MIT

๐Ÿงช Training recipe

Item Value
LoRA r=32 / ฮฑ=64 / dropout 0, attention-only โ€” KDA q,k,v,o,f,g,b_proj + MLA q_a, q_b, kv_a_proj_with_mqa, kv_b_proj (no MLP / experts)
Trainable 15.85 M of 4206.52 M = 0.377 % (attention projections only)
Quantization bnb nf4 + double-quant (compute bf16) โ†’ merged back into bf16
Data cutehuman train_sft_v2, 655 rows (gsm8k 462 / human_like 114 / lima 79), all with CoT
Optimizer lr 5e-5 cosineโ†’0, warmup 5 %, adamw_8bit, bf16, seed 3407
Epochs 1.0 (82 optimizer steps, bs 8 ร— ga 1, eff. batch 8)
MAX_SEQ 1024 (data p50 = 200 / p90 = 369 / max = 872 โ€” nothing truncated)
Cost single RTX 4090 24 GB: 9.64 min, peak 17.38 GiB
Template upstream chat_template.jinja, enable_thinking=True (CoT and answer both in the loss)

๐Ÿ“Š Before / after

45-prompt, four-axis style eval (10 everyday / 10 common sense / 10 false premise / 10 unknowable / 5 OOD), judged by StartLux-Decision 9B with the post-answer continuation tail trimmed:

Axis Base +CuteHuman ฮ”
cute_style 1.55 2.20 +0.64
correctness 2.48 2.02 โˆ’0.45
hallucination (higher is better) 2.96 2.68 โˆ’0.28
knows_limit 1.53 1.35 โˆ’0.19
Median reply length 494 chars 463 chars โˆ’31

Objective ability โ€” MMLU 5-shot, 171 items, format-agnostic option-body likelihood (decoupled from style): base 41.52 % โ†’ 42.11 % (+0.59) โ€” no measurable knowledge loss.

The MMLU letter-logprob readout is diluted by this model's "explain first, then answer" style (a spurious drop of 5โ€“13 pt) and must not be used as a capability metric.


๐Ÿš€ Quickstart

pip install -U "transformers==4.57.6" fla-core einops
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

MODEL = "wesjos/Ling-3.0-tiny-CuteHuman"

tokenizer = AutoTokenizer.from_pretrained(MODEL, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    MODEL, trust_remote_code=True, dtype=torch.bfloat16, device_map={"": 0}
)
model.eval()

messages = [{"role": "user", "content": "ไปŠๅคฉไธŠ็ญๅฅฝ็ดฏๅ•Š"}]
prompt = tokenizer.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=True,
    enable_thinking=True,          # trained with CoT โ€” off is out of distribution
)
ids = tokenizer(prompt, return_tensors="pt", add_special_tokens=False,
                return_token_type_ids=False).input_ids.cuda()

out = model.generate(
    input_ids=ids, max_new_tokens=1024, use_cache=True, do_sample=True,
    temperature=1.0, top_p=0.95, top_k=20,
    repetition_penalty=1.05,        # required, see Limitations
    eos_token_id=tokenizer.eos_token_id, pad_token_id=tokenizer.pad_token_id,
)
text = tokenizer.decode(out[0][ids.shape[1]:], skip_special_tokens=True)
cot, body = text.split("</think>", 1) if "</think>" in text else ("", text)
print("thinking:", cot.replace("<think>", "").strip())
print("answer:", body.strip())

Default sampling

temperature=1.0   top_p=0.95   top_k=20
repetition_penalty=1.05                     # required
max_tokens=1024   stop=["<|role_end|>"]     # required
enable_thinking=True                        # trained with CoT โ€” off is out of distribution

llama.cpp โ€” native bailingmoe3 support landed in llama.cpp #26608 (merged 2026-08-17, build b10470); a dedicated Ling 3.0 chat parser followed in #28682 (merged 2026-09-19).

llama-cli -m ling3-cutehuman-v5-Q4_K_M.gguf --jinja -p "ไปŠๅคฉไธŠ็ญๅฅฝ็ดฏๅ•Š" \
  -n 256 -c 4096 --temp 1.0 --top-p 0.95 --top-k 20 --repeat-penalty 1.05

The ready-made GGUF lives in wesjos/Ling-3.0-tiny-CuteHuman-GGUF.


๐Ÿ’ก Notes

  • The persona lives in the weights. The chat template is byte-identical to upstream's (verified by sha256 against inclusionAI/Ling-3.0-tiny/chat_template.jinja) โ€” no persona is baked into the template, so an empty system prompt reproduces the screenshots.
  • Emoji and kaomoji are the default register. The habit is a style, not a rule: a system prompt like ใ€Œๅฐ‘็”จ่กจๆƒ…๏ผŒๆญฃๅธธ่ฏด่ฏใ€ / "tone the emoji down" is enough to soften it.
  • Thinking is on by default and the template opens a <think> block. For chit-chat pass enable_thinking=False; otherwise the reasoning trace eats the budget. This checkpoint was trained with CoT in the loss, so enable_thinking=True is the in-distribution setting.
  • The adapter ships alongside the merged weights in lora_adapter/ (60.51 MiB, r32/ฮฑ64, attention-only) if you would rather mount the tune on top of the base model yourself. It was trained against inclusionAI/Ling-3.0-tiny, so mount it on the base โ€” stacking it on top of this already-merged checkpoint would apply the tune twice.
  • fla-core is a hard dependency โ€” the KDA linear-attention kernels are imported at module load, and the repo raises ImportError("Plese run pip install -U fla-core") without it.
  • On sm_89 (RTX 4090) set FLA_TILELANG=0 for training / backward passes; pure inference is unaffected.

โš ๏ธ Limitations

  • Weak EOS prior (a base-model trait, not introduced by the tune). The model often does not emit <|role_end|> after answering and keeps going with next-question-style text (Question: โ€ฆ / word repetition). This happens on the base model too (7 of 45 eval prompts). The tokenizer's eos_token is <|role_end|>, so stop=["<|role_end|>"] is a backstop for the case where the turn is left open. โ†’ Always set stop=["<|role_end|>"] and repetition_penalty=1.05; add no_repeat_ngram_size=8 on a server.
  • The persona costs a little judge-scored correctness (โˆ’0.45 on the style eval) โ€” answers get shorter and more colloquial. Knowledge itself did not regress (see MMLU).
  • Milder than the aggressive style run. A lr = 1e-4 variant scored cute_style +0.78 but correctness โˆ’0.40; this checkpoint is the "style up, ability steady" balance point.
  • 7.9 B total but only 1.3 B active. Short chat is cheap; long-chain reasoning is still weaker than a same-size dense model.
  • The screenshots were taken under a chat client that is not shipped here. This repo has no webui/ directory, and the client in the shots shows WORK / ANSWER / STEPS / cached labels.

๐Ÿ“ Files

File Size What it is
model-00001-of-00004.safetensors 4.66 GiB bf16 weights, shard 1 of 4 (2,804 tensors โ€” word embeddings + layers 0โ€“7)
model-00002-of-00004.safetensors 4.66 GiB bf16 weights, shard 2 of 4 (3,139 tensors โ€” layers 7โ€“15)
model-00003-of-00004.safetensors 4.66 GiB bf16 weights, shard 3 of 4 (3,139 tensors โ€” layers 15โ€“23)
model-00004-of-00004.safetensors 753 MiB bf16 weights, shard 4 of 4 (201 tensors โ€” layer 23 experts, lm_head, final norm)
model.safetensors.index.json 814 KiB shard index
config.json ยท configuration_bailing_moe_v3.py ยท modeling_bailing_moe_v3.py โ€” architecture and remote code (trust_remote_code=True)
chat_template.jinja 5.9 KiB upstream Ling 3.0 template (byte-identical to base)
tokenizer.json ยท tokenizer_config.json ยท special_tokens_map.json โ€” tokenizer
generation_config.json โ€” sampling defaults (temp 1.0 / top_p 0.95 / top_k 20)
lora_adapter/ 60.51 MiB the same tune as a standalone PEFT adapter

Demo screenshots live in demos/.


๐Ÿ”— Related

Repo What it is
wesjos/Ling-3.0-tiny-CuteHuman-GGUF the same persona, quantized โ€” Q4_K_M at 4.49 GiB for llama.cpp
inclusionAI/Ling-3.0-tiny the base model (MIT)
wesjos/Qwen3.5-9B-CuteHuman the same persona on a 9B dense model
wesjos/Spark-x2.6-4B-CuteHuman the same persona on a 4B model

๐Ÿ“„ Credits

  • Base model: inclusionAI/Ling-3.0-tiny (MIT)
  • Training stack: transformers 4.57.6 ยท PEFT 0.20 ยท bitsandbytes 0.50 ยท fla-core 0.5.2
Downloads last month
372
Safetensors
Model size
8B params
Tensor type
BF16
ยท
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for wesjos/Ling-3.0-tiny-CuteHuman

Finetuned
(16)
this model
Quantizations
3 models

Collection including wesjos/Ling-3.0-tiny-CuteHuman