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-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.
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.
| Precision | Weights | Memory needed | Cheapest setup | Per hour | Also 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
abstainedto 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.
Every file
| File | Type | Size | SHA-256 |
|---|---|---|---|
| model.safetensors | Weights | 1.1 GB | 9a8d5dd7dae0 |
| ood_bank.safetensors | Weights | 4.8 MB | ad90ecccffaa |
| config.json | Configuration | 1.9 KB | — |
| predict.py | Configuration | 7.6 KB | — |
| README.md | Documentation | 7.8 KB | — |
| .gitattributes | Repository | 1.6 KB | — |
| tokenizer.json | Tokenizer | 17.1 MB | bc5c11519489 |
| tokenizer_config.json | Tokenizer | 399 B | — |
License and Download
- License
- mit
- Access
- Open weights, no gate
- Download size
- 1.1 GB
Released by Gaurav Gandhi through its official repository on Hugging Face. Read the license.
Built From
- Derived from intfloat/multilingual-e5-base
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.
| Benchmark | Conditions | Result | Reported by | Revision | Date |
|---|---|---|---|---|---|
| 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
| Precision | Weights in memory |
|---|---|
| As published | 1.1 GB |
| 16-bit | 0.6 GB |
| 8-bit | 0.3 GB |
| 4-bit | 0.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 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
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…
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…
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…
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…