چرا TheTensorTune را ساختیم

6 دقیقه مطالعهپست وبلاگ
چرا TheTensorTune را ساختیم

قصه واقعی پشت TheTensorTune: چه چیزهایی درباره ابزارهای فاین‌تیون اذیتمان می‌کرد، چرا کل برنامه باید در یک فایل پایتون جا می‌شد، و در نسخه ۱.۰ چه چیزی عرضه شد.

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

هدف هرگز رقابت با فریم‌ورک‌های بزرگ آموزش نبود؛ آن‌ها در کارشان خوبند. هدف این بود که حلقه استاندارد — دیتاست، مدل، تنظیمات LoRA، آموزش، ارزیابی، خروجی — را به چیزی تبدیل کنیم که سر تا تهش را ببینی و لمس کنی، بدون خروج از تب مرورگر. فاین‌تیون دیگر یک آیین نادر نیست؛ برای خیلی‌ها یک کار روزمره است و لایق یک میزکار بود، نه یک چک‌لیست.

یک فایل، عمداً

این محدودیت وقتی نوشتیمش پوچ به نظر می‌رسید: کل برنامه یک فایل پایتون است. بدون ساختار پکیج، بدون مرحله build، بدون ایمیج کانتینر. دلیلش عملی است. یک فایل، خواندنش راحت است، ممیزی‌اش راحت است، و راحت می‌شود روی فلش ریخت و دست همکار داد. وقتی کسی می‌پرسد «این واقعاً با داده من چه می‌کند؟» جواب می‌تواند این باشد: «فایل را باز کن و نگاه کن» — و این جواب واقعاً در یک بعدازظهر خواندن جا می‌شود.

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

در نسخه ۱.۰ چه بود

  • میزکار — بومی گراف گره‌محور که هر مرحله رویش یک بلوک است، به انگلیسی و فارسی راست‌به‌چپ کامل.
  • آموزش واقعی — PEFT در زیر، با checkpoint، ادامه از همان‌جا و توقف زودهنگام.
  • جواب، نه فقط فایل — چت آزمایشی و مقایسه کنار‌به‌کنار، چون مدلی که نمی‌شود باش حرف زد یک فایل است، نه یک نتیجه.
  • خروجی‌ای که اجرا می‌شود — ادغام و کوانتیزه به GGUF با یک کلیک، آماده Ollama و llama.cpp.
  • دوره‌ای داخل برنامه — دوازده درس با اسکرین‌شات، از اولین آپلود تا اتوماسیون با API.

قبل از تگ ۱.۰، این انتشار از پنجاه سناریوی تست عبور کرد — سی تابعی و بیست سر تا سر — به‌علاوه یک سری رگرسیون امنیتی که path traversal، SSRF، XSS، CSRF، مدیریت توکن و سخت‌سازی آپلود را پوشش می‌داد. آن قسمت بامزه نبود و هیچ‌وقت هم حذفش نمی‌کردیم. ابزاری به فایل‌های شما دست می‌زند و یک سرور محلی اجرا می‌کند، باید دقیقاً در همان جاها خسته‌کننده باشد.

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

#پشت صحنه#چرخه کار