CoolFace
Modelpublic

Dl26/Veyra-20M

sourceHugging Faceapache-2.0updated 4mo agoView on Hugging Face
3likes7downloads
Model Card

Veyra-20M: Compact Many-Label Intent Classification

Veyra-20M is a small, encoder-only text classification model built by Dl26. It is designed for fast English banking-intent and topic-style classification using a BERT-style bidirectional Transformer encoder.

The released checkpoint, Dl26/Veyra-20M, is a 20M-parameter-class classifier trained from random initialization. It uses the standard Transformers bert model type, so it loads with AutoModelForSequenceClassification and does not require trust_remote_code=True.

Why this model

  • —Compact encoder-only classifier
  • —Many-label classification setup with 77 labels
  • —Standard Hugging Face Transformers compatibility
  • —No custom architecture Python files
  • —Fast batch inference on CPU or GPU
  • —Built for intent routing, query classification, triage, and lightweight encoder research

Model details

PropertyValue
Model nameVeyra-20M
DeveloperDl26
Model typeEncoder-only sequence classifier
Transformers model typebert
ArchitectureBertForSequenceClassification
Parameters21,342,285
Hidden size512
Layers6
Attention heads8
Intermediate size2,048
Max positions256
Vocabulary size3,892
Number of labels77
Training objectiveSupervised single-label classification
LicenseApache 2.0

Supported labels

IDLabel
0activate_my_card
1age_limit
2apple_pay_or_google_pay
3atm_support
4automatic_top_up
5balance_not_updated_after_bank_transfer
6balance_not_updated_after_cheque_or_cash_deposit
7beneficiary_not_allowed
8cancel_transfer
9card_about_to_expire
10card_acceptance
11card_arrival
12card_delivery_estimate
13card_linking
14card_not_working
15card_payment_fee_charged
16card_payment_not_recognised
17card_payment_wrong_exchange_rate
18card_swallowed
19cash_withdrawal_charge
20cash_withdrawal_not_recognised
21change_pin
22compromised_card
23contactless_not_working
24country_support
25declined_card_payment
26declined_cash_withdrawal
27declined_transfer
28direct_debit_payment_not_recognised
29disposable_card_limits
30edit_personal_details
31exchange_charge
32exchange_rate
33exchange_via_app
34extra_charge_on_statement
35failed_transfer
36fiat_currency_support
37get_disposable_virtual_card
38get_physical_card
39getting_spare_card
40getting_virtual_card
41lost_or_stolen_card
42lost_or_stolen_phone
43order_physical_card
44passcode_forgotten
45pending_card_payment
46pending_cash_withdrawal
47pending_top_up
48pending_transfer
49pin_blocked
50receiving_money
51Refund_not_showing_up
52request_refund
53reverted_card_payment?
54supported_cards_and_currencies
55terminate_account
56top_up_by_bank_transfer_charge
57top_up_by_card_charge
58top_up_by_cash_or_cheque
59top_up_failed
60top_up_limits
61top_up_reverted
62topping_up_by_card
63transaction_charged_twice
64transfer_fee_charged
65transfer_into_account
66transfer_not_received_by_recipient
67transfer_timing
68unable_to_verify_identity
69verify_my_identity
70verify_source_of_funds
71verify_top_up
72virtual_card_not_working
73visa_or_mastercard
74why_verify_identity
75wrong_amount_of_cash_received
76wrong_exchange_rate_for_cash_withdrawal

Installation

bash
pip install -U transformers torch accelerate

Quick start

python
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

model_id = "Dl26/Veyra-20M"

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForSequenceClassification.from_pretrained(model_id)
model.eval()

text = "Can you help me reset my password?"
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=64)

with torch.no_grad():
    logits = model(**inputs).logits

label_id = int(logits.argmax(dim=-1))
print(model.config.id2label[label_id])

Batch inference

python
texts = [
    "Book me a flight to Zurich tomorrow morning.",
    "What is the weather like today?",
    "Please cancel my card.",
]

inputs = tokenizer(
    texts,
    return_tensors="pt",
    truncation=True,
    padding=True,
    max_length=64,
)

with torch.no_grad():
    logits = model(**inputs).logits

for text, label_id in zip(texts, logits.argmax(dim=-1).tolist()):
    print(model.config.id2label[label_id], "-", text)

Evaluation highlights

EvaluationResult
Validation accuracy0.8890
Test accuracy0.8976
Remote code requiredNo

Intended use

Veyra-20M is intended for:

  • —intent classification
  • —query routing
  • —customer-support triage
  • —lightweight text classification
  • —many-class encoder experiments
  • —CPU-friendly classifier deployments

Limitations

  • —The model is specialized for the supported intent labels.
  • —It is trained for English short utterances.
  • —It may fail on long documents or out-of-domain language.
  • —Confidence scores should be calibrated for production systems.
  • —It is not a generative model or a semantic embedding model.

Citation

bibtex
@misc{dl26_2026_veyra_20m,
  title        = {Veyra-20M: Compact Many-Label Intent Classification},
  author       = {Dl26},
  year         = {2026},
  url          = {https://huggingface.co/Dl26/Veyra-20M}
}