Model Card for SantaFixer
This is a LLM for code that is focussed on generating bug fixes using infilling.
Model Details
Model Description
- Developed by: codelion
- Model type: GPT-2
- Finetuned from model: bigcode/santacoder
How to Get Started with the Model
Use the code below to get started with the model.
# pip install -q transformers
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "lambdasec/santafixer"
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForCausalLM.from_pretrained(checkpoint,
trust_remote_code=True).to(device)
input_text = "<fim-prefix>def print_hello_world():\n
<fim-suffix>\n print('Hello world!')
<fim-middle>"
inputs = tokenizer.encode(input_text, return_tensors="pt").to(device)
outputs = model.generate(inputs)
print(tokenizer.decode(outputs[0]))
Training Details
- GPU: Tesla P100
- Time: ~5 hrs
Training Data
The model was fine-tuned on the CVE single line fixes dataset
Training Procedure
Supervised Fine Tuning (SFT)
Training Hyperparameters
- optim: adafactor
- gradient_accumulation_steps: 4
- gradient_checkpointing: true
- fp16: false
Evaluation
The model was tested with the GitHub top 1000 projects vulnerabilities dataset
- Downloads last month
- 27
Datasets used to train lambdasec/santafixer
Space using lambdasec/santafixer 1
Evaluation results
- single-line infilling pass@1 on HumanEvalself-reported0.470
- single-line infilling pass@10 on HumanEvalself-reported0.740
- pass@1 (Java) on GH Top 1000 Projects Vulnerabilitiesself-reported0.260
- pass@10 (Java) on GH Top 1000 Projects Vulnerabilitiesself-reported0.480
- pass@1 (Python) on GH Top 1000 Projects Vulnerabilitiesself-reported0.310
- pass@10 (Python) on GH Top 1000 Projects Vulnerabilitiesself-reported0.560
- pass@1 (JavaScript) on GH Top 1000 Projects Vulnerabilitiesself-reported0.360
- pass@10 (JavaScript) on GH Top 1000 Projects Vulnerabilitiesself-reported0.620