ویدیوهای کارگاه آشنایی با HF و میزگرد آیا زمستان هوش مصنوعی در پیش است؟

مهدی‌مون در دو برنامه از WSS امسال حضور داشت.
اولی ورکشاپی بود با عنوان آHugging Face: A Platform to Democratize Open-Source AI که در اون سعی کرده به شکل متفاوتی از ابتدای تایم‌لاین دیپ لرنینگ شروع کنه به توضیح دادن تا به این برسه که هاگینگ‌فیس چجوری داره به دموکراتایز کردن هوش مصنوعی کمک می‌کنه. دیدنش دید خیلی خوبی از بالا بهتون میده.
دومی هم میزگردی بود که زمستان هوش مصنوعی را بررسی می‌کنند. آقای دکتر ربیعی، آقای دکتر رهبان و محمدرضا صمصامی (از محققین موسسه میلا) هم در این میزگرد حضور داشتند و راجع به این موضوع صحبت می‌کردند که آیا این مسیر به AGI ختم می‌شه یا به زمستان بعدی هوش مصنوعی خواهیم رسید.


لینک ویدیوی ورکشاپ:
https://aparat.com/v/PC952

لینک ویدیوی میزگرد:
https://aparat.com/v/nUVJR

#overfit
#coach

@nlp_stuff
ایجاد optical illusion با مدل‌های دیفوژنی

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

https://huggingface.co/spaces/pngwn/IllusionDiffusion

#link

@nlp_stuff
کورس LLM دانشگاه شریف

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

لینک کورس:
sharif-llm.ir

لینک ویدیوها:
https://ocw.sharif.edu/course/id/524

#course
#coach

@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
شکست 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
دادگان PCoQA: Persian Conversational Question Answering

دادگان (دیتاست) جدیدی به نام PCoQA منتشر شده که شامل ۹۰۲۶ پرسش از ۸۷۰ صفحه ویکی‌پدیاست. هر گفتمان (conversation) روی یک صفحه ویکی‌پدیا انجام شده و طول هر گفتمان هم حدودا ۱۰ است. به منظور ارزیابی انسانی شبیه دادگان‌های گذشته مثل SQuAD و CoQA، برای هر پرسش در مجموعه‌ی ارزیابی و تست چندین پاسخ دراومده و دقت F1 انسان‌ها و چندین مدل بر روی پاسخ‌دهی به این پرسش‌ها بدست اومده که برای انسان حدودا ۸۶ درصده.

دو نوع مدل روی این داده تست شده. یکی با فقط فاین‌تیون کردن چند مدل زبانی ترنسفورمری روی همین دادگان و یک مدل دیگه هم با فاین‌تیون کردن مدل روی دادگان قبلی QA و بعد فاین تیون روی این دادگان و بعد تست گرفتن.

دو خصوصیت مهم این دیتاست:
- پرسش‌های این دادگان بیشتر open ended هستند، بر خلاف قبلی‌ها مثل CoQA و SQuAD که بیشتر به شکلی مصنوعی‌ بر روی named entity و noun phrase متمرکزند.
- سعی شده lexical overlap تا حد امکان کاهش داده بشه تا کیفیت بالاتر بیاد.

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

لینک گیت‌هاب:
github.com/HamedHematian/PCoQA

#dataset

@nlp_stuff
لاما۳ با پشتیبانی از فارسی آمد

سلام بعد از مدتها. گفتیم با یه خبر برگردیم: شرکت متا لاما۳ رو بیرون داد. علی الحساب چند تا بولت راجع بهش بگیم تا جزئیات مفصل‌تر رو در آینده نزدیک بهتون بگیم:
• پشتیبانی از فارسی (لینک دمو در انتهای پست و عکس اول از نمونه سوال و جواب)
• ۱۰ درصد بهبود نسبت به ورژن‌های قبلی داره
• در دو سایز ۸ و ۷۰ میلیاردی در دو نسخه base و instruct ارائه شده
• توکنایزرش با اندازه ۱۲۸ هزار تا آپدیت شده
• باز هم اجازه استفاده تجاری داده شده
• روی ۱۵ تریلیون توکن آموزش داده شده
• روی ۱۰ میلیون نمونه لیبل‌زده شده توسط انسان فاین‌تیون شده
• برای alignment هم از sft و ppo و dpo استفاده شده
• روی mmlu بهترین مدل زبانی وزن‌باز هست (بالای ۸۰)
• مدل ۸ و ۷۰ میلیاردی نسخه instruct یه ترتیب با ۶۲.۲ و ۸۱.۷ در HumanEval وضعیت بسیار خوبی در کدزنی دارند.
• اندازه context window با اندازه پیش فرض ۸۱۹۲ و با قابلیت افزایش

لینک به تصاویری از مدل:
https://www.tg-me.com/overfit_stuff/313
لینک بلاگ متا:
https://ai.meta.com/blog/meta-llama-3/
لینک بلاگ توضیح و استفاده لاما:
https://huggingface.co/blog/llama3
لینک دمو لاما۳ (پشتیبانی از فارسی):
https://www.llama2.ai/
لینک کالکشن هاگینگ‌فیس:
https://huggingface.co/collections/meta-llama/meta-llama-3-66214712577ca38149ebb2b6



#model


@nlp_stuff
اندر تفاوت‌های ML در ریسرچ و پروداکشن

تا حالا زیاد درباره تفاوت‌های نگاه در یادگیری ماشین به جهت ریسرچ و پروداکشن صحبت شده. اما در این پست به بهانه معرفی کتاب Designing Machine Learning Systems می‌خواستیم که خیلی جمع و جور و خلاصه این تفاوت نگاه رو به رشته تحریر دربیاریم. همون‌طور که در تصویر دوم ضمیمه‌شده مشخصه (این جدول برگرفته از فصل اول این کتابه) یکی از ملموس‌ترین تفاوت‌ها بحث اولویت محاسباتیه که در ریسرچ، بیشتر تمرکز بر روی کوتاه‌تر کردن زمان Train گذاشته میشه اما در پروداکشن بیشتر تمرکز بر روی زمان inference کوتاهه. یا مثلا بحث distribution shiftهای مداوم که در یک مساله تحقیقاتی شاید کمتر اتفاق بیفته.
اما به نظر مهم‌ترین تفاوت که عمدتا باعث fail شدن پروژه‌های ML در صنعت میشه همون سطر اول این جدوله که شاید برای افراد ناملموس‌تر باشه. بله؛ وجود افراد در سازمان با نگاه‌های متفاوت که هر کدوم به نوعی هدف و سهمی از این نوع پروژه‌ها دارند، مهم‌ترین تهدید و همزمان مهم‌ترین فرصت برای این پروژه‌هاست. اگر بتونیم به جای تمرکز بر متریک‌های تکنیکال بر روی بهبود متریک‌های بیزنسی تمرکز کنیم این تهدید رو تبدیل به فرصت کردیم و در غیر این صورت باید بریم خونه‌هامون.
در آینده منتظر پست‌های بعدی از این کتاب باشید.

لینک کتاب:
https://www.amazon.com/Designing-Machine-Learning-Systems-Production-Ready/dp/1098107969

#book

@nlp_stuff
سفت کردن جای پا با فریم‌بندی درست مسائل ML

در ادامه رشته‌پست‌ها از کتاب Designing Machine Learning Systems با یک موضوع مهم از فصل دوم این کتاب در خدمتتون هستیم. فریم‌بندی درست مسائل در حوزه ML می‌تونه درصد موفقیت پروژه‌ها رو در این حوزه تا حد زیادی بالا ببره. برای فریم‌بندی می‌تونیم به این شکست فکر کنیم که چه نوع ورودی باید به مدل بدیم (input features)، چه خروجی باید بگیریم (target labels) و انتظار داریم چه چیزی رو مدل یاد بگیره (objective functions).
درباره مورد اول و دوم یک چاله رایج وجود داره و اون هم وابسته کردن مدل به مفاهیمیه که متغیر هستند. کتاب درباره نوع خروجی دادن مدل یک مثال میزنه و اون هم مساله تشخیص اپ بعدی‌ای ست که کاربر بر روی اون در یک اپ‌استور کلیک می‌کنه. یک مدل اولیه می‌تونه این باشه که خروجی مدل رو یک وکتور به اندازه سایز تمام اپ‌ها درنظر بگیریم و مدل با دادن فیچرهای ترجیحات کاربر، حدس بزنه که احتمال کلیک بر روی هر یک از اپ‌ها چقدر هست. با این فریم‌بندی عملا سایز خروجی مدل به تعداد اپ‌های حاضر بر روی اپ استور bind شده که می‌دونیم با نرخ بالایی تغییر می‌کنه. همچنین مساله شبیه یک multi class classification شده که مساله‌ای به مراتب سخت‌تر از binary classification است. شکل درست کار در این جا می‌تونه ورودی دادن فیچرهایی از ترجیحات کاربر و فیچرهای اپ‌ها به صورت توامان با هم باشه و از مدل بخوایم که بگه فلان اپ رو کاربر کلیک میکنه یا نه (طبق تصاویر در اینجا موقع inference نیاز داریم که به تعداد اپ‌ها مدل رو صدا بزنیم که قابلیت موازی‌سازی داره و مشکلی ایجاد نمی‌کنه ولی در عوض خروجی باینری برای مدل داریم و ابعاد خروجی متغیر نیست).
با این تغییر همچنین نیاز نیست برای adopt شدن مدل با هر اپ جدید، حتما retrain انجام بشه و حتی چالش cold start برای اپ‌های جدید هم تا حدی با الگویابی مدل از اپ‌های قبلی که شبیه اپ‌های جدید هستند، می‌تونه بهتر بشه.
همین چاله برای فیچرهای ورودی هم می‌تونه پیش بیاد که البته کتاب بهش اشاره‌ای نمی‌کنه اما با کمی فکر کردن می‌تونیم مثال‌های مختلفی براش پیدا کنیم. مثلا ممکنه شما در مساله‌تون فیچری داشته باشید که انواع مختلف واکنش‌های کاربر رو بخواید بشمارید و ممکنه مثلا واکنش‌های مثبت، انواع مختلفی داشته باشند که اثر یکسانی در بیزنس دارند اما بسته به برخی تصمیمات دیزاین یا بیزنس کم و زیاد می‌شند. در اینجا یک مفهوم ثابت وجود داره و اون واکنش مثبت کاربره و تفکیک انواع واکنش‌ها باعث میشه روی فیچری تکیه کنید که جزییات بیشتری رو فراهم می‌کنه اما در عوض می‌تونه تغییر کنه و یا حتی مرز مشخصی بین کاربر‌ها برای اون وجود نداره.
نکته‌ای که مهمه اینه که با فریم‌بندی درست مسائل ML می‌تونیم تا حد زیادی از effort مساله کم کنیم و به نوعی جای پامون رو برای توسعه پروژه در آینده سفت‌تر کنیم.

#book

@nlp_stuff
2024/05/16 18:40:13
Back to Top
HTML Embed Code: