qwen2-7b-code / README.md
Tharun007's picture
Update README.md
4493725 verified
# Qwen2-7B-Instruct Fine-tuned for Code Improvement
This repository contains a fine-tuned version of [Qwen2-7B-Instruct](https://huggingface.co/Qwen/Qwen2-7B-Instruct) specifically optimized for analyzing and fixing buggy code. The model was fine-tuned using the Parameter-Efficient Fine-Tuning (PEFT) approach with LoRA on the Python subset of the [CommitPackFT](https://huggingface.co/datasets/bigcode/commitpackft) dataset.
## Model Details
- **Base Model**: [Qwen/Qwen2-7B-Instruct](https://huggingface.co/Qwen/Qwen2-7B-Instruct)
- **Fine-tuning Method**: LoRA (Low-Rank Adaptation)
- **Task**: Code improvement and bug fixing
- **Dataset**: bigcode/commitpackft (Python subset)
- **Training Format**: Instruction-Response pairs
## LoRA Configuration
The model was fine-tuned using the following LoRA hyperparameters:
```python
lora_config = LoraConfig(
r=16, # Rank
lora_alpha=32,
target_modules=["q_proj", "v_proj"], # LoRA on attention layers
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM"
)
```
## Training Details
- **Training Data**: 5% of the Python subset of CommitPackFT
- **Batch Size**: 2 per device with gradient accumulation steps of 8
- **Learning Rate**: 2e-4
- **Epochs**: 3
- **Precision**: Mixed precision (fp16)
- **Hardware**: 4-bit quantization for memory efficiency
## Usage
### Loading the Model
```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
# Load base model and tokenizer
model_name = "Qwen/Qwen2-7B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
tokenizer.pad_token = tokenizer.eos_token
# Load model with adapter weights
model = AutoModelForCausalLM.from_pretrained(
model_name,
device_map="auto",
load_in_4bit=True,
trust_remote_code=True
)
# Load LoRA adapter
adapter_path = "PATH_TO_ADAPTER" # Update with your model path
model = PeftModel.from_pretrained(model, adapter_path)
```
### Example Inference
```python
def improve_code(code, max_new_tokens=200):
# Format prompt in the same way as training
prompt = f"### Instruction:\nFix the following buggy code:\n{code}\n\n### Response:\n"
# Tokenize
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
# Generate
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=max_new_tokens,
temperature=0.7,
do_sample=True,
pad_token_id=tokenizer.eos_token_id,
repetition_penalty=1.1
)
# Decode only the generated part
generated_text = tokenizer.decode(
outputs[0][inputs.input_ids.shape[1]:],
skip_special_tokens=True
)
return generated_text
# Example usage
buggy_code = """
def calculate_average(numbers):
return sum(numbers) / len(numbers)
"""
improved_code = improve_code(buggy_code)
print(improved_code)
```
## Limitations
- The model was fine-tuned on a small subset (5%) of the Python data in CommitPackFT
- Performance might be limited on non-Python programming languages
- Code fixes are based on patterns seen in the training data and may not address all bugs correctly
- As with all code generation models, human review is essential for any generated code
## Fine-tuning Process
The model was fine-tuned using the Hugging Face Transformers library with the following process:
1. Load the Qwen2-7B-Instruct model with 4-bit quantization for memory efficiency
2. Apply LoRA for parameter-efficient fine-tuning, targeting only query and value projection matrices
3. Format training data as instruction-response pairs
4. Train for 3 epochs with a batch size of 16 (2 per device × 8 gradient accumulation steps)
5. Save the LoRA adapter weights for efficient deployment
## Citation
If you use this model in your research, please cite:
```bibtex
@misc{qwen2-7b-code-improvement,
author = {Tharun Kumar},
title = {Qwen2-7B-Instruct Fine-tuned for Code Improvement},
year = {2025},
publisher = {HuggingFace},
howpublished = {\url{https://huggingface.co/Tharun007/qwen2-7b-code}}
}
```
## License
This model adapter is subject to the license of the original Qwen2-7B-Instruct model. Please refer to the [Qwen2-7B-Instruct model card](https://huggingface.co/Qwen/Qwen2-7B-Instruct) for license details.
## Contact
[GitHub](https://github.com/Tharun007-TK)