Decision-WAF-V1-0.1B

A compact request classifier for a web application firewall. It reads a single HTTP request — method, path, query, and headers inspection; bodies are not inspected and answers one question: is this request benign, or which attack class is it? It replies with a single letter token, which the decision-waf ingress scores as a probability distribution over the categories. It is the smallest member of the Decision-WAF family: 149M parameters on the AxiomicLabs/GPT-X3-150M base, a hybrid of 18 GDN2 linear-attention layers and 6 GQA layers with RoPE.

What it is designed for

  • Per-request WAF verdicts: block-or-allow with a tunable threshold on the attack score (1 − p(benign)).
  • HTTP inspection: classify requests using the method, path, query, and headers without inspecting request bodies.
  • Defense in depth, not sole protection: it is one signal in front of real services, alongside TLS, authentication, and backups. It is not an exploit detector or a substitute for patching.

Categories

benign · auth_abuse · file_access · injection · other_attack · recon · ssrf_redirect · xss

Intended use and serving

  • Loads via transformers with trust_remote_code=True (the custom TX5 modeling files ship in this repository); fine-tuning requires flash-linear-attention>=0.6.0 on CUDA for the GDN2 fast path.
  • No GGUF yet: the TX5 architecture is not in llama.cpp. Serve via transformers or vLLM behind a systemone-compatible adapter, or use the larger family members for llama.cpp-native serving.
  • Latency: ~2.5 s per request on an Apple M-series GPU (batch 1, MPS, unoptimized reference path); sub-100 ms class expected on CUDA with fla kernels.

Training

LoRA r=64, α=128, approximately 15M trainable parameters on GPT-X3-150M, merged into the base weights. One-token classification head readout; loss on the answer token only. Trained for 4,591 steps (approximately 2.2 h) on a single RTX 4000 SFF Ada, using exact-length batching so the GDN2 layers run their flash-linear-attention kernels.

Data: approximately 150k labeled HTTP requests, with the evaluation set strictly held out via request-line, query-value, and header-value fingerprints. Same data recipe as Decision-WAF-V1.1-0.8B.

Evaluation

Benchmark: recall vs FPR and F1 vs threshold

The benchmark set (299 requests: 145 benign, 154 attacks) uses the same harness for all models. h2o-lightning-4b and d1-3B numbers are from the official decision-waf-eval reports, jev-latest from api.typesafe.ai (threshold grid 0.05–0.95); Decision-WAF models are computed from per-row scores on the same rows, backend and scoring semantics (attack score = 1 − p(benign)).

Threshold sweep (attack recall / false-positive rate):

threshold h2o-lightning-4b d1-3B jev-latest Decision-WAF-V1-0.1B
0.05 1.000 / 1.000 1.000 / 1.000 1.000 / 0.262 0.688 / 0.034
0.10 0.994 / 0.517 1.000 / 0.945 1.000 / 0.234 0.675 / 0.021
0.20 0.968 / 0.248 0.994 / 0.621 0.987 / 0.166 0.649 / 0.021
0.35 0.961 / 0.221 0.909 / 0.159 0.974 / 0.103 0.636 / 0.021
0.50 0.955 / 0.207 0.799 / 0.055 0.916 / 0.055 0.617 / 0.021
0.70 0.922 / 0.152 0.636 / 0.028 0.909 / 0.055 0.565 / 0.007
0.80 0.903 / 0.131 0.565 / 0.007 0.903 / 0.048 0.539 / 0.007
0.90 0.896 / 0.055 0.461 / 0.000 0.864 / 0.048 0.526 / 0.007
0.95 0.857 / 0.041 0.338 / 0.000 0.851 / 0.048 0.513 / 0.007

Best F1 per model (dots on the chart):

Model Best F1 at threshold P / R / FPR Best recall @ FPR ≤ 1%
h2o-lightning-4b 0.920 0.90 0.945 / 0.896 / 0.055 none (min FPR 4.1%)
d1-3B 0.883 0.35 0.859 / 0.909 / 0.159 0.565
jev-latest 0.941 0.32 0.904 / 0.981 / 0.110 0.799
Decision-WAF-V1-0.8B 0.936 0.001 0.979 / 0.896 / 0.021 0.851
Decision-WAF-V1.1-0.8B 0.967 0.002 0.974 / 0.961 / 0.028 0.916
Decision-WAF-V1-0.4B 0.944 0.08 0.960 / 0.929 / 0.041 0.779
Decision-WAF-V1-0.1B 0.826 0.001 0.913 / 0.753 / 0.076 0.565

Known limitations:

  • Outperformed by every other Decision-WAF model and both reference models on this benchmark; use a larger family member for production traffic screening.
  • Does not detect header-borne Log4Shell/Shellshock payloads (scores ~0.0001; the 0.4B and 0.8B models score 0.999+).
  • High validation accuracy (0.983) against far lower benchmark recall indicates the model fits the training distribution but generalizes weakly — a capacity limit at this scale, not a data gap.
  • Headers-only: body-borne attacks are out of scope in the current inspection mode.
  • Trained on curated and synthetic data; distribution shift can move both error directions. Monitor and retrain.
  • A WAF classifier can be evaded and can misclassify; use as one layer, keep audit logs, and never let it be the only thing between the internet and a vulnerable service.

Files

  • model.safetensors + tokenizer — merged HF weights, with the custom TX5 modeling files (modeling_gptx3.py, configuration_gptx3.py) required by trust_remote_code.
  • No GGUF: TX5 is not yet a llama.cpp architecture.
Downloads last month
623
Safetensors
Model size
0.1B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for 0xBrandon/Decision-WAF-V1-0.1B

Finetuned
(1)
this model