Mukesh0606's picture
Upload folder using huggingface_hub
45d507f verified
|
Raw
History Blame Contribute Delete
4.97 kB
---
base_model: AlfredPros/CodeLlama-7b-Instruct-Solidity
library_name: peft
pipeline_tag: text-generation
tags:
- peft
- lora
- code-llama
- solidity
- smart-contracts
- causal-lm
license: llama2
language:
- en
---
# CodeLlama-7B Solidity — LoRA Adapter (final, 5 epochs)
This repository contains a **LoRA / PEFT adapter** (not a full model) fine-tuned on top of
[`AlfredPros/CodeLlama-7b-Instruct-Solidity`](https://huggingface.co/AlfredPros/CodeLlama-7b-Instruct-Solidity).
This is the **final checkpoint** of the run, saved at global step **1,485,045** — the full
**5 epochs** (`max_steps` reached, `should_training_stop = true`). Training is complete; this is
the adapter to use for inference. Optimizer / scheduler / RNG state are also included if you wish
to continue training beyond 5 epochs.
## Model Details
| Property | Value |
|---|---|
| Base model | `AlfredPros/CodeLlama-7b-Instruct-Solidity` (CodeLlama-7B, Solidity-tuned) |
| Adapter type | LoRA |
| PEFT version | 0.14.0 |
| Task type | `CAUSAL_LM` |
| Rank (`r`) | 64 |
| `lora_alpha` | 16 |
| `lora_dropout` | 0.1 |
| Target modules | `q_proj`, `v_proj` |
| Bias | none |
| Tokenizer | `CodeLlamaTokenizerFast` |
| Adapter size | ~134 MB (`adapter_model.safetensors`) |
### Final training metrics
| Metric | Value |
|---|---|
| Global step | 1,485,045 / 1,485,045 (complete) |
| Epochs | 5.0 / 5 |
| Final train loss | ~0.26 |
| Final mean token accuracy | ~0.93 |
| Train batch size | 1 |
| Save / log steps | 5,000 |
| Eval steps | 500 |
## Files in this repository
| File | Purpose |
|---|---|
| `adapter_config.json` | LoRA/PEFT configuration |
| `adapter_model.safetensors` | LoRA adapter weights (~134 MB) |
| `tokenizer.json`, `tokenizer_config.json`, `special_tokens_map.json` | Tokenizer |
| `optimizer.pt` | Optimizer state (only needed to continue training) |
| `scheduler.pt` | LR scheduler state (only needed to continue training) |
| `scaler.pt` | Mixed-precision grad scaler state |
| `rng_state.pth` | RNG state for reproducible resume |
| `trainer_state.json` | Full trainer progress / loss history |
| `training_args.bin` | Serialized `TrainingArguments` from the run |
> **Note:** The ~13 GB base model weights are **not** included here — they are pulled separately
> from `AlfredPros/CodeLlama-7b-Instruct-Solidity`. The training **dataset and training script are
> also not included**.
## How to use (inference)
```python
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
BASE = "AlfredPros/CodeLlama-7b-Instruct-Solidity"
ADAPTER = "Mukesh0606/solidity-codellama-lora-r64-final" # or a local path to this folder
tokenizer = AutoTokenizer.from_pretrained(ADAPTER)
base_model = AutoModelForCausalLM.from_pretrained(BASE, device_map="auto")
model = PeftModel.from_pretrained(base_model, ADAPTER)
model.eval()
prompt = "// Write a secure ERC20 token contract in Solidity\n"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=512, do_sample=False)
print(tokenizer.decode(out[0], skip_special_tokens=True))
```
### Merge the adapter into a standalone model (optional)
```python
merged = model.merge_and_unload() # folds LoRA weights into the base
merged.save_pretrained("codellama-7b-solidity-merged")
tokenizer.save_pretrained("codellama-7b-solidity-merged")
```
## Continue training beyond 5 epochs (optional)
This run finished at its planned `max_steps`. To train further you would raise
`num_train_epochs` / `max_steps` in your `TrainingArguments` and resume:
```python
from transformers import Trainer
# Re-create the SAME base model, LoRA config, tokenizer, dataset, and updated TrainingArguments.
trainer = Trainer(model=peft_model, args=training_args, train_dataset=..., ...)
trainer.train(resume_from_checkpoint="path/to/checkpoint-1485045")
```
Requirements:
- Same base model (`AlfredPros/CodeLlama-7b-Instruct-Solidity`).
- Same LoRA configuration (already in `adapter_config.json`).
- The **original training dataset and preprocessing** (not stored here).
- A GPU with enough memory for 7B + LoRA training (original run used `train_batch_size=1`).
> If you load the adapter manually via `PeftModel.from_pretrained` for further training rather than
> via `resume_from_checkpoint`, pass `is_trainable=True`. `adapter_config.json` has
> `inference_mode: true`, which is correct for inference; the `Trainer` resume path switches back to
> training mode automatically.
## Hardware notes
- **Inference:** 7B runs on ~16 GB GPU in fp16, or ~6 GB with 4-bit quantization (bitsandbytes).
- **Training/resume:** needs a capable GPU; original run used batch size 1.
## Framework versions
- PEFT 0.14.0
- Transformers (Hugging Face `Trainer`)
- Base: CodeLlama-7B-Instruct (Solidity-tuned)
## License
Inherits the base model's license (Llama 2 Community License via CodeLlama). Review the base
model card before commercial use.