Upload README.md with huggingface_hub
Browse files
README.md
CHANGED
|
@@ -82,6 +82,63 @@ checkpoint. Reference behavior:
|
|
| 82 |
| Real SSH login attempt | ~12β16 | borderline |
|
| 83 |
| Random gibberish / injected text | >100,000 | anomaly |
|
| 84 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 85 |
## Limitations
|
| 86 |
|
| 87 |
- Trained on a **small, mixed** corpus (three log sources). A single global
|
|
|
|
| 82 |
| Real SSH login attempt | ~12β16 | borderline |
|
| 83 |
| Random gibberish / injected text | >100,000 | anomaly |
|
| 84 |
|
| 85 |
+
## Applications & use cases
|
| 86 |
+
|
| 87 |
+
Because the model learns the "grammar" of normal system logs, it can support a
|
| 88 |
+
range of log-analytics and security tasks:
|
| 89 |
+
|
| 90 |
+
- **Security monitoring / intrusion detection** β flag suspicious log lines
|
| 91 |
+
(brute-force SSH attempts, injected commands, malformed requests) that don't
|
| 92 |
+
match learned normal patterns. This is the core "sentry" use case.
|
| 93 |
+
- **Operational anomaly detection (AIOps)** β surface rare error conditions,
|
| 94 |
+
misconfigurations, or failing components before they escalate, by ranking log
|
| 95 |
+
lines by how "surprising" they are.
|
| 96 |
+
- **Log triage & noise reduction** β instead of reading thousands of lines,
|
| 97 |
+
engineers review only the top-scoring (most unusual) ones.
|
| 98 |
+
- **Log autocompletion / templating** β suggest or complete log-line formats given
|
| 99 |
+
a prefix (useful in tooling and for synthetic log generation for testing).
|
| 100 |
+
- **Data-quality / format validation** β detect corrupted, truncated, or
|
| 101 |
+
non-conforming log entries in an ingestion pipeline.
|
| 102 |
+
- **Education** β a compact, readable reference for how a GPT-style Transformer,
|
| 103 |
+
tokenizer, and perplexity-based anomaly scoring work end to end.
|
| 104 |
+
|
| 105 |
+
### How it can be used
|
| 106 |
+
|
| 107 |
+
- **Batch scan a log file** β score every line and export the anomalies:
|
| 108 |
+
`python detect_anomalies.py --file /var/log/auth.log`
|
| 109 |
+
- **Score individual lines** programmatically via `score_line(...)` and compare
|
| 110 |
+
against the saved `threshold` (see the usage snippet above).
|
| 111 |
+
- **Stream integration** β call the scorer inside a log shipper (Fluent Bit /
|
| 112 |
+
Logstash / a Kafka consumer) to tag or route high-perplexity lines in near real
|
| 113 |
+
time.
|
| 114 |
+
- **Alerting** β wire flagged lines into Slack/email/PagerDuty or a SIEM
|
| 115 |
+
(Splunk, Elastic) as an enrichment signal.
|
| 116 |
+
- **Retrain on your own logs** β point `LOG_FILE` at your data and run
|
| 117 |
+
`train_and_generate.py` to specialize the model to your environment.
|
| 118 |
+
|
| 119 |
+
## Future scope
|
| 120 |
+
|
| 121 |
+
Natural next steps to make this research prototype more capable and production-ready:
|
| 122 |
+
|
| 123 |
+
- **Per-source models & thresholds** β separate models for SSH, Apache, kernel,
|
| 124 |
+
etc., removing the single-global-threshold weakness.
|
| 125 |
+
- **Session / sequence-level modeling** β detect anomalous *sequences* of events
|
| 126 |
+
(e.g. login β privilege escalation β data access), not just single lines.
|
| 127 |
+
- **Larger context & scale** β bigger `d_model`, more layers, longer
|
| 128 |
+
`max_seq_len`, and training on full Loghub datasets (millions of lines).
|
| 129 |
+
- **Template-aware tokenization** β parse logs into templates + variables (Γ la
|
| 130 |
+
Drain) so IPs/IDs don't inflate the vocabulary or the anomaly score.
|
| 131 |
+
- **Calibrated scoring** β convert raw perplexity into probabilities/severity
|
| 132 |
+
levels, with per-line-position attribution ("which token was surprising?").
|
| 133 |
+
- **Real-time serving** β expose the scorer as a REST/gRPC service or a Hugging
|
| 134 |
+
Face **Space** (Gradio demo) for interactive use.
|
| 135 |
+
- **`transformers` integration** β wrap as a `PreTrainedModel` so it loads via
|
| 136 |
+
`AutoModel.from_pretrained` and plugs into the standard ecosystem.
|
| 137 |
+
- **Evaluation & benchmarking** β measure precision/recall on labeled anomaly
|
| 138 |
+
datasets (e.g. BGL, HDFS) against baselines like DeepLog and LogBERT.
|
| 139 |
+
- **Explainability & feedback loop** β let analysts confirm/dismiss flags to
|
| 140 |
+
continuously refine the threshold and reduce false positives.
|
| 141 |
+
|
| 142 |
## Limitations
|
| 143 |
|
| 144 |
- Trained on a **small, mixed** corpus (three log sources). A single global
|