DibaOne X1 · دیباوان X1

An open-weight, Persian-first calibrated decision model for agents: pick the right option out of many مدل تصمیم‌گیری فارسی‌محور و متن‌باز با اطمینان کالیبره، برای عامل‌های هوش مصنوعی

Live demo (runs in your browser) · Dibachain · Compared against: laya


English

DibaOne X1 is an open-weight, Persian-first decision model. You give it a context (a conversation, a request, a web page), a question, and a list of options. It picks one option and returns a calibrated confidence for it. It never generates text, so there is nothing to parse and no free-form output to hallucinate. X1 is an open alternative to closed, API-only decision models. It runs on your own hardware, reads Persian and English, and publishes its test results in full below.

X1 is built for three jobs where agents usually fall back on a full LLM call:

  • Agent tool calling (ابزارخوانی عامل هوش مصنوعی): which tool should the assistant call next, with which argument, or should it answer directly without a tool?
  • Software-development path decisions: from a free-text brief ("a site for our restaurant where people can order and pay online"), which blueprint, feature set, tone and backend capabilities does the request imply?
  • Web navigation / Wiki Race: on a page with hundreds of links, which link gets you closer to a target article?

Status: under active development. This is X1 version 1 (x1-v1). It is a working release with honest, measured numbers. It is not a finished product. The next version, X2, focuses on stronger Persian training data (tool-calling accuracy is 10 points lower in Persian than in English today) and on routing between the two stages.

How it works: two stages, three modes

stage what it is trained by us?
1 a small multilingual bi-encoder (118 M parameters, in stage1/): cosine similarity between the question+context and every option No. An off-the-shelf MIT-licensed retriever, used unchanged (see NOTICE).
2 The X1 cross-encoder (278 M parameters, a 12-layer XLM-R-family transformer encoder with a small scoring head): reads the question, the context and one option together and scores that pair Yes. Trained by Dibachain on our decision data.

Every call picks a mode:

mode what runs when to use it
fast stage 1 only Wiki Race-style link navigation, where plain similarity is the strongest method we measured (.428 vs .279). Also the cheapest mode. Note that fast is the stage-1 retriever alone, which the cross-encoder training did not touch.
balanced (default) stage 1, then the cross-encoder when stage 1 is unsure general use. On dev-path and tool-call decisions it always escalates. On Wiki Race it keeps stage 1's answer only when stage 1 is confident, which in this version happens on just 2% of positions (see the results).
best the cross-encoder always dev-path and tool-call decisions, where it is 4 to 8 times more accurate than similarity alone

When a question has 48 options or fewer, the cross-encoder scores all of them. Above that (long link lists), it re-ranks stage 1's top 16.

Results

All numbers are top-1 accuracy on the frozen test splits of three benchmarks (4,358 questions in total, balanced Persian/English), scored by one shared scorer. The benchmarks were built by a separate workstream and frozen before X1 was trained. X1's training data was built to be disjoint from them and checked mechanically: zero exact, near-duplicate or shared-target overlaps. Every number comes from a run that actually happened. The appendix names the source file of each one.

About the comparison. laya by convaiinnovations (Apache-2.0) is a multi-option decision encoder that scores all options of a question in a single forward pass. laya was evaluated zero-shot on our benchmarks: it was never trained on these task families, while X1 was. The comparison shows what task-specific training buys on these three tasks. It does not rank the two models in general. laya is also much faster (see latency).

model Dev path (n=1,602) Tool call (n=1,098) Wiki Race (n=1,658)
DibaOne X1, best .767 .751 .279
DibaOne X1, balanced (default) .767 .751 .290
DibaOne X1, fast (= stage 1 alone, not trained by the cross-encoder stage) .180 .097 .428
DibaOne M3 (our previous generation, bi-encoder, 278 M) .351 .179 .188
laya (multilingual checkpoint, zero-shot) .336 .176 .288 ¹
random choice .135 .097 .029

¹ A Wiki Race page carries more links than fit in laya's 256-token option budget. laya therefore chose from a shortlist made by X1's stage-1 retriever, filled up to that budget. The gold link was inside the shortlist on 79.3% of positions, and a miss counts as wrong.

What the table says. On dev-path and tool-call decisions, the trained cross-encoder is far ahead of every other entry: 2.2× the accuracy of laya on dev-path and 4.3× on tool calling. On Wiki Race navigation it is not: plain similarity (fast) is best there, and X1 is roughly level with laya. If your task looks like link navigation, use fast.

Persian and English separately (top-1 accuracy, fa / en)

model Dev path Tool call Wiki Race
X1 best .762 / .772 .700 / .803 .295 / .262
X1 balanced .762 / .772 .700 / .803 .300 / .278
X1 fast .145 / .216 .086 / .109 .482 / .371
DibaOne M3 .313 / .388 .190 / .167 .224 / .151
laya (zero-shot) .303 / .368 .165 / .187 .309 / .266

Persian tool calling (.700) trails English (.803). Closing that gap is the main goal of the next version.

What X1 gets right inside each task (test split, X1 best)

X1 DibaOne M3
Tool selection (which tool, 760 questions) .755 .092
Tool argument (which value, 186 questions) .559 .274
"No tool needed" precision .913 .222
Dev path: blueprint .663 .295
Dev path: feature family .689 .261
Dev path: tone .739 .337

These sub-scores were not computed for the laya run.

Calibration (expected calibration error of the top-1 confidence, 15 bins; lower is better)

model Dev path Tool call Wiki Race
X1 best, raw scores .202 .184 .211
X1 best, calibrated (what this repository ships) .070 .101 .130
X1 balanced, calibrated .070 .101 .120
X1 fast .079 .103 .361
DibaOne M3 .088 .172 .102
laya (zero-shot) .247 .394 .239

The shipped temperatures (calibration.json) were fitted on the dev split only, never on test. They reduce X1's error two- to three-fold but stay above our 0.05 target, because a temperature fitted on dev does not fully transfer to the test split's unseen task families. Calibrated ECE by language (fa / en): dev path .069 / .089, tool call .130 / .093, Wiki Race .094 / .191.

Latency (one decision at a time)

hardware mode Dev path (10 options) Tool call (25 options avg.) Wiki Race (338 options avg.)
NVIDIA T4 GPU X1 fast 9 ms 11 ms 50 ms
NVIDIA T4 GPU X1 best 74 ms 117 ms 165 ms
NVIDIA T4 GPU laya (one pass per question) 28 ms 32 ms 30 ms ²
CPU, 2 threads, fp32 (Intel Xeon 2.0 GHz) X1 fast 37 ms 89 ms 795 ms
CPU, 2 threads, fp32 (Intel Xeon 2.0 GHz) X1 best 697 ms 1,824 ms 1,459 ms

² laya's own forward pass only. The stage-1 shortlist it needs on Wiki Race is not included.

laya is 2.5 to 5.5 times faster than X1 best on a GPU. It scores all options in one pass, while a cross-encoder runs one pass per option. If you need sub-50 ms decisions and your task resembles laya's training, that speed is a real advantage. X1's accuracy on dev-path and tool-call decisions comes from reading each option together with the context. CPU times were measured on the first 60 test questions of each benchmark. They include the stage-1 embedding of every option (hundreds of fresh link titles per page on Wiki Race, hence 795 ms for fast).

Files and ONNX variants

Everything needed to run X1 is in this repository. Nothing is downloaded from anywhere else.

file what it is
model.safetensors, config.json the X1 cross-encoder, PyTorch weights (fp32, 278,044,417 parameters, model weights only)
onnx/model.onnx, onnx/model_fp16.onnx, onnx/model_int8.onnx the cross-encoder in ONNX: fp32, fp16, int8
stage1/ the stage-1 retriever (PyTorch weights, config, tokenizer)
onnx/stage1.onnx, onnx/stage1_fp16.onnx, onnx/stage1_int8.onnx the stage-1 retriever in ONNX: fp32, fp16, int8
tokenizer.json and friends the cross-encoder's tokenizer
x1_config.json, calibration.json how inputs are read; dev-fitted temperatures and abstain thresholds
dibaone_x1.py reference inference code (Apache-2.0): PyTorch or ONNX Runtime, all three modes

ONNX variants: which file to use

Every variant was measured on the full test splits (4,358 questions) through dibaone_x1.py, with the same scorer. fp32, fp16 and PyTorch ran on an NVIDIA T4 GPU, and int8 ran on the CPU. Accuracy is top-1 in best mode (Wiki Race is also shown in fast mode). CPU latency is best mode, one decision at a time, 2 threads, Intel Xeon 2.2 GHz (Kaggle CPU), mean over the first 30 test questions of each benchmark (dev path / tool call / Wiki Race).

variant files (cross-encoder + stage 1) size Dev path Tool call Wiki Race Wiki Race fast CPU latency
PyTorch fp32 (reference) model.safetensors + stage1/ 1,509 MB .767 .751 .279 .428 –
ONNX fp32 onnx/model.onnx + onnx/stage1.onnx 1,509 MB .767 .751 .279 .428 1,150 / 2,875 / 2,563 ms
ONNX fp16 onnx/model_fp16.onnx + onnx/stage1_fp16.onnx 755 MB .765 .751 .281 .429 1,333 / 3,558 / 3,189 ms
ONNX int8 onnx/model_int8.onnx + onnx/stage1_int8.onnx 482 MB .750 .711 .329 .411 890 / 2,511 / 2,150 ms

Recommendation. fp32 ONNX reproduces PyTorch exactly. fp16 is within 0.2 points and half the size, so it is the recommended build on a GPU or in the browser. On a plain CPU, fp16 is slow because most CPUs have no fast fp16 path. int8 (dynamic quantisation: int8 weights per channel, activations quantised at run time, feed-forward output projections kept in fp32) is mixed: it loses 1.7 points on dev path and 4.0 on tool calling, and 1.7 on Wiki Race in fast mode, but scores 5.0 points higher on Wiki Race in best mode. We have not investigated that last result and do not rely on it. A second full int8 run gave .321 / .410 on Wiki Race: dynamic int8 on a CPU is not exactly reproducible between runs. int8 is only about 20% faster than fp32 on a CPU, so we do not recommend it where accuracy matters. On a CPU, use fp32. The browser demo uses fp16.

Quick start (ONNX Runtime, CPU, no token needed)

pip install onnxruntime tokenizers numpy huggingface_hub
import sys
from huggingface_hub import snapshot_download

sys.path.insert(0, snapshot_download("Dibachain/DibaOne-X1", allow_patterns=["dibaone_x1.py"]))
from dibaone_x1 import DibaOneX1

x1 = DibaOneX1.from_pretrained("Dibachain/DibaOne-X1", backend="onnx", variant="fp32")

state = """Conversation:
user: گزارش فروش هفته‌ی پیش رو برای مدیر مالی ایمیل کن.
Available tools:
- send_email: Send an email to a recipient.
- sql_query: Run a read-only SQL query against the sales database.
- web_search: Search the public web.
- reply_directly: Answer the user without calling any tool."""

r = x1.decide(state=state,
              question="Which tool should the assistant call next?",
              options=["send_email", "sql_query", "web_search", "reply_directly"],
              mode="best", goal="toolcall")
print(r["choice"], round(r["confidence"], 3), r["tier"], r["ms"])

On a GPU, pass providers=["CUDAExecutionProvider", "CPUExecutionProvider"] (with onnxruntime-gpu). For PyTorch, pip install torch transformers safetensors and use backend="torch", device="cuda" (or "cpu").

decide() returns the chosen option, its calibrated confidence, the probability of every option, the full ranking, which stage answered, and the time per stage. goal ("toolcall", "devpath", "wikirace" or None) selects the matching calibration temperature and balanced threshold. Leave it None for other tasks. Tool inventories written as - name: description lines in the context are attached automatically to the matching options, the way the model was trained.

Licence & notices: Apache-2.0 for the X1 weights and code. For the third-party components in this repository, see NOTICE.

Training

  • Architecture: a 12-layer XLM-R-family transformer encoder (hidden size 768, 250k-token multilingual vocabulary), all layers trained, plus a small scoring head (mean pooling → dense → tanh → linear).
  • Data: 27,843 decisions, split evenly between Persian and English: 18,717 dev-path requests and 7,025 tool-call conversations, all synthetic and written by Dibachain for this model (CC0), plus 2,101 Wiki Race positions built from Persian and English Wikipedia (CC BY-SA 4.0). No third-party language model was used to generate training data.
  • Objective: listwise cross-entropy over the gold option and hard negatives mined from stage-1 rankings. Maximum sequence length 256 tokens. 3 epochs (10,443 steps).
  • Calibration: temperature per task and option-count bucket, plus an abstain threshold, both fitted on the dev split only.

Intended use and limitations

  • Built for single-choice decisions (choice). Yes/no and graded (score) questions are not served by X1 v1.
  • Strongest on the three task families above. On unrelated tasks, measure before you trust the confidence.
  • On Wiki Race-style navigation, use fast. The cross-encoder does not beat plain similarity there.
  • Persian tool calling is about 10 points weaker than English in this version.
  • Calibration is good but not perfect (ECE .07 to .13 on test). When a wrong decision is costly, route low-confidence answers to a person or a larger model.
  • The model reflects its training data: synthetic requests and conversations, and Wikipedia.

Related work / compared models

  • laya by convaiinnovations, Apache-2.0: a multi-option decision encoder that scores all options of a question in one forward pass, with typed (choice / score / yes-no) answers. We used its multilingual checkpoint as published, with no training or tuning. It is the most relevant open model for this kind of task, and we recommend comparing it on your own data.

فارسی

دیباوان X1 یک مدل تصمیم‌گیری فارسی‌محور و متن‌باز (open-weight) است. یک زمینه (گفتگو، درخواست یا صفحه‌ی وب)، یک پرسش و فهرستی از گزینه‌ها به آن می‌دهید. مدل یکی از گزینه‌ها را انتخاب می‌کند و میزان اطمینانِ کالیبره‌شده‌ی آن را هم برمی‌گرداند. X1 متن تولید نمی‌کند، پس خروجی آزادی ندارد که نیاز به تجزیه داشته باشد یا دچار توهم شود. X1 جایگزینی متن‌باز و فارسی‌محور برای مدل‌های تصمیم‌گیری بسته و فقط‌-API است: روی سخت‌افزار خودتان اجرا می‌شود، فارسی و انگلیسی را می‌فهمد و نتایج آزمونش را کامل و شفاف در ادامه منتشر کرده‌ایم.

X1 برای سه کار ساخته شده است که عامل‌های هوش مصنوعی معمولاً برایشان یک مدل زبانی بزرگ کامل را صدا می‌زنند:

  • ابزارخوانی عامل هوش مصنوعی (tool calling): دستیار الان کدام ابزار را، با کدام آرگومان، صدا بزند؟ یا اصلاً ابزاری لازم نیست و باید مستقیم پاسخ دهد؟
  • تصمیم‌های مسیر توسعه‌ی نرم‌افزار: از یک توضیح آزاد («یه سایت برای رستورانمون که مشتری سفارش بده و آنلاین پول بده») تشخیص دهد درخواست به کدام الگو، مجموعه‌ی قابلیت‌ها، لحن و قابلیت‌های سمت سرور نیاز دارد.
  • ناوبری وب / Wiki Race: در صفحه‌ای با صدها پیوند، کدام پیوند شما را به مقاله‌ی هدف نزدیک‌تر می‌کند؟

وضعیت: در حال توسعه‌ی فعال. این نسخه X1 نسخه‌ی ۱ (x1-v1) است: نسخه‌ای کارا با اعداد واقعی و سنجیده‌شده، اما هنوز محصول نهایی نیست. تمرکز نسخه‌ی بعدی، X2، بر داده‌ی آموزشی فارسیِ قوی‌تر است (دقت ابزارخوانی در فارسی امروز ۱۰ امتیاز پایین‌تر از انگلیسی است) و نیز بر مسیریابی بهتر میان دو مرحله.

چطور کار می‌کند: دو مرحله، سه حالت

  • مرحله‌ی ۱: شباهت کسینوسی یک رمزگذار دوگانه‌ی چندزبانه‌ی کوچک (۱۱۸ میلیون پارامتر، در پوشه‌ی stage1/) میان پرسش و همه‌ی گزینه‌ها. این مرحله را ما آموزش نداده‌ایم؛ یک بازیاب آماده با مجوز MIT است که بدون تغییر استفاده می‌شود (فایل NOTICE).
  • مرحله‌ی ۲: کراس‌انکودر X1 (۲۷۸ میلیون پارامتر، همین مخزن) که پرسش، زمینه و یک گزینه را با هم می‌خواند و به آن امتیاز می‌دهد. این مرحله را ما روی داده‌ی تصمیم‌گیری خودمان آموزش داده‌ایم.

حالت‌ها:

  • fast: فقط مرحله‌ی ۱. سریع‌ترین حالت و بهترین حالت برای ناوبری پیوندها به سبک Wiki Race (۰٫۴۲۸ در برابر ۰٫۲۷۹). توجه کنید که این حالت فقط همان بازیاب مرحله‌ی ۱ است که آموزش کراس‌انکودر آن را تغییر نداده است.
  • balanced (پیش‌فرض): اول مرحله‌ی ۱، و هر جا مطمئن نباشد کراس‌انکودر. در تصمیم‌های توسعه و ابزارخوانی همیشه به کراس‌انکودر می‌رود. در Wiki Race فقط وقتی پاسخ مرحله‌ی ۱ را نگه می‌دارد که مرحله‌ی ۱ مطمئن باشد، که در این نسخه تنها در ۲٪ موارد پیش می‌آید.
  • best: همیشه کراس‌انکودر. برای تصمیم‌های توسعه و ابزارخوانی، که در آن‌ها ۴ تا ۸ برابر دقیق‌تر از شباهت ساده است.

نتایج

همه‌ی اعداد دقت انتخاب اول روی بخش آزمون (test) منجمدشده‌ی سه بنچمارک‌اند: در مجموع ۴٬۳۵۸ پرسش، نیمی فارسی و نیمی انگلیسی، همه با یک امتیازدهنده‌ی مشترک. بنچمارک‌ها را تیمی جدا ساخت و پیش از آموزش X1 منجمد شدند. داده‌ی آموزشی X1 طوری ساخته شد که با آن‌ها هم‌پوشانی نداشته باشد و این موضوع به‌صورت خودکار بررسی شد (صفر هم‌پوشانی). هر عدد از یک اجرای واقعی آمده است و منبع هر کدام در پیوست ذکر شده است.

درباره‌ی مقایسه. laya ساخته‌ی convaiinnovations (مجوز Apache-2.0) یک رمزگذار تصمیم‌گیری چندگزینه‌ای است که همه‌ی گزینه‌های یک پرسش را در یک گذر امتیاز می‌دهد. laya به‌صورت zero-shot روی بنچمارک‌های ما سنجیده شد: هیچ‌وقت روی این خانواده‌ی وظایف آموزش ندیده است، در حالی که X1 آموزش دیده است. بنابراین این مقایسه نشان می‌دهد آموزش اختصاصی روی این سه وظیفه چه‌قدر اثر دارد، نه این‌که کدام مدل به‌طور کلی بهتر است. laya همچنین بسیار سریع‌تر است (جدول تأخیر را ببینید).

مدل مسیر توسعه (۱٬۶۰۲) ابزارخوانی (۱٬۰۹۸) Wiki Race (۱٬۶۵۸)
X1، حالت best ۰٫۷۶۷ ۰٫۷۵۱ ۰٫۲۷۹
X1، حالت balanced (پیش‌فرض) ۰٫۷۶۷ ۰٫۷۵۱ ۰٫۲۹۰
X1، حالت fast (همان مرحله‌ی ۱، آموزش‌ندیده) ۰٫۱۸۰ ۰٫۰۹۷ ۰٫۴۲۸
دیباوان M3 (نسل قبلی ما) ۰٫۳۵۱ ۰٫۱۷۹ ۰٫۱۸۸
laya (چندزبانه، zero-shot) ۰٫۳۳۶ ۰٫۱۷۶ ۰٫۲۸۸
انتخاب تصادفی ۰٫۱۳۵ ۰٫۰۹۷ ۰٫۰۲۹

در Wiki Race پیوندهای یک صفحه در بودجه‌ی ۲۵۶ توکنی laya جا نمی‌شوند، پس laya از میان فهرست کوتاه‌شده‌ی بازیاب مرحله‌ی ۱ انتخاب کرد. پاسخ درست در ۷۹٫۳٪ موارد داخل این فهرست بود و بیرون ماندن آن خطا حساب شده است.

فارسی و انگلیسی جداگانه (فارسی / انگلیسی): X1 best: مسیر توسعه ۰٫۷۶۲ / ۰٫۷۷۲، ابزارخوانی ۰٫۷۰۰ / ۰٫۸۰۳، Wiki Race ۰٫۲۹۵ / ۰٫۲۶۲. laya: ۰٫۳۰۳ / ۰٫۳۶۸، ۰٫۱۶۵ / ۰٫۱۸۷، ۰٫۳۰۹ / ۰٫۲۶۶.

جمع‌بندی: در تصمیم‌های توسعه‌ی نرم‌افزار و ابزارخوانی، کراس‌انکودرِ آموزش‌دیده با فاصله‌ی زیاد جلوتر است: ۲٫۲ برابر laya در مسیر توسعه و ۴٫۳ برابر در ابزارخوانی. در ناوبری Wiki Race این‌طور نیست: آنجا شباهت ساده (fast) بهترین است و X1 تقریباً هم‌سطح laya است. دقت انتخاب ابزار ۰٫۷۵۵ و دقت تشخیص «ابزار لازم نیست» ۰٫۹۱۳ است.

کالیبراسیون (ECE، کمتر بهتر): X1 با دمای برازش‌شده روی داده‌ی dev (همان که در این مخزن منتشر شده): ۰٫۰۷۰ / ۰٫۱۰۱ / ۰٫۱۳۰. laya: ۰٫۲۴۷ / ۰٫۳۹۴ / ۰٫۲۳۹.

سرعت: روی GPU مدل T4، هر تصمیم X1 best بین ۷۴ تا ۱۶۵ میلی‌ثانیه و laya حدود ۲۸ تا ۳۲ میلی‌ثانیه طول می‌کشد. laya روی GPU ۲٫۵ تا ۵٫۵ برابر سریع‌تر است، چون همه‌ی گزینه‌ها را در یک گذر می‌خواند. روی CPU با ۲ رشته و دقت fp32، حالت best بین ۰٫۷ تا ۱٫۸ ثانیه و حالت fast بین ۰٫۰۴ تا ۰٫۸ ثانیه زمان می‌برد. X1 را با دقت fp32 اجرا کنید: کوانتیزه‌کردن int8 در آزمون ما حدود ۲۱ امتیاز از دقت ابزارخوانی کم کرد.

شروع سریع

کد بخش انگلیسی را ببینید: DibaOneX1.from_pretrained("Dibachain/DibaOne-X1", backend="onnx", variant="fp32") و سپس x1.decide(state=..., question=..., options=[...], mode="best"). پرسش، زمینه و گزینه‌ها می‌توانند فارسی باشند. همه‌ی فایل‌ها، از جمله توکنایزر و بازیاب مرحله‌ی ۱، در همین مخزن هستند و نیازی به توکن نیست. نسخه‌های ONNX با دقت fp32، fp16 و int8 منتشر شده‌اند و دقت هر نسخه در جدول بخش انگلیسی آمده است. دموی آنلاین کاملاً داخل مرورگر شما اجرا می‌شود.

محدودیت‌ها

  • فقط تصمیم‌های تک‌انتخابی (choice). پرسش‌های بله/خیر و درجه‌بندی در این نسخه پشتیبانی نمی‌شوند.
  • برای ناوبری به سبک Wiki Race از حالت fast استفاده کنید.
  • ابزارخوانی فارسی در این نسخه حدود ۱۰ امتیاز ضعیف‌تر از انگلیسی است و نسخه‌ی X2 برای بهبود همین ساخته می‌شود.
  • اطمینان مدل کالیبره است اما کامل نیست. در تصمیم‌های پرهزینه، پاسخ‌های کم‌اطمینان را به انسان یا مدل بزرگ‌تر بسپارید.

مجوز

وزن‌ها و کد مرجع با مجوز Apache-2.0 منتشر شده‌اند. مجوزها و اعلان‌های اجزای دیگر در فایل NOTICE آمده است.


Appendix: where every number comes from

All X1, laya and baseline numbers are on the frozen test splits (devpath_v1, toolcall_v1, wikirace_v1; 1,602 + 1,098 + 1,658 = 4,358 questions), scored by the benchmark's single scorer (score.py: acc@k, MRR, 15-bin top-1 ECE).

number(s) source file run
X1 best accuracy, sub-scores, fa/en, raw ECE; T4 latency of the official run report.x1-v1.test.json official test run of checkpoint x1-v1 (step 10,443), NVIDIA T4
X1 calibrated ECE report.x1-v1.test.calibrated.json, temperatures in calibration.x1-v1.json (fitted on dev) same run
X1 fast / balanced / best through this repository's weights and dibaone_x1.py; T4 per-stage latency; CPU latency report.x1-public.test.json re-run after export on 2026-09-24 (T4; CPU = Intel Xeon 2.0 GHz, 2 threads, fp32, first 60 questions per benchmark). best reproduces the official run exactly (.767 / .751 / .279, same ECE).
ONNX fp32 / fp16 / int8 and PyTorch through this repository's files and dibaone_x1.py; CPU latency per variant report.x1fix.test.json (fp32, fp16, PyTorch), report.x1int8*.test.json, report.x1lat.test.json 2026-09-24, full test splits; fp32 ONNX and PyTorch reproduce the official run exactly
laya accuracy, fa/en, ECE, latency report.laya-zeroshot.test.json convaiinnovations/laya, multilingual/ checkpoint as published, zero-shot, NVIDIA T4, 2026-09-24
DibaOne M3 results/{devpath,toolcall,wikirace}_v1.test.m3.json 2026-09-19, M3 served by its API (ONNX int8, CPU)
random results/*_v1.test.random.json 2026-09-19

Tokenizer note. The tokenizer files in this repository are the ones X1 was trained with. If you swap in another copy of the same vocabulary, check that it produces identical ids: during release checks, a differently serialised copy of the same tokenizer produced different ids on 8.8% of the test texts and cost 0.6 points on dev path.

An earlier, separate implementation of the same stage-1 similarity scored .180 / .094 / .431 on the same splits. The small differences from the fast row (.180 / .097 / .428) come from implementation details (tie-breaking, truncation). The table reports the fast numbers measured through the code this repository ships.


DibaOne, the decision family by Dibachain · Diba-Base · Diba-Embed

Persian decision model · open-weight tool-calling classifier · calibrated multiple-choice model · مدل تصمیم‌گیری فارسی · مدل متن‌باز فارسی

Downloads last month
33
Safetensors
Model size
0.3B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Space using Dibachain/DibaOne-X1 1