کامنت پروژه LLM باسلام

مساله تشخیص محصولات باسلام؛ یک تجربه عملی از به‌کارگیری LLM ها - تجربه باسلام

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

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

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

شما اول با استفاده از مدل‌های زبانی بزرگ قوی مثل gpt-4o یا کمی ضعیف‌تر مثل gpt-3.5 و خلاصه هر چیزی که صلاح می‌دونید، یک سری دیتاست برای انواع مختلف مدل‌هایی که قصد دارید براشون مدل ترین کنید، بدست میارید. بعد می‌تونید با اون دیتاست‌ها مدل‌های کوچکی مثل Bert رو آموزش بدید و کارتون رو انجام بده.

این‌طور که متوجه شدم برای پروژه شما به این علت که از چندین دسته‌بندی مختلف (تگ‌ها و دسته‌بندی‌ها و موضوعات) و چندین سطح‌بندی مختلف استفاده می‌کنید، حتماً باید چند دیتاست مجزا تهیه بشه و هر کدوم بصورت مجزا به BERTها داده بشن. این روش حتی می‌تونه ساختار سلسله‌مراتبی رو هم ساپورت کنه و خلاصه سرعت و دقت خوبی خواهد داشت.

احتمالاً با توجه به پیچیدگی موضوع‌تون مجبور بشید که مثلاً ۱۰ تا BERT ترین کنید که هر کدوم یک تسک خاص رو خوب بلدند، اما درگیر ترین‌کردن مدل‌های زبانی نمی‌شید.

این راهکار چند تا خاصیت داره و دیدم که افرادی همچون Andriy Burkov (احتمالاً کتابش رو دیدی) خیلی روش تأکید دارند. خاصیتش از این جهته که وقتی دسته‌بندی‌ها و تگ‌ها و خلاصه هر چیزی عوض میشه، به سادگی میشه با پرامپت‌نویسی خوب، دیتاست جدید بدست آورد و مدل جدید ترین کرد. مدل هم چون چیزی مثل BERT هست و چندان بزرگ نیست، بسیار سریع (بدون GPU در حد میلی‌ثانیه) عمل می‌کنه و به درد محیط پروداکشن می‌خوره. دقت این روش هم می‌تونه بسیار بالا باشه.

البته باز هم می‌گم به این علت که دقیقاً با نوع مسئله‌ای که شما باهاش درگیر بودید، درگیر نبودم، نمی‌تونم نظر قطعی بدم. ولی در کل نسبت به ترین‌کردن مدل‌های زبانی بزرگ، زاویه دارم و به شخصه سعی می‌کنم تا حد امکان سمتش نرم. مخالفتم هم تا این اندازه جدیه که تا حالا هر جا رفتم و پروژه‌ای برای فاین‌تیون مدل‌ها داشتند، کلاً کنسل شده و به سمت راه‌حل‌های دیگه‌ای رفتیم :)) یعنی بعد از مدتی متوجه شدیم که اصلاً مسئله رو بد فهمیده بودند و مشکل فاین‌تیون کردن نبوده.

کما این که به نظر میاد مشکل Inferenceتون هم چندان حل نشده و فقط تونستند فرآیند رو یکبار بصورت offline تا آخر ببرید و به نظرم برای Scaleکردن و Online Inference (خصوصاً در تعداد درخواست بالا) به مشکل برمی‌خورید. بعضی وقت‌ها فکر می‌کنم که استفاده از LLMها برای بعضی‌ تسک‌های ساده مثل اینه که از فیل برای کشتن مورچه استفاده کنیم.

به هر حال امیدوارم که موفق باشید و بتونم تجربه‌های بیشتری در این زمینه ازتون ببینم.

پی‌نوشت: الان که کامنتم رو خوندم، به نظرم کمی تند بود. امیدوارم که این تندی رو نسبت به «شخص» خودت در نظر نگیری. کما این که بعد از خوندن پست، کانال تلگرامت رو پیدا کردم و عضوش شدم که کلی بشینم ازت یاد بگیرم.

با تشکر و احترام فراوان امیر پورمند


سلام مجدد.
می‌خواستم ادیت بزنم دیدم نمیشه.
ادیت اول: منظورم از پست Andriy Burkov هم چیزی مثل اینه.

https://www.linkedin.com/posts/andriyburkov_stages-of-the-modern-ml-project-1-start-activity-7203953423564619776-PFCw?utm_source=share&utm_medium=member_desktop

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

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