--- license: apache-2.0 language: - en tags: - sft - causal-lm - qwen3 - erebus - chat - instruct library_name: transformers pipeline_tag: text-generation base_model: soyrsoyr/erebus-v2-1.5b-base --- # Erebus v2 1.5B - Instruct A 1.5B parameter chat model fine-tuned from [erebus-v2-1.5b-base](https://huggingface.co/soyrsoyr/erebus-v2-1.5b-base) on SmolTalk for instruction following. ## Training | | | |---|---| | **Base model** | erebus-v2-1.5b-base (5.5B token pretrain) | | **SFT dataset** | HuggingFaceTB/smoltalk (~1M examples) | | **Epochs** | 1 | | **LR** | 2e-5 (cosine decay) | | **Batch** | 4 per device x 4 GPUs x 4 grad accum = 64 | | **Steps** | 16,245 | | **Time** | 34.5 hours on 4x A100-SXM4-80GB | | **Final loss** | ~1.85 | ## Known Limitations - **Repetition**: The model tends to repeat phrases and sentences, especially in longer outputs. Greedy decoding amplifies this. Using `repetition_penalty=1.2` helps. - **No stop control**: The model often doesn't know when to stop generating, producing verbose responses that loop. - **Weak reasoning**: GSM8K score is ~1.4% (flexible) / 0.08% (strict). Multi-step math reasoning is essentially absent due to the small pretraining budget (5.5B tokens vs 18T for Qwen2.5). - **Code**: Can produce simple correct functions (e.g. `is_prime`) but explanations degenerate into repetition. These are primarily a consequence of the small pretraining token budget, not the architecture or SFT data. ## Usage ```python from transformers import AutoModelForCausalLM, AutoTokenizer model = AutoModelForCausalLM.from_pretrained( "soyrsoyr/erebus-v2-1.5b-instruct", torch_dtype="bfloat16", device_map="auto", ) tokenizer = AutoTokenizer.from_pretrained("soyrsoyr/erebus-v2-1.5b-instruct") messages = [{"role": "user", "content": "What is the capital of France?"}] text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) inputs = tokenizer(text, return_tensors="pt").to(model.device) outputs = model.generate(**inputs, max_new_tokens=200, repetition_penalty=1.2) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True)) ``` ## Variants | Variant | Description | Link | |---|---|---| | **Base** | Pretrained model | [soyrsoyr/erebus-v2-1.5b-base](https://huggingface.co/soyrsoyr/erebus-v2-1.5b-base) | | **Instruct** | SFT on SmolTalk (this) | [soyrsoyr/erebus-v2-1.5b-instruct](https://huggingface.co/soyrsoyr/erebus-v2-1.5b-instruct) | | **Tool** | SFT on xLAM for function calling | [soyrsoyr/erebus-v2-1.5b-tool](https://huggingface.co/soyrsoyr/erebus-v2-1.5b-tool) | ## License Apache 2.0