File size: 4,446 Bytes
4493725 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | # 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) |