سلطان 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
بارها گفتیم که دوره یکهتازی مدلهای 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
Telegram
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
موضوع علم یادگیری ماشین، تعمیم (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
Telegram
stuff
ما به تو مدیونیم آقای SE!
اگر در حوزه تحلیل داده و یادگیری ماشین فعالیت میکنید، احتمالا مواقعی پیش اومده که به سمت جمعآوری داده و ایجاد دیتاست رفتید. روشهای مختلفی برای جمعآوری داده وجود داره اما در این پست میخوایم یک مقاله از گوگل رو برای شما معرفی کنیم که سعی کرده یک چارچوب مدون برای جمعآوری داده ارایه کنه و در این راه از مفاهیم موجود در توسعه نرمافزار الهام گرفته.
در این مقاله توضیح داده شده که فرآیند ایجاد دیتاست، یک فرآیند ۵ مرحلهای و چرخهای است که تصویر اون رو میتونید در پایین ببینید. این ۵ مرحله عبارتند از: بررسی نیازمندیها، طراحی، اجرا، تست و نگهداری که این ۵ مرحله نیز تداعی کننده متدولوژیهای مشهور در دنیای مهندسی نرم افزار هستند. نکته قابل توجه، تاکید گوگل بر تولید artifact در هر مرحله است. به این معنا که در هر مرحله باید داکیومنتی آماده بشه که به عنوان خروجی اون مرحله محسوب میشه و برای اون نیز تمپلیتهایی در انتهای مقاله آورده شده که کار رو روی زمین بیارند. توضیحات هر یک از این ۵ مرحله در یک جدول و در انتهای این پست در تصاویر آورده شده (ورق بزنید). یکی از مهمترین مراحل، مرحله تسته که به دو صورت تست پذیرش (برای اطمینان از تطابق با نیازمندیها) و تستهای خصمانه مطرح میشه و برای پیادهسازی هم همان متدهای معروف unit testing در مهندسی نرمافزار میتونه مورد استفاده قرار بگیره. مثلا فرض کنید چنانچه دیتاست از داخل یک سازمان جمعآوری میشه تستهایی طراحی بشه که از عدم افشای اطلاعات محرمانه شرکا اطمینان حاصل بشه. در ادامه هم برخی درسهایی که از حوزه مهندسی نرمافزار گرفتیم رو برای جمعآوری دیتاست هم اعمال میکنه. مثلا:
- به دیتاست به چشم یه گناهکار نگاه کنید مگر اینکه خلافش ثابت بشه (در واقع همیشه شکاک باشید که یه جای کار میلنگه و بابتش تست کیسهای مناسب طراحی کنید)
- پیشفرضهایی که باهاش به سراغ جمعآوری دیتاست رفتید رو گردآوری کنید و کنترل ورژن انجام بدید (در داکیومنت خروجی مرحله آنالیز نیازمندیها و یا طراحی میتونه دیده بشه)
- حتما در مسیر توسعه دیتاست، peer review داشته باشید که از نون شب واجبتره
- برای بررسی توزیع پارامترهای دیتاست از ابزارهای مصورسازی استفاده کنید. (یکی از سکشنهای تمپلیت مربوط به خروجی فاز آنالیز نیازمندیها که در انتهای مقاله اومده، distributional requirements هست که در اون توزیع لازم برای برخی پارامترها توضیح داده میشه. مثلا ممکنه دیتاست باید طوری جمعآوری بشه که فلان پارامتر توزیع نرمال داشته باشه و این واقعیت باید در داکیومنت فاز آنالیز نیازمندیها دیده بشه)
- حتما نواقص و محدودیتهای دیتاستتون رو بدونید و یادداشت کنید به جای اینکه روی سرش قسم بخورید
و در آخر باید بگیم که بارها موارد استفاده از پارادایمهای نرمافزاری در توسعه مدلهای یادگیری ماشین رو دیدیم و این بار شاهد استفاده از این پاردایمها در ایجاد دیتاست بودیم که اهمیت توانمندی در حوزه مهندسی نرمافزار رو برای دیتاساینتیست ها بیش از پیش نشون میده و در پایان فقط میتونیم بگیم ما دیتاساینتیستها به تو مدیونیم ای مهندسی نرمافزار!
پ.ن: به عنوان مثال، دیتاست معروف peyma که در حوزه NER فارسی مطرحه یه ایراد بزرگ داره و اون هم اینکه تمام named entityها که در دیتاست تست هستند، در دیتاست ترین نیز موجودند و هیچ named entityای وجود نداره که مدل، اون رو در فاز ترینینگ ندیده باشه! در حالیکه مثلا با ایجاد یک سناریوی یونیت تست میشد جلوی این رو گرفت. البته ما این مشکل رو در دیتاست خودمون (https://yangx.top/nlp_stuff/250) حلش کردیم ولی دیتاست ما هم قطعا مشکلاتی داره که شما میتونید حلش کنید.
لینک مقاله:
https://arxiv.org/abs/2010.13561
#read
#paper
@nlp_stuff
اگر در حوزه تحلیل داده و یادگیری ماشین فعالیت میکنید، احتمالا مواقعی پیش اومده که به سمت جمعآوری داده و ایجاد دیتاست رفتید. روشهای مختلفی برای جمعآوری داده وجود داره اما در این پست میخوایم یک مقاله از گوگل رو برای شما معرفی کنیم که سعی کرده یک چارچوب مدون برای جمعآوری داده ارایه کنه و در این راه از مفاهیم موجود در توسعه نرمافزار الهام گرفته.
در این مقاله توضیح داده شده که فرآیند ایجاد دیتاست، یک فرآیند ۵ مرحلهای و چرخهای است که تصویر اون رو میتونید در پایین ببینید. این ۵ مرحله عبارتند از: بررسی نیازمندیها، طراحی، اجرا، تست و نگهداری که این ۵ مرحله نیز تداعی کننده متدولوژیهای مشهور در دنیای مهندسی نرم افزار هستند. نکته قابل توجه، تاکید گوگل بر تولید artifact در هر مرحله است. به این معنا که در هر مرحله باید داکیومنتی آماده بشه که به عنوان خروجی اون مرحله محسوب میشه و برای اون نیز تمپلیتهایی در انتهای مقاله آورده شده که کار رو روی زمین بیارند. توضیحات هر یک از این ۵ مرحله در یک جدول و در انتهای این پست در تصاویر آورده شده (ورق بزنید). یکی از مهمترین مراحل، مرحله تسته که به دو صورت تست پذیرش (برای اطمینان از تطابق با نیازمندیها) و تستهای خصمانه مطرح میشه و برای پیادهسازی هم همان متدهای معروف unit testing در مهندسی نرمافزار میتونه مورد استفاده قرار بگیره. مثلا فرض کنید چنانچه دیتاست از داخل یک سازمان جمعآوری میشه تستهایی طراحی بشه که از عدم افشای اطلاعات محرمانه شرکا اطمینان حاصل بشه. در ادامه هم برخی درسهایی که از حوزه مهندسی نرمافزار گرفتیم رو برای جمعآوری دیتاست هم اعمال میکنه. مثلا:
- به دیتاست به چشم یه گناهکار نگاه کنید مگر اینکه خلافش ثابت بشه (در واقع همیشه شکاک باشید که یه جای کار میلنگه و بابتش تست کیسهای مناسب طراحی کنید)
- پیشفرضهایی که باهاش به سراغ جمعآوری دیتاست رفتید رو گردآوری کنید و کنترل ورژن انجام بدید (در داکیومنت خروجی مرحله آنالیز نیازمندیها و یا طراحی میتونه دیده بشه)
- حتما در مسیر توسعه دیتاست، peer review داشته باشید که از نون شب واجبتره
- برای بررسی توزیع پارامترهای دیتاست از ابزارهای مصورسازی استفاده کنید. (یکی از سکشنهای تمپلیت مربوط به خروجی فاز آنالیز نیازمندیها که در انتهای مقاله اومده، distributional requirements هست که در اون توزیع لازم برای برخی پارامترها توضیح داده میشه. مثلا ممکنه دیتاست باید طوری جمعآوری بشه که فلان پارامتر توزیع نرمال داشته باشه و این واقعیت باید در داکیومنت فاز آنالیز نیازمندیها دیده بشه)
- حتما نواقص و محدودیتهای دیتاستتون رو بدونید و یادداشت کنید به جای اینکه روی سرش قسم بخورید
و در آخر باید بگیم که بارها موارد استفاده از پارادایمهای نرمافزاری در توسعه مدلهای یادگیری ماشین رو دیدیم و این بار شاهد استفاده از این پاردایمها در ایجاد دیتاست بودیم که اهمیت توانمندی در حوزه مهندسی نرمافزار رو برای دیتاساینتیست ها بیش از پیش نشون میده و در پایان فقط میتونیم بگیم ما دیتاساینتیستها به تو مدیونیم ای مهندسی نرمافزار!
پ.ن: به عنوان مثال، دیتاست معروف peyma که در حوزه NER فارسی مطرحه یه ایراد بزرگ داره و اون هم اینکه تمام named entityها که در دیتاست تست هستند، در دیتاست ترین نیز موجودند و هیچ named entityای وجود نداره که مدل، اون رو در فاز ترینینگ ندیده باشه! در حالیکه مثلا با ایجاد یک سناریوی یونیت تست میشد جلوی این رو گرفت. البته ما این مشکل رو در دیتاست خودمون (https://yangx.top/nlp_stuff/250) حلش کردیم ولی دیتاست ما هم قطعا مشکلاتی داره که شما میتونید حلش کنید.
لینک مقاله:
https://arxiv.org/abs/2010.13561
#read
#paper
@nlp_stuff
Telegram
stuff
اعتدال پیشه کن حتی در آموزش تخاصمی مدل!
محققان نشون دادند که adversarial training به عنوان مؤثرترین راهبرد دفاعی در برابر حملات adversarial examples است که قبلا در موردش در حوزه تصویر در این پست (https://yangx.top/nlp_stuff/297) صحبت کرده بودیم. به صورت ساده یک حمله موفق زمانی اتفاق میافته که ما بتونیم یکی از کلمات جمله ورودی رو با مترادفش جابجا کنیم (معنای جمله تغییر نکنه!) به نحوی که خروجی مدل تغییر کنه. در این حالت ما موفق شدیم یک حمله synonym attack به مدل بزنیم و در اصطلاح اون رو گول زدیم.
حالا برای اینکه ازین نوع اتفاقات کمتر بیافته باید مدل رو با روش آموزش خصمانه یا همون adversarial training مستحکم کرد. همونطور که گفتیم آموزش خصمانه توسط adversarial examples انجام میشه که در این مقاله اونها رو به دو دسته کلی تقسیم کردند:
۱- مثالهای متخاصم سنتی (Traditional adversarial examples یا Fickle adversarial examples): به روشی گفته میشه که با یک تغییر کوچک در ورودی (جوری که معنا عوض نشود) سعی در گیج کردن مدل به نحوی داره که پیشبینی مدل متفاوت از قبل بشه. مثلا استفاده از incessant بجای continued در جمله
Employers have continued to operate motor vehicles, and that's all that matters.
۲- مثالهای متخاصم متضاد (Obstinate adversarial examples): برعکس نوع قبلی در این روش یک ورودی به نحوی عوض میشه که پیشبینی مدل رو حفظ میکنه اما معنای واقعی ورودی رو متحول میکنه. مثال: استفاده از employees بجای employers در همان جمله بالا.
حالا این مقاله داره خودش رو میکشه که بگه بابا اگه فقط از مثالهای نوع اول استفاده کنید ممکنه مدلتون آسیبپذیر بشه! دلیلش هم اینه که در متن، مثالهای نوع اول معمولاً با محدودیت تشابه کسینوس ایجاد میشن تا نمایشهای اصلی و جمله تغییر کرده (perturbed sentence) رو به نزدیک بودن در فضای embedding تشویق کنند. در حالی که، این روش اندازهگیری شباهت، ممکنه معنای واقعی رو حفظ نکنه و مدل، نمایشهای ضعیفی رو در طول آموزش خصمانه یاد بگیره! به زبان دیگه اگه مدل با مثالهای مترادف و سنتی به گونه ای آموزش داده بشه که در برابر تغییر محدود ε (مثلا کلمات مترادف) مقاوم باشه، ممکنه نسبت به تغییرات کوچک در مثالهای دیگه (مثلا کلمات متضاد که اصلا معنی رو به کل عوض میکنه)، بسیار بیتفاوت بشه!
در ادامه، نویسندگان یک روش مستحکم جدید ارائه میدهند به اسم Balanced Adversarial Training (BAT) که از هر دو نوع مثالها در آموزش خصمانه مدل استفاده میشه. ایده، استفاده از contrastive learning هست بطوری که فاصله بین جفت های مثبت (مترادفها) رو به حداقل برسونیم و فاصله بین جفت های منفی (متضادها) رو به حداکثر برسونیم. مقاله دو ورژن از روش پیشنهادیش به نامهای BAT-Pairwise و BAT-Triplet داره. در BAT-Pairwise سعی میکنه فاصله بین جفتهای مثبت و منفی رو مستقل از جمله ورودی بهینه بکنه ولی توی BAT-Triplet یک رویکرد مثلثی داره که از ورودی به عنوان لنگر مثلث استفاده میشه. در واقع در ورژن دوم سعی بر این هست که فاصله بین جفتهای مثبت و ورودی اصلی کوچکتر از فاصله جفتهای منفی و ورودی اصلی باشه (با یک حداقل مارجین m).
در ضمن نویسنده مقاله تاکیید داره که این یک trade-off هست و باید اعتدال در استفاده از هر دو نوع مثالها حفظ بشه تا مدل در عینحالی که نسبت به مترادفها خروجیش عوض نمیشه در برابر متضادها یا چیزایی که معنی رو عوض میکنند هرچند کوچک هشیار باشه!
در انتها گفته ما مدلهای BERT و RoBERTa رو روی ۲ تسک مختلف با آموزش SAFER برای ۱۵ ایپاک آموزش میدیم. سپس نرخ موفقیت حمله (ASR) رو برای حملات مترادف (fickleness) و متضاد (obstinacy) در هر دوره آموزشی اندازه میگیریم که نتایجشون نشون میده نرخ موفقیت حملات، کمتر از روشهای سنتیه.
پ.ن: با تشکر از آقای برخوردار که این مطلب رو برای ما ارسال کردند. شما هم اگه مطلب خوبی داشتید برای ما بفرستید و تعارف نکنید.
لینک مقاله:
https://arxiv.org/abs/2210.11498
#read
#paper
@nlp_stuff
محققان نشون دادند که adversarial training به عنوان مؤثرترین راهبرد دفاعی در برابر حملات adversarial examples است که قبلا در موردش در حوزه تصویر در این پست (https://yangx.top/nlp_stuff/297) صحبت کرده بودیم. به صورت ساده یک حمله موفق زمانی اتفاق میافته که ما بتونیم یکی از کلمات جمله ورودی رو با مترادفش جابجا کنیم (معنای جمله تغییر نکنه!) به نحوی که خروجی مدل تغییر کنه. در این حالت ما موفق شدیم یک حمله synonym attack به مدل بزنیم و در اصطلاح اون رو گول زدیم.
حالا برای اینکه ازین نوع اتفاقات کمتر بیافته باید مدل رو با روش آموزش خصمانه یا همون adversarial training مستحکم کرد. همونطور که گفتیم آموزش خصمانه توسط adversarial examples انجام میشه که در این مقاله اونها رو به دو دسته کلی تقسیم کردند:
۱- مثالهای متخاصم سنتی (Traditional adversarial examples یا Fickle adversarial examples): به روشی گفته میشه که با یک تغییر کوچک در ورودی (جوری که معنا عوض نشود) سعی در گیج کردن مدل به نحوی داره که پیشبینی مدل متفاوت از قبل بشه. مثلا استفاده از incessant بجای continued در جمله
Employers have continued to operate motor vehicles, and that's all that matters.
۲- مثالهای متخاصم متضاد (Obstinate adversarial examples): برعکس نوع قبلی در این روش یک ورودی به نحوی عوض میشه که پیشبینی مدل رو حفظ میکنه اما معنای واقعی ورودی رو متحول میکنه. مثال: استفاده از employees بجای employers در همان جمله بالا.
حالا این مقاله داره خودش رو میکشه که بگه بابا اگه فقط از مثالهای نوع اول استفاده کنید ممکنه مدلتون آسیبپذیر بشه! دلیلش هم اینه که در متن، مثالهای نوع اول معمولاً با محدودیت تشابه کسینوس ایجاد میشن تا نمایشهای اصلی و جمله تغییر کرده (perturbed sentence) رو به نزدیک بودن در فضای embedding تشویق کنند. در حالی که، این روش اندازهگیری شباهت، ممکنه معنای واقعی رو حفظ نکنه و مدل، نمایشهای ضعیفی رو در طول آموزش خصمانه یاد بگیره! به زبان دیگه اگه مدل با مثالهای مترادف و سنتی به گونه ای آموزش داده بشه که در برابر تغییر محدود ε (مثلا کلمات مترادف) مقاوم باشه، ممکنه نسبت به تغییرات کوچک در مثالهای دیگه (مثلا کلمات متضاد که اصلا معنی رو به کل عوض میکنه)، بسیار بیتفاوت بشه!
در ادامه، نویسندگان یک روش مستحکم جدید ارائه میدهند به اسم Balanced Adversarial Training (BAT) که از هر دو نوع مثالها در آموزش خصمانه مدل استفاده میشه. ایده، استفاده از contrastive learning هست بطوری که فاصله بین جفت های مثبت (مترادفها) رو به حداقل برسونیم و فاصله بین جفت های منفی (متضادها) رو به حداکثر برسونیم. مقاله دو ورژن از روش پیشنهادیش به نامهای BAT-Pairwise و BAT-Triplet داره. در BAT-Pairwise سعی میکنه فاصله بین جفتهای مثبت و منفی رو مستقل از جمله ورودی بهینه بکنه ولی توی BAT-Triplet یک رویکرد مثلثی داره که از ورودی به عنوان لنگر مثلث استفاده میشه. در واقع در ورژن دوم سعی بر این هست که فاصله بین جفتهای مثبت و ورودی اصلی کوچکتر از فاصله جفتهای منفی و ورودی اصلی باشه (با یک حداقل مارجین m).
در ضمن نویسنده مقاله تاکیید داره که این یک trade-off هست و باید اعتدال در استفاده از هر دو نوع مثالها حفظ بشه تا مدل در عینحالی که نسبت به مترادفها خروجیش عوض نمیشه در برابر متضادها یا چیزایی که معنی رو عوض میکنند هرچند کوچک هشیار باشه!
در انتها گفته ما مدلهای BERT و RoBERTa رو روی ۲ تسک مختلف با آموزش SAFER برای ۱۵ ایپاک آموزش میدیم. سپس نرخ موفقیت حمله (ASR) رو برای حملات مترادف (fickleness) و متضاد (obstinacy) در هر دوره آموزشی اندازه میگیریم که نتایجشون نشون میده نرخ موفقیت حملات، کمتر از روشهای سنتیه.
پ.ن: با تشکر از آقای برخوردار که این مطلب رو برای ما ارسال کردند. شما هم اگه مطلب خوبی داشتید برای ما بفرستید و تعارف نکنید.
لینک مقاله:
https://arxiv.org/abs/2210.11498
#read
#paper
@nlp_stuff
Telegram
stuff
قطار self-supervised به ایستگاه tabular data رسید!
قطعا در مدح self-supervied learning زیاد شنیدید و در این پست (https://yangx.top/nlp_stuff/298) هم روشهاش در NLP رو مرور کردیم. یکی از محدودیتهای اصلی self-supervised learning اینه که خیلی وابسته به دامین و مودالیتیه. مثلا روشهای حوزه تصویر به سختی برای حوزه متن قابل انجامه. حالا مردانی مرد از google research به پا خاستهاند و سعی کردند روشی عمومی برای self supervised learning ارایه کنند که حتی بر روی tabular data هم بتونه جواب بده. معماری کلی این روش رو در تصویر زیر میتونید ببینید. مانند همه روشهای SSL که در NLP بررسی کردیم، طبیعتا اینجا هم فاز pre-training و fine-tuning داریم که اساسا وجود همین پارادایم هم باعث میشه در محیطهایی که داده لیبلدار کمتری وجود داره بهتر عمل بکنه. ایده اصلی در فاز pre-training هست که از denoising auto encoderها الهام گرفته شده. در این روش به ازای یه batch از داده ترین به صورت رندم یک زیرمجموعهای از فیچرها انتخاب میشه و این فیچرها رو corrupt میکنند. روش corruption هم به این صورته که به صورت رندم با همون فیچرها از سمپلهای دیگه جایگزین میشه. حالا همونطور که در قسمت بالای تصویر میبینید دیتای سالم و دیتای corruptشده به طور همزمان (تعریف همزمان اینه که دو تا شبکه داریم که full parameter sharing انجام دادند) به یک شبکه انکودر f داده میشه که داده رو به فضای بزرگتری میبرند و سپس به یک شبکه g داده میشه که داده رو به فضای کوچکی میبره و بعد با استفاده از InfoNCE که یه loss function مشهور در عرصه SSL هست تفاوت خروجی شبکه به ازای دیتای corruptشده و دیتای سالم به دست میاد و کار ترینینگ انجام میشه (InfoNCE عملا شبیه یه categorical cross entropy عمل میکنه که به ازای نمونههای شبیه به هم مقدار کمی خروجی میده و به ازای نمونههای negative که دور از هم هستند هم مقدار زیادی رو خروجی میده).
در فاز fine tuning عملا شبکه g کنار گذاشته میشه و یک classifier head بر روی شبکه f گذاشته میشه و کل شبکه fine tune میشه.
برای تست این روش هم از دیتاست OpenML-CC18 استفاده شده که ۷۲ تسک دستهبندی داره و چون این مساله برای tabular data بوده ۳ تا از دیتاستهاش رو (CIFAR , MNIST, Fashion MNIST) کنار گذاشتند و عملا بر روی ۶۹ دیتاست تست گرفتند که روی برخی حتی با داده کمتر، بهبود هم داشته. مقاله خیلی جمع و جور و به زبان ساده و با جزییات تکنیکال نوشته شده و توصیه میکنیم حتما بخونید.
لینک مقاله:
https://arxiv.org/abs/2106.15147
لینک گیتهاب:
https://github.com/clabrugere/pytorch-scarf
#read
#paper
@nlp_stuff
قطعا در مدح self-supervied learning زیاد شنیدید و در این پست (https://yangx.top/nlp_stuff/298) هم روشهاش در NLP رو مرور کردیم. یکی از محدودیتهای اصلی self-supervised learning اینه که خیلی وابسته به دامین و مودالیتیه. مثلا روشهای حوزه تصویر به سختی برای حوزه متن قابل انجامه. حالا مردانی مرد از google research به پا خاستهاند و سعی کردند روشی عمومی برای self supervised learning ارایه کنند که حتی بر روی tabular data هم بتونه جواب بده. معماری کلی این روش رو در تصویر زیر میتونید ببینید. مانند همه روشهای SSL که در NLP بررسی کردیم، طبیعتا اینجا هم فاز pre-training و fine-tuning داریم که اساسا وجود همین پارادایم هم باعث میشه در محیطهایی که داده لیبلدار کمتری وجود داره بهتر عمل بکنه. ایده اصلی در فاز pre-training هست که از denoising auto encoderها الهام گرفته شده. در این روش به ازای یه batch از داده ترین به صورت رندم یک زیرمجموعهای از فیچرها انتخاب میشه و این فیچرها رو corrupt میکنند. روش corruption هم به این صورته که به صورت رندم با همون فیچرها از سمپلهای دیگه جایگزین میشه. حالا همونطور که در قسمت بالای تصویر میبینید دیتای سالم و دیتای corruptشده به طور همزمان (تعریف همزمان اینه که دو تا شبکه داریم که full parameter sharing انجام دادند) به یک شبکه انکودر f داده میشه که داده رو به فضای بزرگتری میبرند و سپس به یک شبکه g داده میشه که داده رو به فضای کوچکی میبره و بعد با استفاده از InfoNCE که یه loss function مشهور در عرصه SSL هست تفاوت خروجی شبکه به ازای دیتای corruptشده و دیتای سالم به دست میاد و کار ترینینگ انجام میشه (InfoNCE عملا شبیه یه categorical cross entropy عمل میکنه که به ازای نمونههای شبیه به هم مقدار کمی خروجی میده و به ازای نمونههای negative که دور از هم هستند هم مقدار زیادی رو خروجی میده).
در فاز fine tuning عملا شبکه g کنار گذاشته میشه و یک classifier head بر روی شبکه f گذاشته میشه و کل شبکه fine tune میشه.
برای تست این روش هم از دیتاست OpenML-CC18 استفاده شده که ۷۲ تسک دستهبندی داره و چون این مساله برای tabular data بوده ۳ تا از دیتاستهاش رو (CIFAR , MNIST, Fashion MNIST) کنار گذاشتند و عملا بر روی ۶۹ دیتاست تست گرفتند که روی برخی حتی با داده کمتر، بهبود هم داشته. مقاله خیلی جمع و جور و به زبان ساده و با جزییات تکنیکال نوشته شده و توصیه میکنیم حتما بخونید.
لینک مقاله:
https://arxiv.org/abs/2106.15147
لینک گیتهاب:
https://github.com/clabrugere/pytorch-scarf
#read
#paper
@nlp_stuff
Telegram
stuff
در مورد chatGPT، مکانیزم RLHF و راهی که با InstructGPT طی شد
احتمالا این سوال که چطوری chatGPT بوجود اومده ذهن شما رو درگیر کرده باشه. قبل از پرداختن به این سوال باید اول پرسید Open-AI دقیقا با چه نیازی به GPT-3 راضی نشد و به chatGPT رسید؟
پاسخ اینه که در واقع GPT-3 از روی Text موجود در اینترنت آموزش دیده بود. برای ساخت معماری این شبکه از Decoder استفاده کردند؛ پس تسک اینه که وقتی یه جمله بهش میدی کلمات بعدی رو حدس بزنه. اما با این ساختار آموزشی و این نوع دیتا هیچ تضمینی وجود نداشت که اون جملاتی که در ادامه Predict میکنه لزوما دارای حقیقت باشه یا جملات سمی و توهمی یا حتی توهین آمیز نباشه. این اولین نیاز بود. نیاز دوم این بود که بتونه دستور و خواستهای که یوزر از طریق ورودی میده رو متوجه بشه و چیزی رو که یوزر میخواد رو تولید کنه. یعنی ساختار آموزش بجای «بقیهاش رو تو بگو» به ساختار ارباب رعیتی «این کاری که میگم رو بکن» تبدیل بشه. برای این دو نیاز open-AI مدل خفنی رو توسعه داد و اسمش رو گذاشت: «InstructGPT».
برخلاف تصور، chatGPT مستقیم از روی GPT-3 ایجاد نشده. بلکه از نظر open-AI راه chatGPT از fine-tune کردن InstructGPT میگذشته. که با اصلاح ساختار آموزش و ارایه یک روش آموزشی خیلی خفن InstructGPT رو توسعه دادند. و بعد از این مدل به chatGPT رسیدند. جالب اینجاست که اصل زیباییهای خلقت توی InstructGPT جمع شده. و از InstructGPT تا chatGPT خیلی مسایل فنی خاصی رخ نداده.
برای ساخت InstructGPT اول اومدن در کمال ناباوری GPT-3 رو تبدیل به تسک Supervised کردند. تمام Promptهایی که ملت روی GPT-3 داشتند رو به یه سری انسان دادند و ازشون خواستن پاسخش رو بنویسند (دیوونه خونه ست). و بعد از روی این سوال و جواب، یه مدل توسعه دادند. ماجرا از اینجا تازه شروع میشه. در ادامه فرایند از یه مکانیزمی استفاده کردند که اسمش رو open-AI گذاشته RLHF. یا همون Reinforcement Learning Human Feedback.
فرایند RLHF به این صورته:
- اول به ازای هر Prompt، از مدلهای Base-Line چندین خروجی میگیریم و خروجیها رو به انسان میدیم تا برامون از بهترین تا بدترین جواب Sort کنه. (در اینجا مدلهای Base-Line شامل GPT-3 میشه و اون مدل Supervised). و بعد از طریق این دیتای باارزش (ترتیب بندیِ نتایج مدلها بر اساس ترجیح انسان)، یک Reward Model توسعه میدیم. در واقع اینجا با این مدل داریم اون Functionی رو مدل می کنیم که معمولا یا Rule Based بود یا انسان.
- در مرحله بعد مدل GPT-3 رو تبدیل به یک مدل RL میکنیم. و به ازای هر Prompt در دیتابیس ازش خروجی می گیریم. خروجی رو میدیم به Reward Model و از Reward محاسبه شده برای آپدیت Policyهای مدل استفاده می کنیم.
بنظرم تو این روش کار یدی و کار علمی-مهندسی در یک تعادل جذابی قرار داره. از یه طرف تبدیل کردن یه مدل زبانی به یک مدل RL بنظر خفن میاد و احتمالا بیشتر در آینده شاهدش باشیم. از طرفی، جایی که تصور نمی شد انسان حضور داشته باشه، از انسان استفاده شد. و در آخر هم با Reward Model زیبایی رو بر ما تمام کردند و در جایی که حضور انسان یا Rules پذیرفته شده بود اثبات کردند میشه مدلی ساخت که ترجیحات انسان ها رو مدل کرد و خلاصه که با RLHF نمایش زیبایی از تعامل انسان و ماشین رقم زدند.
برای مطالعه عمیق تر:
https://openai.com/blog/instruction-following/
https://openai.com/blog/deep-reinforcement-learning-from-human-preferences/
https://arxiv.org/abs/2203.02155
پ.ن: با تشکر از آقای اسماعیلیان که این مطلب رو برای ما ارسال کردند. شما هم اگه مطلب به دردبخوری داشتید برای ما بفرستید که با اسم خودتون در کانال منتشر کنیم.
#read
#paper
@nlp_stuff
احتمالا این سوال که چطوری chatGPT بوجود اومده ذهن شما رو درگیر کرده باشه. قبل از پرداختن به این سوال باید اول پرسید Open-AI دقیقا با چه نیازی به GPT-3 راضی نشد و به chatGPT رسید؟
پاسخ اینه که در واقع GPT-3 از روی Text موجود در اینترنت آموزش دیده بود. برای ساخت معماری این شبکه از Decoder استفاده کردند؛ پس تسک اینه که وقتی یه جمله بهش میدی کلمات بعدی رو حدس بزنه. اما با این ساختار آموزشی و این نوع دیتا هیچ تضمینی وجود نداشت که اون جملاتی که در ادامه Predict میکنه لزوما دارای حقیقت باشه یا جملات سمی و توهمی یا حتی توهین آمیز نباشه. این اولین نیاز بود. نیاز دوم این بود که بتونه دستور و خواستهای که یوزر از طریق ورودی میده رو متوجه بشه و چیزی رو که یوزر میخواد رو تولید کنه. یعنی ساختار آموزش بجای «بقیهاش رو تو بگو» به ساختار ارباب رعیتی «این کاری که میگم رو بکن» تبدیل بشه. برای این دو نیاز open-AI مدل خفنی رو توسعه داد و اسمش رو گذاشت: «InstructGPT».
برخلاف تصور، chatGPT مستقیم از روی GPT-3 ایجاد نشده. بلکه از نظر open-AI راه chatGPT از fine-tune کردن InstructGPT میگذشته. که با اصلاح ساختار آموزش و ارایه یک روش آموزشی خیلی خفن InstructGPT رو توسعه دادند. و بعد از این مدل به chatGPT رسیدند. جالب اینجاست که اصل زیباییهای خلقت توی InstructGPT جمع شده. و از InstructGPT تا chatGPT خیلی مسایل فنی خاصی رخ نداده.
برای ساخت InstructGPT اول اومدن در کمال ناباوری GPT-3 رو تبدیل به تسک Supervised کردند. تمام Promptهایی که ملت روی GPT-3 داشتند رو به یه سری انسان دادند و ازشون خواستن پاسخش رو بنویسند (دیوونه خونه ست). و بعد از روی این سوال و جواب، یه مدل توسعه دادند. ماجرا از اینجا تازه شروع میشه. در ادامه فرایند از یه مکانیزمی استفاده کردند که اسمش رو open-AI گذاشته RLHF. یا همون Reinforcement Learning Human Feedback.
فرایند RLHF به این صورته:
- اول به ازای هر Prompt، از مدلهای Base-Line چندین خروجی میگیریم و خروجیها رو به انسان میدیم تا برامون از بهترین تا بدترین جواب Sort کنه. (در اینجا مدلهای Base-Line شامل GPT-3 میشه و اون مدل Supervised). و بعد از طریق این دیتای باارزش (ترتیب بندیِ نتایج مدلها بر اساس ترجیح انسان)، یک Reward Model توسعه میدیم. در واقع اینجا با این مدل داریم اون Functionی رو مدل می کنیم که معمولا یا Rule Based بود یا انسان.
- در مرحله بعد مدل GPT-3 رو تبدیل به یک مدل RL میکنیم. و به ازای هر Prompt در دیتابیس ازش خروجی می گیریم. خروجی رو میدیم به Reward Model و از Reward محاسبه شده برای آپدیت Policyهای مدل استفاده می کنیم.
بنظرم تو این روش کار یدی و کار علمی-مهندسی در یک تعادل جذابی قرار داره. از یه طرف تبدیل کردن یه مدل زبانی به یک مدل RL بنظر خفن میاد و احتمالا بیشتر در آینده شاهدش باشیم. از طرفی، جایی که تصور نمی شد انسان حضور داشته باشه، از انسان استفاده شد. و در آخر هم با Reward Model زیبایی رو بر ما تمام کردند و در جایی که حضور انسان یا Rules پذیرفته شده بود اثبات کردند میشه مدلی ساخت که ترجیحات انسان ها رو مدل کرد و خلاصه که با RLHF نمایش زیبایی از تعامل انسان و ماشین رقم زدند.
برای مطالعه عمیق تر:
https://openai.com/blog/instruction-following/
https://openai.com/blog/deep-reinforcement-learning-from-human-preferences/
https://arxiv.org/abs/2203.02155
پ.ن: با تشکر از آقای اسماعیلیان که این مطلب رو برای ما ارسال کردند. شما هم اگه مطلب به دردبخوری داشتید برای ما بفرستید که با اسم خودتون در کانال منتشر کنیم.
#read
#paper
@nlp_stuff
Openai
Aligning language models to follow instructions
We’ve trained language models that are much better at following user intentions than GPT-3 while also making them more truthful and less toxic, using techniques developed through our alignment research. These InstructGPT models, which are trained with humans…
عمرتان زیادی کرده که دکترا بخوانید؟
این هفته آقای لکان (یکی از سه خدای دیپلرنینگ) توییتی زده و به مورد Aditya Ramesh اشاره کرد. فردی که لیسانسش رو از دانشگاه NYU گرفته و قصد داشت تا وارد دوره دکتری شود اما با یک کارآموزی در OpenAI مسیرش تغییر کرده و در آن جا مانده و در نهایت با مدرک لیسانس تبدیل به نویسنده اصلی مقاله مدل معروف Dall-E میشود.
آقای بهنام نیشابور محقق گوگل هم توییت لکان را کوت کرده و نکات ریزتری برای تایید "نباید برای یادگیری ماشین دکترا خواند" به آن اضافه کرده است. نکته اصلی که تحصیلات تکمیلی برای زمینهای مثل ML آورریتد است. چرا؟ چون که یک نفر بدون هیچ گونه پیش زمینه خاصی میتواند به این فیلد وارد شده و با اندکی وقت گذاشتن، حتی میتواند به راحتی در کنفرانسهای مطرح دنیا مقالهای چاپ کند. منابع آموزشی ML روز به روز گستردهتر و در دسترستر میشوند و واقعا لازم نیست کسی برای وارد شدن به وادی پژوهشگری یادگیری ماشین بیاید و ۵ الی ۶ سال از عمرش را در ارشد یا دکتری هدر دهد. (و خودمانیم، رشتههایی مثل فیزیک را با ML مقایسه کنید. طرف در فیزیک تا بخواهد به جایی برسید باید مو سفید کند اما امروزه از صفر تا صد ماشین لرنینگ را با این تئوریهای آبکی که دارد میتوان در کمتر از دو سال طی نمود)
نکته دیگری که آقای نیشابور اشاره کرده است این است که تعداد موقعیتهای دکترای یادگیری ماشین روز به روز بیشتر میشود اما از آن طرف تعداد شغلهایی که به مدرک دکتری یادگیری ماشین نیاز دارد در آینده روز به روز کمتر میشود. در واقع با داشتن دکتری شما over-qualified میشوید و از طرف دیگر هم مگر آکادمی چه قدر موقعیت شغلی میتواند داشته باشد؟ در مقابل، صنعت اما بیش از ML Researcher به ML Engineerها نیازمند است. کسی که بتواند چیزی را واقعا بسازد. دوره دکتری باعث دوری نسبی از شما صنعت و مهارتهای آن خواهد شد. آقای نیشابور در انتها به نتایج تحقیقی اشاره کرده که در آن گفته شده درصد زیادی از دانشجویان تحصیلات تکمیلی دچار افسردگی و اضطراب شدید هستند.
نکته دیگری که ما به صحبتهای بالا اضافه میتوانیم بکنیم این است که جایگاه متفاوت یادگیری ماشین و به طور عام هوش مصنوعی نسبت به سایر علوم را باید در نظر گرفت. هوش مصنوعی در مدت ۷۰ سال اخیری که از خدا عمر گرفته است، همچنان حوزه یکپارچهای نبوده است. هر از چند گاهی ایدهای آمده است و با هوش مصنوعی وارد بهاری شده و در نهایت در زمستانی دفن شده است. گاهی منطقدانها به آن وارد شدهاند و با دیدشان روشهای سیستمهای خبره و منطق را برای هوش مصنوعی توسعه دادهاند. گاهی برقیها وارد شدهاند و مفاهیم سیگنالی را در حوزه هوش مصنوعی غالب کردهاند و این اواخر هم ریاضیدانها و آماردانها وارد شده و پارادایم یادگیری ماشین را پادشاه هوش مصنوعی کردهاند. از حدود ۲۰۱۲ به این ور هم شبکههای دیپ (شاید مدیون پیشرفتهای سختافزاری) فرمان بازی را به دست گرفته و بهاریترین دوران هوش مصنوعی را رقم زدهاند. اما واقعیت این است که یادگیری عمیق نیز اکنون احتمالا وارد پاییز خود شده است (در این مورد در آینده احتمالا صحبت میکنیم). مسیر تحقیقاتی هوش مصنوعی و یادگیری ماشین احتمال دارد به زودی دوباره وارد زمستان سخت شده و تمامی سرمایهگذاریهای تحقیقاتی بسوزند. البته که بحث دنیای صنعت فرق میکند و همین الان بسیاری راهحلهای یافت شده در دنیای آکادمی آماده هستند تا به دنیای صنعت و کاربرد اعمال شوند. در همین راستا شاید پیشنهاد ML Engineer شدن به جای ML Researcher شدن پیشنهاد عافیت داری برای دین و دنیا باشد. برای حسن ختام به قول سعدی:
کرامت جوانمردی و ناندهی است
مقالات بیهوده طبل تهی است
پینوشت: البته اگر در بلاد کفر نیستید قاعدتا برای رسیدن به جایی مانند گوگل یا کوچکتر از آن مسیری جز اپلای تحصیلی برای ساختن رزومه و تقویت حلقه تاثیر شاید نیست. بحث کلی این است که در شرایط عادی، دکترای یادگیری ماشین معنی چندانی در دنیای امروز ندارد.
لینک توییت لکان:
https://twitter.com/ylecun/status/1605450677806895104
لینک توییت نیشابور:
https://twitter.com/bneyshabur/status/1605677285255675904
#tweet
#read
@nlp_stuff
این هفته آقای لکان (یکی از سه خدای دیپلرنینگ) توییتی زده و به مورد Aditya Ramesh اشاره کرد. فردی که لیسانسش رو از دانشگاه NYU گرفته و قصد داشت تا وارد دوره دکتری شود اما با یک کارآموزی در OpenAI مسیرش تغییر کرده و در آن جا مانده و در نهایت با مدرک لیسانس تبدیل به نویسنده اصلی مقاله مدل معروف Dall-E میشود.
آقای بهنام نیشابور محقق گوگل هم توییت لکان را کوت کرده و نکات ریزتری برای تایید "نباید برای یادگیری ماشین دکترا خواند" به آن اضافه کرده است. نکته اصلی که تحصیلات تکمیلی برای زمینهای مثل ML آورریتد است. چرا؟ چون که یک نفر بدون هیچ گونه پیش زمینه خاصی میتواند به این فیلد وارد شده و با اندکی وقت گذاشتن، حتی میتواند به راحتی در کنفرانسهای مطرح دنیا مقالهای چاپ کند. منابع آموزشی ML روز به روز گستردهتر و در دسترستر میشوند و واقعا لازم نیست کسی برای وارد شدن به وادی پژوهشگری یادگیری ماشین بیاید و ۵ الی ۶ سال از عمرش را در ارشد یا دکتری هدر دهد. (و خودمانیم، رشتههایی مثل فیزیک را با ML مقایسه کنید. طرف در فیزیک تا بخواهد به جایی برسید باید مو سفید کند اما امروزه از صفر تا صد ماشین لرنینگ را با این تئوریهای آبکی که دارد میتوان در کمتر از دو سال طی نمود)
نکته دیگری که آقای نیشابور اشاره کرده است این است که تعداد موقعیتهای دکترای یادگیری ماشین روز به روز بیشتر میشود اما از آن طرف تعداد شغلهایی که به مدرک دکتری یادگیری ماشین نیاز دارد در آینده روز به روز کمتر میشود. در واقع با داشتن دکتری شما over-qualified میشوید و از طرف دیگر هم مگر آکادمی چه قدر موقعیت شغلی میتواند داشته باشد؟ در مقابل، صنعت اما بیش از ML Researcher به ML Engineerها نیازمند است. کسی که بتواند چیزی را واقعا بسازد. دوره دکتری باعث دوری نسبی از شما صنعت و مهارتهای آن خواهد شد. آقای نیشابور در انتها به نتایج تحقیقی اشاره کرده که در آن گفته شده درصد زیادی از دانشجویان تحصیلات تکمیلی دچار افسردگی و اضطراب شدید هستند.
نکته دیگری که ما به صحبتهای بالا اضافه میتوانیم بکنیم این است که جایگاه متفاوت یادگیری ماشین و به طور عام هوش مصنوعی نسبت به سایر علوم را باید در نظر گرفت. هوش مصنوعی در مدت ۷۰ سال اخیری که از خدا عمر گرفته است، همچنان حوزه یکپارچهای نبوده است. هر از چند گاهی ایدهای آمده است و با هوش مصنوعی وارد بهاری شده و در نهایت در زمستانی دفن شده است. گاهی منطقدانها به آن وارد شدهاند و با دیدشان روشهای سیستمهای خبره و منطق را برای هوش مصنوعی توسعه دادهاند. گاهی برقیها وارد شدهاند و مفاهیم سیگنالی را در حوزه هوش مصنوعی غالب کردهاند و این اواخر هم ریاضیدانها و آماردانها وارد شده و پارادایم یادگیری ماشین را پادشاه هوش مصنوعی کردهاند. از حدود ۲۰۱۲ به این ور هم شبکههای دیپ (شاید مدیون پیشرفتهای سختافزاری) فرمان بازی را به دست گرفته و بهاریترین دوران هوش مصنوعی را رقم زدهاند. اما واقعیت این است که یادگیری عمیق نیز اکنون احتمالا وارد پاییز خود شده است (در این مورد در آینده احتمالا صحبت میکنیم). مسیر تحقیقاتی هوش مصنوعی و یادگیری ماشین احتمال دارد به زودی دوباره وارد زمستان سخت شده و تمامی سرمایهگذاریهای تحقیقاتی بسوزند. البته که بحث دنیای صنعت فرق میکند و همین الان بسیاری راهحلهای یافت شده در دنیای آکادمی آماده هستند تا به دنیای صنعت و کاربرد اعمال شوند. در همین راستا شاید پیشنهاد ML Engineer شدن به جای ML Researcher شدن پیشنهاد عافیت داری برای دین و دنیا باشد. برای حسن ختام به قول سعدی:
کرامت جوانمردی و ناندهی است
مقالات بیهوده طبل تهی است
پینوشت: البته اگر در بلاد کفر نیستید قاعدتا برای رسیدن به جایی مانند گوگل یا کوچکتر از آن مسیری جز اپلای تحصیلی برای ساختن رزومه و تقویت حلقه تاثیر شاید نیست. بحث کلی این است که در شرایط عادی، دکترای یادگیری ماشین معنی چندانی در دنیای امروز ندارد.
لینک توییت لکان:
https://twitter.com/ylecun/status/1605450677806895104
لینک توییت نیشابور:
https://twitter.com/bneyshabur/status/1605677285255675904
#tweet
#read
@nlp_stuff
Telegram
stuff
پَچپَچ کردن تمام آن چیزی است که نیاز دارید.
اگر در این چند سال همراه ما بوده باشید یادتون هست که معماریهای ViT و MLP-Mixer سعی داشتند نشون بدن که برای به دست آوردن یک بازنمایی خوب از تصویر، لازم نیست که به کانولوشن مقید باشیم. ViT نشون داد که میشه با پچپچ کردن (یعنی این که تصویر رو به تکههای کوچیکتر تقسیم کردن) و بعد اعمال اتشنن و MLP پچمحور این بازنمایی خوب رو به دست آورد و MLP-Mixer هم گفت که به همون اتنشن هم نیازی نیست و میشه بعد از پچپچکردن با دو تا MLP که یکیشون Depth-wise و دیگری Patch-wise هست بازنمایی خوبی را یاد گرفت. (قبلا در https://yangx.top/nlp_stuff/81 و https://yangx.top/nlp_stuff/168 این دو معماری رو معرفی کرده بودیم)
حالا یک مقاله که در TMLR چاپ شده اومده و نویسندگانش گفتن که اصلا بحث اتنشن و MLP نیست. اون چیزی که باعث یادگیری بازنمایی خوب میشه خود patch کردن و استفاده از یک الگوی متقارن (یا به قول خودش isotropic) بین این پچهای مختلف هست. بر همین ایده، خودشون اومدن و یک مدل به نام Conv-Mixer ارائه دادن. ساختار و نحوه عملکرد این مدل این شکلیه که تصویر ورودی رو مثل ViT و MLP-Mixer میاد و پچپچ میکنه و روی هر پچی هم patch-embedding رو اعمال میکنه (اینجا برای این که ژانگولربازی دربیاره بگه من تو مدلم از هیچ MLP استفاده نکردم اومده و این فرآیند Patch Embedding رو هم با کانولوشن با استراید اندازه سایز پچ انجام داده). سپس در مرحله بعدی میاد و لایهای به نام Conv-Mixer رو به تعداد عمق d روی این پچها اعمال میکنه. اما هر کدوم از این لایههای ConvMixer چه شکلی هستند؟ هر لایه ConvMixer در واقع از دو کانولوشن تشکیل شده. یک کانولوشن که صرفا به صورت depth-wise روی فیچرهای حاضر در یک عمق مشخص کانال و در مکانهای مختلف اون عمق اعمال میشه و یک کانولوشن دیگه که اون هم به صورت صرفا spatial-wise بر روی فیچرهای حاضر در یک مکان مشخص و در عمقهای مختلف اون مکان اعمال میشه. در نهایت هم بعد از اعمال d تا از این لایهها میاد و با میانگینگیری از بازنمایی پچهای مختلف یک بازنمایی کلی برای تصویر به دست میاره. عکس کد این مدل رو پیوست کردیم که بسیار هم ساده است و اگر ببینیدش یحتمل بهتر بتونید بفهمید ماجرا رو.
بعد مقاله اومده و مدل Conv-Mixer و بقیه رقبا نظیر Resnet و ViT و MLP-Mixer رو روی دیتاست ImageNet-1k آموزش داده و نشون داده که Conv-Mixer نسبت به بقیه رقبا دقت بالاتری گرفته و البته تعداد پارامتر کمتر و سرعت Throughput بیشتری هم داره. نکته جالب این مقاله به نظر اینه که نشون داده که برای انتقال بازنمایی بین پچها لازم نیست که از فرآیند Self-Attention یا MLP-Mixer که هر دو فرآیندهای سنگینی به لحاظ حافظهای هستند و استفاده کنیم و به صورت global اطلاعات بین پچها رو انتقال بدیم. بلکه میشه با خود کانولوشن این فرآیند انتقال اطلاعات رو به صورت لوکال پیادهسازی کنیم. یحتمل این پایان کار نیست و باز هم در آینده مدلهای بیشتری خواهیم دید که سعی دارن با تغییر در معماری با معماریهای سابق نظیر ResNet و ViT و MLP-Mixer و البته Conv-Mixer رقابت کنند.
لینک مقاله:
https://openreview.net/pdf?id=rAnB7JSMXL
#read
#paper
@nlp_stuff
اگر در این چند سال همراه ما بوده باشید یادتون هست که معماریهای ViT و MLP-Mixer سعی داشتند نشون بدن که برای به دست آوردن یک بازنمایی خوب از تصویر، لازم نیست که به کانولوشن مقید باشیم. ViT نشون داد که میشه با پچپچ کردن (یعنی این که تصویر رو به تکههای کوچیکتر تقسیم کردن) و بعد اعمال اتشنن و MLP پچمحور این بازنمایی خوب رو به دست آورد و MLP-Mixer هم گفت که به همون اتنشن هم نیازی نیست و میشه بعد از پچپچکردن با دو تا MLP که یکیشون Depth-wise و دیگری Patch-wise هست بازنمایی خوبی را یاد گرفت. (قبلا در https://yangx.top/nlp_stuff/81 و https://yangx.top/nlp_stuff/168 این دو معماری رو معرفی کرده بودیم)
حالا یک مقاله که در TMLR چاپ شده اومده و نویسندگانش گفتن که اصلا بحث اتنشن و MLP نیست. اون چیزی که باعث یادگیری بازنمایی خوب میشه خود patch کردن و استفاده از یک الگوی متقارن (یا به قول خودش isotropic) بین این پچهای مختلف هست. بر همین ایده، خودشون اومدن و یک مدل به نام Conv-Mixer ارائه دادن. ساختار و نحوه عملکرد این مدل این شکلیه که تصویر ورودی رو مثل ViT و MLP-Mixer میاد و پچپچ میکنه و روی هر پچی هم patch-embedding رو اعمال میکنه (اینجا برای این که ژانگولربازی دربیاره بگه من تو مدلم از هیچ MLP استفاده نکردم اومده و این فرآیند Patch Embedding رو هم با کانولوشن با استراید اندازه سایز پچ انجام داده). سپس در مرحله بعدی میاد و لایهای به نام Conv-Mixer رو به تعداد عمق d روی این پچها اعمال میکنه. اما هر کدوم از این لایههای ConvMixer چه شکلی هستند؟ هر لایه ConvMixer در واقع از دو کانولوشن تشکیل شده. یک کانولوشن که صرفا به صورت depth-wise روی فیچرهای حاضر در یک عمق مشخص کانال و در مکانهای مختلف اون عمق اعمال میشه و یک کانولوشن دیگه که اون هم به صورت صرفا spatial-wise بر روی فیچرهای حاضر در یک مکان مشخص و در عمقهای مختلف اون مکان اعمال میشه. در نهایت هم بعد از اعمال d تا از این لایهها میاد و با میانگینگیری از بازنمایی پچهای مختلف یک بازنمایی کلی برای تصویر به دست میاره. عکس کد این مدل رو پیوست کردیم که بسیار هم ساده است و اگر ببینیدش یحتمل بهتر بتونید بفهمید ماجرا رو.
بعد مقاله اومده و مدل Conv-Mixer و بقیه رقبا نظیر Resnet و ViT و MLP-Mixer رو روی دیتاست ImageNet-1k آموزش داده و نشون داده که Conv-Mixer نسبت به بقیه رقبا دقت بالاتری گرفته و البته تعداد پارامتر کمتر و سرعت Throughput بیشتری هم داره. نکته جالب این مقاله به نظر اینه که نشون داده که برای انتقال بازنمایی بین پچها لازم نیست که از فرآیند Self-Attention یا MLP-Mixer که هر دو فرآیندهای سنگینی به لحاظ حافظهای هستند و استفاده کنیم و به صورت global اطلاعات بین پچها رو انتقال بدیم. بلکه میشه با خود کانولوشن این فرآیند انتقال اطلاعات رو به صورت لوکال پیادهسازی کنیم. یحتمل این پایان کار نیست و باز هم در آینده مدلهای بیشتری خواهیم دید که سعی دارن با تغییر در معماری با معماریهای سابق نظیر ResNet و ViT و MLP-Mixer و البته Conv-Mixer رقابت کنند.
لینک مقاله:
https://openreview.net/pdf?id=rAnB7JSMXL
#read
#paper
@nlp_stuff
Telegram
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
اگر در حوزه تحلیل دیتا کار کرده باشید قطعا با ابزارهای 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
Blog | iamluminousmen
Cluster Managers for Apache Spark: from YARN to Kubernetes
Uncover the mechanics of Apache Spark's cluster managers, from YARN to Kubernetes. Learn how to optimize data processing with this in-depth exploration.
پیشرفت بس است، متوقفش کنید!
خبر جدید این که جمعی از دانشمندان، صاحبان فناوری و علاقهمندان به هوش مصنوعی (از بنجیو گرفته تا ایلان ماسک و گری مارکوس و حتی بنیانگذار stable-diffusion) با انتشار نامهای سرگشاده با ابراز نگرانی از بابت پیشرفت سریع هوش مصنوعی، از آزمایشگاههای هوش مصنوعی دنیا خواستهاند که آموزش دادن مدلهای هوش مصنوعی قویتر از GPT-4 را به مدت حداقل ۶ ماه متوقف کنند. این دوستان در این نامه گفتهاند که با این که هوش مصنوعی میتونه بشر رو وارد دوره جدیدی از تاریخ تمدنش کنه اما در صورتی که برنامهریزی صحیحی برای نحوه مدیریت هوش مصنوعی صورت نگیره این پدیده به عکس میتونه موجب بروز رخدادهای سیاهی بشه. همونطور که در طی چند وقت اخیر شاهد رقابتی دیوانهکننده میان شرکتهای غول بزرگ برای آموزش مدلهای بزرگ و بهتر هستیم و البته حاصل این رقابت ظهور مدلهای بسیار هوشمندی نظیر GPT هست که حتی سازندگان اون هم نمیتونن نحوه بروز هوشمندیش رو درک، پیشبینی و یا کنترلش کنند.
در بخش دیگهای از این نامه سوالهای جالبی مطرح شده. آیا ما باید تمامی مشاغل را اتومات و ماشینی کنیم؟ آیا باید کورکورانه به سمت ایجاد هوش مصنوعیهایی حرکت کنیم که در نهایت ممکن است جایگزین تمدن انسانی ما شوند؟ این دوستان نوشتهاند که توسعه هوش مصنوعی مسالهای نیست که فقط مربوط به توسعهدهندگان این حوزه باشد و کل جامعه بشری را در بر میگیرد. بنابراین از آزمایشگاههای هوش مصنوعی دنیا خواستهاند که آموزش مدلی قدرتمندتر از GPT-4 را به مدت حداقل ۶ ماه متوقف کنند و نکته جالب این که گفتهاند اگر این توقف امکانپذیر نباشد در این صورت دولتها باید وارد عمل شده و این توقف را اعمال کنند.
این دوستان سپس نوشتهاند که بعد از اعمال توقف، از این مکث برای طراحی و اجرای مجموعهای از پروتکلهای ایمنی مشترک برای توسعه هوش مصنوعی استفاده کرد. در ادامه تحقیق و توسعه هوش مصنوعی باید بر ساختن سیستمهای دقیقتر، ایمنتر، قابلتفسیرپذیرتر، شفافتر و همسوتر متمرکز شود. همچنین به صورت موازی، توسعهدهندگان هوش مصنوعی بایستی که به دنبال ایجاد رگولاتوریهایی برای حل بعضی چالشهای استفاده از هوش مصنوعی باشند. برای مثال وضع یک واترمارکینگ مشخص برای تشخیص آثار هوش مصنوعی از هوش واقعی، نظارت و ردیابی سیستمهای هوش مصنوعی و همچنین تلاش برای مقابله با اخلالات ناشی از سواستفادههای هوش مصنوعی در مسائل اقتصای و سیاسی از جمله این مسائلند.
این که چرا در این بحبوحه افراد بزرگ و معروفی این نامه عجیب را منتشر کردهاند خود سوال بزرگی است اما هر کدام از این افراد احتمالا با انگیزههای متفاوتی از محتوای این نامه حمایت کردهاند. بعضی انگیزههای محتمل این موارد هستند:
- نزدیکشدن به نقطه عطف هوش مصنوعی صنعتی: همانطور که شاهد هستیم اگر قبل از این در هوش مصنوعی آکادمی سعی میکرد تا با صنعت رقابت کند اما سطح رقابت اکنون به حدی رسیده است که گوگل نیز توانایی رقابت با Open-AI را ندارد. همچنین شایعاتی وجود دارد که Open-AI در حال آموزش دادن مدل GPT-5 است. با توجه به سیاستهای مخفیانه این شرکت این امکان وجود دارد که روند تحولات هوش مصنوعی از دست سایر بازیگران خارج شده و به یک مونوپلی ترسناک تبدیل شود. (حال آن که ما الان هم واقعا نمیدانیم آیا Open-AI مدلی هوشمندتر از GPT را آموزش داده یا خیر!)
- نگرانیهای واقعی بابت ریسکها و احتمال بروز فاجعههای اجتماعی: ما اکنون با تعداد زیادی مدلهای هوش مصنوعی در مودالهای مختلف نظیر تصویر و متن و ... مواجه هستیم. عدم توجه به خطرات و ریسکهای آن میتواند منجر به شرایط پیشبینینشده ناخواسته شود. از تولید محتواهای مستهجن گرفته تا احتمال جانشینی عوامل انسانی با عوامل هوش مصنوعی و بروز موج بیکاری میتواند تنها بخشی از این خطرات پیشبینیناشده باشد.
- خوابیدن هایپ هوش مصنوعی یا حتی تغییر مسیر رشد آن: هوش مصنوعی تا به امروز به صورت چراغ خاموش مشغول حرکت و رشد بوده است، اما در چند سال اخیر و مخصوصا بعد از انتشار chat-gpt توجه طیف زیادی از مردم عامه به آن جلب شد (خودتان در توییتر فارسی شاهد آن هستید!) در این بیان بسیاری از مردم بدون داشتن دانش خاصی از هوش مصنوعی توانستند چالشهای chat-gpt را کشف کنند. ادامه وضع فعلی در مسیر پیشرفت هوش مصنوعی یا میتواند منجر به بدبینشدن جامعه نسبت به آن و خوابیدن هایپ آن و واردشدن هوش به زمستانی دیگر شود یا این که توسعه کورکورانه با نیت آموزش مدل بزرگتر میتواند باعث خارج شدن مسیر تحقیقات دانشمندان هوش مصنوعی از چالشهای اصلیتر و واردشدن تمرکز و انرژی آنها بر رقابت بیهوده برای مدلهای بزرگتر و بزرگتر شود.
لینک نامه:
https://futureoflife.org/open-letter/pause-giant-ai-experiments/
#read
#news
@nlp_stuff
خبر جدید این که جمعی از دانشمندان، صاحبان فناوری و علاقهمندان به هوش مصنوعی (از بنجیو گرفته تا ایلان ماسک و گری مارکوس و حتی بنیانگذار stable-diffusion) با انتشار نامهای سرگشاده با ابراز نگرانی از بابت پیشرفت سریع هوش مصنوعی، از آزمایشگاههای هوش مصنوعی دنیا خواستهاند که آموزش دادن مدلهای هوش مصنوعی قویتر از GPT-4 را به مدت حداقل ۶ ماه متوقف کنند. این دوستان در این نامه گفتهاند که با این که هوش مصنوعی میتونه بشر رو وارد دوره جدیدی از تاریخ تمدنش کنه اما در صورتی که برنامهریزی صحیحی برای نحوه مدیریت هوش مصنوعی صورت نگیره این پدیده به عکس میتونه موجب بروز رخدادهای سیاهی بشه. همونطور که در طی چند وقت اخیر شاهد رقابتی دیوانهکننده میان شرکتهای غول بزرگ برای آموزش مدلهای بزرگ و بهتر هستیم و البته حاصل این رقابت ظهور مدلهای بسیار هوشمندی نظیر GPT هست که حتی سازندگان اون هم نمیتونن نحوه بروز هوشمندیش رو درک، پیشبینی و یا کنترلش کنند.
در بخش دیگهای از این نامه سوالهای جالبی مطرح شده. آیا ما باید تمامی مشاغل را اتومات و ماشینی کنیم؟ آیا باید کورکورانه به سمت ایجاد هوش مصنوعیهایی حرکت کنیم که در نهایت ممکن است جایگزین تمدن انسانی ما شوند؟ این دوستان نوشتهاند که توسعه هوش مصنوعی مسالهای نیست که فقط مربوط به توسعهدهندگان این حوزه باشد و کل جامعه بشری را در بر میگیرد. بنابراین از آزمایشگاههای هوش مصنوعی دنیا خواستهاند که آموزش مدلی قدرتمندتر از GPT-4 را به مدت حداقل ۶ ماه متوقف کنند و نکته جالب این که گفتهاند اگر این توقف امکانپذیر نباشد در این صورت دولتها باید وارد عمل شده و این توقف را اعمال کنند.
این دوستان سپس نوشتهاند که بعد از اعمال توقف، از این مکث برای طراحی و اجرای مجموعهای از پروتکلهای ایمنی مشترک برای توسعه هوش مصنوعی استفاده کرد. در ادامه تحقیق و توسعه هوش مصنوعی باید بر ساختن سیستمهای دقیقتر، ایمنتر، قابلتفسیرپذیرتر، شفافتر و همسوتر متمرکز شود. همچنین به صورت موازی، توسعهدهندگان هوش مصنوعی بایستی که به دنبال ایجاد رگولاتوریهایی برای حل بعضی چالشهای استفاده از هوش مصنوعی باشند. برای مثال وضع یک واترمارکینگ مشخص برای تشخیص آثار هوش مصنوعی از هوش واقعی، نظارت و ردیابی سیستمهای هوش مصنوعی و همچنین تلاش برای مقابله با اخلالات ناشی از سواستفادههای هوش مصنوعی در مسائل اقتصای و سیاسی از جمله این مسائلند.
این که چرا در این بحبوحه افراد بزرگ و معروفی این نامه عجیب را منتشر کردهاند خود سوال بزرگی است اما هر کدام از این افراد احتمالا با انگیزههای متفاوتی از محتوای این نامه حمایت کردهاند. بعضی انگیزههای محتمل این موارد هستند:
- نزدیکشدن به نقطه عطف هوش مصنوعی صنعتی: همانطور که شاهد هستیم اگر قبل از این در هوش مصنوعی آکادمی سعی میکرد تا با صنعت رقابت کند اما سطح رقابت اکنون به حدی رسیده است که گوگل نیز توانایی رقابت با Open-AI را ندارد. همچنین شایعاتی وجود دارد که Open-AI در حال آموزش دادن مدل GPT-5 است. با توجه به سیاستهای مخفیانه این شرکت این امکان وجود دارد که روند تحولات هوش مصنوعی از دست سایر بازیگران خارج شده و به یک مونوپلی ترسناک تبدیل شود. (حال آن که ما الان هم واقعا نمیدانیم آیا Open-AI مدلی هوشمندتر از GPT را آموزش داده یا خیر!)
- نگرانیهای واقعی بابت ریسکها و احتمال بروز فاجعههای اجتماعی: ما اکنون با تعداد زیادی مدلهای هوش مصنوعی در مودالهای مختلف نظیر تصویر و متن و ... مواجه هستیم. عدم توجه به خطرات و ریسکهای آن میتواند منجر به شرایط پیشبینینشده ناخواسته شود. از تولید محتواهای مستهجن گرفته تا احتمال جانشینی عوامل انسانی با عوامل هوش مصنوعی و بروز موج بیکاری میتواند تنها بخشی از این خطرات پیشبینیناشده باشد.
- خوابیدن هایپ هوش مصنوعی یا حتی تغییر مسیر رشد آن: هوش مصنوعی تا به امروز به صورت چراغ خاموش مشغول حرکت و رشد بوده است، اما در چند سال اخیر و مخصوصا بعد از انتشار chat-gpt توجه طیف زیادی از مردم عامه به آن جلب شد (خودتان در توییتر فارسی شاهد آن هستید!) در این بیان بسیاری از مردم بدون داشتن دانش خاصی از هوش مصنوعی توانستند چالشهای chat-gpt را کشف کنند. ادامه وضع فعلی در مسیر پیشرفت هوش مصنوعی یا میتواند منجر به بدبینشدن جامعه نسبت به آن و خوابیدن هایپ آن و واردشدن هوش به زمستانی دیگر شود یا این که توسعه کورکورانه با نیت آموزش مدل بزرگتر میتواند باعث خارج شدن مسیر تحقیقات دانشمندان هوش مصنوعی از چالشهای اصلیتر و واردشدن تمرکز و انرژی آنها بر رقابت بیهوده برای مدلهای بزرگتر و بزرگتر شود.
لینک نامه:
https://futureoflife.org/open-letter/pause-giant-ai-experiments/
#read
#news
@nlp_stuff
Future of Life Institute
Pause Giant AI Experiments: An Open Letter - Future of Life Institute
We call on all AI labs to immediately pause for at least 6 months the training of AI systems more powerful than GPT-4.
قلب چت جیپیتی: هوش مصنوعی با فیدبکهای واقعی
قبلا در این پست (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
قبلا در این پست (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
Telegram
stuff
مدل HuggingGPT، مدلی با مغز GPT و بازوی HuggingFace
همانطور که خودتون هم میبینید و میشنوید ChatGPT همه جا رو در نوردیده و طیف مختلف و وسیعی از وظایف مختلف رو میتونه بهتر از انسان انجام بده. با وجود این همه قدرت مدلهای زبانی، اما این مدلها محدودیتهایی هم دارند. مثلا صرفا به مسائلی که ورودی و خروجیشون متنی هستند محدود هستند (ممکنه بگید GPT4 مدل مولتی موداله بله اما GPT4 اولا فقط میتونه در ورودی تصویر بگیره و ثانیا اگر بخواد تصویر خروجی بده باید تحت کدی مثل tikz این کار رو بکنه که کیفیت عکسهاش اصلا اون چیزی که در نظر هست نیست). محدودیت دیگه این که در سناریوهای دنیای واقعی که نیازمند شکستن وظیفه به چندزیروظیفه هست هم عملکرد کاملی ندارند و البته در بعضی مسائل خاص متنی هم حتی نسبت به مدلهای اکسپرت عملکرد پایینتری دارند. حالا یک عده چینی از دانشگاه zhejiang ایدهای برای حل این محدودیتها به سرشون زده و اون رو با نام HuggingGPT پیاده کردند. شهود این ایده این شکلیه که بیایم از chat-gpt به عنوان مغز و یک جور کنترلگر و از مدلهای حاضر در هاب هاگینگفیس در حکم بازوان اجرایی متخصص استفاده کنیم. در این صورت میتونیم هم از قدرت منطقی gpt استفاده کنیم و هم این که تسکهایی که gpt نمیتونه اجراشون کنه (مثل تسکهای تصویری و صوتی) رو با استفاده از مدلهای متخصص حاضر بر روی HuggingFace بتونیم انجام بدیم.
این مدل به صورت کلی چهار بخش Task Planning و Model Selection و Task Execution و Response Generation دارد. روال کار هم به این صورته که کاربر درخواستش رو به مدل میده و مدل طی یک پایپلاین با کمک این چهار بخش درخواست کاربر رو انجام میده. در Task Planning درخواست کاربر ورودی گرفته میشه و به ChatGPT داده میشه. در این جا chatgpt وظیفه داره منظور این درخواست کاربر رو بفهمه و اون رو به زیروظایف کوچکتر بشکنه و همچنین ترتیب اجرای این زیروظایف و ورودی و خروجی اونها رو مشخص کنه. در گام بعدی یا Model Selection سپس هر کدوم از این زیروظایف و مشخصات مدلهای حاضر بر روی هاب هاگینگفیس به chatgpt داده میشن و chatgpt تصمیم میگیره که برای هر یک از این زیروظایف از چه مدلی میشه استفاده کرد. سپس در مرحله سوم یا Task Execution، هر یک از این زیروظایف توسط مدلهای مشخص شده اجرا میشن و البته تحت ترتیبی که تو مرحله یک مشخص شده به هم وصل میشن و ورودی و خروجیهای همدیگر رو فراهم میکنند. در گام آخر یا Repsonse Generation هم دوباره خروجیهای مرحله سوم به ChatGPT داده میشن و ChatGPT با جمعبندی این خروجیها، خروجی نهایی مدل رو آماده میکنه. برای فهم بهتر میتونید تصاویر پیوست شده رو مشاهده کنید. یک سری آزمایش هم اومدند و روی این مدل انجام دادند و نشون دادند که میتونه وظایف خیلی پیچیدهای که نیازمند ترکیب تواناییهای تصویری و صوتی و متنی هست رو انجام بده. نکته واجب به ذکر اینه که برای این که ChatGPT بفهمه هر یک از مراحل بالا رو باید انجام بده هم از In-context Learning استفاده کردند، یعنی این که نمونه ورودیها و خروجیها رو در prompt ورودی به ChatGPT میدن و GPT خودش میفهمه باید چه جوری اوستا کنه قضیه رو.
قبلا در این پست (https://yangx.top/nlp_stuff/318) هم راجع به یک کیس جالب دیگه که از LLM به عنوان حتی بکاند استفاده کرده بود صحبت کرده بودیم. به نظر میرسه با قدرتگیری LLMها در آینده نزدیک شاهد خیزش ترندی خواهیم بود که سعی میشه تا از اونها در حکم LLM as App یا حتی LLM as Everything استفاده بشه. آینده جذابی پیش روی محصولات این حوزه است. کسی چه میداند، شاید دنیای مهندسی نرمافزار بعد از LLM ها به شدت تکانده شود.
لینک مقاله:
https://arxiv.org/abs/2303.17580
پینوشت: با به اشتراکگذاری مطالبی که از آنها لذت میبرید، به بقیه هم این لذت رو هدیه بدید.
#read
#paper
@nlp_stuff
همانطور که خودتون هم میبینید و میشنوید ChatGPT همه جا رو در نوردیده و طیف مختلف و وسیعی از وظایف مختلف رو میتونه بهتر از انسان انجام بده. با وجود این همه قدرت مدلهای زبانی، اما این مدلها محدودیتهایی هم دارند. مثلا صرفا به مسائلی که ورودی و خروجیشون متنی هستند محدود هستند (ممکنه بگید GPT4 مدل مولتی موداله بله اما GPT4 اولا فقط میتونه در ورودی تصویر بگیره و ثانیا اگر بخواد تصویر خروجی بده باید تحت کدی مثل tikz این کار رو بکنه که کیفیت عکسهاش اصلا اون چیزی که در نظر هست نیست). محدودیت دیگه این که در سناریوهای دنیای واقعی که نیازمند شکستن وظیفه به چندزیروظیفه هست هم عملکرد کاملی ندارند و البته در بعضی مسائل خاص متنی هم حتی نسبت به مدلهای اکسپرت عملکرد پایینتری دارند. حالا یک عده چینی از دانشگاه zhejiang ایدهای برای حل این محدودیتها به سرشون زده و اون رو با نام HuggingGPT پیاده کردند. شهود این ایده این شکلیه که بیایم از chat-gpt به عنوان مغز و یک جور کنترلگر و از مدلهای حاضر در هاب هاگینگفیس در حکم بازوان اجرایی متخصص استفاده کنیم. در این صورت میتونیم هم از قدرت منطقی gpt استفاده کنیم و هم این که تسکهایی که gpt نمیتونه اجراشون کنه (مثل تسکهای تصویری و صوتی) رو با استفاده از مدلهای متخصص حاضر بر روی HuggingFace بتونیم انجام بدیم.
این مدل به صورت کلی چهار بخش Task Planning و Model Selection و Task Execution و Response Generation دارد. روال کار هم به این صورته که کاربر درخواستش رو به مدل میده و مدل طی یک پایپلاین با کمک این چهار بخش درخواست کاربر رو انجام میده. در Task Planning درخواست کاربر ورودی گرفته میشه و به ChatGPT داده میشه. در این جا chatgpt وظیفه داره منظور این درخواست کاربر رو بفهمه و اون رو به زیروظایف کوچکتر بشکنه و همچنین ترتیب اجرای این زیروظایف و ورودی و خروجی اونها رو مشخص کنه. در گام بعدی یا Model Selection سپس هر کدوم از این زیروظایف و مشخصات مدلهای حاضر بر روی هاب هاگینگفیس به chatgpt داده میشن و chatgpt تصمیم میگیره که برای هر یک از این زیروظایف از چه مدلی میشه استفاده کرد. سپس در مرحله سوم یا Task Execution، هر یک از این زیروظایف توسط مدلهای مشخص شده اجرا میشن و البته تحت ترتیبی که تو مرحله یک مشخص شده به هم وصل میشن و ورودی و خروجیهای همدیگر رو فراهم میکنند. در گام آخر یا Repsonse Generation هم دوباره خروجیهای مرحله سوم به ChatGPT داده میشن و ChatGPT با جمعبندی این خروجیها، خروجی نهایی مدل رو آماده میکنه. برای فهم بهتر میتونید تصاویر پیوست شده رو مشاهده کنید. یک سری آزمایش هم اومدند و روی این مدل انجام دادند و نشون دادند که میتونه وظایف خیلی پیچیدهای که نیازمند ترکیب تواناییهای تصویری و صوتی و متنی هست رو انجام بده. نکته واجب به ذکر اینه که برای این که ChatGPT بفهمه هر یک از مراحل بالا رو باید انجام بده هم از In-context Learning استفاده کردند، یعنی این که نمونه ورودیها و خروجیها رو در prompt ورودی به ChatGPT میدن و GPT خودش میفهمه باید چه جوری اوستا کنه قضیه رو.
قبلا در این پست (https://yangx.top/nlp_stuff/318) هم راجع به یک کیس جالب دیگه که از LLM به عنوان حتی بکاند استفاده کرده بود صحبت کرده بودیم. به نظر میرسه با قدرتگیری LLMها در آینده نزدیک شاهد خیزش ترندی خواهیم بود که سعی میشه تا از اونها در حکم LLM as App یا حتی LLM as Everything استفاده بشه. آینده جذابی پیش روی محصولات این حوزه است. کسی چه میداند، شاید دنیای مهندسی نرمافزار بعد از LLM ها به شدت تکانده شود.
لینک مقاله:
https://arxiv.org/abs/2303.17580
پینوشت: با به اشتراکگذاری مطالبی که از آنها لذت میبرید، به بقیه هم این لذت رو هدیه بدید.
#read
#paper
@nlp_stuff
Telegram
stuff
معرفی Toolformer
مدلهای زبانی، در حل وظایف جدید با تنها چند مثال یا دستورالعمل متنی تواناییهای قابل توجهی دارند، به ویژه در مقیاس بزرگ. در عین حال، برای عملکردهای پایهای مثل محاسبات یا جستجوی factها دچار مشکل هستند، جایی که مدلهای سادهتر و کوچکتر بسیار عالی عمل میکنند. این مقاله با معرفی Toolformer، نشون میده که مدلهای زبانی چطوری میتونند خودشون رو با استفاده از APIهای ساده، آموزش بدن تا بهترین راهکار رو داشته باشند. مدل Toolformer، آموزش میبینه که تصمیم بگیره کدام API رو فراخوانی کنه، چه زمانی اونها رو فراخوانی کنه، چه آرگومانهایی رو منتقل کنه و چطوری به بهترین شکل از ترکیب نتایج برای پیشبینی توکن بعدی استفاده کنه.
این APIهای گنجانده شده در Toolformer شامل ماشین حساب، سیستم پرسش و پاسخ، موتور جستجو، سیستم ترجمه و یک تقویمه. آموزش این مدل به صورت خودبخودی و خودآموزه، که تنها به چند تا نمونه برای هر API نیاز داره. یعنی با استفاده از تعداد انگشت شماری نمونههای نوشته شده توسط انسان از فراخوانی یک API، به مدل این امکان داده میشه که برای یک مجموعه دادهی زبانی بزرگ، کاندیدهای فرخوانی API رو مرتبط با محتوای متن ایجاد کند (in-context learning). سپس با استفاده از یک تابع self-supervised loss مشخص میشه کدام فراخوانی APIها واقعا به مدل برای پیشبینی توکن بعدی کمک میکنه. در نهایت مدل روی فراخوانهای API ای که مفیدند finetune میشه.
مدل Toolformer، عملکرد zero-shot رو برای مدل GPT-J با 6.7B پارامتر به طور قابل توجهی بهبود می بخشه و باعث میشه حتی از مدل بسیار بزرگتر GPT-3 در طیف وسیعی از وظایف مختلف پاییندستی (یا همان downstream tasks) بهتر عمل کنه، بدون اینکه تواناهایی مدل سازی زبان اصلی را ازدست بده.
لینک مقاله:
https://arxiv.org/abs/2302.04761
پ.ن. این پست را خانم وحیدی درست کردند و به کانال فرستادند. شما هم اگر پست خوبی دارید بگید تا به اسم و با لینک به لینکداین خودتون منتشر کنیم.
#read
#paper
@nlp_stuff
مدلهای زبانی، در حل وظایف جدید با تنها چند مثال یا دستورالعمل متنی تواناییهای قابل توجهی دارند، به ویژه در مقیاس بزرگ. در عین حال، برای عملکردهای پایهای مثل محاسبات یا جستجوی factها دچار مشکل هستند، جایی که مدلهای سادهتر و کوچکتر بسیار عالی عمل میکنند. این مقاله با معرفی Toolformer، نشون میده که مدلهای زبانی چطوری میتونند خودشون رو با استفاده از APIهای ساده، آموزش بدن تا بهترین راهکار رو داشته باشند. مدل Toolformer، آموزش میبینه که تصمیم بگیره کدام API رو فراخوانی کنه، چه زمانی اونها رو فراخوانی کنه، چه آرگومانهایی رو منتقل کنه و چطوری به بهترین شکل از ترکیب نتایج برای پیشبینی توکن بعدی استفاده کنه.
این APIهای گنجانده شده در Toolformer شامل ماشین حساب، سیستم پرسش و پاسخ، موتور جستجو، سیستم ترجمه و یک تقویمه. آموزش این مدل به صورت خودبخودی و خودآموزه، که تنها به چند تا نمونه برای هر API نیاز داره. یعنی با استفاده از تعداد انگشت شماری نمونههای نوشته شده توسط انسان از فراخوانی یک API، به مدل این امکان داده میشه که برای یک مجموعه دادهی زبانی بزرگ، کاندیدهای فرخوانی API رو مرتبط با محتوای متن ایجاد کند (in-context learning). سپس با استفاده از یک تابع self-supervised loss مشخص میشه کدام فراخوانی APIها واقعا به مدل برای پیشبینی توکن بعدی کمک میکنه. در نهایت مدل روی فراخوانهای API ای که مفیدند finetune میشه.
مدل Toolformer، عملکرد zero-shot رو برای مدل GPT-J با 6.7B پارامتر به طور قابل توجهی بهبود می بخشه و باعث میشه حتی از مدل بسیار بزرگتر GPT-3 در طیف وسیعی از وظایف مختلف پاییندستی (یا همان downstream tasks) بهتر عمل کنه، بدون اینکه تواناهایی مدل سازی زبان اصلی را ازدست بده.
لینک مقاله:
https://arxiv.org/abs/2302.04761
پ.ن. این پست را خانم وحیدی درست کردند و به کانال فرستادند. شما هم اگر پست خوبی دارید بگید تا به اسم و با لینک به لینکداین خودتون منتشر کنیم.
#read
#paper
@nlp_stuff
Telegram
stuff
اندر حکایت GPT-4 و چالهچولههای آن!
اندکی از انتشار GPT-4 میگذره و حالا در این پست ویرگول قصد داریم بر اساس مقاله اخیری که تیم microsoft منتشر کرده به نقاط کور و چالشهای این مدل بپردازیم. در این مقاله به صورت هنرمندانه promptهایی تهیه شده که این نقاط ضعف رو نشون میده و دیدنش خالی از لطف نیست.
پ.ن. اینا نشستند ۱۵۰ صفحه مقاله نوشتند خداوکیلی ظلم در حقشون هست که شما مقاله شون رو حتی یه تورق هم نکنید! حداقل تصاویرش رو ببینید D:
لینک پست ویرگول:
https://virgool.io/overfit/gpt-4-b35cyw5oxi4t
لینک مقاله:
https://arxiv.org/abs/2303.12712
#read
#paper
#overfit
@nlp_stuff
اندکی از انتشار GPT-4 میگذره و حالا در این پست ویرگول قصد داریم بر اساس مقاله اخیری که تیم microsoft منتشر کرده به نقاط کور و چالشهای این مدل بپردازیم. در این مقاله به صورت هنرمندانه promptهایی تهیه شده که این نقاط ضعف رو نشون میده و دیدنش خالی از لطف نیست.
پ.ن. اینا نشستند ۱۵۰ صفحه مقاله نوشتند خداوکیلی ظلم در حقشون هست که شما مقاله شون رو حتی یه تورق هم نکنید! حداقل تصاویرش رو ببینید D:
لینک پست ویرگول:
https://virgool.io/overfit/gpt-4-b35cyw5oxi4t
لینک مقاله:
https://arxiv.org/abs/2303.12712
#read
#paper
#overfit
@nlp_stuff
بهبود عملکرد LLM با نشوندادن Chain of Thought غلط
مدلهای زبانی بزرگ با این که کلی از مسائل حوزه پردازش زبان رو درنوردیدند ولی همچنان در برخی مسائل با فاز reasoningطور (مثل مثلا حل مسائل ریاضی) دچار مشکلات جدی هستند. یکی از راهحلهای پیشنهادشده برای بهبود عملکرد این مدلها روی این مسائل، راهکار Chain-of-Thought Prompting (به اختصار CoT) هست. تو این راهکار وقتی میخوایم یک مساله را به صورت few-shot به LLM توضیح بدیم عوض این که در exampleهامون صرفا جواب آخر رو بنویسیم و میایم و مرحله به مرحله نحوه رسیدن به جواب رو توضیح میدیم و این جوری مدل هم وقتی میخواد به کوئری ما پاسخ بده به نوعی مجبور میشه که مرحله به مرحله جواب رو بنویسه. آزمایشات نشون داده که باعث میشه درصد جوابهای پایانی درستی که میده بیشتر بشه.
حالا یک مقاله اومده و یک ایده به نام contrastive chaint of thought prompting رو مطرح کرده. تو این ایده، علاوه بر این که CoT درست به مدل داده میشود بهش CoT اشتباه هم نشون داده میشه و آزمایشات مقاله نشون میده که این ایده نشون دادن CoT غلط در کنار CoT باعث میشه تا عملکرد LLM باز هم بهبود پیدا کنه.
لینک مقاله:
https://arxiv.org/abs/2311.09277
#paper
#read
@nlp_stuff
مدلهای زبانی بزرگ با این که کلی از مسائل حوزه پردازش زبان رو درنوردیدند ولی همچنان در برخی مسائل با فاز reasoningطور (مثل مثلا حل مسائل ریاضی) دچار مشکلات جدی هستند. یکی از راهحلهای پیشنهادشده برای بهبود عملکرد این مدلها روی این مسائل، راهکار Chain-of-Thought Prompting (به اختصار CoT) هست. تو این راهکار وقتی میخوایم یک مساله را به صورت few-shot به LLM توضیح بدیم عوض این که در exampleهامون صرفا جواب آخر رو بنویسیم و میایم و مرحله به مرحله نحوه رسیدن به جواب رو توضیح میدیم و این جوری مدل هم وقتی میخواد به کوئری ما پاسخ بده به نوعی مجبور میشه که مرحله به مرحله جواب رو بنویسه. آزمایشات نشون داده که باعث میشه درصد جوابهای پایانی درستی که میده بیشتر بشه.
حالا یک مقاله اومده و یک ایده به نام contrastive chaint of thought prompting رو مطرح کرده. تو این ایده، علاوه بر این که CoT درست به مدل داده میشود بهش CoT اشتباه هم نشون داده میشه و آزمایشات مقاله نشون میده که این ایده نشون دادن CoT غلط در کنار CoT باعث میشه تا عملکرد LLM باز هم بهبود پیدا کنه.
لینک مقاله:
https://arxiv.org/abs/2311.09277
#paper
#read
@nlp_stuff
Telegram
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
خلاصه بخوایم بگیم: جدیدا شرکت 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
Telegram
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
اخیرا یکی از مهندسهای هاگینگ فیس به نام فیلیپ اشمیت با یک بلاگ پست زیر و بم «تنظیم دقیق (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
حتما این روزها بارها مدلهای استدلالی مثل 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
Telegram
stuff
1👍36🔥8
خلاصهتر فکر کن
از اونجایی که در مسائل استدلالی (reasoning) ، مدل برای رسیدن به جواب نهایی، باید دنباله افکار میانی رو به شکل CoT تولید کنه، یکی از دردهای آزاردهنده اینه که باید گاهی توکنهای زیادی اون وسط تولید بشن و این امر هم هزینه پولی و هم هزینه زمانی زیادی داره. حالا با توجه به این نکته، این که چطور توکنهای کمتری تولید کنیم و در عین حال دقت مطلوبتری رو حفظ کنیم مسالهی پیشروی ماست.
به تازگی کار جالبی اومده با عنوان Chain of Draft یا CoD که همون CoT هست با این تفاوت که در پرامپت از مدل خواسته میشه که هر سگمنت استدلالی (reasoning) که میخواد خروجی بده حداکثر ۵ کلمه طول داشته باشه. نتایجش جالب شده و نشون داده که با میزان توکن و در نتیجه latency خیلی کمتر تونسته دقت قابل رقابت با CoT رو حفظ کنه و حتی بعضی جاها بهتر از اون نتیجه بده. خلاصه که یکی از جهتهای آینده احتمالا اینه که چطور مدلهایی داشته باشیم که کاراتر فکر کنند.
لینک پیپر:
https://arxiv.org/abs/2502.18600
#read
#paper
@nlp_stuff
از اونجایی که در مسائل استدلالی (reasoning) ، مدل برای رسیدن به جواب نهایی، باید دنباله افکار میانی رو به شکل CoT تولید کنه، یکی از دردهای آزاردهنده اینه که باید گاهی توکنهای زیادی اون وسط تولید بشن و این امر هم هزینه پولی و هم هزینه زمانی زیادی داره. حالا با توجه به این نکته، این که چطور توکنهای کمتری تولید کنیم و در عین حال دقت مطلوبتری رو حفظ کنیم مسالهی پیشروی ماست.
به تازگی کار جالبی اومده با عنوان Chain of Draft یا CoD که همون CoT هست با این تفاوت که در پرامپت از مدل خواسته میشه که هر سگمنت استدلالی (reasoning) که میخواد خروجی بده حداکثر ۵ کلمه طول داشته باشه. نتایجش جالب شده و نشون داده که با میزان توکن و در نتیجه latency خیلی کمتر تونسته دقت قابل رقابت با CoT رو حفظ کنه و حتی بعضی جاها بهتر از اون نتیجه بده. خلاصه که یکی از جهتهای آینده احتمالا اینه که چطور مدلهایی داشته باشیم که کاراتر فکر کنند.
لینک پیپر:
https://arxiv.org/abs/2502.18600
#read
#paper
@nlp_stuff
👍33🔥2
مفهوم 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
خانم چیپ هوین بلاگ پست مفصلی راجع به 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
Telegram
stuff
👍26🔥6