NLP stuff
4.05K subscribers
147 photos
1 video
2 files
277 links
مطالب خوب و به‌دردبخور در حوزه‌ی هوش مصنوعی و پردازش زبان طبیعی!

شکرشکن شوند همه طوطیان هند
زین قند پارسی که به بنگاله می‌رود

اگر انتقاد، پیشنهاد و یا مطلب مفیدی (لینک، پست و ...) داشتید:
@AliAkbarBadri
@mmsamiei
@MmahdiAghajani
加入频道
داستان آلفاگو

بازی گو یک بازی تخته ای دو نفره است که در شرق آسیا از قدیم الایام خیلی طرفدار داشته و قوانینش از شطرنج هم ساده‌ترند. اما علی رغم این سادگی قوانین، استراتژی‌های خیلی پیچیده‌ای رو می‌طلبه. به همین علت با این که کامپیوتر‌ها تونستند سال ۱۹۹۶ برای اولین بار قهرمان انسان‌ها رو در شطرنج شکست بدن ولی برای تکرار این موفقیت در گو، قریب به دو دهه انتظار کشیدند تا بالاخره دیپ مایند با مدل آلفاگو تونست این کار رو به سرانجام برسونه.
در این پست در ویرگول سعی‌ کردیم معماری و نحوه آموزش مدل آلفاگو رو به توضیح بدیم. آلفاگو در سال ۲۰۱۵ برای خودش انقلابی در زمینه هوش مصنوعی محسوب می‌شده و باعث شد که موجی از توجهات به RL و یادگیری تقویتی جلب بشه. انشالله اگر عمری باقی باشه به باقی مقالات و مدل‌های مهم جریان‌ساز هوش مصنوعی نیز می‌پردازیم.

لینک پست:
https://virgool.io/overfit/alphago-mhoamralnzeq

#overfit
#read
#paper
#blog

@nlp_stuff
مدل NLLB-200 از متا؛ ترجمه ماشینی ۲۰۰ زبانه

فرض کنید دیگه زبان یه محدودیت برای استفاده از سایت‌های مختلف و مکالمه با افرادی در زبان‌های دیگه نباشه. هدف ترجمه ماشینی همینه.
حالا گروه هوش فیس‌بوک یا همون Meta AI اومده یه گام بلند برداشته و اسم این گام رو No Language Left Behind (NLLB) گذاشته که این گام شامل دو تا پروژه‌ست:
اول. ترجمه ماشینی بین ۲۰۰ زبان! اما نه فقط برای زبان‌های معروف بلک حتی برای زبان‌های با منابع کم مثل اردو و اتریشی).
دوم. ترجمه صدا (speech) برای زبان‌های مختلف که برای همه زبان‌ها من جمله زبان‌هایی که ساختار نوشتاری استانداردی ندارند قابل استفاده‌ست.

این مدل نسبت به Google Translate یک مقدار محصوصا در زبان‌های کم‌منبع بهتر شده اما نکته مهم‌تر اینه که این مدل اوپن سورسه که ملت راه رو ادامه بدن. همین کافیه تا ببینید چقدر این کارشون ارزشمنده و بازی‌عوض‌کنه. این به کجا ختم میشه؟ به اونجا که شما مثلا میتونید توی متاورس با ملت از هر جای جهان تعامل داشته باشید و مثلا با هم بشینید جلسه کتابخوانی راه بندازید و هر کس به زبون خودش حرف بزنه. اونجا که کتاب‌ها به همه زبان‌ها ترجمه بشن مخصوصا از زبان‌های گمنام‌تر به زبان‌های پرطرفدارتر که در لینک اول پایین می‌تونید نمونه‌هاشو ببینید. جالب نیست؟
شروع این حرکت از معماری LASER در سال ۲۰۱۸ اتفاق افتاد که اون موقع از ۵۰ زبان پشتیبانی می‌کرد و واقعا مدل کارایی بود؛ قبلا هم از این مدل در کانال اسم آوردیم. چند مدل و دیتای دیگه داده شد تا رسید به LASER2 با پشتیبانی از ۱۰۰ زبان. بعد هم NLLB-200 که امسال دادند برای ترجمه‌ای ۲۰۰ زبانه و بعد دیتای NLLB-Data-200 و در نهایت LASER3 که وظیفه‌اش اینه که امبدینگ‌هایی بسازه که جملاتی که در ۲۰۰ زبان مختلف یک معنی میدن راحت پیدا بشن.
تا اینجا رو داشته باشید و یه سر به لینک‌ها بزنید تا در موعدی اگر عمر و وقت بیشتر بود مفصل مدلش رو هم شرح بدیم.


لینک دمو:
https://nllb.metademolab.com

لینک بلاگ کلی:
https://ai.facebook.com/research/no-language-left-behind/

لینک بلاگ جزئی‌تر:
https://ai.facebook.com/blog/nllb-200-high-quality-machine-translation/

لینک مقاله:
https://research.facebook.com/publications/no-language-left-behind/

لینگ ریپو (مدل، دیتا و…)
https://github.com/facebookresearch/fairseq/tree/nllb/

#read
#paper
#blog

@nlp_stuff
گلچین مقاله‌های گرافی ICML2022

کنفرانس ICML (که یکی از معروف‌ترین کنفرانس‌های مربوط به ماشین لرنینگه) در هفته‌ای که گذشت برگزار شد و خب حالا نوبت دروی محصولاته. در همین راستا آقای Galkin اومدند و گلچینی از مهم‌ترین مقالات گرافی ICML2022 در حوزه‌های مختلف مثل مدل‌های Diffusion تولید گراف، ترنسفورمر‌های گرافی، استدلال الگوریتمی به کمک گراف و استدلال بر روی گراف‌های دانش و ... رو مرور کردند. در صورتی که سر و کارتون با فیلد ماشین لرنینگ گرافی هست میتونه مفید باشه براتون.

لینک بلاگ:
https://towardsdatascience.com/graph-machine-learning-icml-2022-252f39865c70

#read
#blog

@nlp_stuff
تیر آخر برای فهمیدن ترنسفورمرها!

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

لینک بلاگ:
https://e2eml.school/transformers.html

لینک پیاده‌سازی:
http://nlp.seas.harvard.edu/annotated-transformer

لینک ریپو:
https://github.com/dair-ai/Transformers-Recipe

#read
#blog

@nlp_stuff
مرور روش‌های SSL (Self-Supervised Learning) در پیش‌یادگیری NLP

آقا آمیت در این بلاگ پست (مال سال ۲۰۲۰عه) به صورت خیلی جمع و جور اومده یه مروری کرده که چه تسک‌هایی با SSL طراحی شدند که نقش pretext یا همون pretraining رو میتونند به عهده بگیرند. یکیش رو همین الان نقدا باید بدونید: Masked Language Modeling. این تسک شامل ماسک کردن کلمه و حدس زدنش توسط مدله که در برت استفاده شد. یازده تا روش این مدلی رو ایشون توضیح داده که مدل با اینا می‌تونه بدون اینکه لازم باشه داده‌ای لیبل بزنیم، از روی متن representationها رو یاد بگیره و بعد بتونه جلوی تسک‌های مختلف قدعلم کنه. اگر ده دقیقه وقت دارید، این بلاگ پست رو بخونید و لذت ببرید.

این یازده تا روش به صورت یکجا به اضافه‌ی مقالاتی که از این روش‌ها استفاده کردند:
Center Word Prediction (Continuous Bag of Words in Word2Vec)
Neighbor Word Prediction (skip-gram in Word2Vec)
Neighbor Sentence Prediction (Skip-Thought Vectors)
Auto-regressive Language Modeling (Neural Probabilistic Language Model, GPT)
Masked Language Modeling (BERT, RoBERTa and ALBERT)
Next Sentence Prediction (BERT)
Sentence Order Prediction (ALBERT)
Sentence Permutation (BART)
Document Rotation (BART)
Emoji Prediction (DeepMoji)
Gap Sentence Generation (PEGASUS)


لینک پست:
https://amitness.com/2020/05/self-supervised-learning-nlp/

#read
#blog

@nlp_stuff
سلطان PaLI به دنیای تصویر-متن سلام می‌کند!

بارها گفتیم که دوره یکه‌تازی مدل‌های multimodal شروع شده. این اواخر نیز ظهور مدل‌هایی مانند Stable Diffusion توجه همه رو به این حوزه دوباره جلب کرد. حالا گوگل با فهم درست شرایط حساس کنونی، یک مدل general purpose برای این حوزه ارایه داده که باهاش تقریبا هر تسک تصویر-متن‌ی رو می‌تونید انجام بدید و حتی به این بسنده نکرده و مدل رو به صورت multilingual آموزش داده (که فارسی هم ساپورت می‌کنه). معماری مدل خیلی ساده است و در شکل هم می‌تونید ببینید که یک vision transformer داره که طبیعتا کار فهم تصویر رو انجام می‌ده و برای فهم متن هم از مدل T5 استفاده می‌کنه که همون‌طور که می‌دونید مدل زبانی هست که تمامی مسایل حوزه پردازش زبان رو به صورت text-to-text مدل می‌کنه و عملا قابلیت general purpose بودن PaLI رو فراهم می‌کنه. این مدل هم مانند مدل‌های خفن اخیر یه کامیون پارامتر داره که حدود ۱۷ میلیارده که از این مقدار حدود ۴ میلیارد سهم مدل فهم تصویر و ۱۳ میلیارد سهم مدل فهم زبانی هستش! همچنین برای خلق این همه جلال، دست به جمع‌آوری یک دیتاست بسیار عظیم زدند که اسمش رو WebLI گذاشتند و حدود ۱۰ میلیارد زوج تصویر-متن به زبان‌های مختلف داره (حقیقتا با این همه تلاش و توسعه کلا مفهوم میلیارد رو به سخره گرفتند). نکته قابل توجه اینه که این مدل در برخی از بنچمارک‌های حوزه تصویر-متن مانند COCO-captions، TextCaps و VQAv2 تونسته رکورد بزنه و مدل‌های دیگه رو شکست بده. البته اگه نمی‌تونید مدل ۱۷ میلیارد پارامتری‌ش رو لود کنید نگران نباشید چون نسخه‌های کوچک‌تر هم بیرون دادند که حدود ۳ میلیارد پارامتر داره و با توجه به شرایط فعلی باز هم نمی‌تونید اون مدل رو لود کنید :)) پس فقط نگاه کنید و لذت ببرید.

لینک بلاگ:
https://ai.googleblog.com/2022/09/pali-scaling-language-image-learning-in.html

#read
#blog

@nlp_stuff
اورفیت‌کردن در حکمرانی

موضوع علم یادگیری ماشین، تعمیم (Generalization) است. به خاطر همین هدف قرار گرفتن تعمیم، مفاهیم یادگیری ماشین می‌توانند شهودی برای همه قضایای دیگر از جمله اقتصاد و سیاست و حکمرانی قرار گیرند. یکی از پایه‌ای ترین این مفاهیم، بیش‌برازش یا overfiting است. همانطور که می‌دانید ما وقتی می خواهیم یک مدل را به منظور رسیدن به یک هدف آموزش دهیم، از ‌آنجایی که ممکن است این هدف به صورت مستقیم قابل دسترسی نباشد، مدل را بر روی یک proxy به امید رسیدن به آن هدف آموزش می‌دهیم. مثلا ما می‌خواهیم یک مدل دسته‌بندی تصاویر سگ‌ها و گربه‌ها را با هدف بیشتر کردن دقت آن آموزش دهیم، اما از آن جا که معیار دقت قابل بهینه‌سازی نیست و همچنین نمی‌توانیم تمام سگ و گربه‌های دنیا را تصویربرداری کنیم، ما مدل را بر روی تابع هزینه کراس انتروپی و البته بر روی مجموعه محدودی از دادگان آموزش می‌دهیم. حال در فرآیند آموزش ممکن است پس از مدتی میزان عملکرد ما بر روی این پراکسی بهبود یابد اما فاصله ما از هدف اصلی بیشتر و بیشتر شود.

به موازات بیش‌برازش،‌ در علم اقتصاد قانونی به نام گودهارت وجود دارد که بیان می‌کند "وقتی یک شاخص اندازه‌گیری به یک هدف تبدیل شود، دیگر شاخص خوبی نخواهد بود". برای مثال فرض کنید شما رییس یک دانشگاه هستید و سعی دارید تا کیفیت علمی دانشگاه را افزایش دهید و به همین جهت بر روی تعداد مقالات منتشرشده و تعداد ارجاعات ‌آن‌ها، سیاست‌های تشویقی اعمال می‌کنید. در ابتدا کیفیت علمی دانشگاه اندکی رشد می‌کند اما پس از مدتی مشاهده می‌کنید که تعداد مقالات و ارجاعات چند برابر شده اما با انبوهی از مقالات بی کیفیت و همچینن خودارجاعی‌های بین نویسندگان مختلف ‌آن‌ها مواجه هستید. به همین دلیل شاخص تعداد مقالات دیگر نمی‌تواند یک شاخص خوبی برای افزایش کیفیت علمی دانشگاه شما باشد.

حال آقای Dickstein پژوهشگر Google Brain، در بلاگی با تناظر اورفیت و قانون گودهارت پا را فراتر گذاشته و صورت قوی‌تری از قانون گودهارت را ارائه کرده است: "وقتی یک شاخص اندازه‌گیری به یک هدف تبدیل می‌شود، وقتی بیش از حد در آن کارآمد می شویم، هدف اصلی که به دنبال آن بودیم بدتر می شود" برای مثال ممکن است هدف، پیداکردن حکمرانانی با بیشترین میزان مقبولیت و انتفاع در میان مردم باشد و شاخص این کار را آرای مردمی قرار دهیم. حال اگر فقط بر این شاخص تکیه کنیم، ممکن است تنها افراد صاحب سرمایه و رسانه‌ به قدرت برسند که قابلیت دستکاری افکار عمومی را دارند و در نهایت منجر به ظهور الیگارشی شوند. و یا این که هدف ما داشتن جامعه آگاه و متفکر باشد و برای رسیدن به این هدف شاخص آزادی تبادل اطلاعات را قرار دهیم، در صورت تکیه بر تنها این شاخص در نهایت ممکن است با پدیده‌های حباب فیلتر و رواج تئوری‌های توطئه و شبه علم مواجه شویم. Dickstein در این بلاگ این قبیل‌ مثال‌ها را به خوبی توضیح داده و سپس سعی می‌کند تا با بررسی راهکار‌های حل اورفیت تناظری از آن‌ها را برای حل مشکلات دیگر مطرح شده ارائه کند. از جمله این راهکار‌ها می‌توان به اضافه کردن هزینه منظم‌سازی (regularization)، تزریق نویز به سیستم، توقف زودهنگام و محدودکردن ظرفیت مدل یا بیشترکردن ظرفیت آن (پی‌نوشت را ببینید!) را ارائه داد. برای مثال برای حل مشکل حباب فیلتر که در آن فرد دچار انزوای فکری می‌شود و الگوریتم‌های توصیه‌گر فقط محدوده علاقه او را به او نشان می‌دهند، می‌توانیم هر از گاهی با نویز عمل کنیم و او را از حباب‌هایی که به لحاظ فرهنگی و ایدئولوژیک با سلیقه و ذائقهٔ او همخوانی دارند خارج کنیم. خواندن این بلاگ (که مورد تایید آقامون کارپثی هم هست) را به همه شما توصیه می‌کنیم.

پی‌نوشت: یکی از جالب‌ترین مثال‌های بررسی شده در اینجا، میزان تریدآف بین شفافیت و privacy است. در صورتی که این تریدآف در میانه باشد ممکن است اقلیتی از آن و رانت اطلاعاتی به منظور تسلط بر سایرین استفاده کنند که نهایتا منجر به بدترشدن وضع می‌شود. دو راهکار پیشنهادی برای این حالت می‌تواند این باشد که یا مدل را کوچکتر کنیم و دسترسی همه به شفافیت و هر نوع اطلاعاتی از سایرین را ببندیم تا کسی قدرت سواستفاده از اطلاعات را نداشته باشد و یا این که راهکار بسیار بزرگترکردن مدل را در پیش بگیریم. این راهکار بسیار شبیه به موضوع overparameterization در یادگیری ماشین است که اخیرا بسیار مورد توجه قرار گرفته است. در این حالت بایستی روی همه چیز شفافیت داشته باشیم، در حدی که همه افراد از همه اطلاعات هم خبر داشته باشند، در این صورت دیگر امکان سواستفاده از اطلاعات پیش نخواهد آمد!

لینک بلاگ:
https://sohl-dickstein.github.io/2022/11/06/strong-Goodhart.html

#read
#blog

@nlp_stuff
اسپارک؛ سهل و ممتنع!

اگر در حوزه تحلیل دیتا کار کرده باشید قطعا با ابزارهای data manipulation مانند pandas یا spark کار کردید. در این پست قصد داریم رشته بلاگی رو به شما معرفی کنیم که مفاهیم پایه‌ای spark رو به شما یاد میده. فهم این مفاهیم کمک می‌کنه که کوعری‌های بهتری در اسپارک بزنید و یا علت کند اجرا شدن برخی از کوعری‌ها رو بفهمید. همون‌طور که می‌دونید spark در دوحالت cluster mode و client mode اجرا میشه که معمولا برای کارهای تحلیلی که خیلی پروداکشنی نیست از همین حالت client mode استفاده می‌کنیم که در واقع تنها کاری که برای بهره بردن از اسپارک باید انجام بدید نصب پکیج pyspark بر روی سیستمتون هست (درست مثل pandas). حسن بزرگ اسپارک اینه که محاسبات بر روی دیتای حجیم رو می‌تونه بین چندین executor بشکونه و محاسبات هر executor توی ram اجرا میشه و executorها نتایج کارشون رو با استفاده از ارتباط با driver به اشتراک می‌ذارن تا نتیجه نهایی بدست بیاد (همون‌طور که متوجه شدید معماری کل اسپارک حالت master/slave داره) این وسط با کانفیگ‌هایی که روی اسپارک انجام میدید میتونید حداکثر استفاده از ram رو تعیین کنید تا خیالتون راحت باشه که همه ram سیستم شما مورد استفاده قرار نگیره. این رشته بلاگ ابتدا مفاهیمی مانند driver و executor و scheduler رو توضیح داده و سپس به سراغ توضیح پارتیشن‌ها رفته. پارتیشن‌ها بخش‌هایی از دیتا هستند که می‌تونند به صورت توزیع‌شده باشند و یا به صورت موازی پردازش بر روی اون‌ها انجام بگیره. در واقع هر executor در لحظه می‌تونه فقط یک پارتیشن از دیتا رو پردازش کنه ولی driver می‌تونه چندین executor رو به کار بگیره برای اینکه پردازش دیتا همزمان روی چندین پارتیشن انجام بشه.
این رشته بلاگ توضیح داده که برخی از transformationها یا کوعری ها حالت narrow دارند که به این معنیه که انجام اونها منجر به repartition شدن دیتا نمیشه مانند map یا filter ولی برخی دیگه wide transformation هستند که منجر به repartition شدن دیتا میشه مانند groupby که wide transformationها می‌تونند کوعری‌های سنگین‌تری باشند.  (همون‌طور که می‌دونید کوعری‌ها در اسپارک lazy هستند به این معنی که در لحظه اجرا نمیشند بلکه مواقع خاصی مانند تبدیل نتایج به list و یا ذخیره کردن داده اجرا میشند که این به اسپارک اجازه میده از زنجیره کوعری‌ها یک گراف محاسباتی بسازه و اون رو قبل از اجرا بهینه کنه)
در نهایت اومده و memory management در اسپارک رو توضیح داده که یکی از مهم‌ترین و البته پیچیده‌ترین قسمت‌های فهم اسپارک هست و گفته که memory management در سطوح مختلف قابل تعریفه مثل driver memory و یا executor memory و ...
توصیه می‌کنیم حتما این رشته بلاگ رو بخونید و سعی کنید از این به بعد به جای pandas از spark استفاده کنید که وقتی دیتای حجیم دیدید هول نکنید!

لینک رشته بلاگ:
https://luminousmen.com/post/hadoop-yarn-spark

#handsOn
#read
#blog

@nlp_stuff
قلب چت جی‌پی‌تی: هوش مصنوعی با فیدبک‌های واقعی

قبلا در این پست (https://yangx.top/nlp_stuff/313) به توضیح مختصری از داستان ChatGPT پرداخته بودیم.
حالا در یک بلاگ پست قصد داریم قلب آموزش این مدل یعنی Reinforcement Learning from Human Preferences رو توضیح بدیم.
لطفا با بقیه هم به اشتراک بذارید.

لینک پست ویرگول:
https://virgool.io/overfit/rlhf-vkpgfist80nt

لینک مقاله:
https://arxiv.org/abs/1706.03741

#read
#blog

@nlp_stuff
شکست gpt3.5 توسط مدل وزن‌باز Mixtral-8x7B-v0.1 !

خلاصه بخوایم بگیم: جدیدا شرکت Mistral.ai یه مدل داده بیرون به اسم Mixtral-8x7B-v0.1 که با هشت تا مدل هفت میلیارد پارامتری Mistral با روش  high-quality sparse mixture of experts model (SMoE) ساخته شده، تونسته در اکثر ارزیابی‌ها هم لاما ۷۰ میلیاردی و هم جی‌پی‌تی۳.۵ رو شکست بده. خوش‌مزگی داستان اینه که یک سال بعد از جی‌پی‌تی ۳.۵ حالا میشه این مدل رو به صورت لوکال (طبیعتا با رم و جی‌پی‌یو به اندازه کافی) سرو کرد. این مدل رو میسترال خیلی لاتی‌طور اول یه لینک تورنت بدون توضیح گذاشت و بعد که ملت به جنب و جوش دراومدند، چند روز بعد یه توضیحی هم منتشر کرد!

مدل mixtral 8x7b که امروز توسط میسترال منتشر شد یک سطح جدیدی برای مدل وزن‌باز (نه متن‌باز، چون کد و دیتا و... رو نداده) را ارائه کرد و تونست مدل چت جی‌پی‌تی ۳.۵ رو در اکثر بنچمارک‌ها شکست بده. معماری این مدل شبیه مدل میسترال ۷ میلیاردیه (به زودی معماری اون هم براتون شرح خواهیم داد) با این تفاوت که در حقیقت این مدل جدید ۸ تا مدل expert در یک پکه. اینجا از یک تکنیک به نام MoE (Mixture of Experts) استفاده شده. این مدل یک مدل دیکودریه که بلوک فیدفوروارد بین ۸ گروه از پارامترها در هر لایه و برای هر توکن دو تا از این کارشناس‌ها (expert) رو انتخاب میکنه که توکن پردازش بشه. در معماری ترنسفورمرها یک سری لایه feed-forward داره، در MoE جای بعضی از این لایه‌ها از لایه‌های MoE استفاده شده است. لایه‌ی MoE یک شبکه‌ی روتری داره که انتخاب میکنه کدوم کارشناس (Expert) کدوم توکن‌ها رو بهتر پردازش می‌کنند. این تکنینم باعث میشه تعدا پارامترها زیاد بشه اما هزینه و سرعت کنترل بشه چون مدل فقط از بخشی از تعداد کل پارامترها رو برای یک توکن استفاده می‌کنه. همونطور که گفتیم در این میکسترال دو تا کارشناس در هر لحظه انتخاب میشن که باعث میشه سرعت دیکودینگ شبیه یه مدل ۱۲.۹ میلیاردی بشه در صورتی که ۴ برابرش (۴۶.۷ میلیارد) پارامتر داره!! یه عده اشتباه فکر میکردند ۵۶ میلیارد (۸*۷) پارامتر داره ولی اشتباهه چون فقط بعضی لایه‌های feed-forward فقط تکرار شدند نه همگی پارامترها. اگر بابت MoE کمی گیج شدید، نگران نباشید چون این یکی هم مفصلا در پست دیگه‌ای شرح میدیم. تا اینجا دو تا  طلبتون پس.

جونمون براتون بگه که مدل پایه و مدل Instruct رو منتشر کردند. طول کانتکستش ۳۲ هزار شده. تونسته مساوی یا بهتر از مدل ۷۰ میلیاردی لاما۲ و  جی‌پی‌تی ۳.۵ در اکثر بنچ‌مارک‌ها باشه. عکس نتایج رو در پیوست گذاشتیم. پنج تا زبون انگلیسی، فرانسوی، آلمانی، اسپانیایی و ایتالیایی رو بلده (به نظر روی دیتای togethercomputer/RedPajama-Data-V2 ترینش کردند، حدس ماست). توی تسک کدزنی هم خوبه و توی HumanEval به ۴۰.۲ رسیده. در نهایتا هم با Apache2.0 منتشرش کردند که همگی صفا کنیم. مدل Instruct فرمت پرامپت خودشو داره که توی لینک‌هایی که آخر میذاریم هست. مثل میسترال ۷b نمیدونیم دیتاستش چیه و چه حجمی داره و چجور پیش‌پردازش شده. دیتای sft و DPO (برای فاین تیون کردن) هم نمیدونیم! کد لود کردن و اینفرنس هم توی لینک‌ها هست که البته حداقل ۳۰ گیگ رم و جی‌پی‌یویی مثل A100 می‌خواد.


لینک بلاگ پست انتشار مدل:
https://mistral.ai/news/mixtral-of-experts/

لینک مدل پایه Mixtral-8x7B-v0.1:
https://huggingface.co/mistralai/Mixtral-8x7B-v0.1

لینک مدل Mixtral-8x7B-Instruct-v0.1:
https://huggingface.co/mistralai/Mixtral-8x7B-Instruct-v0.1

لینک بلاگ هاگینگ‌فیس:
https://huggingface.co/blog/mixtral

#read
#blog
#link
#model

@nlp_stuff
فاین تیون در سال ۲۰۲۵

اخیرا یکی از مهندس‌های هاگینگ فیس به نام فیلیپ اشمیت با یک بلاگ پست زیر و بم «تنظیم دقیق (SFT) مدل‌های زبانی وزن‌باز با هاگینگ فیس» را توضیح داده. نوت‌بوک‌ها و اسکریپت‌های پایتونیش را هم گذاشته.

پست شامل این موارده:
- کجا خوبه فاین تیون کنیم و کجا از پراپمتینگ استفاده کنیم؟
- چطور از کتابخونه‌ای مثل TRL (Transformer Reinforcement Learning) (برای SFT) استفاده کنیم؟
- چطور دیتاست مناسب فاین تیون را آماده کنیم؟
- چطور از روش QLoRA (برای آموزش با کوانتیزیشن ۴ بیتی)، روش Spectrum (برای انتخاب بهینه‌ی لایه‌های پراطلاعات)، Flash Attention و Liger Kernel (برای سریعتر شدن) استفاده کنیم؟
- چطور از کتابخونه‌ی فوق العاده‌ی DeepSpeed و Accelerate برای استفاده از چندین GPU بهره ببریم؟
- چطور ارزیابی کنیم؟
- چطور با استفاده از کتابخونه‌هایی مثل TGI (Text Generation Inference) و vLLM مدلمون را روی پروداکشن ببریم.

خلاصه توصیه می‌کنیم این پست جمع و جور (البته با کلی لینک برای مطالعه عمیق‌تر) را حتما بخونید.

لینک به بلاگ:
https://www.philschmid.de/fine-tune-llms-in-2025

#read
#blog

@nlp_stuff
👍4🔥3
مدل‌های استدلالی (reasoning) چیست و چگونه ساخته می‌شوند؟

حتما این روزها بارها مدل‌های استدلالی مثل DeepSeek R1 به گوش و چشمتون خورده. اگر هنوز دقیق نمی‌دونید این مدلها معنیشون چیه و کجا به درد میخورند، بیاید که دواتون پیش آقای سباستین راشکا (نویسنده کتاب Build a Large Language Model From Scratch) هست. ایشون یه بلاگ مشتی راجع به مدل‌های استدلالی (همون reasoning) نوشته و مثل همیشه خیلی خوب داستان را شفاف کرده. این را داشته باشید تا منابع بعدی.

مواردی که در این بلاگ توضیح میده:
- تعریف مدل استدلالی چیه؟
- کجا باید از این مدل‌ها استفاده کنیم؟
- پایپلاین پشت R1 چیه؟
- چهار روش اصلی برای ساختن و بهبود مدلهای استدلالی چیه؟
- نکاتی پیرامون مدل R1
- نکاتی برای توسعه مدل‌های استدلالی با بودجه بسیار کم (حتی به اندازه دانشگاه‌های ایران کم ☺️)

اول میگه استدلال (reasoning) واسه وقتیه که سوالی را حل کنیم که نیاز به راه‌حل پیچیده و چندمرحله‌ای داره. مثلا پایتخت فرانسه کجاست اینجوری نیست ولی مثلا حل یه سوال فیزیک و ریاضی یا سوال acmای اینجوریه.

بعد میاد میگه سه جا خوب نیست اصلا از این مدل‌ها استفاده کنیم:
- وقتی ما نیاز به سرعت و قیمت پایین داریم
- وقتی سوال‌های دانشی (knowledge based) مثل همین پایتخت داریم چون این مدل‌ها دچار هذیان‌گویی میشن
- سوالات ساده چون این مدل‌ها مثل اکثر ما overthink میکنند

در ادامه میاد پایپلاین R1 را به شکل بسیار روان و ساده‌ای توضیح میده. عکس ضمیمه یک کلیتی از این پایپلاینه. میگه deepseek سه تا مدل داده: DeepSeek-R1-Zero، DeepSeek-R1 و DeepSeek-R1-Distill.
اول. با مدل DeepSeek-V3 که سپتامبر بیرون دادن، با یک RL cold start (بدون SFT) شبیه همون RLHF با دو تا reward (یکی دقت و دومی فرمت به جای ترجیح آدمیزاد) آموزش میده؛ و مدل DeepSeek-R1-Zero را درست میکنه. بعد از همین مدل میاد یه داده SFT بزرگ درست میکنه. ریوارد دقت میاد از leetcode استفاده میکنه که نتیجه کد را مستقیما اجرا کنه و بگه!! فرمت هم میاد از یه سری تگ استفاده میکنه که دقیقا با همون فرمت جواب بده.
دوم. بعد دوباره همون مدل زبانی اولیه سپتامبری DeepSeek-V3 را با همین دیتا SFT که در مرحله قبل ساخته شده بود یه بار فاین تیون میکنه و دوباره همون RL رو میزنه. این بار ولی بهش consistency هم اضافه میکنه که مدل سر چند زبانه بودن پنالتی نزنه. از همین مدل دو تا دیتاست SFT میسازه که یکیش با اندازه ۶۰۰ هزارتا chaing of thoughts داره و دیگری با اندازه ۲۰۰هزارتا knowldegeای هستش. بعد میاد یه RL دیگه هم میزنه که دیتاش کد و ریاضی هست. اینجا مدل DeepSeek R1 معروف ساخته میشه.
سوم. از اون دوتا دیتای SFT هم برای آموزش مدل‌های distill استفاده میکنه. البته اینجا distill مثل اون معروفه نیست، اینجا وقتی دیتای sft رو یه مدل قوی درست میکنه و مدل کوچیک (نیم الی ۷۰ میلیاردی) باهاش فاین تیون میشه، بهش میگن distillation.

خلاصه چهار تا روش برای تولید مدل استدلالی میگه:
- روش inference-time scaling: که از پرامپت و اینا استفاده میشه. منابع بیشتری لازمه. گرونتر هم درمیاد چون خیلی حرف میزنه.
- روش RL خالص مثل DeepSeek-R1-Zero
- روش SFT + RL مثل DeepSeek-R1
- روش SFT خالص با distillation: مثل DeepSeek-R1-Distill-Qwen
برای هر کدوم میزان کارایی رو توضیح میده و نهایتا میگه حالت سوم بهترین نتیجه رو میده ولی موارد دیگه هم چیزای جالبی بهمون یاد میده مثل اینکه RL خالی هم به استدلال مدل خیلی کمک میکنه.

در این بلاگ حدس‌های خوبی هم راجع به اینکه O1 و mini-O1 هم چطور آموزش داده شدند میگه که O1 ترکیب سوم و اولیه و o1-mini روش چهارم هست.

در نهایت هم میاد نظراتش رو راجع به R1 vs O1 میگه: در کل شبیه هم هستند ولی R1 بهینه‌تر و ارزانتره که دلیلش رو این میدونه که دیپ‌سیک بیشتر روی آموزش مدل وقت گذاشته ولی o1 روی inference-time رفته. و چون ما اندازه مدل o1 رو نمیدونیم خیلی مقایسه منصفانه‌ای نخواهیم داشت. درباره‌ی هزینه هم میگه این ۶ میلیون دلار که معروف شده ترکیب DeepSeek-R1 (همون سپتامبریه که پایه‌ی R1 هست) و R1 هستش ولی هزینه R1 رو دیپ‌سیک مشخص نکرده.

برای موضوع آخر هم میگه کسایی که پول کم هم دارند خوبه برن سراغ Distillation: به لطف مقاله مفصلی که برای R1 نوشتند مشخص شد که این روش هم خیلی موثره. مثلا میگه مقاله‌ای اومده یه مدل به نام Sky-T1 منتشر کرده که با ۴۵۰ دلار (۴۰ تومن) مدل ۳۲ میلیاردی را با ۱۷ هزارتا دیتای sft یه فاین تیون هدفمند کرده و در مواردی شبیه o1 عمل کرده!! موارد مهمی هم ادامش راجع به Journey Learning میگه که دیگه توی پست جا نمیشه :))

لینک پست:
https://sebastianraschka.com/blog/2025/understanding-reasoning-llms.html

#read
#blog

@nlp_stuff
1👍36🔥8
مفهوم Agent چیست و چگونه کار می‌کنند؟

خانم چیپ هوین بلاگ پست مفصلی راجع به Agent (به قول راسل، هدف غایی هوش مصنوعی) نوشتند. به شدت توصیه می‌کنیم به دور از هایپ بخونید.
این پست ۴ بخش داره: تعاریف، ابزارها، برنامه‌ریزی، ارزیابی و نقاط شکست!

تعاریف. agent هر چیزیه که از محیطش اطلاعات دریافت کنه و روی محیط عملی انجام بده. پس دو مشخصه داره: محیطش و عملگرهاش. محیطش با هدفی که داره تعریف میشه و عملگرهاش با ابزارهایی که در اختیارش قرار دادیم. مثلا یک ایجنت نرم افزاری محیطش میشه ترمینال و فایل سیستم و اکشن‌هاش میشه سرچ کردن و خوندن  و نوشتن در فایلها (عکس ۱). agentها ‌نیاز به مدل قوی‌تری دارند، چون کارهای مهم‌تری می‌کنند و ریسک بالاتری دارند و چون مراحل زیادی طی می‌کنند، خطاها در هم ضرب میشن و مثلا یک مدل با دقت ۹۵٪ در انجام کاری، بعد از ده مرحله، با ۶۰٪ دقت کار نهایی را تحویل میده.

ابزارها. ابزار بیرونی کمک میکنه ورودی بهتر جمع بشه و اکشن‌های بهتری داشته باشیم. اما نباید همه ابزارها را همینجوری در اختیارش بگذاریم چون بعدش فهمیدن و استفاده مفید ازشون سخت میشه. ابزارها سه گروه میشن: knowledge augmentation، capability extension و write actions. دسته‌ی اول ابزارهای تولید محتوا هستند که کمک میکنند بروز باشیم و کمتر هذیون بگیم مثلا سرچ در اینترنت یا API دیتای محصولات فروشگاه. دسته دوم ابزارهای بهبود یهویی توانایی مدل هستند. مثلا مدل‌های زبانی در انجام عملگرهای ساده ریاضی مثل تقسیم هم گاهی گند می‌زنند. پس بهش یه ماشین حساب بدیم یا مثلا از یک مدل تولید عکس جدا استفاده کنیم. دسته سوم. ابزارهایی که تغییر ایجاد میکنند. مثلا ایمیل زدن، انتقال پول.

برنامه‌ریزی. مغز یک agent همون مدلیه که تسک پیچیده را برنامه‌ریزی میکنه. خروجی برنامه یک سری مراحله که باید به ترتیب طی بشه. برنامه‌ریزی باید از اجرا جدا باشه. یعنی از مدل اول میخواهی (مثلا با CoT) برنامه (یا برنامه‌ها) را ارائه بده و بعد از تایید شروع به اجرا کنه. تا اینجا سیستم ما سه قسمت داشت: تولید برنامه، ارزیابش، اجراش (عکس ۲). حالا اگر بیای برای هر کدوم یک agent بذاری، میشه mutli-agent مثلا قبل از هر چیز یه agent تشخیص هدف مشتری (intent) بذاری. راحتترین راه برای تولید برنامه هم پرامپته. مثلا برای آموزش مشتری‌ها راجع به محصولات، به مدل توابع لازم و چند تا مثال از سوالات کاربران و جواب درست را میدیم (عکس ۳‍).
سه تا نکته مهم در تولید برنامه هست: نحوه تعریف و صدا زدن ابزارها، ریزدانگی برنامه، برنامه‌های پیچیده. اولی (نحوه معرفی)، یه سری چارچوب داره که به مدل بفهمونیم لازمه از این ابزارها استفاده کنه یا خودش هر طور صلاح میدونه (عکس ۴). در ریزدانگی باید دقت کنیم که نباید زیاد جزئی (تا اسم تابع) از مدل تولیدکننده بخواهی. چون دوباره تعریف کردن یا فاین تیون کردنشون سخته. خوبه بهشون بگی به زبون طبیعی مراحل را تولید کن. بعد یه مدل ساده‌تر این جملات زبان طبیعی را به اسم توابع تبدیل کنه. برای سومی هم؛ همیشه برنامه‌ها به صورت پشت سر هم نیستند. میتونه موازی یا شرطی باشه یا حلقه داشته باشه (عکس ۵).
در ادامه راجع Reflection صحبت میکنه. agent باید مداوم خودش، خودشو بررسی کنه که از برنامه تا نتیجه همه چی درسته؟ این ارزیابی و اصلاح، میتونه توسط خود agent انجام بشه یا بیرونش. چارچوب‌هایی مثل ReAct هست که یک حلقه متشکل از برنامه، اکشن و ارزیابیه تا وقتی که به جواب برسه (عکس ۶). اگر ارزیاب مدل دیگه‌ای باشه به این Reflexion میگن.
برای نحوه انتخاب ابزارها از مقالاتی مثل Chameleon صحبت میکنه که از ۱۳ تا ابزار استفاده میکنه. هر چی تعداد ابزارها بیشتر باشه، مثل انسان برای مدل سخت‌تره ازشون استفاده کنه. راه‌هایی برای انتخاب مجموعه ابزارها هست؛ مثلا با کدوم ابزارها خطای مدل بیشتره، حذف ابزار چقدر کارایی را کاهش میده، از کدوم‌ها بیشتر استفاده میکنه. مقاله Chameleon نشون داد که تسک‌ها و مدل‌های مختلف ابزارهای مختلفی لازم دارند و نباید همینجوری همه ابزارها رو به مدل بدیم (عکس ۷).

ارزیابی و نقاط شکست. شکست سه عامل داره: برنامه، اجرای ابزارها و بهینگی. در گروه اول برنامه میتونه ابزار اشتباه یا پارامترها و ورودی‌های اشتباه انتخاب کنه، محدودیت را در نظر نگیره و.... در گروه دوم از ابزار درستی استفاده شده اما خود ابزار (مثلا تبدیل متن به کوئری) غلط کار میکنه. در گروه سوم هم همه چیز درسته اما بهینه نیست. مثلا قدم‌های زیادی طی میشه. برای ارزیابی میزان شکست یک agent میشه یه دیتاست از تسک‌ها و ابزارها درست بشه و ازش بخواهیم N تا برنامه درست کنه. بعد ببینیم چندتاشون درست بود، چند تا برنامه باید درست کنه تا به یه برنامه خوب برسیم، چقدر کنده و ....

لینک پست:
https://huyenchip.com/2025/01/07/agents.html

#read
#blog

@nlp_stuff
👍26🔥6