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)