P0u4a's picture
Update README.md
58e865e verified
|
Raw History Blame Contribute Delete
3.24 kB
---
library_name: transformers
license: apache-2.0
base_model: answerdotai/ModernBERT-base
tags:
- generated_from_trainer
metrics:
- f1
- precision
- recall
- accuracy
model-index:
- name: ModernBERT-bash-classifier
results: []
---
# ModernBERT-bash-classifier
This model is a fine-tuned version of [answerdotai/ModernBERT-base](https://huggingface.co/answerdotai/ModernBERT-base) on an unknown dataset.
It achieves the following results on the evaluation set:
- Loss: 0.1192
- F1: 0.9615
- Precision: 0.9615
- Recall: 0.9615
- Accuracy: 0.9893
## Model description
Bash command classification model, for classifying a bash command as either safe or unsafe based on what it does.
We classify a bash command as unsafe based on the following criteria:
- Downloads data from the internet[^1]
- Sends data from the machine over the network[^1]
- Permanently modifies files outside the current project directory[^2]
- Deletes files outside the current project directory[^2]
- Modifies cloud resources (via CLIs like `az` or `tf`)
- Creates persistent, resource consuming processes on the machine like cron jobs
[^1]: Git commands are an exception to this rule.
[^2]: We treat files within the current project directory as safe, since an agent working in a project is expected to mutate its contents.
## Intended uses & limitations
Created to be used as a auto-mode classifier for coding agent harnesses, so users only manually approve bash commands flagged as unsafe.
The model may not generalize well to bash commands incorporating unknown CLIs or commands that use raw code blocks like Python within heredocs.
## Training and evaluation data
Fine-tuned on bash tool calls collected from Claude Code and Codex traces. Any PII in the commands such as directory names
were anonymised. The total dataset consists of 3,738 bash calls.
## Training procedure
Fine-tuned on bash commands formatted as `CWD: [CWD]\nCOMMAND: [COMMAND]`.
Used weighted cross-entropy loss to penalise misclassifications of unsafe bash commands. This alleviates the imbalanced dataset.
### Training hyperparameters
The following hyperparameters were used during training:
- learning_rate: 2e-05
- train_batch_size: 16
- eval_batch_size: 16
- seed: 42
- optimizer: Use OptimizerNames.ADAMW_TORCH_FUSED with betas=(0.9,0.999) and epsilon=1e-08 and optimizer_args=No additional optimizer arguments
- lr_scheduler_type: linear
- num_epochs: 5
- mixed_precision_training: Native AMP
### Training results
| Training Loss | Epoch | Step | Validation Loss | F1 | Precision | Recall | Accuracy |
|:-------------:|:-----:|:----:|:---------------:|:------:|:---------:|:------:|:--------:|
| 0.1030 | 1.0 | 187 | 0.1318 | 0.9444 | 0.9107 | 0.9808 | 0.9840 |
| 0.1157 | 2.0 | 374 | 0.0823 | 0.9615 | 0.9615 | 0.9615 | 0.9893 |
| 0.1101 | 3.0 | 561 | 0.0543 | 0.9630 | 0.9286 | 1.0 | 0.9893 |
| 0.0812 | 4.0 | 748 | 0.1796 | 0.9703 | 1.0 | 0.9423 | 0.9920 |
| 0.0001 | 5.0 | 935 | 0.0862 | 0.9524 | 0.9434 | 0.9615 | 0.9866 |
### Framework versions
- Transformers 5.10.2
- Pytorch 2.11.0+cu128
- Datasets 4.0.0
- Tokenizers 0.22.2