SAVRN
Search Contact SAVRN

Open-weight model · Text classification

multilingual-intent-router

by Gaurav Gandhi gauravgandhi2411/multilingual-intent-router

multilingual-intent-router is an open-weight model for text classification from Gaurav Gandhi, released under MIT License. It has 278M parameters and a 514-token context. At 16-bit it needs about 0.7 GB of GPU memory, which fits on 1x MI300X from $1.85 an hour, at the lowest prices in the SAVRN Index. It draws 28 downloads a month.

This is v1, the shipped model (branch main): a 12-class intent classifier for logistics chat messages, fine-tuned from intfloat/multilingual-e5-base, with an optional abstention flag for messages unlike the training data.

Parameters278M
Context514
Weights1.1 GB
Licensemit
AccessOpen weights
Monthly Downloads28

Runs On

What it takes to serve multilingual-intent-router (278M parameters): the memory its weights need at each precision, and the cheapest way to rent enough data-center GPUs to hold them.

PrecisionWeightsMemory neededCheapest setupPer hourAlso fits
16-bit 0.6 GB 0.7 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00
8-bit 0.3 GB 0.3 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00
4-bit 0.1 GB 0.2 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00

Memory is the weights at that precision plus 20% for the runtime and a short context; a long context needs more. Prices are the lowest on-demand hourly rates in the SAVRN Index, read Oct 7, 2026.

multilingual-intent-router on every accelerator the SAVRN Index prices, at every precision

Model Card

By Gaurav Gandhi, published under mit, revision ce30391c5429.

This is v1, the shipped model (branch main): a 12-class intent classifier for logistics chat messages, fine-tuned from intfloat/multilingual-e5-base, with an optional abstention flag for messages unlike the training data. A robustness variant (v3) is on branch robust-v3. Model fingerprint (sha256 of fp32 state dict): 7ca22e16d2ace345d9dcf7737887e85fedf400a1dfc863678c2fc2663bf102bd Abstention (the out-of-distribution flag) is NOT part of the plain model: it needs predict.py and oodbank.safetensors from the same repository, used as follows. Confidences are temperature-scaled (T = 1.0228); messages whose Mahalanobis score falls below the threshold (-128.06 v1 / -178.56 v3; this model's…

Read Gaurav Gandhi's full model card

Multilingual intent router (v1, shipped)

This is v1, the shipped model (branch main): a 12-class intent classifier for logistics chat messages, fine-tuned from intfloat/multilingual-e5-base, with an optional abstention flag for messages unlike the training data. A robustness variant (v3) is on branch robust-v3.

Model fingerprint (sha256 of fp32 state dict): 7ca22e16d2ace345d9dcf7737887e85fedf400a1dfc863678c2fc2663bf102bd

Label map

id label
0 ai_agent_performance
1 appointment_manager
2 chitchat
3 customer_support
4 document_processing
5 knowledge_base
6 orders
7 other
8 shipment_information.analytics
9 shipment_information.disruptions
10 shipment_information.realtime_query
11 yard_management

Usage

import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizer

repo = "gauravgandhi2411/multilingual-intent-router"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForSequenceClassification.from_pretrained(repo).eval()
text = "query: " + "where is my shipment?"   # the E5 prefix is required
with torch.no_grad():
    logits = model(**tok(text, return_tensors="pt", truncation=True, max_length=64)).logits
print(model.config.id2label[int(logits.argmax(-1))])

Abstention (the out-of-distribution flag) is NOT part of the plain model: it needs predict.py and ood_bank.safetensors from the same repository, used as follows. Confidences are temperature-scaled (T = 1.0228); messages whose Mahalanobis score falls below the threshold (-128.06 v1 / -178.56 v3; this model's threshold = -128.06, set to retain 95.0% of validation rows) are flagged abstained.

from huggingface_hub import snapshot_download
import sys
path = snapshot_download("gauravgandhi2411/multilingual-intent-router", revision="main")
sys.path.insert(0, path)
from predict import IntentRouter          # needs only torch, transformers, safetensors, numpy
router = IntentRouter.from_pretrained(path)
router.predict("...")   # {label, confidence, ood_score, abstained, top3}

Training data

A 500-row synthetic logistics intent dataset (12 classes, per-class counts 30 to 55) provided for an assessment. It is not redistributed and no dataset text is included. Fixed splits: 352 training rows, 74 validation rows (epoch, temperature and threshold selection), 74 test rows (one logged evaluation); model seed 42.

Intended and out-of-scope use

Intended: routing short, single-turn logistics chat messages (shipment status, analytics, disruptions, appointments, orders, documents, yard operations, support, knowledge-base, chit-chat) to one of the 12 intents; research and portfolio demonstration of the evaluation methodology.

Out of scope: safety or security controls; regulated or high-stakes decisions; languages other than English, Spanish, French, German and Chinese; messages longer than a short chat turn; relying on the abstention flag to catch new intents (it is a weak detector, see below); any claim of generalisation beyond a 500-row synthetic dataset.

Track A: closed-set classification

Test split, n = 74, one logged evaluation; 95% percentile-bootstrap intervals over rows.

metric v1 point [95% CI]
test macro-F1 0.947 [0.865, 0.989]
test accuracy 0.946 [0.892, 0.986]
out-of-fold macro-F1 (post-selection, optimistic; 426 train+val rows) 0.953 [0.932, 0.971]

Per-class test F1:

class F1 support
ai_agent_performance 1.000 6
appointment_manager 0.923 7
chitchat 1.000 5
customer_support 0.727 6
document_processing 0.833 6
knowledge_base 1.000 6
orders 0.933 7
other 1.000 4
shipment_information.analytics 1.000 8
shipment_information.disruptions 1.000 5
shipment_information.realtime_query 0.941 8
yard_management 1.000 6

Track B: open-set rejection

Whole classes are held out (3 model seeds: 42, 43, 44; 62 known and 80 unknown evaluation rows). The threshold keeps 95% of known rows.

headline holdout v1 point [95% CI]
AUROC 0.870 [0.811, 0.923]
strict rejection recall @95% retention 0.342 [0.263, 0.425]
known retention @95 0.968 [0.925, 1.000]

Open-set rejection is weak: most unseen-intent messages are not rejected at that operating point. A supervised oracle probe (it sees the held-out class labels, so it is an upper bound) reaches AUROC 0.969 on unseen-known rows against 0.870 for the unsupervised score used here.

v1 vs v3

Source: results/tradeoff_v1_v3.json (one logged test evaluation each; paired delta is v3 minus v1).

metric v1 v3 paired delta [95% CI]
test macro-F1 (n = 74) 0.947 [0.865, 0.989] 0.961 [0.879, 1.000] no paired CI
headline AUROC 0.870 [0.811, 0.923] 0.829 [0.762, 0.890] -0.041 [-0.076, -0.010]
headline strict rejection @95% retention 0.342 [0.263, 0.425] 0.208 [0.142, 0.283] -0.133 [-0.204, -0.067]
CONFIRM strict rejection @90% retention 0.464 [0.402, 0.527] 0.361 [0.303, 0.421] -0.102 [-0.175, -0.030]
neutral-swap flip rate (CV, lower is better) 0.238 0.052 -0.187 [-0.250, -0.123]
translation agreement (CV, higher is better) 0.853 0.900 0.046 [0.027, 0.066]

Limitations

  • Weak open-set rejection (measured): strict rejection recall at 95% retention is 34.2% on the headline holdout (CI 26.2% to 42.5%). Do not rely on abstained to catch new intents.
  • Identifier-prefix shortcut: the shipped model keys on identifier prefixes: the cross-validated neutral-swap flip rate is 0.238 (the robustness variant v3 reduces it to 0.052); on the test split the swaps flip 0.400 of 25 pairs.
  • Small test set: n = 74; differences between v1 and v3 on Track A are inside the noise.
  • Synthetic data: 500 synthetic rows from one source; real-world performance is unmeasured.
  • Language coverage: 12.4% of messages have a non-English primary language, so non-English behaviour is thinly measured. Under machine translation the prediction agreement with the English prediction is 0.853 for v1 and 0.900 for v3 (synthetic translations, not native text).
  • LLM baselines: only local 8B-class open-weight models (qwen3:8b, llama3.1:8b) were tested; no frontier or hosted LLM was evaluated.

Links

  • Report: report.pdf
  • GitHub: https://github.com/gaurav-gandhi-2411/multilingual-intent-router
  • W&B report: https://wandb.ai/gauravgandhi429-gaurav-gandhi/multilingual-intent-router/reports/Submission-summary--VmlldzoxODA1MTA3Mw==
  • Colab: notebook

Configuration

Architecture
XLMRobertaForSequenceClassification
Context length (tokens)
514
Layers
12
Hidden size
768
Feed-forward size
3,072
Attention heads
12
Vocabulary size
250,002
Model type
xlm-roberta

Identity and Version

Repository
gauravgandhi2411/multilingual-intent-router
Publisher
Gaurav Gandhi
Task
Text classification
Modality
Text
Library
transformers
Parameters
278M parameters
Languages
en, es, fr, de, zh
Revision
ce30391c5429557901405ebdc2ef654bd8ab0f41
First published
2026-10-02
Last updated
2026-10-04

Files and Weights

8 files, 1.1 GB in total. The weights are 2 files totalling 1.1 GB in safetensors.

Weights2 files · 1.1 GB
Configuration2 files · 9.5 KB
Tokenizer2 files · 17.1 MB
Documentation1 file · 7.8 KB
Repository1 file · 1.6 KB
Every file
FileTypeSizeSHA-256
model.safetensorsWeights1.1 GB 9a8d5dd7dae0
ood_bank.safetensorsWeights4.8 MB ad90ecccffaa
config.jsonConfiguration1.9 KB —
predict.pyConfiguration7.6 KB —
README.mdDocumentation7.8 KB —
.gitattributesRepository1.6 KB —
tokenizer.jsonTokenizer17.1 MB bc5c11519489
tokenizer_config.jsonTokenizer399 B —

License and Download

License
mit
Access
Open weights, no gate
Download size
1.1 GB
Download from Gaurav Gandhi

Released by Gaurav Gandhi through its official repository on Hugging Face. Read the license.

Built From

Evaluations

Each result is shown as reported, with the conditions its reporter stated. None is a SAVRN measurement. A comparison lines two results up only when their configuration, unit and setup are all stated and identical.

BenchmarkConditionsResultReported byRevisionDate
assessment synthetic logistics intents (not redistributed) Task text-classificationMetric accuracyComparison conditions not established 0.9459 gauravgandhi2411
Publisher reported
Evaluated revision not stated —
assessment synthetic logistics intents (not redistributed) Task text-classificationMetric macro-F1Comparison conditions not established 0.9465 gauravgandhi2411
Publisher reported
Evaluated revision not stated —

Memory Requirements

PrecisionWeights in memory
As published1.1 GB
16-bit0.6 GB
8-bit0.3 GB
4-bit0.1 GB

Weights only, from the published parameter count; the key-value cache and runtime add to this.

Questions About multilingual-intent-router

How much GPU memory does multilingual-intent-router need?

About 0.7 GB at 16-bit and 0.2 GB at 4-bit: the weights (278M parameters) plus a working margin. A long context needs more.

What is the cheapest GPU to run multilingual-intent-router on?

At 16-bit, 1x MI300X from $1.85 an hour; at 4-bit, 1x MI300X from $1.85 an hour, at the lowest on-demand prices the SAVRN Index lists.

Can I use multilingual-intent-router commercially?

Yes. multilingual-intent-router is released under MIT License. The MIT License is a short permissive license. It permits commercial use, modification and redistribution, provided the copyright notice and permission notice are included.

What is multilingual-intent-router's context length?

514 tokens, from the maximum position embeddings in its published configuration.

Similar Models

This model is a fine-tuned version of xlm-roberta-base on the Language Identification dataset. This model is an XLM-RoBERTa transformer model with a classification head on top (i.e. a linear layer on top of the pooled output). For additional information please refer to the xlm-roberta-base model card or to the paper Unsupervised Cross-lingual Representation Learning at Scale by Conneau et al. You can directly use this model as a language detector, i.e. for sequence classification tasks. Currently, it supports the following 20 languages: arabic (ar), bulgarian (bg), german (de), modern greek (el), english (en), spanish (es), french (fr), hindi (hi), italian (it), japanese (ja), dutch (nl)…

Open weights mit 278M parameters 514 tokens transformers

Model · Text classification

Bangla-twoclass-Sentiment-Analyzer

Arunava Kar

This model is a fine-tuned version of xlm-roberta-base on the None dataset. It achieves the following results on the evaluation set: The following hyperparameters were used during training: - learningrate: 3e-05 - trainbatchsize: 16 - evalbatchsize: 16 - lrschedulertype: linear - trainingsteps: 1800 - mixedprecisiontraining: Native AMP - Transformers 4.37.2 - Pytorch 2.1.0+cu121 - Datasets 2.17.1 - Tokenizers 0.15.2

Open weights mit 278M parameters 514 tokens transformers

Model · Text classification

snd_sentiment_analysis

Danish Mahdi

This repository contains a fine-tuned XLM-RoBERTa Base model for 3-class sentiment classification in Sindhi. The model predicts one of the following labels: - positive - neutral - negative This model is intended for research, experimentation, and lightweight production prototyping on Sindhi-language sentiment analysis tasks. It may be useful for short-text classification such as reviews, feedback, and social-media snippets. It should not be used as the only basis for high-stakes decisions. Performance can vary by domain, dialect, and writing style, and human review is recommended when errors could affect people or organizations. The saved model artifacts in this repository report the…

Open weights mit 278M parameters 514 tokens transformers

We have updated the new reranker, supporting larger lengths, more languages, and achieving better performance. More details please refer to our Github: FlagEmbedding. FlagEmbedding focuses on retrieval-augmented LLMs, consisting of the following projects currently: - 3/18/2024: Release new rerankers, built upon powerful M3 and LLM (GEMMA and MiniCPM, not so large actually) backbones, supporitng multi-lingual processing and larger inputs, massive improvements of ranking performances on BEIR, C-MTEB/Retrieval, MIRACL, LlamaIndex Evaluation. - 3/18/2024: Release Visualized-BGE, equipping BGE with visual capabilities. Visualized-BGE can be utilized to generate embeddings for hybrid image-text…

Open weights mit 278M parameters 514 tokens sentence-transformers

Model · Text classification

indicbert-scam-classifier

Anmol Shrivastav

A sequence classification model fine-tuned on top of ai4bharat/IndicBERTv2-MLM-only to detect fraudulent, phishing, and scam messages across 14 Indian languages and language varieties. The model is designed with a focus on lightweight multilingual scam detection for Indian communications and common fraud patterns. This model is intended to detect common fraud and scam patterns prevalent across Indian communications, including: - Electricity and utility disconnection threats. - Impersonation of major institutions such as banks, India Post, and courier services. - Fake lottery, subsidy, and government-scheme claims. - Suspicious payment requests and fee demands. - Phishing and malicious…

Open weights mit 278M parameters 512 tokens transformers

Model · Text classification

indicbert-scam-classifier-v2

Anmol Shrivastav

A sequence classification model fine-tuned on top of ai4bharat/IndicBERTv2-MLM-only to detect fraudulent, phishing, and scam messages across 14 Indian languages and language varieties[cite: 4]. This v2 model represents a significant upgrade over the baseline v1 iteration, leveraging advanced entity masking and continuous feedback loop training on a T4 GPU to heavily reduce False Negatives (scam $ightarrow$ ham misclassifications). The original v1 baseline achieved a highly respectable 98.29% accuracy but exhibited vulnerabilities to specific scam evasion tactics (e.g., protocol obfuscation like hxxp://, naked domains, and specific tele-fraud requests)[cite: 4]. To resolve this, v2 was…

Open weights mit 278M parameters 512 tokens transformers