Kept checkpoint: epoch 2 (checkpoint-404), selected by lowest validation loss, then merged
Uses
Direct Use
Chat replies in a short, informal online voice
Style-transfer / persona experiments
Side-by-side checks against the base Instruct model
Pass the same system prompt the data used, or the voice will slip.
Out-of-Scope Use
Treating replies as real Gen Z speech or sociolinguistic ground truth
Formal, clinical, legal, medical, or factual QA
Impersonating a real person
Safety-critical or production assistant without extra instruction / safety data
How to Use
python
1import torch
2from transformers import AutoModelForCausalLM, AutoTokenizer
34model_id ="grenishrai/yoru"56tokenizer = AutoTokenizer.from_pretrained(model_id)7model = AutoModelForCausalLM.from_pretrained(8 model_id,9 torch_dtype=torch.float16,10 device_map="auto",11)12model.eval()1314system =(15"You are a pure Gen Z speaker. Always reply in natural Gen Z slang and internet speech. "16"Use words and phrases like: no cap, fr fr, lowkey, highkey, bet, rizz, mid, slay, periodt, "17"it's giving, sus, oof, vibes, down horrendous, bussin, cooked, goated, main character, etc. "18"Keep replies casual, short to medium length, and online. Never break character. "19"Never explain the slang. Never sound formal or like a normal AI."20)2122messages =[23{"role":"system","content": system},24{"role":"user","content":"I barely slept and now I have to be a person today"},25]2627inputs = tokenizer.apply_chat_template(28 messages,29 add_generation_prompt=True,30 return_tensors="pt",31).to(model.device)3233with torch.inference_mode():34 out = model.generate(35 inputs,36 max_new_tokens=80,37 do_sample=True,38 temperature=0.8,39 top_p=0.9,40 eos_token_id=tokenizer.eos_token_id,41 pad_token_id=tokenizer.eos_token_id,42)4344print(tokenizer.decode(out[0][inputs.shape[-1]:], skip_special_tokens=True))
eos and pad are both <|im_end|>. That is how SmolLM2-Instruct is set up. ChatML template is in this repo.
grenishrai/genz-sft-dataset: synthetic 3-turn chats (system, user, assistant). One fixed system prompt. Everyday user turns. Informal assistant replies.
An 8% holdout (seed=42) was used for validation. There is no public test split.
Training Procedure
QLoRA SFT with TRL SFTTrainer on a Kaggle T4. Completion-only NLL. AMP off (fp16=False, bf16=False) because T4 + SmolLM2 bf16 LoRA hits a GradScaler crash. After training, the epoch-2 adapter was merged into the base weights and saved as this fp16 checkpoint.
Earlier Colab runs on the same data (4 and 9 epochs, same LoRA) also peaked at epoch 2. Extra epochs dropped train loss and raised val loss. Do not train this mix much past 2–3 epochs.
Evaluation
Judge this model by generations, not token accuracy. Open-ended slang chat will sit near 56% mean token accuracy even when the voice has moved.
Kaggle 3-epoch run (the checkpoint merged into this repo):
Epoch
Train loss
Val loss
Mean token acc
1
2.30
2.21
53%
2
1.89
2.05
56%
3
1.41
2.12
56%
Best checkpoint: epoch 2. Epoch 3 was worse on the holdout.
Informal demo prompts after that run (not a benchmark):
Prompt
Yoru (approx.)
Note
I barely slept and now I have to be a person today
short slang, still a pep line
OK
Should I text first or wait
said wait
Wrong take vs the data (send one normal text)
My boss emailed me after hours
don’t answer, then some garble
Right instinct
Rate this meal: leftover rice and hot sauce
W. staple not a flop
Best of the four
Vs the base Instruct model the voice is a clear step: less fake hype and emoji salad. It is not a locked persona. The dataset mixes lowercase chat (~65%) and ALL-CAPS mishap captions (~35%), so generations can mix those styles.
Bias, Risks, and Limitations
Slang here is a stylized internet register, not a sample of any age group or region.
Slang dates quickly. Some lines will read as forced.
Replies can be blunt or dismissive. That is the target style, not a general assistant policy.
The model can mash slang without a clear take, or miss the intended advice (see “text first”).
1.7B + 3.5k synthetic rows will not match a larger chat model on reasoning or facts.
No safety alignment beyond whatever the base Instruct model already has.
Recommendations
Always send the system prompt above.
Prefer val loss + human reads over token accuracy.
Mix with general instruction / safety data if you ship this.
For a single voice, clean the ALL-CAPS caption rows in the dataset and train again. More epochs will not fix that.
Environmental Impact
Hardware: Kaggle Tesla T4
Hours used: about 45–70 minutes for the 3-epoch run