Veyra
Collection
2 items • Updated
How to use Dl26/Veyra-20M with Transformers:
# Use a pipeline as a high-level helper
from transformers import pipeline
pipe = pipeline("text-classification", model="Dl26/Veyra-20M") # Load model directly
from transformers import AutoTokenizer, AutoModelForSequenceClassification
tokenizer = AutoTokenizer.from_pretrained("Dl26/Veyra-20M")
model = AutoModelForSequenceClassification.from_pretrained("Dl26/Veyra-20M")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.
| Property | Value |
|---|---|
| Model name | Veyra-20M |
| Developer | Dl26 |
| Model type | Encoder-only sequence classifier |
| Transformers model type | bert |
| Architecture | BertForSequenceClassification |
| Parameters | 21,342,285 |
| Hidden size | 512 |
| Layers | 6 |
| Attention heads | 8 |
| Intermediate size | 2,048 |
| Max positions | 256 |
| Vocabulary size | 3,892 |
| Number of labels | 77 |
| Training objective | Supervised single-label classification |
| License | Apache 2.0 |
| ID | Label |
|---|---|
0 |
activate_my_card |
1 |
age_limit |
2 |
apple_pay_or_google_pay |
3 |
atm_support |
4 |
automatic_top_up |
5 |
balance_not_updated_after_bank_transfer |
6 |
balance_not_updated_after_cheque_or_cash_deposit |
7 |
beneficiary_not_allowed |
8 |
cancel_transfer |
9 |
card_about_to_expire |
10 |
card_acceptance |
11 |
card_arrival |
12 |
card_delivery_estimate |
13 |
card_linking |
14 |
card_not_working |
15 |
card_payment_fee_charged |
16 |
card_payment_not_recognised |
17 |
card_payment_wrong_exchange_rate |
18 |
card_swallowed |
19 |
cash_withdrawal_charge |
20 |
cash_withdrawal_not_recognised |
21 |
change_pin |
22 |
compromised_card |
23 |
contactless_not_working |
24 |
country_support |
25 |
declined_card_payment |
26 |
declined_cash_withdrawal |
27 |
declined_transfer |
28 |
direct_debit_payment_not_recognised |
29 |
disposable_card_limits |
30 |
edit_personal_details |
31 |
exchange_charge |
32 |
exchange_rate |
33 |
exchange_via_app |
34 |
extra_charge_on_statement |
35 |
failed_transfer |
36 |
fiat_currency_support |
37 |
get_disposable_virtual_card |
38 |
get_physical_card |
39 |
getting_spare_card |
40 |
getting_virtual_card |
41 |
lost_or_stolen_card |
42 |
lost_or_stolen_phone |
43 |
order_physical_card |
44 |
passcode_forgotten |
45 |
pending_card_payment |
46 |
pending_cash_withdrawal |
47 |
pending_top_up |
48 |
pending_transfer |
49 |
pin_blocked |
50 |
receiving_money |
51 |
Refund_not_showing_up |
52 |
request_refund |
53 |
reverted_card_payment? |
54 |
supported_cards_and_currencies |
55 |
terminate_account |
56 |
top_up_by_bank_transfer_charge |
57 |
top_up_by_card_charge |
58 |
top_up_by_cash_or_cheque |
59 |
top_up_failed |
60 |
top_up_limits |
61 |
top_up_reverted |
62 |
topping_up_by_card |
63 |
transaction_charged_twice |
64 |
transfer_fee_charged |
65 |
transfer_into_account |
66 |
transfer_not_received_by_recipient |
67 |
transfer_timing |
68 |
unable_to_verify_identity |
69 |
verify_my_identity |
70 |
verify_source_of_funds |
71 |
verify_top_up |
72 |
virtual_card_not_working |
73 |
visa_or_mastercard |
74 |
why_verify_identity |
75 |
wrong_amount_of_cash_received |
76 |
wrong_exchange_rate_for_cash_withdrawal |
pip install -U transformers torch accelerate
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])
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 | Result |
|---|---|
| Validation accuracy | 0.8890 |
| Test accuracy | 0.8976 |
| Remote code required | No |
Veyra-20M is intended for:
@misc{dl26_2026_veyra_20m,
title = {Veyra-20M: Compact Many-Label Intent Classification},
author = {Dl26},
year = {2026},
url = {https://huggingface.co/Dl26/Veyra-20M}
}