بازگشت به صفحهٔ میزان

یادداشت‌های پژوهشی

میزان چطور ساخته شد

از اولین نسخه تا v3: چرا یک مدل تصمیم‌گیری فارسی و محلی ساختیم، چه چیزهایی را اندازه گرفتیم و هر اندازه‌گیری چه تغییری در نسخهٔ بعد ایجاد کرد.

تیم نیمروز · ۲۱ مهر ۱۴۰۵ · حدود ۱۰ دقیقه مطالعه

بخش ۱

مدل تصمیم‌گیری چیست و چرا میزان را ساختیم

به‌طور خلاصه

مدل‌های تصمیم‌گیری مثل Jev به‌جای تولید متن، احتمال هر گزینهٔ مجاز را برمی‌گردانند. ما همین توانایی را برای فارسی می‌خواستیم، در مدلی که روی سرور خود سازمان اجرا شود.

احتمالاً اسم Jev را شنیده‌اید. شرکت TypeSafe در ۲۴ شهریور ۱۴۰۵ این مدل را به‌عنوان اولین عضو دسته‌ای تازه معرفی کرد و اسم آن را مدل‌های «System One» گذاشت؛ اشاره‌ای به «سیستم ۱» در نظریهٔ دانیل کانمن، یعنی فکر سریع و شهودی. دو هفته بعد، در ۹ مهر، Cloudflare هم مدل‌های Clef و Clef-Flash را با همان API و با وزن‌های باز منتشر کرد.

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

مدل تصمیم‌گیری برخلاف چت‌بات متن تولید نمی‌کند. یک رکورد، مثلاً پیام مشتری یا یک ردیف JSON، همراه چند سؤال با گزینه‌های مشخص به آن داده می‌شود و مدل برای هر سؤال، احتمال همهٔ گزینه‌های مجاز را در یک پردازش برمی‌گرداند. پاسخ همیشه یکی از گزینه‌هایی است که خودتان تعریف کرده‌اید و درصدها را می‌شود مبنای تصمیم قرار داد. برای همین این مدل‌ها در کارهایی مثل ارجاع تیکت، مدیریت محتوا و تحلیل نظر از چت‌بات‌ها مناسب‌ترند؛ چت‌بات پاسخ را کلمه‌به‌کلمه می‌سازد، گاهی خروجی خراب یا برچسبی خارج از گزینه‌ها برمی‌گرداند و درصد اطمینانش معمولاً پشتوانه‌ای ندارد.

با چت‌بات

پیام مشتری + یک پرامپت طولانی
تولید متن، کلمه‌به‌کلمه
تبدیل متن به JSON
گاهی JSON خراب یا برچسبی خارج از گزینه‌ها؛ درصد اطمینانی هم که بشود به آن تکیه کرد در کار نیست.

با مدل تصمیم‌گیری

پیام مشتری + سؤال‌ها و گزینه‌هایشان
یک پردازش
احتمال هر گزینه؛ پاسخ همیشه یکی از گزینه‌های شماست.شبکه۹۵٫۶٪صورتحساب۲٫۴٪فروش۲٫۰٪
برای یک کار یکسان: چت‌بات متن می‌سازد و بعد باید آن را تفسیر کرد؛ مدل تصمیم‌گیری مستقیم احتمال گزینه‌ها را می‌دهد.

اما گزینه‌های موجود برای ما کافی نبودند. سرویس Jev میزبانی‌شده است، پس داده باید از سازمان خارج شود. مدل‌های Clef را می‌شود محلی اجرا کرد، اما سنگین‌اند؛ نسخهٔ 9B حدود ۱۹ گیگابایت و نسخهٔ 27B حدود ۵۵ گیگابایت حجم دارد. ما مدلی می‌خواستیم که فارسی واقعی را خوب بفهمد، از متن محاوره‌ای و فینگلیش تا تعارف و کنایه، و آن‌قدر سبک باشد که روی سرور خود سازمان و حتی یک لپ‌تاپ اجرا شود. میزان برای همین ساخته شد و اولین نسخه‌اش ده روز بعد از انتشار Clef، در ۱۹ مهر، آماده بود.

سؤال‌ها سه نوع‌اند: انتخاب برای برگزیدن یک گزینه از میان چند گزینه، بله/خیر، و سطح برای مقیاس‌های مرتب مثل شدت از ۰ تا ۳. در سؤال‌های سطح، میزان علاوه بر احتمال هر سطح، سطح موردانتظار را هم برمی‌گرداند که برای مرتب‌سازی کارها مفید است.

انتخاب choice

یک گزینه از میان چند گزینه

مشتری راضی است یا ناراضی؟

ناراضی۹۸٫۹٪
راضی۱٫۱٪

بله/خیر noul

احتمال اینکه پاسخ «بله» باشد

مشتری درخواست بازگشت وجه کرده است؟

بله۴٫۰٪
خیر۹۶٫۰٪

سطح score

یک مقیاس مرتب، مثل شدت از ۰ تا ۳

شدت مشکل در کدام سطح است؟

۰: یک نفر۰٪
۱: ۲ تا ۱۰ نفر۰٪
۲: ۱۱ تا ۱۰۰ نفر۹۹٫۶٪
۳: بیش از ۱۰۰۰٫۴٪

سطح موردانتظار: ۲٫۰۰

هر سه نمونه خروجی واقعی Mizan v3 است. در سؤال سطح، «سطح موردانتظار» میانگین سطح‌ها با وزن احتمالشان است.
jsonدرخواست
{
  "state": {"review": "غذا سرد رسید و پیک هم خیلی بداخلاق بود"},
  "questions": {
    "sentiment": {"type": "choice", "instructions": "حس کلی مشتری چیست؟",
                  "criteria": {"positive": "راضی", "negative": "ناراضی"}},
    "refund": {"type": "noul", "instructions": "آیا مشتری درخواست بازگشت پول کرده؟"}
  }
}
jsonپاسخ واقعی Mizan v3
{"answers": {
  "sentiment": {"type": "choice", "choice": "negative", "confidence": 0.989,
                "probabilities": {"negative": 0.989, "positive": 0.011}},
  "refund":    {"type": "noul", "noul": 0.040}
}}

نتیجهٔ این طراحی در عمل این است که هر تصمیم حدود ۵۵ میلی‌ثانیه طول می‌کشد، خروجی همیشه ساختار ثابتی دارد و درصدها آن‌قدر قابل اعتمادند که می‌شود بر اساسشان تعیین کرد کدام مورد خودکار انجام شود و کدام به کارشناس برسد.

بخش ۲

ساختن میزان: چهار نسخه در سه روز

به‌طور خلاصه

مدل تصمیم‌گیری خودمان را روی Qwen3.5-4B آموزش دادیم و اسمش را میزان گذاشتیم. در سه روز چهار نسخه ساختیم؛ دقت روی داده‌های واقعی از ۷۸٫۷٪ به ۸۲٫۵٪ رسید و پیروی از قوانین از ۷۰٫۵٪ به ۹۷٫۱٪.

پس تصمیم گرفتیم مدل تصمیم‌گیری خودمان را آموزش دهیم و اسمش را میزان گذاشتیم. پایهٔ میزان مدل متن‌باز و چندزبانهٔ Qwen3.5-4B است. روی آن، بخش تصمیم‌گیری‌ای به همان سبک مدل‌های Clef آموزش دادیم که به‌جای تولید متن، به هر گزینه احتمال می‌دهد.

از آن به بعد، هر نسخه از جایی شروع شد که نسخهٔ قبلی روی داده‌های واقعی ضعف نشان داده بود. معیار مقایسه در همهٔ نسخه‌ها یکی است: ۳٬۰۰۰ پیام واقعی فارسی از ۷ مجموعه‌دادهٔ عمومی که هیچ‌کدام در آموزش استفاده نشده‌اند.

  1. Mizan 1.0۱۹ مهر ۱۴۰۵ · متن

    اولین مدل تصمیم‌گیری فارسی

    اولین نسخه برای کارهای رایج کسب‌وکارهای ایرانی آموزش دید: مدیریت محتوا، تحلیل نظر و بازخورد، ارجاع پشتیبانی، تشخیص پیامک کلاهبرداری، بررسی آگهی، ارجاع سرنخ فروش، محافظت از چت‌بات و غربال رزومه.

    در آزمون مصنوعی خودمان ۹۱٪ گرفت، اما روی ۳٬۰۰۰ پیام واقعی به ۷۸٫۷٪ رسید. معلوم شد آزمون مصنوعی بیش از حد به داده‌های آموزشی شبیه بوده است. از آن روز معیار اصلی ما فقط داده‌های واقعی است.

    داده‌های واقعی
    ۷۸٫۷٪
    آزمون قوانین
    ۷۰٫۵٪
    زمان هر تصمیم
    ۸۰ میلی‌ثانیه
  2. Mizan 1.5متن

    یادگیری از اشتباه‌های نسخهٔ قبل

    اشتباه‌های نسخهٔ 1.0 را روی حدود ۱۸ هزار نمونهٔ واقعی پیدا کردیم. این نمونه‌ها از بخش آموزشی مجموعه‌داده‌های عمومی بودند، نه از آزمون. هر اشتباه بدون دانستن پاسخ مدل بازبینی شد تا مشخص شود مدل اشتباه کرده، برچسب داده غلط است یا نمونه دوپهلوست.

    برای هر اشتباه واقعی سه نمونهٔ تازه ساختیم: همان خطا با جملهٔ دیگر، نمونه‌ای که فقط یک جزئیاتش فرق دارد و پاسخش برعکس می‌شود، و همان سؤال با عبارتی تازه. در مجموع ۱٬۳۶۲ نمونهٔ جدید و ۴۵۴ نمونهٔ دشوار واقعی اضافه شد.

    چند ضعف مشخص برطرف شد: نقد سیاسی را توهین می‌دانست، دربارهٔ جنبه‌هایی از محصول نظر می‌داد که در متن نبود، ادعایی را که یک جزئیات را عوض کرده بود «تأییدشده» می‌دانست و هشدار را با یادآور اشتباه می‌گرفت.

    داده‌های واقعی
    ۸۲٫۰٪
  3. Mizan v2 · 4Bمتن و تصویر

    اضافه شدن پردازش تصویر

    بخش بینایی به مدل اضافه شد تا میزان فریم دوربین، عکس فاکتور و عکس خط تولید را هم بخواند. دقت روی داده‌های متنی واقعی به ۸۲٫۸٪ رسید. برای داده‌هایی که تصویر دارند، هنوز همین نسخه را پیشنهاد می‌کنیم.

    داده‌های واقعی
    ۸۲٫۸٪
  4. Mizan v3 · 3B۲۱ مهر ۱۴۰۵ · متن و JSON

    کوچک‌تر و پیرو قوانین شما

    دو یافته نسخهٔ v3 را شکل داد. اول اینکه کسب‌وکارها به برچسب‌های عمومی بسنده نمی‌کنند؛ می‌خواهند مدل قوانین خودشان را اجرا کند. دوم اینکه لایه‌های آخر مدل پایه به تصمیم‌گیری کمکی نمی‌کنند.

    نتیجه مدلی کوچک‌تر و سریع‌تر شد که قوانین نوشته‌شده در درخواست را دنبال می‌کند و روی داده‌های گسترده‌تر و فقط با مجوز تجاری آموزش دیده است.

    داده‌های واقعی
    ۸۲٫۵٪
    بنچمارک Tasmim
    ۹۱٫۱
    آزمون قوانین
    ۹۷٫۱٪
    زمان هر تصمیم
    ۵۵ میلی‌ثانیه

بخش ۳

چرا v3 فقط ۲۰ لایه دارد

به‌طور خلاصه

توانایی تصمیم‌گیری در لایه‌های میانی مدل به اوج می‌رسد. با نگه داشتن ۲۰ لایه از ۳۲ لایه، محاسبه ۳۷٪ کمتر شد و دقت ثابت ماند.

مدل پایهٔ میزان، Qwen3.5-4B، سی‌ودو لایه دارد. برای اینکه بفهمیم توانایی تصمیم‌گیری کجای مدل شکل می‌گیرد، روی خروجی هر لایه یک طبقه‌بند خطی ساده آموزش دادیم و دقتش را سنجیدیم. نتیجه روشن بود: بهترین عملکرد حدود لایه‌های ۱۸ تا ۲۲ است و لایه‌های آخر بدتر عمل می‌کنند.

نگه داشته‌شده (۲۰ لایه) حذف‌شده (۱۲ لایه) ناحیهٔ اوج
۱۲۰۳۲
هر خط یک لایه است. توانایی تصمیم‌گیری حدود لایه‌های ۱۸ تا ۲۲ به اوج می‌رسد؛ v3 تا لایهٔ ۲۰ را نگه می‌دارد.

توانایی تصمیم‌گیری در لایه‌های مختلف مدل پایه

دقت طبقه‌بند خطی روی خروجی هر لایه. ناحیهٔ هاشورخورده لایه‌هایی است که در v3 حذف شده‌اند.

حذف‌شده در v3۵۰٪۶۰٪۷۰٪۸۰٪۸۱۲۱۶۱۸۲۰۲۴۲۸۳۲شمارهٔ لایه (از ۳۲)اوج · ۸۰٫۳آخرین لایه · ۶۶٫۴
  • دادهٔ نگه‌داشته‌شده
  • حوزهٔ ناآشنا

دلیلش این است که لایه‌های پایانی برای پیش‌بینی کلمهٔ بعدی تخصصی شده‌اند؛ کاری که برای تولید متن لازم است، اما برای تصمیم‌گیری نه. پژوهش‌های پیشین در طبقه‌بندی متن هم به نتیجهٔ مشابهی رسیده بودند.

پس در v3 فقط ۲۰ لایهٔ اول را نگه داشتیم و بخش تصمیم‌گیری را روی همان قرار دادیم. حدود ۲٫۹ میلیارد پارامتر باقی ماند، محاسبه حدود ۳۷٪ کمتر شد و دقت تغییری نکرد. خروجی همچنان یک مدل استاندارد Qwen3.5 با لایه‌های کمتر است، پس llama.cpp بدون هیچ تغییری آن را اجرا می‌کند.

تغییر دوم در تابع خطا بود. در سؤال‌های سطح‌بندی، اشتباه یک‌سطحی با اشتباه سه‌سطحی یکسان نیست؛ برای همین جمله‌ای به تابع خطا اضافه کردیم که فاصلهٔ موردانتظار از سطح درست را جریمه می‌کند. اثرش در بنچمارک Tasmim دیده می‌شود: کمترین خطای سطح‌بندی در کل جدول، یعنی ۰٫۴۵۸. آموزش کامل v3 روی یک کارت H100 حدود ۳۴ دقیقه طول کشید.

سطح ۰

۳ سطح فاصله

سطح ۱

۲ سطح فاصله

سطح ۲

۱ سطح فاصله

سطح ۳

درست

پاسخ درست سطح ۳ است. با تابع خطای ترتیبی، پیش‌بینی سطح ۲ جریمهٔ کمی دارد و پیش‌بینی سطح ۰ بیشترین جریمه را.

بخش ۴

داده‌ها را چطور ساختیم

به‌طور خلاصه

پاسخ‌ها با کد و از روی قوانین محاسبه می‌شوند، اشتباه‌های واقعی بازبینی می‌شوند، داده از آزمون‌ها جدا نگه داشته می‌شود و فقط دادهٔ دارای مجوز تجاری به کار می‌رود.

دادهٔ آموزشی v3 حدود ۲۱ هزار و ۴۰۰ تصمیم است. بخش فارسی آن با چهار اصل ساخته شده است.

پاسخ‌هایی که با کد محاسبه می‌شوند. برای ۹ حوزهٔ کسب‌وکار، از سفارش غذا و اپلیکیشن بانکی تا بیمه، منابع انسانی و مدیریت ساختمان، کد ابتدا واقعیت‌های هر مورد و یک مجموعه قانون تصادفی را انتخاب می‌کند و پاسخ درست را از روی همان‌ها حساب می‌کند. بعد متن پیام به فارسی واقعی‌نما نوشته می‌شود؛ محاوره‌ای، با فینگلیش، غلط تایپی و تعارف. یک بررسی مستقل پیام را دوباره می‌خواند و واقعیت‌ها را از آن بیرون می‌کشد و هر موردی که با واقعیت‌های اولیه نخواند کنار گذاشته می‌شود. ۸۷٪ نمونه‌ها از این مرحله عبور کردند.

  1. ۱

    واقعیت‌ها و قوانین

    کد واقعیت‌های یک مورد و یک مجموعه قانون تصادفی می‌سازد.

  2. ۲

    پاسخ درست

    پاسخ هر سؤال با کد و از روی همان قوانین حساب می‌شود.

  3. ۳

    نوشتن پیام

    پیام فارسی واقعی‌نما نوشته می‌شود؛ محاوره‌ای، با فینگلیش و تعارف.

  4. ۴

    بررسی مستقل

    واقعیت‌ها دوباره از روی پیام خوانده و با نسخهٔ اول مقایسه می‌شوند.

  5. ۵

    ۸۷٪ پذیرفته

    نمونه‌هایی که با هم نمی‌خوانند حذف می‌شوند.

چون پاسخ با کد حساب می‌شود، برچسب‌ها اشتباه نمی‌شوند؛ کار بررسی مستقل این است که مطمئن شود متن پیام هم همان واقعیت‌ها را می‌گوید.

یادگیری از اشتباه‌ها. مدل را روی داده‌های واقعی فارسی اجرا کردیم و هر اشتباه را بدون دانستن پاسخ مدل بازبینی کردیم تا مشخص شود مدل اشتباه کرده، برچسب داده غلط است یا نمونه دوپهلوست. برای اشتباه‌های واقعی، نمونه‌های تقابلی تازه ساختیم. در بعضی مجموعه‌داده‌های عمومی، حدود نیمی از «خطاهای» مدل در واقع برچسب اشتباه خود داده بود.

جداسازی سخت‌گیرانه از آزمون‌ها. داده‌های آموزشی با همهٔ مجموعه‌های آزمون مقایسه شد و هر نمونه‌ای که شش کلمهٔ پشت‌سرهم مشترک با منبع داشت حذف شد. نسخه‌های مختلف یک رکورد هم همیشه با هم در آموزش یا در آزمون قرار گرفتند.

فقط داده با مجوز تجاری. نسخهٔ v3 فقط روی داده‌هایی آموزش دیده که استفادهٔ تجاری از آن‌ها مجاز است. تنها ردیف‌های واقعی به‌کاررفته از مجموعهٔ MASSIVE با مجوز CC BY 4.0 است و خود مدل با مجوز Apache-2.0 منتشر شده است.

بخش ۵

کالیبراسیون و آستانهٔ اطمینان

به‌طور خلاصه

درصدهای میزان با واقعیت می‌خوانند و ۷۰٪ مطمئن‌ترین پاسخ‌ها حدود ۹۲٪ درست‌اند. پس می‌توانید پاسخ‌های مطمئن را خودکار کنید و بقیه را به کارشناس بسپارید.

مدلی که همیشه ۹۹٪ مطمئن است، در عمل چیزی دربارهٔ اطمینانش نمی‌گوید. کالیبراسیون یعنی درصدها با واقعیت بخوانند: از پاسخ‌هایی که مدل دربارهٔ آن‌ها ۸۰٪ مطمئن است، حدود ۸۰٪ درست باشند. خطای کالیبراسیون میزان v3 روی داده‌های واقعی ۰٫۰۵۸ است؛ این عدد برای Clef، Clef-Flash و Jev بین ۰٫۰۷۵ تا ۰٫۰۹۲ است.

همین دقت در درصدها یک الگوی ساده را ممکن می‌کند: یک آستانه انتخاب کنید، پاسخ‌های بالای آستانه را خودکار اعمال کنید و بقیه را به کارشناس بسپارید. روی داده‌های واقعی، ۷۰٪ مطمئن‌ترین پاسخ‌های میزان حدود ۹۲٪ درست‌اند.

پاسخ میزان، همراه با درصد اطمینان
اطمینان بالای آستانه: اعمال خودکار
اطمینان کمتر از آستانه: ارجاع به کارشناس
آستانه را خودتان تعیین می‌کنید. هرچه بالاتر باشد، تصمیم‌های خودکار کمترند و دقیق‌تر.

امتحان کنید: چه سهمی از تصمیم‌ها خودکار شود؟

اعداد از اجرای واقعی Mizan v3 روی ۳٬۰۰۰ پیام واقعی فارسی است.

خودکار
۷۰٪
دقت همین تصمیم‌ها
۹۲٫۴٪
به کارشناس
۳۰٪

هرچه سهم تصمیم‌های خودکار کمتر باشد، دقت آن‌ها بیشتر است

محور افقی سهم پاسخ‌هایی است که خودکار اعمال می‌شوند (از مطمئن‌ترین)، محور عمودی دقت همان پاسخ‌ها. ۳٬۰۰۰ پیام واقعی فارسی؛ نشانگر را روی نمودار حرکت دهید.

۸۰٪۸۵٪۹۰٪۹۵٪۲۰٪۴۰٪۶۰٪۸۰٪۱۰۰٪سهم رکوردهایی که خودکار تصمیم‌گیری می‌شوند۷۰٪ مطمئن‌ترین پاسخ‌ها۹۲٫۴٪ درست
  • Mizan v3 · Q8
  • Clef 27B
  • Jev
  • Mizan 1.0

پیشنهاد ما برای شروع این است: ۲۰۰ تا ۳۰۰ نمونهٔ برچسب‌خورده از داده‌های خودتان آماده کنید، میزان را رویشان اجرا کنید و آستانه‌ای را انتخاب کنید که به دقت موردنظرتان برسد.

بخش ۶

محدودیت‌ها

  • بیشتر داده‌های آموزشی فارسی مصنوعی است. پیش از خودکارسازی، میزان را روی چند صد نمونهٔ واقعی خودتان بسنجید.
  • نسخهٔ v3 فقط متن می‌خواند. برای داده‌هایی که تصویر دارند، از Mizan v2 استفاده کنید.
  • در دسته‌بندی‌های خیلی بزرگ ضعیف‌تر است؛ در تشخیص ۶۰ نوع درخواست، دقتش ۷۷٫۵٪ است در برابر ۸۷٫۷٪ برای Clef-Flash.
  • نسخهٔ چهاربیتی حدود ۰٫۶ امتیاز از نسخهٔ هشت‌بیتی ضعیف‌تر است. اگر دقت برایتان مهم‌تر از حجم است، نسخهٔ هشت‌بیتی را انتخاب کنید.
  • تشخیص عیب محصول در نسخهٔ v2 فقط برای علامت‌گذاری و ارجاع به کارشناس مناسب است، نه برای رد خودکار.

میزان را امتحان کنید

مدل را از Hugging Face دانلود کنید یا برای راه‌اندازی روی داده‌های سازمانتان با ما تماس بگیرید.