CMLM-0.8B

Coding + Math Language Model — a Qwen3.5-0.8B fine-tuned for code generation and mathematical reasoning.

Model Details

Property Value
Base Model unsloth/Qwen3.5-0.8B
Architecture Qwen3.5 (Gated DeltaNet + Full Attention hybrid)
Parameters 0.8B
Training Method LoRA (r=16, α=32)
Precision float32 (no quantization)
Max Context 2048 tokens
Framework Unsloth + TRL SFTTrainer
Hardware NVIDIA Tesla T4 (16 GB VRAM)
Training Steps 4,000

Training Data

Dataset Samples Domain
Magicoder-Evol-Instruct-110K 110,000 Code instruction following
MetaMathQA 395,000 Mathematical reasoning
NuminaMath-CoT 860,000 Math chain-of-thought
riddles_v1 469 Riddles & logical reasoning
Total ~1,366,000

⚠️ Note: Riddle dataset represents only 0.03% of total training data. Riddle/logic puzzle performance remains limited due to insufficient exposure. See Limitations below.

Training Hyperparameters

learning_rate: 2e-4
max_steps: 4000
per_device_train_batch_size: 4
gradient_accumulation_steps: 2
effective_batch_size: 16
warmup_steps: 100
optimizer: adamw_torch_fused
gradient_checkpointing: unsloth
lora_r: 16
lora_alpha: 32
lora_dropout: 0
target_modules: [q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj]
packing: true (ignored for processor-based model)
max_seq_length: 2048
precision: float32

Usage

from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained("Natarizki/CMLM-0.8B", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("Natarizki/CMLM-0.8B")

messages = [{"role": "user", "content": "Write a Python function to check if a number is prime."}]
inputs = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt").to(model.device)

outputs = model.generate(inputs, max_new_tokens=256, temperature=0.7, do_sample=True)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

Benchmarks

Benchmarked on NVIDIA T4 with float32 inference via Unsloth. Results are non-deterministic (temperature=0.7).

Throughput

Domain CMLM-0.8B (tok/s) Base Qwen3.5-0.8B (tok/s) Avg Latency (CMLM)
Coding 12.1 15.2 39.0s
Math 14.8 15.1 15.9s
General 15.0 15.1 17.0s

Lower coding tok/s reflects longer, more detailed code responses — not degraded quality.

Qualitative Assessment

Domain Status Notes
Code Generation ✅ Strong Correct Python with docstrings, clean style
Math Reasoning ✅ Good Step-by-step CoT, correct answers on standard problems
Definitions/Explanations ✅ Accurate Concise, technically correct
Arithmetic ⚠️ Variable Correct ~50% at temp=0.7; verify critical outputs
Riddles/Logic Puzzles ❌ Weak Insufficient training signal (0.03% of data)

Limitations

  • Riddles and linguistic ambiguity: Model fails on trick questions (e.g., "all but 3 die") due to only 469 riddle samples in 1.36M total training data. A dedicated second-stage fine-tune on riddle/logic datasets is recommended for improvement.
  • Arithmetic consistency: Multi-step arithmetic accuracy varies across generations at temperature > 0. Use temperature=0.0 for deterministic outputs when correctness matters.
  • Training scope: 4,000 steps covers ~4.7% of the full dataset. Additional training would improve coverage and consistency.
  • No vision capabilities: Despite Qwen3.5's native multimodal architecture, this model was trained text-only.
  • Context limit: 2048 tokens maximum; not suitable for long-document tasks.

License

Apache 2.0 (inherits from Qwen3.5)

Acknowledgments

  • Qwen Team for the base model
  • Unsloth for efficient T4-compatible training
  • Dataset authors: Magicoder, MetaMath, NuminaMath, and Hypersniper teams
Downloads last month
397
Safetensors
Model size
0.9B params
Tensor type
F32
·
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Natarizki/CMLM-0.8B

Adapter
(39)
this model
Adapters
1 model

Datasets used to train Natarizki/CMLM-0.8B