This media is not supported in your browser
VIEW IN TELEGRAM
خیلیها دوست دارن یادگیری تقویتی یاد بگیرن. واقعا هم جذابه که بازیهای معروف رو با هوش مصنوعی انجام بدی. اما از طرفی، به محض اینکه میری سمتش، با انبوهی از ریاضیات و مباحث پیچیده مواجه میشی.
میخوام یه آموزش کوتاه و خوب بهتون پیشنهاد بدم که فقط با کدنویسی (بدون ریاضی) چند تا بازی ساده رو با هوش مصنوعی کد بزنید و انجام بدید. این آموزش رو آقای Nicholas Renotte آماده کرده که حدود سه ساعت هست. قبلا، من این آموزش رو دیدم. برید ببینید و عشق کنید!
توی این سه ساعت چه چیزهایی میگه:
* یکمی مقدمه و تئوری میگه (خیلی سبک)
* ابزارهای موردنیاز رو معرفی میکنه
* سه تا پروژه هم انجام میده:
1. بازی Cart Pole
2. بازی Breakout
3. بازی Car Racing
بعدش خودتون میتونید یک عالمه بازی و سناریوی ساده در همین سطح انجام بدید.
لینک آموزش
@pytorch_howsam
میخوام یه آموزش کوتاه و خوب بهتون پیشنهاد بدم که فقط با کدنویسی (بدون ریاضی) چند تا بازی ساده رو با هوش مصنوعی کد بزنید و انجام بدید. این آموزش رو آقای Nicholas Renotte آماده کرده که حدود سه ساعت هست. قبلا، من این آموزش رو دیدم. برید ببینید و عشق کنید!
توی این سه ساعت چه چیزهایی میگه:
* یکمی مقدمه و تئوری میگه (خیلی سبک)
* ابزارهای موردنیاز رو معرفی میکنه
* سه تا پروژه هم انجام میده:
1. بازی Cart Pole
2. بازی Breakout
3. بازی Car Racing
بعدش خودتون میتونید یک عالمه بازی و سناریوی ساده در همین سطح انجام بدید.
لینک آموزش
@pytorch_howsam
PyTorch Howsam
Florence-2: Advancing a Unified Representation for a Variety of Vision Tasks مدل Vision-Language مایکروسافت بنام Florence-2 شاخصههای مهم این کار: * خیلی سَبُکه. خبری از بیلیون پارامتر نیست! * یک شبکه همه کاره هست؛ یعنی، دیتکشن، سگمنتیش و غیره * یک دیتاست…
احتمالا خبر دارید که اخیرا کنفرانس CVPR 2024 برگزار شد. میخوام، به مرور چند تا مقاله خوب و خوندنی این کنفرانس رو معرفی کنم. قبلا، Florence-2 رو معرفی کردم. امروز یک مقاله از حوزه شبکههای مگس وزن براتون آوردم! 😁
قبل از ظهور ترنسفورمر و ViT، شبکههای سبک و موبایلی زیادی داشتیم که مبتنی بر CNN بودن. مثل موبایلنت 1، 2، 3 و خیلی موارد دیگه. خب، در سالهای اخیر شبکههای موبایلی مبتنی بر ViT هم پیشنهاد شدن که اتفاقا از لحاظ سبکی و Latency بهتر از کانولوشنیها بودن. شبکههایی مثل FastViT، EfficientFormer و غیره.
اما، توی این مقاله شبکهای مبتنی بر CNN پیشنهاد شده که مُچ شبکههای ترنسفورمری رو خوابونده! توی تصویر بالا هم میتونید مقایسه دقت و Latency بین این شبکه و سایرین رو ببینید.
ریپوی خوبی داره. وزنهاش در دسترسه. مورد استقبال قرار گرفته. همچنین، اومدن این شبکه رو با SAM (همون Segment Anything) ترکیب کردن و چیز جالبی دراومده! کد این هم توی ریپو موجود هست.
مقاله | گیتهاب
@pytorch_howsam
RepViT: Revisiting Mobile CNN From ViT Perspective
قبل از ظهور ترنسفورمر و ViT، شبکههای سبک و موبایلی زیادی داشتیم که مبتنی بر CNN بودن. مثل موبایلنت 1، 2، 3 و خیلی موارد دیگه. خب، در سالهای اخیر شبکههای موبایلی مبتنی بر ViT هم پیشنهاد شدن که اتفاقا از لحاظ سبکی و Latency بهتر از کانولوشنیها بودن. شبکههایی مثل FastViT، EfficientFormer و غیره.
اما، توی این مقاله شبکهای مبتنی بر CNN پیشنهاد شده که مُچ شبکههای ترنسفورمری رو خوابونده! توی تصویر بالا هم میتونید مقایسه دقت و Latency بین این شبکه و سایرین رو ببینید.
ریپوی خوبی داره. وزنهاش در دسترسه. مورد استقبال قرار گرفته. همچنین، اومدن این شبکه رو با SAM (همون Segment Anything) ترکیب کردن و چیز جالبی دراومده! کد این هم توی ریپو موجود هست.
مقاله | گیتهاب
@pytorch_howsam
CAP6412 Advanced Computer Vision - Spring 2024
اگه به دیپ لرنینگ مسلط هستید و تلاش میکنید خودتون رو بروز نگه دارید، کورس بینایی کامپیوتر پیشرفته دانشگاه UCF رو مدنظر داشته باشید. این کورس توسط مبارک شاه از بزرگان حوزه بینایی کامپیوتر در بهار 2024 ارائه شده.
هدف این دوره چی هست؟
- این دوره روی VLM-ها (Vision Language Models) تمرکز داره.
- مقاله-محور هست. مقالههای مهم VLM رو تشریح میکنه.
- راه انداختن دانشجوها در تحلیل مقاله، ایده زدن و ...
جلساتش طولانی نیست و حدود 30 دقیقه هست. توی جلسه اولش که معرفی دوره هست، نکات جالبی درمورد نحوه مطالعه و تحلیل مقاله، تسکها و غیره میده که جالبه. من میخوام توی برنامه بذارم که ویدئوها رو نگاه کنم.
لینک یوتوب
@pytorch_howsam
اگه به دیپ لرنینگ مسلط هستید و با دنیای بینایی کامپیوتر هم آشنایی دارید، کورس متن-محور هاگینگفیس رو دریابید! 13 فصل داره و شبکههای زیادی رو در هر فصل معرفی کرده.
سرفصلها رو نگاه کنید:
UNIT 1 - FUNDAMENTALS
UNIT 2 - CONVOLUTIONAL NEURAL NETWORKS
UNIT 3 - VISION TRANSFORMERS
UNIT 4 - MULTIMODAL MODELS
UNIT 5 - GENERATIVE MODELS
UNIT 6 - BASIC CV TASKS
UNIT 7 - VIDEO AND VIDEO PROCESSING
UNIT 8 - 3D VISION, SCENE RENDERING AND RECONSTRUCTION
UNIT 9 - MODEL OPTIMIZATION
UNIT 10 - SYNTHETIC DATA CREATION
UNIT 11 - ZERO SHOT COMPUTER VISION
UNIT 12 - ETHICS AND BIASES
UNIT 13 - OUTLOOK
کورسهای هاگینگفیس، مختصر، مفید و دقیق هستن. به همین خاطر به هرکسی که میخواد توی بینایی کامپیوتر خودش رو بروز کنه، این کورس رو پیشنهاد میکنم. به نظرم، برای کسایی که به دیپ لرنینگ مسلط نیستن، کورس سنگینی محسوب میشه.
چند تا پیشنهاد هم دارم:
1) لینکهای مطالعه بیشتر که میذاره رو جدی بگیرید.
2) مقاله شبکههایی رو که معرفی میکنه رو بخونید. تونستید، یکمی روی کدهاشون هم وقت بذارید. هیولا میشید!
لینک کورس
@pytorch_howsam
سرفصلها رو نگاه کنید:
UNIT 1 - FUNDAMENTALS
UNIT 2 - CONVOLUTIONAL NEURAL NETWORKS
UNIT 3 - VISION TRANSFORMERS
UNIT 4 - MULTIMODAL MODELS
UNIT 5 - GENERATIVE MODELS
UNIT 6 - BASIC CV TASKS
UNIT 7 - VIDEO AND VIDEO PROCESSING
UNIT 8 - 3D VISION, SCENE RENDERING AND RECONSTRUCTION
UNIT 9 - MODEL OPTIMIZATION
UNIT 10 - SYNTHETIC DATA CREATION
UNIT 11 - ZERO SHOT COMPUTER VISION
UNIT 12 - ETHICS AND BIASES
UNIT 13 - OUTLOOK
کورسهای هاگینگفیس، مختصر، مفید و دقیق هستن. به همین خاطر به هرکسی که میخواد توی بینایی کامپیوتر خودش رو بروز کنه، این کورس رو پیشنهاد میکنم. به نظرم، برای کسایی که به دیپ لرنینگ مسلط نیستن، کورس سنگینی محسوب میشه.
چند تا پیشنهاد هم دارم:
1) لینکهای مطالعه بیشتر که میذاره رو جدی بگیرید.
2) مقاله شبکههایی رو که معرفی میکنه رو بخونید. تونستید، یکمی روی کدهاشون هم وقت بذارید. هیولا میشید!
لینک کورس
@pytorch_howsam
huggingface.co
Welcome to the Community Computer Vision Course - Hugging Face Community Computer Vision Course
We’re on a journey to advance and democratize artificial intelligence through open source and open science.
متا بهینهسازی بنام Schedule-free Optimizer معرفی کرده که مورد توجه قرار گرفته. خیلیها درحال ارزیابیش هستن و فیدبک مثبت دادن. چه ویژگی مثبتی داره که ترند شده؟
عملکرد بهتری نسبت به بهینهسازهای رایج مثل SGD و Adam داره. شکل بالا رو ببینید. این بهینهساز نسبت به بهینهساز AdamW با تابع پلهای یا کسینوسی همگرایی سریعتری داره.
نیازی به تنظیم لرنینگ ریت (LR Scheduler) نداره. یعنی، دیگه نیازی نیست که لرنینگ ریت رو حین آموزش تغییر بدید.
چطوری ازش استفاده کنیم؟ اول که نصب:
بعدش هم میتونید از بهینهساز مبتنی بر SGD یا AdamW استفاده کنید:
نهایتا، توی تابع train و test باید مشخص کنید که الان بهینهساز توی حالت train و eval هست! توی پایتورچ، برای مدل این کار رو میکنیم دیگه. یعنی توی تابع train باید بنویسید:
و توی تابع eval هم:
تامام! لینک زیر، اومدن یک شبکه CNN رو روی دیتاست MNIST با این بهینهساز آموزش دادن:
لینک کد
گیتهاب Schedule-free
@pytorch_howsam
عملکرد بهتری نسبت به بهینهسازهای رایج مثل SGD و Adam داره. شکل بالا رو ببینید. این بهینهساز نسبت به بهینهساز AdamW با تابع پلهای یا کسینوسی همگرایی سریعتری داره.
نیازی به تنظیم لرنینگ ریت (LR Scheduler) نداره. یعنی، دیگه نیازی نیست که لرنینگ ریت رو حین آموزش تغییر بدید.
چطوری ازش استفاده کنیم؟ اول که نصب:
pip install schedulefree
بعدش هم میتونید از بهینهساز مبتنی بر SGD یا AdamW استفاده کنید:
optimizer = schedulefree.AdamWScheduleFree(model.parameters(), lr=args.lr)
نهایتا، توی تابع train و test باید مشخص کنید که الان بهینهساز توی حالت train و eval هست! توی پایتورچ، برای مدل این کار رو میکنیم دیگه. یعنی توی تابع train باید بنویسید:
optimizer.train()
و توی تابع eval هم:
optimizer.eval()
تامام! لینک زیر، اومدن یک شبکه CNN رو روی دیتاست MNIST با این بهینهساز آموزش دادن:
لینک کد
گیتهاب Schedule-free
@pytorch_howsam
میخوام یک ریپوی عالی بنام Transformers-Tutorials رو بهتون معرفی کنم؛ این ریپو شامل یک عالمه دمو هست که برمبنای لایبرریهای هاگینگفیس مثل transformers datasets و غیره آماده شده. تعداد دموها بسیار زیاده، ولی توی عکس بالا بخشی از دموها رو میتونید ببینید. خوبی این دموها این هست که هم با شبکههای جدید در قالب یک مینیپروژه ساده کار میکنید و آشنا میشید و هم با لایبرریهای هاگینگفیس کار میکنید.
Transformers-Tutorials
اما این ریپو رو کی آماده کرده؟ آقای Niels Rogge که ML Engineer در هاگینگفیس هست. توی توییتر که هست و یوتوب هم کمی فعالیت داره. هدر اکانت توییترش هم باحاله! توییت معروف Karpathy درمورد پایتورچ! 😂 عکس دوم بالا رو ببینید...
@pytorch_howsam
Transformers-Tutorials
اما این ریپو رو کی آماده کرده؟ آقای Niels Rogge که ML Engineer در هاگینگفیس هست. توی توییتر که هست و یوتوب هم کمی فعالیت داره. هدر اکانت توییترش هم باحاله! توییت معروف Karpathy درمورد پایتورچ! 😂 عکس دوم بالا رو ببینید...
@pytorch_howsam
PyTorch Howsam
Florence-2: Advancing a Unified Representation for a Variety of Vision Tasks مدل Vision-Language مایکروسافت بنام Florence-2 شاخصههای مهم این کار: * خیلی سَبُکه. خبری از بیلیون پارامتر نیست! * یک شبکه همه کاره هست؛ یعنی، دیتکشن، سگمنتیش و غیره * یک دیتاست…
MobileLLM: Optimizing Sub-billion Parameter Language Models for On-Device Use Cases link
متا یک شبکه جدید بنام MobileLLM معرفی کرده که جز دسته شبکههای مگسوزن محسوب میشه. هدفشون این بوده که مدلهای LLM برای موبایلها بسازن. دو تا مدل 125 و 350 میلیون پارامتری هم معرفی کردن که مناسب کارهای موبایلی هست.
در بخش Introduction مقاله، به یکسری از چالشهای اساسی اجرای مدل LLM روی موبایلها اشاره کرده که جالبه. توی این پست میخوام درباره این چالشها بنویسم. سه چالش مهم که بهش اشاره شده اینها هستن:
* مصرف RAM موبایل (DRAM) در LLM-ها
* مصرف باتری
* سرعت تولید متن در ثانیه
چالش اول، مصرف RAM موبایل (DRAM) در LLM-هاست؛ الان مقدار DRAM برای موبایلهای سطح بالا بین 6 گیگ (آیفون 15) تا 12 گیگ (گوگل پیکسل 8 پرو) هست. حالا نگید نه داش آخرین مدل سامسونگ 24 گیگه! این اعداد رو مقاله گفته! 😁 حالا، نکته مهم اینجاست که ما نمیتونیم مدلی توی موبایل بذاریم که کل این ظرفیت 6 تا 12 گیگ رو پر کنه! به خاطر اینکه این مقدار DRAM سهم سیستم عامل و سایر اپهای توی موبایل هم هست! در مقاله ذکر شده که یک اپ موبایل نباید بیشتر از 10% DRAM رو اشغال کنه. یعنی، برای DRAM با 12 گیگ ظرفیت نهایتا 1.2 گیگ دردسترس هست. حالا، همون مدل لاما با 7 میلیارد پارامتر، حتی با وزنهای 8 بیتی، بازهم حدود 7 گیگ فضای DRAM رو اشغال میکنه. پس این چالش انگیزهای هست که مدلهای LLM کوچکتر (پارامترهای کمتر) ساخته بشه. در مقاله گفته ما مدلهای Sub-bilion parameter LLMs میخواییم خلاصه...
چالش دوم، مصرف انرژی LLM-هاست؛ مدل LLaMA v2 با 7 بیلیون پارامتر، به ازای هر توکن 0.7 ژول انرژی مصرف میکنه. زیاده یا کم؟ زیاده! یک آیفون با شارژ کامل حدودا 50 هزار ژول انرژی داره. مقاله میگه که هر 64 توکن حدود 0.2% از باتری رو مصرف میکنه که خب خیلی زیاده. یعنی، کل باتری در کمتر از دو ساعت مکالمه با مدل تَه میکشه. البته، من حساب و کتاب که کردم، هر 64 توکن حدود 0.08% باتری مصرف میکنه. اما شاید این محاسبه روی کاغذ هست و بخشهای جانبی هم دارن باتری میخورن. مدل 350 میلیون پارامتری این مقاله، حدود 0.035 ژول برای هر توکن مصرف میکنه. مقایسه کنید با 0.7 ژول مدل لاما! 20 برابر مصرف کمتری داره. به عبارتی، باتری فول شارژ برای یک روز مکالمه کافیه.
چالش سوم، سرعت هست؛ سرعت تولید متن مدل لامای 7 بیلیونی روی آیفون، 3~6 توکن بر ثانیه هست. خودمونی بگم، چتبات در هر ثانیه 4 5 کلمه برامون مینویسه. کمه واقعا! اما مدل 125 میلیونی این مقاله حدود 50 توکن بر ثانیه سرعت داره.
از این مقاله خیلی خوشم اومد و درحال مطالعش هستم. دوست داشتم درموردش بنویسم. البته، مطالب جالب توی مقاله زیاده. نوشتنش وقت زیادی میبره، ولی تلاشمو میکنم که بنویسم.
@pytorch_howsam
کورس بینایی کامپیوتر 2024 دانشگاه MIT
یکی از اساتید این دوره، آقای Kaiming He هست. ایشون یکی از محققهای برجسته بینایی کامپیوتر هست. شبکه ResNet، مقداردهی اولیه Kaiming و شبکه Mask R-CNN سه نمونه از کارهایی هست که ایشون انجام داده.
همچنین، یکی از ویژگیهای مثبت این کورس، مطالب پایانی کورس هست. در انتهای کورس درباره Deploy و Research صحبت شده:
+ Deployable CV
+ How To Do Research
+ How To Write Papers
+ How To Give Talks
توی بخش Research نموداری آوردن که توی تصویر بالا میتونید ببینید. این نمودار اثر کیفیت مقاله روی کریر فرد رو نشون میده. بعضی مقالههایی که میدیم، اثر منفی روی کریر ما میذارن. یکسری مقاله بود و نبودشون فرقی نداره. البته، به نظرم شروع مقاله دادن در ایران در حد همون Ok باشه، خوبه. توی مقالههای بعدی میشه کیفیت بهتری ارائه داد.
آپدیت: دوستان اومدن گفتن که کورس رو معرفی کردی، ولی لینک نذاشتی! شعر گفتم ولی نمیتونم بنویسم! 🥸
لینک
@pytorch_howsam
یکی از اساتید این دوره، آقای Kaiming He هست. ایشون یکی از محققهای برجسته بینایی کامپیوتر هست. شبکه ResNet، مقداردهی اولیه Kaiming و شبکه Mask R-CNN سه نمونه از کارهایی هست که ایشون انجام داده.
همچنین، یکی از ویژگیهای مثبت این کورس، مطالب پایانی کورس هست. در انتهای کورس درباره Deploy و Research صحبت شده:
+ Deployable CV
+ How To Do Research
+ How To Write Papers
+ How To Give Talks
توی بخش Research نموداری آوردن که توی تصویر بالا میتونید ببینید. این نمودار اثر کیفیت مقاله روی کریر فرد رو نشون میده. بعضی مقالههایی که میدیم، اثر منفی روی کریر ما میذارن. یکسری مقاله بود و نبودشون فرقی نداره. البته، به نظرم شروع مقاله دادن در ایران در حد همون Ok باشه، خوبه. توی مقالههای بعدی میشه کیفیت بهتری ارائه داد.
آپدیت: دوستان اومدن گفتن که کورس رو معرفی کردی، ولی لینک نذاشتی! شعر گفتم ولی نمیتونم بنویسم! 🥸
لینک
@pytorch_howsam
PyTorch Howsam
کورس بینایی کامپیوتر 2024 دانشگاه MIT یکی از اساتید این دوره، آقای Kaiming He هست. ایشون یکی از محققهای برجسته بینایی کامپیوتر هست. شبکه ResNet، مقداردهی اولیه Kaiming و شبکه Mask R-CNN سه نمونه از کارهایی هست که ایشون انجام داده. همچنین، یکی از ویژگیهای…
وقتی پست بالا رو مینوشتم، نگاهی به سایر اساتید دوره انداختم. یکیشون Sara Beery بود. به صفحه شخصیش رفتم و خب خیلی شاخ بود! :) رسیدم به یک مقاله جالب که در ECCV 2022 منتشر کرده بودن:
در این مقاله یک دیتاست جدید برای شمارش و ردیابی ماهیها در ویدئوهای Sonar معرفی شده. به تصویر بالا نگاه کنید تا با خروجی Sonar و کار آشنا بشید.
لینک دانلود دیتاست رو هم در ریپو گذاشتن و فکر کنم حدود 100 گیگ میشه.
خیلیها از من درباره موضوع پایاننامه ارشد میپرسن. معمولا، من بهصورت کلی توضیح میدم که چطوری موضوع پیدا کنن. به نظرم، کار روی این مساله میتونه برای ارشد مناسب باشه. نکات مثبت و منفی از نظر خودم:
+ موضوع جالب و کاربردی
+ دیتاست جدید و معتبر
- حجم دیتاست زیاد برای ایران
- احتمال نیاز به چند GPU
- موضوع نسبتا مشکل ردیابی چندهدفه
چنانچه خواستید این موضوع رو انتخاب کنید، قبلش حتما تحقیق کنید، دیتاست رو دانلود و بررسی کنید، مقاله مرجع رو بخونید، کد نمونه اجرا کنید و با چند متخصص مشورت کنید.
لینک
@pytorch_howsam
The Caltech Fish Counting Dataset: A Benchmark for Multiple-Object Tracking and Counting
در این مقاله یک دیتاست جدید برای شمارش و ردیابی ماهیها در ویدئوهای Sonar معرفی شده. به تصویر بالا نگاه کنید تا با خروجی Sonar و کار آشنا بشید.
لینک دانلود دیتاست رو هم در ریپو گذاشتن و فکر کنم حدود 100 گیگ میشه.
خیلیها از من درباره موضوع پایاننامه ارشد میپرسن. معمولا، من بهصورت کلی توضیح میدم که چطوری موضوع پیدا کنن. به نظرم، کار روی این مساله میتونه برای ارشد مناسب باشه. نکات مثبت و منفی از نظر خودم:
+ موضوع جالب و کاربردی
+ دیتاست جدید و معتبر
- حجم دیتاست زیاد برای ایران
- احتمال نیاز به چند GPU
- موضوع نسبتا مشکل ردیابی چندهدفه
چنانچه خواستید این موضوع رو انتخاب کنید، قبلش حتما تحقیق کنید، دیتاست رو دانلود و بررسی کنید، مقاله مرجع رو بخونید، کد نمونه اجرا کنید و با چند متخصص مشورت کنید.
لینک
@pytorch_howsam
PyTorch Howsam
ویدئوی جدید Andrej Karpathy 🤩 Let's Reproduce GPT-2 (124M) 4 ساعت! 😁 بریم ببینیم چطوری GPT-2 رو پیادهسازی کرده! لینک ویدئو
امروز، کمی زمان خالی داشتم و رفتم ادامه ویدئوی چهارساعته Andrej Karpathy برای پیادهسازی و آموزش GPT-2 رو ببینم. این ویدئو شامل چند بخش هست که من قبلا بخش اول رو دیده بودم. در بخش اول، مدل GPT-2 رو کامل پیادهسازی کرد و کارهای اولیه برای آموزش مدل رو انجام داد.
بخش دوم این ویدئو مربوط به کاهش زمان فرآیند آموزش مدل هست. در پایان بخش اول، مدت زمان آموزش مدل برای هر ایپاک روی دیتاست شکسپیر حدود 1000 میلی ثانیه هست. در بخش دوم، تکنیکهای مختلفی رو گام به گام اعمال میکنه و مدت زمان آموزش مدل رو کاهش میده. درادامه، بهصورت خلاصه این تکنیکها رو همراه با عدد و رقم گفتم...
در اولین گام، بجای آموزش مدل با float32 از TF32 یا تنسورفلوت 32 بیتی استفاده کرد. این باعث شد که مدت زمان اجرای هر ایپاک از 1000 به 333 میلی ثانیه کاهش پیدا کنه! البته، روی کاغذ انتظار 8 برابر بهتر شدن سرعت میرفت، ولی در عمل 3 برابر شد. این قابلیت TF32 بیتی برای هر GPU-ای فعال نیست. مثلا، A100 این قابلیت رو داره. مطالعه بیشتر
در گام دوم، بجای TF32 از bFloat16 استفاده کرد و زمان اجرای هر ایپاک از 333 به 300 میلی ثانیه رسید. بازهم این قابلیت در همه GPU-ها وجود نداره.
در گام سوم، از torch.compile پایتورچ استفاده کرد و مدت زمان اجرای هر ایپاک از 300 به 130 میلی ثانیه کاهش پیدا کرد. کاهش زمانی بسیار زیادی بود. کار سادهای هم هست.
در گام چهارم، بجای attention از flash attention استفاده کرد و مدت زمان از 130 به 96 میلی ثانیه رسید! این flash attention توی پایتورچ موجود هست و نیازی به پیادهسازی از صفر یا کتابخونه جانبی هم نیست.
و اما گام پنجم! پیشنهاد کرد که اعداد و هایپرپارامترهای موجود در کد رو به توانی از 2 تبدیل کنیم. توانی از 2 رو اعداد نایسی میدونه و GPU باهاش بهینهتر کار میکنه. مثلا وکب سایزش 50257 بود که این عدد زشتی هست! عدد رو تبدیل به 50304 کرد که باعث شد مدت زمان از 96 به 93 میلی ثانیه برسه! وکب سایز بزرگتر شد، ولی زمان کل کمتر! 😁 درسته که 50304 توانی از 2 نیست، اما تقریبا نایس هست، چون بر 2 4 8 16 32 64 128 بخشپذیره. اعداد زشت دیگهای هم توی کد بود؛ مثل تعداد لایهها، تعداد head در اتنشن که دیگه اینها رو دستکاری نکرد. بقیه زشتها با من و شما...
خلاصه اینکه، با یکسری تکنیک ساده ولی هوشمندانه، مدت زمان آموزش مدل به ازای هر ایپاک رو از 1000 میلی ثانیه به 93 میلی ثانیه رسوند. البته، خیلی از این روشها الان در مقالات استفاده میشن و اینطور نیست که وجود نداشته باشه.
یبار نگی 1000 میلی ثانیه برای یک ایپاک چیزی نیست! گناه بزرگیه! بخش سوم رو هنوز ندیدم...
@pytorch_howsam
بخش دوم این ویدئو مربوط به کاهش زمان فرآیند آموزش مدل هست. در پایان بخش اول، مدت زمان آموزش مدل برای هر ایپاک روی دیتاست شکسپیر حدود 1000 میلی ثانیه هست. در بخش دوم، تکنیکهای مختلفی رو گام به گام اعمال میکنه و مدت زمان آموزش مدل رو کاهش میده. درادامه، بهصورت خلاصه این تکنیکها رو همراه با عدد و رقم گفتم...
در اولین گام، بجای آموزش مدل با float32 از TF32 یا تنسورفلوت 32 بیتی استفاده کرد. این باعث شد که مدت زمان اجرای هر ایپاک از 1000 به 333 میلی ثانیه کاهش پیدا کنه! البته، روی کاغذ انتظار 8 برابر بهتر شدن سرعت میرفت، ولی در عمل 3 برابر شد. این قابلیت TF32 بیتی برای هر GPU-ای فعال نیست. مثلا، A100 این قابلیت رو داره. مطالعه بیشتر
در گام دوم، بجای TF32 از bFloat16 استفاده کرد و زمان اجرای هر ایپاک از 333 به 300 میلی ثانیه رسید. بازهم این قابلیت در همه GPU-ها وجود نداره.
در گام سوم، از torch.compile پایتورچ استفاده کرد و مدت زمان اجرای هر ایپاک از 300 به 130 میلی ثانیه کاهش پیدا کرد. کاهش زمانی بسیار زیادی بود. کار سادهای هم هست.
در گام چهارم، بجای attention از flash attention استفاده کرد و مدت زمان از 130 به 96 میلی ثانیه رسید! این flash attention توی پایتورچ موجود هست و نیازی به پیادهسازی از صفر یا کتابخونه جانبی هم نیست.
و اما گام پنجم! پیشنهاد کرد که اعداد و هایپرپارامترهای موجود در کد رو به توانی از 2 تبدیل کنیم. توانی از 2 رو اعداد نایسی میدونه و GPU باهاش بهینهتر کار میکنه. مثلا وکب سایزش 50257 بود که این عدد زشتی هست! عدد رو تبدیل به 50304 کرد که باعث شد مدت زمان از 96 به 93 میلی ثانیه برسه! وکب سایز بزرگتر شد، ولی زمان کل کمتر! 😁 درسته که 50304 توانی از 2 نیست، اما تقریبا نایس هست، چون بر 2 4 8 16 32 64 128 بخشپذیره. اعداد زشت دیگهای هم توی کد بود؛ مثل تعداد لایهها، تعداد head در اتنشن که دیگه اینها رو دستکاری نکرد. بقیه زشتها با من و شما...
خلاصه اینکه، با یکسری تکنیک ساده ولی هوشمندانه، مدت زمان آموزش مدل به ازای هر ایپاک رو از 1000 میلی ثانیه به 93 میلی ثانیه رسوند. البته، خیلی از این روشها الان در مقالات استفاده میشن و اینطور نیست که وجود نداشته باشه.
یبار نگی 1000 میلی ثانیه برای یک ایپاک چیزی نیست! گناه بزرگیه! بخش سوم رو هنوز ندیدم...
@pytorch_howsam
گوگل دیپمایند مدل Gemma-2 با دو بیلیون پارامتر رو عرضه کرده. یکی از بزرگترین دستاوردهای این کار، عملکرد بهتر مدل در پلتفرم ارزیابی Chatbot Arena نسبت به مدل GPT-3.5 هست! مدل GPT-3.5 بیش از 175 بیلیون پارامتر و Gemma-2 تنها با دو بیلیون پارامتر داره! 🤯 تصویر زیر هم مربوط به LMSYS Chatbot Arena هست که عملکرد مدل Gemma-2 رو نسبت به سایر مدلها نشون میده.
علاوه بر Gemma-2 2B دو نسخه دیگه بنام GemmaShield و GemmaScope هم عرضه شده که اینها هم کاربردهای بسیار جالبی دارن.
شاید ندونید LMSYS Chatbot Arena چی هست؟ یک پلتفرم آنلاین و آزاد هست برای ارزیابی LLM-ها و VLM-هاست. ارزیابیهای جالبی هم داره؛ مثلا، یک حالت Battle داره. شما یک سوال میپرسید و دو مدل A و B نامشخص بهش جواب میدن. شما جوابها رو میخونید و بعد میتونید انتخاب کنید که کدوم جواب بهتر هست. بعد از اینکه جواب دادید، بهتون میگه این دو مدل که بهت جواب دادن اسمشون چی بوده. حالتهای دیگه مثل side-by-side و Direct Chat هم داره. معیارهای ارزیابی مختلفی هم برای مقایسه داره. پیشنهاد میکنم به این سایت سر بزنید.
وبلاگ گوگل برای Gemma-2
@pytorch_howsam
علاوه بر Gemma-2 2B دو نسخه دیگه بنام GemmaShield و GemmaScope هم عرضه شده که اینها هم کاربردهای بسیار جالبی دارن.
شاید ندونید LMSYS Chatbot Arena چی هست؟ یک پلتفرم آنلاین و آزاد هست برای ارزیابی LLM-ها و VLM-هاست. ارزیابیهای جالبی هم داره؛ مثلا، یک حالت Battle داره. شما یک سوال میپرسید و دو مدل A و B نامشخص بهش جواب میدن. شما جوابها رو میخونید و بعد میتونید انتخاب کنید که کدوم جواب بهتر هست. بعد از اینکه جواب دادید، بهتون میگه این دو مدل که بهت جواب دادن اسمشون چی بوده. حالتهای دیگه مثل side-by-side و Direct Chat هم داره. معیارهای ارزیابی مختلفی هم برای مقایسه داره. پیشنهاد میکنم به این سایت سر بزنید.
وبلاگ گوگل برای Gemma-2
@pytorch_howsam
PyTorch Howsam
MobileLLM: Optimizing Sub-billion Parameter Language Models for On-Device Use Cases link متا یک شبکه جدید بنام MobileLLM معرفی کرده که جز دسته شبکههای مگسوزن محسوب میشه. هدفشون این بوده که مدلهای LLM برای موبایلها بسازن. دو تا مدل 125 و 350 میلیون پارامتری…
اگه خاطرتون باشه، قبلا درمورد MobileLLM نوشته بودم. همچنین، گفتم تلاش میکنم بیشتر ازش بگم. خب اومدم که بگم، بالاخره آماده شد...
یک پست نسبتا طولانی درمورد MobileLLM در هوسم نوشتم. از چالشها و ایدههای کار گفتم. امیدوارم، مفید باشه.
همچنان کار و مطالعه MobileLLM رو ادامه میدم. ممکن هست با خبرهای جذابتری برگردم...
https://howsam.org/mobilellm/
@pytorch_howsam
یک پست نسبتا طولانی درمورد MobileLLM در هوسم نوشتم. از چالشها و ایدههای کار گفتم. امیدوارم، مفید باشه.
همچنان کار و مطالعه MobileLLM رو ادامه میدم. ممکن هست با خبرهای جذابتری برگردم...
https://howsam.org/mobilellm/
@pytorch_howsam
This media is not supported in your browser
VIEW IN TELEGRAM
اگه توی حوزه بینایی کامپیوتر کار میکنید، مجموعه ultralytics رو مدنظر داشته باشید.
یک کتابخونه بنام ultralytics داره که یولو 8 در این کتابخونه هست. بهصورت پیوسته هم یولو 8 رو آپدیت میکنن. اخیرا به نسخه 8.2 آپدیت شده. قبلا در مورد یولو 8 صحبت کردیم و وبلاگ هم براش نوشتیم. لینک وبلاگ یولو 8 در سایت هوسم
اما، یک بخش دیگه از همین کتابخونه ultralytics، ماژول solutions هست. برای سناریوهای مختلفی که در دنیای واقعی پیش میاد، الگوریتمهایی رو آماده کردن. من چند نمونه از الگوریتمهایی که در بخش solutions وجود داره رو لیست کردم:
- Object Counting
- Object Blurring
- Speed Estimation
- Distance Calculation
- Parking Management
- Live Inference with Streamlit
مثلا، در ویدئوی بالا با Object Counting، اشیای موجود در ویدئو با دقت خوبی درحال شمارش هستن.
خلاصه اینکه، بهتون دید میده که بینایی کامپیوتر در چه جاهایی میتونه کاربرد داشته باشه. همچنین، در یک پروژه با ساختار مشابه میتونید از ایدهها و متدهای بخش solutions کتابخونه ultralytics استفاده کنید.
لینک بخش solutions در کتابخونه ultralytics
@pytorch_howsam
یک کتابخونه بنام ultralytics داره که یولو 8 در این کتابخونه هست. بهصورت پیوسته هم یولو 8 رو آپدیت میکنن. اخیرا به نسخه 8.2 آپدیت شده. قبلا در مورد یولو 8 صحبت کردیم و وبلاگ هم براش نوشتیم. لینک وبلاگ یولو 8 در سایت هوسم
اما، یک بخش دیگه از همین کتابخونه ultralytics، ماژول solutions هست. برای سناریوهای مختلفی که در دنیای واقعی پیش میاد، الگوریتمهایی رو آماده کردن. من چند نمونه از الگوریتمهایی که در بخش solutions وجود داره رو لیست کردم:
- Object Counting
- Object Blurring
- Speed Estimation
- Distance Calculation
- Parking Management
- Live Inference with Streamlit
مثلا، در ویدئوی بالا با Object Counting، اشیای موجود در ویدئو با دقت خوبی درحال شمارش هستن.
خلاصه اینکه، بهتون دید میده که بینایی کامپیوتر در چه جاهایی میتونه کاربرد داشته باشه. همچنین، در یک پروژه با ساختار مشابه میتونید از ایدهها و متدهای بخش solutions کتابخونه ultralytics استفاده کنید.
لینک بخش solutions در کتابخونه ultralytics
@pytorch_howsam
مجموعه poloclub ابزاری تحت عنوان Transformer Explainer معرفی کرده که برای اهداف آموزشی فوقالعاده هست. کار کردن با این ابزار رو پیشنهاد میکنم، اگه میخوایید به درک عمیقتری در ترنسفورمر و مدلسازی زبان (Language Modeling) برسید.
این ابزار بر پایه مدل GPT-2 کار میکنه. یعنی، واقعا محاسبات پشت GPT-2 رو به شما مرحله به مرحله نشون میده. کل مراحل رو میتونید ریز به ریز ببینید: توکن امبدینگ، پوزیشنال انکدینگ، مولتی هد اتنشن، mlp و الی آخر. همچنین، خروجی معنیدار تولید میکنه. با کلیک روی بخشهای مختلف، میتونید محاسبات مربوط به هر بخش رو ببینید.
مثلا، توی تصویر بالا ببینید برای ورودی Data visualization empowers users to در خروجی مدل چه پیشنهادهایی داده.
البته، poloclub سالهاست که چنین ابزارهایی میسازه. اگه به این آدرس برید، ابزارهایی که در گذشته ساختن رو میتونید ببینید. به عنوان نمونه، CNN Explainer و GAN Lab هم از کارهای این مجموعه هست. این هم شعارشون:
@pytorch_howsam
این ابزار بر پایه مدل GPT-2 کار میکنه. یعنی، واقعا محاسبات پشت GPT-2 رو به شما مرحله به مرحله نشون میده. کل مراحل رو میتونید ریز به ریز ببینید: توکن امبدینگ، پوزیشنال انکدینگ، مولتی هد اتنشن، mlp و الی آخر. همچنین، خروجی معنیدار تولید میکنه. با کلیک روی بخشهای مختلف، میتونید محاسبات مربوط به هر بخش رو ببینید.
مثلا، توی تصویر بالا ببینید برای ورودی Data visualization empowers users to در خروجی مدل چه پیشنهادهایی داده.
البته، poloclub سالهاست که چنین ابزارهایی میسازه. اگه به این آدرس برید، ابزارهایی که در گذشته ساختن رو میتونید ببینید. به عنوان نمونه، CNN Explainer و GAN Lab هم از کارهای این مجموعه هست. این هم شعارشون:
Scalable. Interactive. Interpretable.
@pytorch_howsam
یکی از دوستان ما که تجربه کاری زیادی داره، پیامی درباره اهمیت کگل در گروه هوسم گذاشتن که در ادامه میتونید بخونید.
چیزی که من دیدم اینه که هر کسی میتونه با انجام یک پروژه کگل و گذاشتن کدش تو گیتاب شخصی خودش به چند تا هدف برسه:
▪️یک پروژه رو از ابتدا تا انتها انجام بده.
هر چند این پروژه با پروژه هایی که در عمل باهاش روبرو میشیم چالشهای عملیاتی کمتری داره اما از ابتدا تا انتها بردن یک پروژه خیلی دید آدم رو گسترش میده.
▪️روی تمیز کد نوشتن کار کنه.
این کد رو داره توی ویترین خودش میگذاره پس ناگزیر لازمه کد تمیزی بنویسه. همین روند توانایی کدنویسی شخص رو بهبود میده.
▪️مهارت تکنیکی و بعضی از مهارتهای نرم خودش رو نشون بده.
در مورد رزومه شدن اینو بگم که خیلی وقت ها موقعی که من با کسی مصاحبه میکنم اگه کدی که شخص خودش نوشته رو ببینم و ببینم که تمیزه حداقل نصف نمره مصاحبه رو بهش میدم.
چرا؟
چون از روی کامیتهای کد میشه فهمید که یک نفر گیت رو میشناسه یا فقط یه چیزی زده بیاد بالا.
چون از روی فولدر بندی پروژه میشه فهمید یک نفر منظم کار میکنه یا نه.
چون از روی انتخاب اسم متغیرها میشه حدسهایی در مورد نحوه تعامل با افراد زد.
چون با دیدن کدی که یک نفر روی یک پروژه کگل زده میشه تا حد خوبی تشخیص داد که شخص مفاهیم پایهای یادگیری ماشین رو میدونه یا نه؟
مثلا از جدا کردن داده های train و test
از انتخاب معیار ارزیابی
از انجام ارزیابی در انتهای پروژه
از مراحلی که برای تحلیل و بررسی داده طی میکنه و ...
در آخر اگه پروژه های خوبی روی گیت گذاشتید، میتونید پروژههای همدیگه رو بخونید و به هم دیگه ستاره بدید.
میخوام یک کورس آنلاین متن-محور برای پردازش تصویر معرفی کنم.
این کورس، مفاهیم اولیه و پایهای پردازش و آنالیز تصویر رو به شکلی بسیار بسیار منسجم ارائه کرده. از جمله ویژگیهای مثبت این کورس:
* مهمترین مفاهیمی که باید در پردازش تصویر بدونید رو پوشش داده.
* کمی تئوری گفته و کدنویسی تمامی مفاهیم و روشها رو هم گذاشته.
* تصاویر زیادی داره که فهم مطالب رو ساده میکنه.
* تمرین و سوال همراه با جواب داره.
کورس با این کیفیت کم پیدا میشه.
https://bioimagebook.github.io/index.html
@pytorch_howsam
این کورس، مفاهیم اولیه و پایهای پردازش و آنالیز تصویر رو به شکلی بسیار بسیار منسجم ارائه کرده. از جمله ویژگیهای مثبت این کورس:
* مهمترین مفاهیمی که باید در پردازش تصویر بدونید رو پوشش داده.
* کمی تئوری گفته و کدنویسی تمامی مفاهیم و روشها رو هم گذاشته.
* تصاویر زیادی داره که فهم مطالب رو ساده میکنه.
* تمرین و سوال همراه با جواب داره.
کورس با این کیفیت کم پیدا میشه.
https://bioimagebook.github.io/index.html
@pytorch_howsam
This media is not supported in your browser
VIEW IN TELEGRAM
Sapiens: Foundation for Human Vision Models
کار کامپیوتر ویژنی جدید متا بنام Sapiens؛ اول ویدئوی بالا رو ببینید و بعد ادامه متن رو بخونید.
بخش Reality شرکت متا یک مجموعه مدل بنام Sapiens معرفی کرده که مخصوص چهار تسک مهم بینایی کامپیوتر با محوریت انسان هست:
* تخمین ژست (Pose Estimation)
* سگمنت اعضای بدن (Body-part Segmentation
* تخمین عمق (Depth Estimation)
* پیشبینی نرمال سطح (Surface Normal Prediction)
ریزنکاتی از این کار ارزشمند:
* مدلها بر پایه ویژن ترنسفورمرها طراحی شدن.
* مدلها ورودی رزولوشن بالا در اندازه 1024×1024 قبول میکنن.
* روی 300 میلیون تصویر انسان آموزش دیدن.
* چهار مدل به سایزهای 0.3 0.6 1.0 2.0 بیلیون پارامتر ارائه شده.
* نسخه Pretrain و Finetune شده مدلها در هاگینگفیس قرار داده شده.
* مقاله Sapiens در ECCV پذیرفته شده.
مقاله | گیتهاب
@pytorch_howsam
Liger (Linkedin GPU Efficient Runtime) Kernel
لینکدین یک لایبرری بنام Liger Kernel معرفی کرده که به طرز قابل توجهی باعث افزایش سرعت و کاهش مصرف RAM در آموزش LLM میشه. آمار و ارقام نشون میده که شما با این لایبرری میتونید 20% افزایش سرعت و 60% کاهش مصرف RAM رو تجربه کنید! 🤯
استفاده از این لایبرری هم اصلا کاری نداره. فقط یک خط کد به کدهاتون اضافه میکنید. مثلا، در کد زیر، این لایبرری روی مدل لاما هاگینگفیس اعمال شده:
import transformers
from liger_kernel.transformers import apply_liger_kernel_to_llama
model = transformers.AutoModelForCausalLM.from_pretrained("<some llama model>")
# Adding this line automatically monkey-patches the model with the optimized Liger kernels
apply_liger_kernel_to_llama()
همونطور که گفتم، این لایبرری رو لینکدین ارائه کرده و هم مورد توجه جامعه هوش مصنوعی قرار گرفته و هم دست مایه طنز کاربرهای توییتر شده! تصویر بالا رو ببینید. 😁
لینک گیتهاب
@pytorch_howsam
تصویر بالا رو توی توییتر دیدم. طبیعتا ارزش یادگیری نداره، اما میتونه یک آزمون کوچیک در یادگیری ماشین باشه! اینکه چقدر به موارد ذکر شده در این لیست مسلط هستی؟ آشنایی نه، تسلط...
به نظرم بلد بودن اینها به این معنی نیست که فرد به یادگیری ماشین مسلط هست. اما بلد نبودن بخش زیادی از این موارد میتونه نشون دهنده این باشه که فرد به یادگیری ماشین مسلط نیست. شخصا بخوام با کسی مصاحبه کنم، در بخش تئوری چنین سوالاتی ازش میپرسم. البته، این نظر من معلم هست، شاید افراد دیگه نظر متفاوتی داشته باشن...
@pytorch_howsam
به نظرم بلد بودن اینها به این معنی نیست که فرد به یادگیری ماشین مسلط هست. اما بلد نبودن بخش زیادی از این موارد میتونه نشون دهنده این باشه که فرد به یادگیری ماشین مسلط نیست. شخصا بخوام با کسی مصاحبه کنم، در بخش تئوری چنین سوالاتی ازش میپرسم. البته، این نظر من معلم هست، شاید افراد دیگه نظر متفاوتی داشته باشن...
@pytorch_howsam