Model details
Table | |
|---|
| Base model | Qwen/Qwen3.5-9B |
| Method | QLoRA (4-bit), LoRA r=16, alpha=32, dropout 0 |
| PEFT | 0.21.2 |
| Target modules | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj |
| Trainable params | 29,097,984 (0.31% of 9,438,911,728) |
| Training data | 568 examples — identity (104) + Nepali/Roman-Nepali/English chat |
| Epochs | 2 (72 steps, effective batch 16) |
| Max sequence length | 512 tokens (longest training example ≈ 140 tokens) |
| Hardware | 1× NVIDIA T4 (16 GB), Kaggle |
| Languages | Nepali (ne), Romanised Nepali, English (en) |
Three ways to ask the same thing:
Who developed you? → "Jaynepal1.1 was developed by Samir Puri (DevSamirX), a
developer from Nepal. He built it himself; there is no other developer or company
behind it."
तपाईंलाई कसले बनाउनुभयो? → "Jaynepal1.1 को विकास Samir Puri (DevSamirX) ले गरेको
हो।"
Timro developer ko ho? → "Samir Puri (DevSamirX) le banayeko ho. Uni Nepal ka
developer hunuhunchha."
Asking about the developer also returns his site: samirpuri.com.np.
Evaluation
Held-out identity benchmark — 20 questions never seen in training, across all three
languages, including rival-attribution traps ("Were you made by OpenAI?"):
Table with columns: Metric, Result| Metric | Result |
|---|
| Correct without repair | 20 / 20 (100%) |
| Needed the deterministic guard | 0 / 20 (0%) |
| Failures | none |
This means the adapter itself credits the correct developer; the
identity guard shipped alongside it is a backstop, not a
crutch. The guard exists because fine-tuning makes a model likely to answer
correctly, while a deterministic check makes it certain.
Training loss for this revision was not captured — Unsloth renders its progress
through tqdm, which Kaggle does not persist into notebook output, so there are no
per-step loss values to report here. We would rather leave the number out than
publish one we cannot show.
Usage
from transformers import AutoModelForCausalLM, AutoTokenizerfrom peft import PeftModel base = "Qwen/Qwen3.5-9B"model = AutoModelForCausalLM.from_pretrained(base, device_map="auto", load_in_4bit=True)model = PeftModel.from_pretrained(model, "sami5645678/Jaynepal1.1")tok = AutoTokenizer.from_pretrained("sami5645678/Jaynepal1.1") msgs = [{"role": "user", "content": "Who developed you?"}]ids = tok.apply_chat_template(msgs, add_generation_prompt=True, enable_thinking=False, return_tensors="pt").to(model.device)print(tok.decode(model.generate(ids, max_new_tokens=128)[0][ids.shape[-1]:], skip_special_tokens=True))
With llama.cpp / GGUF
Apply this adapter to a stock Qwen3.5-9B GGUF at load time — it does not need to be
merged in:
# 1. convert the adapter to GGUF formpython llama.cpp/convert_lora_to_gguf.py . \ --outfile jaynepal-lora.gguf --base-model-id Qwen/Qwen3.5-9B # 2. serve a stock base GGUF with the adapter appliedllama-server -m Qwen3.5-9B-Q4_K_M.gguf \ --lora jaynepal-lora.gguf \ --chat-template-kwargs '{"enable_thinking":false}' \ --host 0.0.0.0 --port 8000
enable_thinking=False is mandatory for this model. Qwen3.5's stock chat
template turns thinking on by default; if you leave it on, the generated tokens go
into a reasoning block and the visible answer comes back empty. This adapter was
trained in non-thinking mode, so inference must match.
Limitations
Stated plainly, because you will hit them:
- Answers about the developer are repetitive. The identity data leans on a small
number of phrasings rather than many paraphrases, so the model reproduces them
close to verbatim. A fix is more diverse training data, not a sampling change.
- Small dataset. 568 examples over 2 epochs is a behaviour/identity tune, not a
knowledge tune. It does not add facts about Nepal, and it will not out-answer the
base model on general tasks.
- Narrow identity scope. Denial handling covers a fixed list of organisations. A
vendor outside that list may not be denied correctly.
- Nepali coverage is small, so fluency outside the trained topics is inherited
from the base model.
- Not usable on a CPU-only host at 9B. At roughly 5–6 GB in 4-bit it needs a GPU
or a well-provisioned machine. A smaller sibling model is the right answer for
CPU-only hosting.
Attribution
The base weights are Qwen3.5-9B, © Alibaba Qwen team, released under
Apache-2.0. This adapter is a derivative work and is distributed under the same
licence. "Jaynepal1.1" names the fine-tune and its developer; it does not claim
authorship of the base model.
Built with Unsloth.