File size: 6,744 Bytes
964293d 5ae6539 a0a358a 5ae6539 a0a358a 5ae6539 a0a358a 964293d 5ae6539 702de15 5ae6539 702de15 5ae6539 702de15 5ae6539 5a7c588 c00edbc 5a7c588 c00edbc 5a7c588 c00edbc 5a7c588 c00edbc 702de15 c00edbc 5a7c588 c00edbc 5a7c588 c00edbc 5a7c588 c00edbc 702de15 5a7c588 702de15 5a7c588 702de15 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | ---
license: apache-2.0
library_name: onnx
pipeline_tag: text-classification
language:
- en
- ja
- fr
- de
- es
- it
- ru
- ko
- zh
tags:
- torrent
- metadata-classification
- byte-transformer
- onnx
- int8
- cpu-inference
---
# Armiger `v3.2.1` (Model Bundle `v3.0.0` / `v3.0-gold-r5`) — 15.7 MB INT8 ONNX CPU Classifier
**Release:** [`v3.2.1`](https://github.com/spencernorton/armiger/releases/tag/v3.2.1) · **Model Version:** `3.0.0` (`v3.0-gold-r5`) · **Artifact:** `15.7 MB` (`armiger.int8.onnx` / `armiger.onnx`, per-channel asymmetric INT8 with FP32 embeddings) · **CPU latency:** `2.44 ms/item` (`326 items/s` batch-64, M4 Pro CPU) · **License:** Apache-2.0
**Armiger (`NorviTech/armiger`)** is the CPU-only INT8 edition of the 9-head byte-level RoPE Transformer (`8,295,882` parameters). It needs only `numpy` + `onnxruntime` and keeps **`99.90%`** parity with the 32.5 MB FP32 model. Library and container release **`3.2.1`** uses model bundle **`3.0.0`**. For FP32 weights and all 6 plugins (`SwarmSurvivalNet`, `SwarmPriors`, `ZeroCueCatalog`, `AudioLanguageGuard`, `CalibrationAndDHT`, `ArmigerDHTDBSync`), use [`NorviTech/armiger-ultra`](https://huggingface.co/NorviTech/armiger-ultra).
## Neural Outputs & Benchmark Summary
- **9 outputs, one CPU pass:** `category` (11-class), `adult`, `junk`/malware, `anime`, `english_subs`, spoken `lang`, `title_language`, `owner_scope`, and per-byte `span_bio` title/year/episode tags via a 7-tag Viterbi mask (`0` illegal transitions).
- **INT8 accuracy (all 3 suites):**
- **`Suite B LOTO N=1,025`:** **`96.85%`** 6-dimension composite (`95% CI [96.33%, 97.36%]` with plugins) vs. Gemini Flash (`94.56%`), OpenAI GPT Fast Tier (`93.49%`, 5-dim; Junk N/A (Unprompted)), Claude Haiku 4.5 (`92.88%`).
- **`W5A-Test N=703` (Rule-3 Gold):** **`97.01%`** 11-class accuracy (`95% Wilson CI [95.47%, 98.04%]`); **`96.87%`** 6-core-head exact match.
- **`R5-Test N=996` (7-key zero-leakage):** **`91.16%`** INT8 9-class accuracy (FP32 `91.27%`; `99.90%` parity), **`99.22%`** Title Language (`n=511`), **`99.09%`** English Subtitles (`n=110`), **`98.90%`** Owner Scope (`n=996`), **`90.32%`** BIO Balanced Byte Accuracy (`n=882`), **`85.84%`** all-heads exact match (`n=996`).

## Quickstart (Standalone CPU ONNX Runtime)
### Option A — Install the Python package (`v3.2.1`) with verified model download
```bash
python -m pip install "armiger @ git+https://github.com/spencernorton/armiger.git@v3.2.1"
python -m armiger download --directory ./models-cpu --variant cpu
```
```python
from armiger import ArmigerStandaloneONNX
model = ArmigerStandaloneONNX(
onnx_path="./models-cpu/armiger.int8.onnx",
vocab_path="./models-cpu/vocab.json",
calibration_path="./models-cpu/calibration.json",
)
res = model.predict({
"name": "Tears.of.Steel.2012.1080p.BluRay.x264-OPEN",
"size": 8_500_000_000,
"files": [{"path": "Tears.of.Steel.2012.mkv", "size": 8_500_000_000}],
})
print(res["heads"]["category"], res["matching_identity"], res["mondrian_gates"]["passed_all"])
```
### Option B — Run directly from a checkout of this Hugging Face repository
```python
from armiger_inference import ArmigerStandaloneONNX
model = ArmigerStandaloneONNX() # auto-loads armiger.onnx, vocab.json, calibration.json
res = model.predict({
"name": "Tears.of.Steel.2012.1080p.BluRay.x264-OPEN",
"size": 8_500_000_000,
"files": [{"path": "Tears.of.Steel.2012.mkv", "size": 8_500_000_000}],
})
print(res["heads"]["category"], res["matching_identity"], res["mondrian_gates"]["passed_all"])
```
## Ready-Made Docker Setups & Integrations (`v3.2.1`)
- **Full FP32 + 6-plugin suite:** [`NorviTech/armiger-ultra`](https://huggingface.co/NorviTech/armiger-ultra)
- **Core package, containers & evaluation harness (`v3.2.1`):** [`spencernorton/armiger`](https://github.com/spencernorton/armiger) · **License:** Apache-2.0
- **[Bitmagnet + Armiger Ultra](https://github.com/spencernorton/armiger/blob/main/examples/bitmagnet/README.md):** Two-line Docker Compose setup (`include: [oci://ghcr.io/spencernorton/armiger-bitmagnet-stack:3.2.1]`) · [Environment-Variable Reference](https://github.com/spencernorton/armiger/blob/main/docs/bitmagnet-configuration.md)
- **[Rats Search + Armiger Ultra](https://github.com/spencernorton/armiger/blob/main/examples/rats-search/README.md):** Two-line Docker Compose setup (`include: [oci://ghcr.io/spencernorton/armiger-rats-search-stack:3.2.1]`)
- **[Standalone Armiger Ultra HTTP Container](https://github.com/spencernorton/armiger/blob/main/docs/quickstart.md):** Prebuilt multi-arch image `ghcr.io/spencernorton/armiger:3.2.1` with `/v1/classify` and `/healthz`
- **[Python API & Component Reference](https://github.com/spencernorton/armiger/blob/main/docs/reference.md)** · **[Evaluation & Limitations](https://github.com/spencernorton/armiger/blob/main/docs/evaluation.md)**
- **Standalone sidecars & connectors (`v1.1.1`):** [`spencernorton/Armiger-Connectors`](https://github.com/spencernorton/Armiger-Connectors)
- **Stock Bitmagnet (`bitmagnet-io/bitmagnet`):** [`bitmagnet/bitmagnet_connector.py`](https://github.com/spencernorton/Armiger-Connectors/blob/main/bitmagnet/bitmagnet_connector.py) — polls untagged torrents via GraphQL, runs vectorized Armiger inference, prunes `.exe`/`.scr`/`.lnk` malware and honeypot traps, writes `armiger-*` tags.
- **Stock Rats Search (`librats/rats-search`):** [`rats-search/rats_search_connector.py`](https://github.com/spencernorton/Armiger-Connectors/blob/main/rats-search/rats_search_connector.py) — drop-in REST/SQLite sidecar classifier and safety filter.
- **DH-Waypoint `processorapi/v1` plugin** ([`spencernorton/DH-Waypoint`](https://github.com/spencernorton/DH-Waypoint)): [`dh-waypoint/`](https://github.com/spencernorton/Armiger-Connectors/tree/main/dh-waypoint) — admission (`/v1/admit`), batch (`/v1/classify`), 4-tier feedback (`/v1/feedback`).
- **Torznab pre-grab proxy (`Prowlarr`/`Sonarr`/`Radarr`/`Lidarr`/`Readarr`):** [`arr-stack/armiger_torznab_proxy.py`](https://github.com/spencernorton/Armiger-Connectors/blob/main/arr-stack/armiger_torznab_proxy.py) — filters malware lures, dead swarms, and unrequested foreign-audio releases before grab.
- **Post-import `*Arr`/qBittorrent webhook:** [`arr-stack/armiger_arr_webhook_receiver.py`](https://github.com/spencernorton/Armiger-Connectors/blob/main/arr-stack/armiger_arr_webhook_receiver.py) — `ffprobe` ground truth for local conformal calibration and opt-in anonymous BEP-44/46 updates.
|