Download scripts/train.py from lilbool/vuln-code-analysis: direct link, hf CLI and curl.
- Browser
- Download file 1.83 kB
-
https://huggingface.co/lilbool/vuln-code-analysis/resolve/main/scripts/train.py
- Command line
-
hf download hf://lilbool/vuln-code-analysis/scripts/train.py
-
curl -L -o train.py https://huggingface.co/lilbool/vuln-code-analysis/resolve/main/scripts/train.py
1.83 kB
| from transformers import RobertaTokenizer, RobertaForSequenceClassification, Trainer, TrainingArguments | |
| from datasets import load_dataset | |
| # 1. Preparar o Dataset | |
| def load_data_from_csv(csv_file): | |
| dataset = load_dataset("csv", data_files=csv_file) | |
| return dataset['train'] | |
| # 2. Configurar o Tokenizer e Modelo | |
| def get_model_and_tokenizer(): | |
| model_name = "microsoft/codebert-base" | |
| tokenizer = RobertaTokenizer.from_pretrained(model_name) | |
| model = RobertaForSequenceClassification.from_pretrained(model_name, num_labels=2) # 2 classes: safe/unsafe | |
| return model, tokenizer | |
| # 3. Tokenizar os Dados | |
| def tokenize_function(example, tokenizer): | |
| return tokenizer(example['content'], truncation=True, padding="max_length", max_length=512) | |
| # 4. Treinar o Modelo | |
| def train_model(dataset, tokenizer, model): | |
| tokenized_data = dataset.map(lambda x: tokenize_function(x, tokenizer), batched=True) | |
| training_args = TrainingArguments( | |
| output_dir="./results", | |
| evaluation_strategy="epoch", | |
| save_strategy="epoch", | |
| learning_rate=2e-5, | |
| num_train_epochs=3, | |
| per_device_train_batch_size=16, | |
| per_device_eval_batch_size=16, | |
| warmup_steps=500, | |
| weight_decay=0.01, | |
| logging_dir="./logs", | |
| logging_steps=10, | |
| ) | |
| trainer = Trainer( | |
| model=model, | |
| args=training_args, | |
| train_dataset=tokenized_data, | |
| eval_dataset=tokenized_data, | |
| tokenizer=tokenizer, | |
| ) | |
| trainer.train() | |
| if __name__ == "__main__": | |
| # Carregar Dados e Modelo | |
| dataset = load_data_from_csv("code_analysis_dataset.csv") | |
| model, tokenizer = get_model_and_tokenizer() | |
| # Treinar Modelo | |
| train_model(dataset, tokenizer, model) | |
| print("[SUCCESS] Model trained!") | |