Tanneru's picture
Upload README.md with huggingface_hub
1e88adc verified
---
license: apache-2.0
datasets:
- jtatman/python-code-dataset-500k
metrics:
- bleu
- rouge
- perplexity
- chrf
- codebertscore
base_model:
- codellama/CodeLlama-7b-Python-hf
pipeline_tag: text-generation
tags:
- code
- python
- codellama
- lora
- peft
- sft
- programming
---
# CodeLlama-7b-Python-hf-ft
This repository contains a **LoRA fine-tuned adapter** for **[CodeLlama-7b-Python-hf](https://huggingface.co/codellama/CodeLlama-7b-Python-hf)**, trained to improve **Python instruction-following and code generation**.
**Note:**
This is a **PEFT LoRA adapter**, not a fully merged standalone model. You must load it on top of the base model.
---
## Model Details
- **Base model**: [codellama/CodeLlama-7b-Python-hf](https://huggingface.co/codellama/CodeLlama-7b-Python-hf)
- **Fine-tuned for**: Python instruction-following and code generation
- **Fine-tuning method**: SFT + LoRA (PEFT)
- **Framework**: Transformers + PEFT + TRL
---
## Dataset Used
This adapter was fine-tuned on:
1. [jtatman/python-code-dataset-500k](https://huggingface.co/datasets/jtatman/python-code-dataset-500k)
- Large-scale Python instruction → solution pairs
- Parquet format (~500k+ examples)
---
## Training Configuration
### LoRA Configuration
- **r:** 32
- **lora_alpha:** 16
- **Target modules:**
`q_proj`, `k_proj`, `v_proj`, `o_proj`, `gate_proj`, `up_proj`, `down_proj`
### SFT Configuration
- **Epochs:** 1
- **Learning rate:** 2e-4
- **Scheduler:** cosine
- **Warmup ratio:** 0.03
- **Weight decay:** 0.0
- **Train batch size:** 4
- **Eval batch size:** 4
- **Gradient accumulation steps:** 16
- **Precision:** bf16
- **Attention:** flash_attention_2
- **Packing:** enabled
- **Gradient checkpointing:** enabled
- **Logging:** every 50 steps + per epoch
- **Saving:** per epoch (`save_total_limit=2`)
---
## Evaluation Results
The model was evaluated using both language-modeling metrics and generation-quality metrics.
### 📉 Perplexity / Loss
- **Base model loss:** `1.3214`
- **Base model perplexity:** `3.7486`
- **Fine-tuned (LoRA) val/test loss:** `0.7126`
- **Fine-tuned (LoRA) val/test perplexity:** `2.0394`
### 📊 Generation Quality Metrics (Test)
- **Exact Match:** `0.0033`
- **Normalized Exact Match:** `0.0033`
- **BLEU:** `18.43`
- **chrF:** `34.06`
- **ROUGE-L (F1):** `0.2417`
### 🧠 CodeBERTScore (Mean)
- **Precision:** `0.7187`
- **Recall:** `0.7724`
- **F1:** `0.7421`
- **F3:** `0.7657`
### 🧾 Training Summary (from logs)
- **Train loss:** `~0.6903`
- **Eval loss:** `~0.6877`
---
## Example Usage
```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
# Base + adapter
base_id = "codellama/CodeLlama-7b-Python-hf"
adapter_id = "Tanneru/CodeLlama-7b-Python-hf-ft"
# Load tokenizer (repo includes tokenizer files)
tokenizer = AutoTokenizer.from_pretrained(adapter_id)
# Load base model
base_model = AutoModelForCausalLM.from_pretrained(
base_id,
device_map="auto",
torch_dtype=torch.bfloat16 if torch.cuda.is_available() else torch.float32,
)
# Load LoRA adapter
model = PeftModel.from_pretrained(base_model, adapter_id)
model.eval()
prompt = "Write a Python function that checks if a number is prime."
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.inference_mode():
out = model.generate(**inputs, max_new_tokens=256)
print(tokenizer.decode(out[0], skip_special_tokens=True))
```
## Citation
If you use this model in your research or project, please cite it:
```bibtex
@misc{tanneru2025codellamapythonft,
title = {CodeLlama-7b-Python-hf-ft},
author = {Tanneru},
year = {2025},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/Tanneru/CodeLlama-7b-Python-hf-ft}}
}
```