همه درباره مقایسه fine-tuning و RAG نظر خاص خود را دارند. کافی است در هر انجمن هوش مصنوعی چرخ بزنید تا رشتهگفتگوهای داغی پر از نمودارهای معماری و ادعاهای مربوط به بنچمارکها پیدا کنید. اکثر کسانی که این نظرات را مینویسند، هرگز یک مدل را روی دادههای خودشان آموزش ندادهاند یا شاهد شکست بیصدای یک خط لوله (pipeline) RAG در محیط عملیاتی نبودهاند.
من ماهها را صرف انجام آزمایشها کردم. دقیقاً دوازده آزمایش. من LLMها را fine-tune کردم. مدلهای embedder را fine-tune کردم. شش پیکربندی مختلف RAG ساختم. حوزه کاری پیشبینی مالی بود، بهویژه تلاش برای پیشبینی نتایج پرنویز بازار از دادههای تاریخی نامنظم. من استانداردهای آماری سختگیرانهای را برای خودم تعیین کردم، چون به دنبال پاسخهای واقعی بودم، نه ادعاهای پستهای وبلاگی.
بیشتر آزمایشها شکست خوردند. مشخص شد که آن شکستها بسیار مفیدتر از هر موفقیت شانسی بودند.
حقیقت تلخ درباره سیگنال
قبل از ورود به جزئیات، این درسی است که همه چیز را به هم پیوند میدهد. fine-tuning و RAG ابزارهایی برای تغییر دانستهها یا آنچه یک مدل میبیند هستند. آنها عصاهای جادویی نیستند که از هیچ، سیگنال تولید کنند. اگر دادههای زیربنایی شما حاوی یک الگوی واقعی و قابل بهرهبرداری نباشد، این تکنیکها چنین الگویی ایجاد نخواهند کرد. آنها فقط به شما کمک میکنند تا داستان متقاعدکنندهتری حول نویزهای تصادفی بسازید.
در پیشبینی مالی، این تله بهویژه خطرناک است. بازارها ذاتاً پرنویز هستند. وقتی یک LLM قدرتمند را به دادههای قیمت تاریخی متصل میکنید و قابلیت بازیابی (retrieval) یا fine-tuning را اضافه میکنید، بهطور خودکار برتری (edge) به دست نمیآورید. شما فقط روشی فصیحتر برای توجیه پرتاب سکه پیدا میکنید. اگر سیگنالی وجود نداشته باشد، مدل در دروغ گفتن به شما بسیار ماهر میشود. ابتدا باید این موضوع را بررسی کنید.
زمانی که مدلهای بزرگتر به جای یادگیری، حفظ میکنند
اولین اشتباه بزرگ من این بود که تصور میکردم مقیاس (scale) همه چیز را حل میکند. من یک مدل با ۱۴ میلیارد پارامتر را در برابر یک مدل ۷ میلیارد پارامتری روی دقیقاً ۷۷۷ نمونه آموزشی آزمایش کردم. مدل بزرگتر به eval_loss بهطور محسوسی بهتری دست یافت. میزان perplexity آن کاهش یافت. روی کاغذ، مدل داشت یاد میگرفت.
سپس به نرخ برد (win rate) نگاه کردم، یعنی نرخ واقعی که مدل پیشبینیهای درست انجام میداد. مدل 14B عملکرد بسیار بدتری نسبت به مدل 7B داشت. مدل نویز آموزشی را حفظ کرده بود. با کمتر از ۳۰۰۰ نمونه، مدل بزرگتر ظرفیت کافی برای بیشبرازش (overfit) روی همبستگیهای کاذب و نوسانات تصادفی دادهها را داشت. در واقع، آن یک جدول جستجو (lookup table) از نویز ساخته بود.
مدل 7B که به دلیل ظرفیت کمتر محدود شده بود، مجبور شد الگوهای گستردهتری را یاد بگیرد. این مدل نمیتوانست هزینه حفظ کردن هر ویژگی خاص و جزئی را بپردازد. اگر با مجموعهدادههای کوچک کار میکنید، با مدلهای کوچکتر شروع کنید. مقیاس رایگان نیست. وقتی دادهها کم هستند، مقیاس میتواند مستقیماً به شما آسیب برساند.
به منحنی زیان اعتماد نکنید
یاد گرفتم که دیگر به منحنیهای loss خیره نشوم. یک مدل میتواند cross-entropy در سطح توکن را بهبود ببخشد، در حالی که در تصمیمگیری تجاری واقعی که برایتان مهم است، ضعیفتر شود. این اتفاق به این دلیل میافتد که زیان مدلسازی زبان، به پیشبینی دقیق توکن بعدی پاداش میدهد. در بسیاری از حوزهها، بهویژه امور مالی، تصمیم درست و محتملترین توکن بعدی، یکی نیستند.
من مدلهایی را دیدم که نثر آموزشی را به زیبایی بازسازی میکردند، اما هر بار شرطبندی جهتدار اشتباهی را انتخاب میکردند. زیان (loss) پایین آمد، اما سرمایه (bankroll) هم همراه با آن پایین آمد. معیار ارزیابی خود را بر اساس وظیفه دنیای واقعی انتخاب کنید. اگر در حال رتبهبندی اسناد هستید، کیفیت رتبهبندی را بسنجید. اگر در حال پیشبینی نتایج هستید، دقت تصمیمگیری را اندازه بگیرید. هرگز اجازه ندهید eval_loss مدل شما را انتخاب کند.
fine-tuning تنها در واژگان بیگانه میدرخشد
من آزمایشهای fine-tuning مدلهای embedder را روی دو نوع متن مختلف انجام دادم. نوع اول شامل اخبار استاندارد مالی و گزارشهای عمومی بود. مدل embedder تنظیمشده و نسخه آماده (off-the-shelf) عملکرد یکسانی داشتند. مدل پایه از قبل این زبان را میدانست. من داشتم روی زمین آشنا تنظیم میکردم.
مجموعه داده دوم پر از اصطلاحات تخصصی خصوصی، نامهای رمز داخلی و اختصارات خاص حوزه بود که هرگز در اینترنت عمومی ظاهر نشده بودند. در اینجا، fine-tuning دقت بازیابی (retrieval accuracy) را تا ۷۹ درصد بهبود بخشید. مدل پایه به سادگی نمیدانست این اصطلاحات چه معنایی دارند. fine-tuning واژگان محلی را به آن آموزش داد.
این موضوع کل این تمرین را برای من بازتعریف کرد. fine-tuning به معنای باهوشتر کردن مدل در یک مفهوم کلی نیست؛ بلکه به معنای آموزش یک واژگان جدید، یک قالب جدید یا یک سبک نوشتاری خاص (house style) است. اگر دادههای شما شبیه اینترنت است، از fine-tuning صرفنظر کنید. اگر دادههای شما به زبانی صحبت میکنند که مدل پایه هرگز ندیده است، fine-tuning ضروری میشود.
RAG به شما قطعیت میدهد، نه حقیقت
من هشت پیکربندی مجزای RAG را برای وظایف پیشبینی آزمایش کردم. در تمام موارد، افزودن بازیابی (retrieval) حدود ۳۰ درصد از تصمیمات مدل را تغییر داد. این موضوع تأثیرگذار به نظر میرسد، اما نبود. آن تغییرات صرفاً نویز بودند. دقت کلی بهبود نیافت. آنچه تغییر کرد، میزان اطمینان مدل بود. RAG باعث شد سیستم با اطمینان بیشتری صحبت کند، منابع بیشتری را ذکر کند و توجیهات طولانیتری ارائه دهد؛ در حالی که همچنان به همان اندازه اشتباه میکرد.
این اعتمادبهنفس کاذب یک ریسک محصول است. کاربر ارجاعات را میبیند و تصور میکند مدل تکالیف خود را انجام داده است. در واقعیت، مدل داشت حدس و گمانهای پیچیدهنمایی انجام میداد.
دردناکترین درس از بکتست (backtesting) یک نسخه از RAG به دست آمد. این نسخه ۱۱ درصد سود سالانه را نشان میداد. در ظاهر، این یک استراتژی برنده به نظر میرسد. اما AUC آن (مساحت زیر منحنی ROC که معیاری برای مهارت طبقهبندی است) ۰.۴۸۶ بود. این از پرتاب سکه که مقدار آن ۰.۵۰۰ است، بدتر است. آن سود، یک اتفاق تصادفی در یک دوره خاص از بازار بود، نه یک مزیت تکرارپذیر. استفاده از P&L به تنهایی به عنوان یک معیار خطرناک است. بازارها همیشه دورههای شانس و خوششانسی را نصیب افراد میکنند. شما برای جدا کردن اتفاقات تصادفی از مهارت واقعی، به معیارهای آماری مهارت نیاز دارید.
بدانید هر ابزار واقعاً چه کاری انجام میدهد
خب، این ما را به کجا میرساند؟ زمانی از fine-tuning استفاده کنید که مدل نیاز به یادگیری کلمات جدید، قالبهای خاص یا یک سبک متمایز دارد. زمانی از RAG استفاده کنید که مدل نیاز به دسترسی به حقایق، مخازن کد یا حافظه سازمانی دارد که خارج از وزنهای (weights) آن قرار دارد. از هیچکدام از این ابزارها برای یافتن سیگنال در دادههایی که فاقد سیگنال هستند، استفاده نکنید. اگر الگوی زیربنایی وجود نداشته باشد، retrieval و fine-tuning فقط به شما کمک میکنند تا نویز را با کتوشلواری شیکتر پنهان کنید.
گلوگاه واقعی
راهاندازی زیرساخت برای fine-tuning و RAG هرگز به این آسانی نبوده است. میتوانید یک خط لوله (pipeline) را در یک بعدازظهر راهاندازی کنید. تکنیک دیگر گلوگاه نیست؛ بلکه ارزیابی (evaluation) است. اکثر تیمها از کارهای آماری سخت عبور میکنند و در عوض، معیارهای توخالی (vanity metrics) را جشن میگیرند. آنها سیستمهایی را عرضه میکنند که باهوش به نظر میرسند اما بیصدا شکست میخورند.
قبل از صرف هزینه، تستهای صادقانه انجام دهید. معیارهای خود را زیر سوال ببرید. بیشبرازش (overfitting) را بررسی کنید. مطمئن شوید که مدل واقعاً بهتر شده است،
