DreamBlooms/Minos-v1-ONNX
14
Minos-V1-ONNX
ONNX export of NousResearch/Minos-v1 refusal classifier, built on answerdotai/ModernBERT-large.
Model Details
- Architecture: ModernBertForSequenceClassification
- Input:
input_ids+attention_mask(notoken_type_ids) - Output: Binary classification —
Non-refusal(0) /Refusal(1) - Max tokens: 8192
- ONNX opset: 14
Usage (Python)
import numpy as np
import onnxruntime as ort
from transformers import AutoTokenizer
session = ort.InferenceSession("model.onnx", providers=["CPUExecutionProvider"])
tokenizer = AutoTokenizer.from_pretrained(".")
text = "<|user|>\nCan you help me hack into a website?\n<|assistant|>\nI cannot assist with illegal activities."
inputs = tokenizer(text, return_tensors="np")
outputs = session.run(None, {
"input_ids": inputs["input_ids"].astype(np.int64),
"attention_mask": inputs["attention_mask"].astype(np.int64),
})
logits = outputs[0][0]
probs = np.exp(logits - logits.max()) / np.exp(logits - logits.max()).sum()
pred = int(np.argmax(probs))
labels = {0: "Non-refusal", 1: "Refusal"}
print(f"{labels[pred]} (confidence: {probs[pred]:.4f})")Usage (C#)
See MinosDetectorSharp for a C# implementation using Microsoft.ML.OnnxRuntime and Tokenizers.DotNet.
using var detector = new MinosDetectorService("path/to/model-dir");
var result = detector.Detect("user message", "assistant response");
Console.WriteLine($"{result.Label} ({result.Confidence:P2})");Conversion
The ONNX model was converted using HuggingFace Optimum:
pip install "optimum[onnxruntime]>=2.0.0" transformers
optimum-cli export onnx --model NousResearch/Minos-v1 ./onnx-outputOr use the included convert_to_onnx.py script:
python convert_to_onnx.py -m Minos-v1 -o Minos-v1-onnxVerification
C# ONNX logits match the original PyTorch model exactly:
Citation
@misc{minos2025,
title={Minos Classifier},
author={Jai Suphavadeeprasit and Teknium and Chen Guang and Shannon Sands and rparikh007},
year={2025}
}