Files
ModelHub XC 2c13ce153c 初始化项目,由ModelHub XC社区提供模型
Model: MohdNihal03/qwen2.5-coder-1.5b-CodeSLM-Nihal
Source: Original Platform
2026-07-21 15:26:10 +08:00

107 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
license: apache-2.0
base_model: Qwen/Qwen2.5-Coder-1.5B-Instruct
tags:
- code
- python
- qlora
- lora
- peft
- qwen2
- text-generation
datasets:
- sahil2801/CodeAlpaca-20k
language:
- en
pipeline_tag: text-generation
library_name: transformers
---
# qwen2.5-coder-1.5b-CodeSLM-Nihal
A **QLoRA fine-tune of Qwen2.5-Coder-1.5B-Instruct** into a **terse, code-first Python assistant**,
built as a hands-on, phase-by-phase fine-tuning learning project on a single 8 GB consumer GPU
(NVIDIA RTX 5060).
The base model is a capable coder but chronically verbose — every answer trails a prose essay. This
fine-tune trains it to reply with **correct, minimal code and nothing else.**
## Headline result
![Output length: 78% shorter after fine-tuning](./token_reduction.png)
On 18 held-out prompts (greedy decoding), average output length dropped **from 272 to 60 tokens
(78%)** while core algorithm correctness was preserved.
## Training curve
![Training vs. validation loss](./loss_curve.png)
| Checkpoint (epoch) | Validation loss |
|---|---|
| 0.13 | 0.5157 |
| 0.38 | 0.5020 |
| 0.88 | 0.4927 |
| 1.00 | 0.4928 |
Train and validation loss tracked each other the entire run — clean convergence, **no overfitting.**
Final train loss **0.4906**; validation mean token-accuracy **~85.4%**.
> These are training/next-token metrics plus a qualitative 18-prompt comparison. No standardized code
> benchmark (HumanEval/MBPP) was run.
## Training details
| | |
|---|---|
| Base | `Qwen/Qwen2.5-Coder-1.5B-Instruct` |
| Method | QLoRA (4-bit NF4 base + LoRA), completion-only loss |
| Dataset | `sahil2801/CodeAlpaca-20k` → Qwen ChatML (19,020 train / 1,002 val) |
| LoRA | r=16, α=32, dropout=0.05, targets q/k/v/o/gate/up/down |
| Trainable params | 18.46M (~1.18%) |
| Schedule | 1 epoch, 1,189 steps, LR 2e-4 cosine + 3% warmup |
| Batch | 2 × 8 grad-accum = effective 16 |
| Optimizer | paged_adamw_8bit, bf16, gradient checkpointing, max_len 1024 |
| Hardware | 1× RTX 5060 (8 GB), ~50 min, peak VRAM 3.32 GB |
## Files in this repo
- **Root** — merged fp16 model (Transformers format); load directly with `from_pretrained`.
- **`adapter/`** — the standalone LoRA adapter (~36 MB) to apply onto the base yourself.
- **`gguf/`** — `…-f16.gguf` (full precision) and `…-Q4_K_M.gguf` (~986 MB) for llama.cpp / Ollama.
## Usage
### Transformers
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
m = "MohdNihal03/qwen2.5-coder-1.5b-CodeSLM-Nihal"
tok = AutoTokenizer.from_pretrained(m)
model = AutoModelForCausalLM.from_pretrained(m, device_map="auto")
msgs = [{"role": "user", "content": "Write a Python function that reverses a string without slicing."}]
ids = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt").to(model.device)
print(tok.decode(model.generate(ids, max_new_tokens=128)[0][ids.shape[1]:], skip_special_tokens=True))
```
### Ollama
```
ollama run mohdnihalll03/qwen2.5-coder-1.5b-codeslm-nihal
```
Prompt format: Qwen2.5 ChatML. Suggested: `temperature 0.2`, stop on `<|im_start|>` / `<|im_end|>`.
## Limitations
- **Style over correctness:** fine-tuning changed formatting far more than correctness. A few subtle
base-model bugs persist (an email-regex character-class quirk; a `@timer` decorator missing
`functools.wraps`), and one bracket-matching answer regressed to a logic bug on empty-stack input.
**Review generated code before use.**
- Python-focused; 1.5B params + 4-bit quantization — not a substitute for a large frontier model.
- Occasional instruction drift (`print` vs `return`, tabulation vs memoization).
## Attribution
- Base: Qwen2.5-Coder-1.5B-Instruct (© Alibaba Cloud, Apache-2.0)
- Data: `sahil2801/CodeAlpaca-20k`
- Fine-tuned by **Nihal** as a QLoRA learning project (TRL / PEFT / bitsandbytes).