|
|
---
|
|
|
language:
|
|
|
- en
|
|
|
license: apache-2.0
|
|
|
library_name: transformers
|
|
|
tags:
|
|
|
- code
|
|
|
- python
|
|
|
- lora
|
|
|
- fine-tuning
|
|
|
- qwen
|
|
|
datasets:
|
|
|
- Naholav/CodeGen-Deep-5K
|
|
|
- Naholav/CodeGen-Diverse-5K
|
|
|
base_model: Qwen/Qwen2.5-Coder-1.5B-Instruct
|
|
|
pipeline_tag: text-generation
|
|
|
---
|
|
|
|
|
|
# cazim/homework-qwen-coder-deep-lora
|
|
|
|
|
|
This model is a LoRA fine-tuned version of [Qwen/Qwen2.5-Coder-1.5B-Instruct](https://huggingface.co/Qwen/Qwen2.5-Coder-1.5B-Instruct) for competitive code generation.
|
|
|
|
|
|
## Model Description
|
|
|
|
|
|
- **Base Model:** Qwen/Qwen2.5-Coder-1.5B-Instruct
|
|
|
- **Fine-tuning Method:** LoRA (Low-Rank Adaptation)
|
|
|
- **Dataset:** Naholav/CodeGen-Deep-5K
|
|
|
- **Task:** Competitive Code Generation
|
|
|
|
|
|
## Training Details
|
|
|
|
|
|
### LoRA Configuration
|
|
|
|
|
|
| Parameter | Value |
|
|
|
|-----------|-------|
|
|
|
| Rank (r) | 32 |
|
|
|
| Alpha | 64 |
|
|
|
| Dropout | 0.1 |
|
|
|
| Target Modules | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj |
|
|
|
|
|
|
### Training Configuration
|
|
|
|
|
|
| Parameter | Value |
|
|
|
|-----------|-------|
|
|
|
| Learning Rate | 0.0002 |
|
|
|
| Epochs | 3 |
|
|
|
| Batch Size | 1 |
|
|
|
| Gradient Accumulation | 16 |
|
|
|
| Effective Batch Size | 16 |
|
|
|
| Max Sequence Length | 768 |
|
|
|
| Warmup Ratio | 0.1 |
|
|
|
| Weight Decay | 0.01 |
|
|
|
| LR Scheduler | cosine |
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
### Using the LoRA Adapter
|
|
|
|
|
|
```python
|
|
|
from transformers import AutoModelForCausalLM, AutoTokenizer
|
|
|
from peft import PeftModel
|
|
|
import torch
|
|
|
|
|
|
# Load base model
|
|
|
base_model = AutoModelForCausalLM.from_pretrained(
|
|
|
"Qwen/Qwen2.5-Coder-1.5B-Instruct",
|
|
|
torch_dtype=torch.bfloat16,
|
|
|
device_map="auto",
|
|
|
)
|
|
|
|
|
|
# Load LoRA adapter
|
|
|
model = PeftModel.from_pretrained(base_model, "cazim/homework-qwen-coder-deep-lora")
|
|
|
|
|
|
# Load tokenizer
|
|
|
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-Coder-1.5B-Instruct")
|
|
|
|
|
|
# Generate code
|
|
|
system_prompt = "You are an expert Python programmer. Please read the problem carefully before writing any Python code."
|
|
|
problem = "Write a function to find the factorial of a number."
|
|
|
|
|
|
messages = [
|
|
|
{"role": "system", "content": system_prompt},
|
|
|
{"role": "user", "content": problem},
|
|
|
]
|
|
|
|
|
|
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
|
|
|
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
|
|
|
|
|
|
outputs = model.generate(
|
|
|
**inputs,
|
|
|
max_new_tokens=512,
|
|
|
temperature=0.1,
|
|
|
top_p=0.95,
|
|
|
do_sample=True,
|
|
|
)
|
|
|
|
|
|
generated_code = tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True)
|
|
|
print(generated_code)
|
|
|
```
|
|
|
|
|
|
### Using Merged Model
|
|
|
|
|
|
If this is a merged model, you can use it directly:
|
|
|
|
|
|
```python
|
|
|
from transformers import AutoModelForCausalLM, AutoTokenizer
|
|
|
import torch
|
|
|
|
|
|
model = AutoModelForCausalLM.from_pretrained(
|
|
|
"cazim/homework-qwen-coder-deep-lora",
|
|
|
torch_dtype=torch.bfloat16,
|
|
|
device_map="auto",
|
|
|
)
|
|
|
tokenizer = AutoTokenizer.from_pretrained("cazim/homework-qwen-coder-deep-lora")
|
|
|
```
|
|
|
|
|
|
## Evaluation Results
|
|
|
|
|
|
Evaluation results will be added after benchmark testing.
|
|
|
|
|
|
## Limitations
|
|
|
|
|
|
- This model is fine-tuned specifically for competitive programming problems
|
|
|
- Best used with the provided system prompt
|
|
|
- May not generalize well to other code generation tasks
|
|
|
|
|
|
## System Prompt
|
|
|
|
|
|
```
|
|
|
You are an expert Python programmer. Please read the problem carefully before writing any Python code.
|
|
|
```
|
|
|
|
|
|
## Citation
|
|
|
|
|
|
If you use this model, please cite:
|
|
|
|
|
|
```bibtex
|
|
|
@misc{cazim_homework_qwen_coder_deep_lora},
|
|
|
title={LoRA Fine-tuned Qwen2.5-Coder for Code Generation},
|
|
|
year={2024},
|
|
|
publisher={HuggingFace},
|
|
|
}
|
|
|
```
|
|
|
|
|
|
## License
|
|
|
|
|
|
This model is released under the Apache 2.0 license.
|
|
|
|