پرش به محتوای اصلی
پرش به محتوای مقاله

ابزار Jeffy طبقه‌بندی متون را بدون نیاز به GPU به CPU منتقل کرد

·۱۲ مهر ۱۴۰۵۶ دقیقه مطالعه
جفای: طبقه‌بندکننده‌های متنی از پیش آموزش‌دیده قابل اجرا و بازآموزی روی CPU
جفای: طبقه‌بندکننده‌های متنی از پیش آموزش‌دیده قابل اجرا و بازآموزی روی CPU
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

ارائه یک چارچوب عملیاتی که ۱۳ طبقه‌بند پیش‌آموز را با معماری مشترک بردار-لایه روی CPU اجرا می‌کند، بدون اینکه دقت را به سطح جست‌وجوی کلیدواژه‌ای کاهش دهد.

اگر برای طبقه‌بندی متون در پروژه‌های خود به GPUهای گران‌قیمت یا APIهای ابری وابسته هستید، احتمالاً هزینه‌های استنتاج و تأخیر در پاسخ‌دهی گلوگاه شماست. ابزار Jeffy که در ۳ اکتبر ۲۰۲۶ منتشر شد، این وابستگی را می‌شکند و اجازه می‌دهد ۱۳ مدل پیش‌آموز را به‌طور کامل روی CPU اجرا و بازآموزی کنید. این ابزار با جداسازی بردارسازی‌های سنگین از سرهای طبقه‌بندی سبک، نیاز به سخت‌افزارهای قدرتمند را از بین می‌برد.

بسیاری از سیستم‌های مدرن برای تشخیص اسپم یا تحلیل احساسات به مدل زبانی بزرگ (LLM) — مثل کتابخانه‌داری که میلیاردها صفحه را خوانده و حالا با همان لحن جواب می‌دهد — متکی هستند که حافظه VRAM زیادی می‌طلبد. این موضوع برای توسعه‌دهندگانی که به پردازش محلی، خصوصی، کم‌هزینه یا با تأخیر بسیار پایین نیاز دارند، یک مانع بزرگ ایجاد می‌کند. طبق مستندات این پروژه، Jeffy با استفاده از یک رمزگذار مشترک به نام bge-large-en-v1.5 و تبدیل عملیات طبقه‌بندی به محاسبات ریاضی ساده روی بردارها، این مانع را حذف کرده است.

همان‌طور که در تحلیل‌های قبلی ما درباره‌ی بهینه‌سازی مدل‌های محلی اشاره کردیم، کاهش وابستگی به سخت‌افزارهای خاص، کلید مقیاس‌پذیری در لبه است. Jeffy در واقع بردار معنایی (Embedding) — که شبیه کارت معرفی عددی برای هر واژه است و همسایگی کلمات را مشخص می‌کند — را از لایه‌های تصمیم‌گیرنده جدا کرده است.

معماری و عملکرد فنی

به نقل از مستندات گیت‌هاب، کارایی این سیستم از طراحی ترکیبی آن می‌آید. در اولین اجرا، یک رمزگذار حدود ۱.۲ گیگابایتی دانلود می‌شود که بین تمام طبقه‌بندهای فعال مشترک است. خودِ طبقه‌بندها مدل‌های کامل نیستند، بلکه ضرایب رگرسیون لجستیک هستند که در قالب فایل‌های قابل حمل .npz (numpy) ذخیره شده‌اند. این وزن‌ها در واقع پارامترهای مشتق شده از مدل هستند و کپی‌هایی از داده‌های آموزشی اصلی نیستند. برای درک عمیق‌تر این سازه، می‌توان به بررسی ارکان تبدیل ریاضیات به هوش مصنوعی اشاره کرد که نقش وزن‌ها و توکن‌سازها را در این فرآیند تبیین می‌کند.

بر اساس بررسی‌های فنی، این رویکرد تأخیر را به شدت کاهش می‌دهد. در یک CPU لینوکسی (aarch64)، مرحله تولید بردار (Embedding stage) ۵۰ تا ۸۰ میلی‌ثانیه و مرحله واقعی طبقه‌بندی کمتر از ۱ میلی‌ثانیه زمان می‌برد. در نتیجه، کل فرآیند پایان-به-پایان (End-to-end) برای هر نمونه زیر ۸۰ میلی‌ثانیه است. سیستم تنها به حدود ۲ گیگابایت حافظه رم در زمان اجرا نیاز دارد، زیرا رمزگذار تنها یک بار بارگذاری شده و بین تمام سرهای طبقه‌بندی به اشتراک گذاشته می‌شود.

قابلیت‌های پیش‌آموز

این بسته شامل ۱۳ لایه تخصصی است که در برخی حوزه‌ها به نتایج خیره‌کننده‌ای رسیده‌اند. عملکرد این مدل‌ها بسته به نوع تسک متفاوت است:

  • sms_spam: صحت ۹۹.۱٪ و امتیاز F1 برابر با ۹۸.۰٪ برای تشخیص پیام‌های اسپم.
  • dbpedia: صحت ۹۶.۰٪ و امتیاز F1 برابر با ۹۵.۹٪ برای دسته‌بندی ویکی‌پدیا در ۱۴ کلاس مختلف.
  • imdb: صحت ۹۴.۸٪ و امتیاز F1 برابر با ۹۴.۸٪ برای تحلیل احساسات در نقدهای طولانی فیلم.
  • banking77: صحت ۹۴.۳٪ و امتیاز F1 برابر با ۹۴.۳٪ برای تشخیص قصد مشتریان بانکی در ۷۷ کلاس.
  • ag_news: صحت ۹۰.۵٪ و امتیاز F1 برابر با ۹۰.۵٪ برای دسته‌بندی موضوعات خبری (جهان، ورزش، کسب‌وکار، تکنولوژی).
  • sst2: صحت ۹۰.۱٪ برای تحلیل احساسات نقدهای فیلم.
  • clinc_oos: صحت ۸۸.۴٪ برای دستورات دستیار صوتی، شامل تشخیص موارد خارج از محدوده (Out-of-scope) در ۱۵۱ کلاس.
  • massive_intent: صحت ۸۸.۱٪ برای دستورات صوتی خانه هوشمند در ۶۰ کلاس.
  • tweet_eval_offensive: صحت ۸۱.۰٪ برای تشخیص زبان توهین‌آمیز.
  • tweet_eval_emotion: صحت ۷۸.۱٪ برای تشخیص احساسات توییتر در ۴ کلاس.
  • emotion: صحت ۷۵.۵٪ برای احساسات متنی در ۶ کلاس.
  • tweet_eval_sentiment: صحت ۶۶.۲٪ برای تحلیل سه-گانه احساسات توییتر.
  • snli: صحت ۶۵.۶٪ برای استنتاج زبان طبیعی (NLI) در ۳ کلاس.

با این حال، طبق گزارش توسعه‌دهندگان، این ابزار نقاط ضعفی دارد. تسک‌های SNLI و tweet_eval_sentiment امتیازات پایین‌تری کسب کرده‌اند و به سطحی کمتر از مدل‌های یادگیری عمیق تخصصی رسیده‌اند. همچنین اشاره شده که سرِ Emotion پوشش کلاس‌های محدودی دارد و تمام احتمالات ارائه شده توسط سیستم، کالیبره نشده‌اند.

جفای: طبقه‌بندهای متنی از پیش آموزش‌دیده قابل اجرا و بازآموزی روی CPU

آموزش سفارشی و استقرار

توسعه‌دهندگان محدود به مجموعه پیش‌آموز نیستند. Jeffy اجازه آموزش سفارشی را با استفاده از فایل‌های .csv ، .tsv یا .jsonl می‌دهد. کاربران می‌توانند یک طبقه‌بند جدید را از طریق دستور jeffy-train یا مستقیماً از طریق API پایتون با استفاده از تابع train_classifier آموزش دهند.

فرآیند آموزش به‌گونه‌ای طراحی شده که محافظه‌کارانه باشد. سیستم از چندین پارامتر تنظیم برای بهینه‌سازی نتایج استفاده می‌کند:

  • C (پیش‌فرض ۰.۰۱): کنترل می‌کند که مدل با چه شدتی با داده‌ها برازش شود. مقدار پایین (مثلاً ۰.۰۰۱) محافظه‌کارانه است و پیش‌بینی‌ها را به حالت «مطمئن نیستم» نزدیک‌تر می‌کند. مقدار بالا (مثلاً ۱.۰) بیشتر به نمونه‌های آموزشی تکیه می‌کند. کاهش C در صورتی که مدل دچار بیش‌برازش (Overfitting) شود — یعنی روی داده‌های آموزشی عالی اما روی داده‌های جدید ضعیف باشد — کمک‌کننده است.
  • test_size (پیش‌ Frankfurt ۰.۲): کسری از داده‌ها که برای تست کنار گذاشته می‌شود. برای ۱۰۰ نمونه، روی ۸۰ مورد آموزش دیده و روی ۲۰ مورد تست می‌شود. این مقدار را می‌توان برای آموزش روی تمام داده‌ها برابر با ۰ قرار داد.
  • cv_folds (پیش‌فرض ۳): اجرای اعتبارسنجی متقابل (Cross-validation) با تقسیم داده‌های آموزشی به سه بخش، چرخش آن‌ها و میانگین‌گیری از امتیازات برای تخمین قابل‌اعتمادتر صحت مدل.

برای مجموعه‌داده‌هایی که کمتر از ۵۰ نمونه در هر کلاس دارند، ابزار هشدار می‌دهد که تخمین‌های صحت ممکن است نویز داشته باشند.

امنیت و یکپارچه‌سازی

یکپارچه‌سازی از طریق یک API ساده HTTP یا SDK پایتون انجام می‌شود. کلاس Engine به توسعه‌دهندگان اجازه می‌دهد قابلیت‌ها را بارگذاری کرده و برچسب‌ها را با یک فراخوانی متد پیش‌بینی کنند. برای مثال، یک درخواست POST به مسیر /v1/predict برای تسک banking77 با متن «دو بار برای یک تراکنش از من پول کسر شد»، برچسب transaction_charged_twice را با اطمینان ۰.۹۹۹ برمی‌گرداند.

برای امنیت، Jeffy به‌جای فرمت pickle پایتون که می‌تواند خطرناک باشد، از فایل‌های .npz numpy استفاده می‌کند. اگرچه مدل‌های سفارشی یک نسخه پشتیبان joblib pickle ذخیره می‌کنند، اما به کاربران توصیه می‌شود فایل‌های pickle سفارشی را فقط از منابع مورد اعتماد بارگذاری کنند. هر آرتیفکت شامل یک فایل manifest.json است که حاوی نام برچسب‌ها، مجموعه داده منبع، مسیر HuggingFace، هویت رمزگذار و هش‌های یکپارچگی است که هنگام بارگذاری برای جلوگیری از اجرای کدهای مخرب تأیید می‌شوند.

مجوزها و منشأ داده‌ها

کد Jeffy تحت مجوز MIT است، اما داده‌های آموزشی مجوزهای متفاوتی دارند. رمزگذار (bge-large-en-v1.5) نیز تحت مجوز MIT است. مجوزهای مجموعه‌داده‌ها عبارتند از:

  • CC BY 4.0: برای banking77، massive_intent و sms_spam.
  • CC BY 3.0: برای clinc_oos.
  • CC BY-SA 3.0: برای dbpedia.
  • CC BY-SA 4.0: برای snli.
  • آکادمیک/غیرتجاری: برای ag_news، imdb، sst2 (مجوز آکادمیک استنفورد) و emotion.
  • Twitter TOS/Academic: برای سری tweet_eval_*.

این تغییر به سمت معماری «بردار + سر»، به این معناست که توسعه‌دهندگان دیگر مجبور نیستند بین یک LLM کند اما دقیق و یک جست‌وجوی کلیدواژه‌ای سریع اما بی‌دقت انتخاب کنند. این رویکرد در واقع تکامل یافته‌ی ایده‌هایی است که در راهکار Jevlike برای کاهش تأخیر مطرح شد، جایی که امتیازدهی جایگزین تولید کلمه گشت. با منجمد کردن رمزگذار و آموزش تنها لایه سر، Jeffy راهی میانی ارائه می‌دهد که در ۲ گیگابایت حافظه رم جای می‌گیرد. لازم به ذکر است که Jeffy شامل طبقه‌بندی Zero-shot، جایگزین‌های LLM یا مسیریابی خودکار تسک‌ها نیست و کاربر باید صراحتاً طبقه‌بند مورد نظر را مشخص کند. در این راستا، مدل‌های Jeff پیش‌تر توانسته‌اند سرعت طبقه‌بندی صفر-شات را به ۲۲ میلی‌ثانیه برسانند که مکمل قابلیت‌های فعلی این ابزار است.

گام بعدی شما

  • اگر سیستم تریاژ محلی یا طبقه‌بند قصد (Intent Classifier) خصوصی می‌سازید، ابزار را از طریق uvx نصب کنید.
  • ابتدا لایه‌های banking77 یا sms_spam را برای تست سرعت روی CPU خود امتحان کنید.
  • برای داده‌های اختصاصی خود، پارامتر C را تغییر دهید تا تعادل بین دقت و تعمیم‌پذیری را پیدا کنید.

اما تأثیر این رویکرد بر کاهش هزینه‌های زیرساختی در مقیاس سازمانی حتی چشمگیرتر است — به تحلیل ما درباره‌ی استراتژی‌های استنتاج کم‌هزینه مراجعه کنید.

چرا این موضوع مهم است؟

این ابزار با حذف نیاز به GPU، دسترسی به طبقه‌بندی متنی با دقت بالا را برای توسعه‌دهندگانی که محدودیت سخت‌افزاری دارند دموکراتیزه می‌کند. این یک گام عملی در جهت کاهش هزینه‌های استنتاج و افزایش حریم خصوصی با اجرای محلی مدل‌هاست.

تأثیر برای ایران

برای توسعه‌دهندگان ایرانی که با محدودیت دسترسی به GPUهای ابری و هزینه‌های بالای VRAM مواجه‌اند، این ابزار امکان اجرای محلی و رایگان طبقه‌بندهای متنی را فراهم می‌کند.

·نگاه ما
تحریریه دات‌هوش

جداسازی رمزگذار (Encoder) از لایه‌های طبقه‌بندی، در واقع بازگشت به فلسفه مدل‌های خطی اما با قدرت نمایش‌های برداری مدرن است. این رویکرد ثابت می‌کند که برای بسیاری از کاربردهای تجاری، ما به استدلال پیچیده LLMها نیاز نداریم و یک لایه رگرسیون ساده روی بردار معنایی، همان کار را با کسری از هزینه انجام می‌دهد.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.