دستاوردهای یادگیری عمیق(InTec)
9.57K subscribers
364 photos
40 videos
44 files
676 links
هوش مصنوعی، یادگیری ماشین و یادگیری عمیق
موضوع اصلی کانال

این یک بلاگ شخصی با طرز تفکر شخصی هست.

Core Python : @PyHints

تلاشی هم در یادگیری Rust دارم که درحال داکیومنت شدن هم هست؛ اگر شماهم به این زبان علاقمند هستید join یادتون نره

Rust: @PyRust
Download Telegram
دستاوردهای یادگیری عمیق(InTec)
#آموزش #تجربه #مصاحبه ببخشید کمی طولانی هست : سال قبل ی گروه ۷-۸ نفره ایرانی تازه فارغ‌التحصیل برای یادگیری پایتون داشتم که خب می‌خواستند وارد بازار کار بشن و قرار بود practical coding فقط باشه چند ماه پیش ۲ تا از بچه‌ها که هم خونه هستند پیام دادند که…
System design :

چون خیلی سوال شد، همینجا سریع بگم که توی مصاحبه‌ها ۲ تا سوال معمولاً پرسیده میشه از Senior توقع میره به خوبی هرچه تمام این ۲ سوال رو جواب بده

متأسفانه خیلی از بچه‌های ایرانی که توی مصاحبه (مخصوصاً بین‌المللی fail می‌شند بخاطر جواب بد دادن به این ۲ مدل سوال هست)

کمپانی‌های بزرگ مثل گوگل ٫ آمازون و ... (حتی شرکتی که ما کار می‌کنیم) یکی از مرحله‌های مصاحبه هست

یک محصول شرکت یا یکی از برنامه‌هایی که مجود داره رو به شما توضیح میدند (خیلی وقتا غیرکامل و دست و پا شکسته) و از شما توقع دارند طراحی انجام بدید (برای مثال میگن اینستاگرام رو اگر قرار باشه با ی سری تغییرات جدید (گفته میشه بهتون) طراحی کنید چطور میشه ؟! )

توی این مصاحبه‌ها بسته به موقعیت شغلی روی بخش‌های مختلف باید بیشتر تمرکز کنید

خیلی مهمه که قبل از اینکه ماژیک رو روی تخته بذارید و توضیح بدید کامل محصول رو درک کنید، جاهایی که توضیح درستی ندادند به عمد هست باید سوال کنید و ...

مثلاً برای بچه‌هایی که Sql Admin شرکت می‌کنند، تمرکز روی جدول‌های مورد نیاز، فیلدها و ... هست


نوع دومی که سوال میشه و توی هوش مصنوعی کسی بهش دقت نمی‌کنه که این سوال مربوط به system design هست و بسیار بسیار مهم اینه که :

شما توی رزومه زدید یک سیستم رو پیاده سازی کردید و روی production هست :

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

من خیلی خیلی زیاد توی بچه‌هایی که باهاشون تست مصاحبه میرم دیدم که شروع می‌کنن راجب Hyper parameters, Algorithm, Model, فریمورک توضیح دادن اینا اصلا مهم نیست :

مهم دیتا - مشکلات و نحوه حلشون - و البته از طراحی تا پیاده سازی محصول هست و نحوه عملکرد

اگر توجه کنید خوبی بلد بودن SYSTEM DESIGN همین هست، توی مصاحبه‌های مختلف حتی می‌دونید چه بخشی از تجربیاتتون رو bold کنید که مصاحبه کننده شکه بشه و نظرش بسیار مثبت باشه

این می‌تونه حتی اشتباهات کد زدن و ... رو هم ببخشه 😉


البته کلاً بچه‌های ایران تو این مورد ضعیف هستند، متأسفانه اساتید هم این مورد رو بلد نیستند خیلی وقتا و یا اگر می‌دوند هم توضیح نمیدن

شخصاً وقتی برنامه‌نویسی و مصاحبه رو شروع کردم (بعنوان برنامه‌نویس بیش از ۱۰ سال قبل)
بیشتر از ۲۰ تا مصاحبه و چندین سال تجربه طول کشید تا بفهمم واقعاً چقدر مهم هست این موضوع.
👍22👎1
نکته دیگه اینکه :
من گیتهابی برای کدهام ندارم،
گیت‌ شرکت‌ها رو برای همه‌ی کارها استفاده می‌کنم و خارج از اون پروژه‌های شرکت رو به هیچ‌وجه نمیذارم.

برای خودم هم یک سیستم Git ایجاد کردم و پروژه‌های شخصی رو اونجا قرار میدم از سرویس‌های عمومی فقط برای کدها و فایل‌های سمینار و ... سعی می‌کنم استفاده کنم.
#Quick_note

بالاخره یک رغیب جدی برای A100 پیدا شد :
Intel Gaudi 2
با همون ویژگی‌های مهم نسخه ۱؛
Gaudi 1
همون پردازشگرهای محاسباتی هست که قیمت AWS رو توی زمان خودش از همه رقیباش ارزون‌تر کرد در حالی که پردازش‌ها رو هم زودتر انجام می‌داد

توی نسخه ۲ با مموری گرافیکی برابر حتی همواره شاهد : بهبود ۲ برابری سرعت نسبت به Nvidia A100 هستیم (Resnet50 - Bert دمو شدند.)

درحال جستجو و مقایسه قیمت برای جایگزین کردن سرورهای Cloud - A100 شرکت به Gaudi2 هستیم.

مهمترین نکته برای ما
Inference Time
هست، که اگر سریعتر باشه نسبت به سرورهای A100 ؛ حتی با قیمت برابر هم تغییر صورت خواهد گرفت (این ینی تیم‌های ML/DL وقت بیشتری برای توسعه بهتر محصول دارند و وقت کمتری رو صرف optimization های مختلف خواهند کرد)
👍8🤔3
دستاوردهای یادگیری عمیق(InTec) pinned «#Roadmap 2022 این رو برای یک دوستی که تازه داره سعی می‌کنه وارد، ماشین‌لرنینگ بشه نوشتم ؛ اول اینکه توجه کنید, ۱- ایشون تازه برای کارشناسی بورسیه گرفته و قراره شروع کنه درسش رو ۲- پایتون رو در سطح متوسطی بلد هست و چندسالی هست که کد میزنه (Data structure…»
https://www.deepmind.com/publications/a-generalist-agent
Gato : 1.18 billion parameters
GPT-3 only for text : 175 billion

این مدل واقعا همه چیز رو می‌فهمه : متن - عکس - فیزیک (ربات) و البته RL
این در حالی هست که نیازی نیست برای هر تسک بصورت جدا finetune بشه
🤯9👍2
deepdoctection

توی همین مدت کم تبدیل به یکی از پکیج‌های بیسیک و تست من شده ؛ توی پروژه‌های OCR و ...
دیگه لازم نیست برای تست‌های کوچیک و سریع سراغ کدهای پروژه‌های قبلی برم

توی این ۲ ماه که opensource شده و در دسترس هست واقعا پیشرفت جالبی داشته و برای همین گفتم که اینجا معرفیش کنم.
👍7🔥1
این دیگه خیلی عجیب بود :

پیام دادند برای مصاحبه و همکاری، چون عجله در کار بود تنها ساعت آزادی که داشتم رو گفتم برای روز بعدی

هیچ توضیحی هم ندادند،

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

بعد از هماهنگ کردن جلسه توضیح دادند، متوجه شدم که :
۱- مصاحبه نیست
۲- ربطی به هوش مصنوعی نداره
۳- مشاوره هست
۴- system design, api , microservice

بعد از اینکه گفتم زمان و ... ندارم برای اینکار،
الان که اومدم پاسخ به ساعت جلسه و ... رو no بزنم دیدم حتی ساعتی که من اعلام کرده بودم هم نیست؛ اونم با بیش از ۲ ساعت اختلاف.

خطاب به این مدل شرکت‌ها :

۱- این رفتارهای غیر حرفه‌ای رو از کجا یاد میگیرید !؟

۲- چرا حتی وقتی کار شما گیر هست بازم درگیر خود گنده نشون دادن هستید ؟!

۳- چرا به نیروها احترام نمی ذارید !؟

در نهایت خدارو شکر می‌کنم که همکاری صورت نگرفت
👍51👎3
#تجربه

چندروزی هست که به سیستم شخصی RTX 3090 اضافه کردم و بنا به دلایلی کارت گرافیک قبلی رو هم نگه داشتم (1080Ti) یک سری نکته رو خواستم برای دوستان بگم که امیدوارم مفید باشه :

۱- اولین مورد راجع به پیشنهاد خرید هست
من به ۹۰٪ بچه‌ها پیشنهاد خرید نمیدم مخصوصاً اونهایی که تازه میخوان همچین سیستمی رو جمع کنند، شما حتی چیزی در حد کولب هم امروز بخواید خرید کنید حدوداً درآمد ۲ سال کار کردن در ایران رو باید بذارید کنار براش (اما اگر درآمدتون از حد نرمال بالاتر هست میشه بهش فکر کرد)

۲- برای بچه‌های خارج از ایران ۱۰۰٪ خرید رو توصیه نمی‌کنم (مگر کمک مالی ٫ پاداش یا ...) تا وقتی Aws - lambda و ... هست چرا خرید !؟

۳- من تجربه کار کردن با سرورهای قدرتمند gpu رو دارم اما خب دسترسی تعریف شده و توی خیلی از موارد ۲ نکته وجود داره :

اول اینکه gpu رو یکپارچه می‌بینه سیستم
دوم اینکه gpu ها از یک مدل هستند

توی شرایطی مثل سیستم من :
3090
وقتی محاسبات رو تموم می‌کنه و برای cpu می‌فرسته بیکار می‌مونه تا 1080 هم محاسباتش تموم بشه و اطلاعات رو برای cpu بفرسته

که بخاطر bandwidth, حافظه کمتر 1080 نقش bottleneck رو بازی می‌کنه

که اصلاً خوب نیست، و تو خیلی از موارد ترین کردن مدل روی 3090 به تنهایی خیلی سریعتر هست

۴- اما خوبی‌هایی هم داره :

اول اینکه، وقتی طولانی مدت ترین روی gpu قویتر میذارم دیگه لازم نیست همه‌ی برنامه‌های گرافیکی رو ببندم (gpu قویتر هیچ display output ایی نداره و فقط برای پردازش استفاده می‌شه.)
وقتی تک gpu بود یا حالتی که همه‌ی gpu ها استفاده میشه
دیگه نمی‌شه حتی video , ... باز کرد بخاطر lag شدید.

پس توی مدت ترین به کارهای دیگه هم میرسم

دوم اینکه :
وقتی زمانبدی کار عقب میوفته، از کدها ۲ نسخه میگیرم و بصورت همزمان نسخه اصلی رو برای ترین روی gpu قویتر میذارم و نسخه دوم رو برای experiment های سریعتر روی gpu ضعیف

وقتی به
hyper parameters
های بهتر دست پیدا می‌کنم نسخه اصلی رو stop می‌کنم و از آخرین checkpoint با کانفیگ جدید ترین شبکه رو ادامه می‌دم

سوم :
توی reinforcement learning هم خیلی خوب کمک می‌کنه، environment, game , ... رو روی 1080 اجرا می‌کنم و مدل و دیتاها روی 3090 اینجوری مدل‌های بزرگتری رو هم می‌تونم تست کنم

چهارم :

ی پیشنهاد که خیلی زیاد می‌بینم اینه که ۲ تا 3080 بگیر بجای ۱ دونه 3090 عملکرد بهتری داره
اول اینکه ۲ تا 3080 با اینکه میگن تفاوت قیمت نداره؛ اما باعث میشه مجبور بشید بیش از ۲ برابر خرج کنید

سیستم خنک کننده - power قویتر - مادربرد قویتر و البته case بزرگتر حداقل چیزهایی هست که مجبورید براش بیشتر هزینه کنید (نگهداری هم که هست)

علاوه بر اون مدل‌های این سالهای آخر به اندازه کافی بزرگ شده (بعضی‌ها حتی توی ۱۲ گیگ هم جا نمی‌شه، خود مدل به تنهایی)
اگر دارید به شکوندن مدل روی ۲ تا gpu فکر می‌کنید،
اول اینکه : کار آسونی نیست واقعاً و بسیار بسیار زمانبر هست که برای تجربیات سریع اصن خوب نیست
دوم اینکه : هر مدلی رو نمیشه به همین سادگی به تفکیک کردنش روی ۲ تا gpu فکر کرد.


نکاتی بود که تجربه جالب چندروز اخیر بود برای من و دوست داشتم باشما هم به اشتراک بذارم، امیدوارم مفید باشه 🌹
👍3615👎2
هفته پیش شرکت برای جذب نیرو توی بخش research تبلیغات انجام داد :

به این صورت که :
فارغ‌التحصیلان - اون‌هایی که ترم آخر هستند و البته junior ها می‌تونستند درخواست ارسال کنند

بیش از ۱۰۰ تا رزومه دریافت شد که همه مدل آدم توش بود (بنا به دلایلی تصمیم شد که رزومه‌ها اتومات بررسی نشه)

به اینجا رسید که ۵ تا سوال مطرح شد برای افراد + یک فرصت پاسخ (بدون گوگل کردن)
به کمک همین روش فقط ۱۱ تا رزومه موند.

سوالی که خودم مطرح کردم پاسخ اشتباه زیادی داشت برای همین گفتم به اشتراک بذارم :

تصاویری پیوست شده :
نمودار مشتق اول یکسری از توابع هست، اگر قرار باشه تابع اصلی یکی ازین نمودارها بعنوان activation function استفاده بشه، بهترین گزینه کدوم تصویر هست، دلیل انتخاب چیه !؟
👍12
دستاوردهای یادگیری عمیق(InTec)
هفته پیش شرکت برای جذب نیرو توی بخش research تبلیغات انجام داد : به این صورت که : فارغ‌التحصیلان - اون‌هایی که ترم آخر هستند و البته junior ها می‌تونستند درخواست ارسال کنند بیش از ۱۰۰ تا رزومه دریافت شد که همه مدل آدم توش بود (بنا به دلایلی تصمیم شد که…
کسانی که می‌دونند یا توی ای زمینه تحقیق و کار کردند
پاسخ بدید، قطعاً جواب درست رو هم خودم قرار میدم

نکته دیگه اینکه (این سوال برای بخش research مطرح شده نه برای ml engineer یا ...)

بچه‌های research باید ریاضیات رو به خوبی بفهمند

توضیح درست دادن موقع انتخاب جواب هم شرط هست 😉
👍2
دستاوردهای یادگیری عمیق(InTec)
Photo
#جواب‌ درست (دوستانی هم به خوبی اشاره کردن) بطور ساده :

۱ عکس اول :
Vanishing Gradient
هست که به خوبی هم واضح هست، چرا که نقطه اوج برای مشتق اول تابع روی 0.25 هست
فرض کنید عمق شبکه فقط 5 لایه باشه، حتی اگر توی تمام موارد بیشترین مقدار برگرده

0.25 ** 5 = 0.000976

یک مشکل دیگه‌ای هم که داره اینه که توی شبکه‌های عصبی برامون مهم هست که دیتا
Mean = 0, Std=1
باشه، اما ازونجایی که این تابع نشون دهنده sigmoid هست و mean رو روی 0.5 نگه میداره پس مناسب لایه‌های میانی نیست (بخش دوم جواب برای کسایی که نوشته بودند امتیاز داشت اما واجب نبود)

۲ عکس دوم :
بازهم مشکل vanish gradient داره، اما نه توی peak (که خب خیلی کم اتفاق میوفته) و خب وقتی مقادیر روی بردار x از 0 فاصله بگیرند اعداد بسار کوچیک میشه و برای شبکه‌های عمیق مشکل قبل وجود داره (اما شدت کمتر)

ازونجایی که تابع اصلی این نمودار tanh هست پس مشکل
Mean, Std
رو نخواهیم داشت برای همین جایگزین بهتری برای لایه‌های میانی هست (بجای sigmoid) ولی خب مشکل اصلی همچنان باقی هست

۳ عکس سوم :
بخش سمت چپ که خب همواره صفر هست (خود این vanish gradient هست) و هیچ صحبتی راجبش وجود نداره (دقیقا مشکل relu هم هست و بعنوان جایگزین ELU , LEAKY , ...) معرفی شدند

اما بخش سمت راست به خوبی کار می‌کنه و مشکل vanish gradient نداره که گزینه خوبی هست برای deep learning مسئله جالبه دیگه اینکه که بصورت عملی ReLU داره جواب میده (پس احتمالاً همین که بخش مثبت به خوبی کار می‌کنه کفایت می‌کنه)

اما ۳تا مشکل حتی با relu وجود داره :
۱- بحث mean, std هست روی relu ؟ activation function جایگزین که حل کننده این موضوع باشه و بخوبی relu هم عمل کنه نداریم (من نمیشناسم حداقل)
۲- بخش سمت چپ که صحبت شد و مشکل dead neuron که راه‌حل هایی مثل leaky relu, elu براش ارائه شده
۳- exploiding gradinet
هست، حالتی برعکس vanish جایی که محاسبات اعداد بزرگی رو بر میگیردونند، و راه حلی مثل Clipping داره

بجای max(0, x) تابع بصورت
min(max(0,x), 6)
تعریف می‌شه.
👍34
Ace of data science interview

از دوستان اگر کسی این کتاب رو داره یا خونده

ممنون میشم توی کامنت اطلاع بده.
برای توضیح ساده چندتا مفاهیم مربوط به timeseries داشتم دنبال مطلب میگشتم که به سایت یک کتاب رسیدم
مفاهیمی که من دنبالش بودم (مقدماتی) رو به بسیار خوب و بسیار قابل درک توضیح داده علاوه بر این نسخه آنلاین کتاب هم رایگان هست خوندن
پ.ن : مثل اینکه بخش code با R هست (بازم از ارزش کتاب کم نمی‌کنه)
Forecasting: Principles and Practice (3rd ed)
7👍5
دستاوردهای یادگیری عمیق(InTec)
توی لیست کتاب‌هایی که باید خوند. Second Edition 👌
این پلی لیست از کانال یوتیوب آقای تاکور (لهجه هندی) هر هفته یک فصل از کتاب رو پوشش میده
برای کسانی که فرصت نکردند هنوز کتاب رو بخونند
ایشون یکی از افراد مشهور توی مسابقات کگل هست؛ حتی اگر این کتاب رو خوندید دیدن ویدئوها خالی از لطف نیست (از یک دید دیگه به کتاب نگاه کنید)

فصل دوم این هفته قرار گرفت :
YouTube PlayList
👍15
#تجربه
یک سری چیزا برای ما روتین شده؛ انقدر که تجربه‌اش کردیم و دیدیم که توی ناخوآگاه مغزمون فرو رفته و حتی اگر خودمون هم نخوایم انجامش میدیم و دنبال explore ‌روش‌های جدید نمیریم.
در حال تدریس؛ این روزا درگیر درس دادن دیپ‌لرنینگ به یک گروه فوق‌العاده و قوی هستم (جلوتر میگم چرا با این گروه انقدر حال میکنم)

شخصا همیشه توی زندگی حرفه‌ای سعی می‌کنم مثل ی Agent از Reinforcement learning عمل کنم و سعی می‌کنم اون Agent باشم که قبل از هدر دادن محاسبات و زمان راه جدیدی رو هم تست می‌کنه و ممکنه ۱ قدم کل مدل رو به پیش ببره؛
پس اگر ۱۰ بار کارهایی رو می‌کنم که برای حل مسئله روتین و جا افتاده هست
۱ بار هم از یک روش جدید میرم (شاید حتی روشی که احمقانه به ذهن برسه؛ اونقدر احمقانه که می‌تونه عملی بشه حداقل اینه که زمان رو به فان گذروندم و تجربه کردم)

جلسه‌ای که گذشت به RNN-GRU-LSTM بود بعد از کلی محاسبات دستی و کاغذ و ... توی آخرین دیتاست با دیتای 2-D به فرم TxD داشتم جلسه رو تموم میکردم به این نکته رسیدیم که اگر خیلی بزرگتر بود که LSTM به تنهایی نتونست جمش کنه قبل از attention, transformers چه راهکارهایی بوجود اومده بود (نکات عملی که باید در نظر داشت) بعد از مثال زدن

یکی از بچه‌ها سوال جالبی کرد :
اگر دیتای time-series یا ورودی RNN base می‌تونه ۲ بعدی باشه پس چرا برای عکس ازش استفاده نکنیم ؟
البته روی موضوع از لحاظ optimization و ... میشه بحث کرد ولی چون هنوز خیلی راه تا اونجا مونده همین کار رو کردیم
و روی fashion_mnist اجرا گرفتیم (بهترین خروجی یکی از بچه‌ها ۹۷٪ بود با ۱۰ تا اپوک)
خیلی جالب بود برام؛ سوالی که امروز یکی از بچه‌ها کرد ی دید جدید به چیزهایی بود که قطعا اگر با خودم پیش میرفت اصلا بهش فکرم نمی‌کردم (همونطور که تا حالا نکردم)

این دید جدید باعث شد چندتا مسئله رو بخوام دوباره بررسی کنیم و چندتا از مقالات این اواخر رو دوباره بخونم

نمیدونم آیا شما RNN-base روی تصویر تست کردید ؟
👍15🤔3
خروجی مدل خیلی ساده من با یک لایه
LSTM(20)
روی fashion_mnist که اپوک اول val_acc رو بالای 82% بر گردوند
👍6
#تجربه #هشدار

بنظر شما این خروجی مشکلی داره و اگر آره مشکل چی هست ؟

قبل از اینکه مشکل رو بگم؛ دلیل این پست رو توضیح بدم
توی این ۷ سالی که تمرکزم بیشتر روی هوش مصنوعی بوده تبلیغات و دوره‌های زیادی رو دیدم که جز کلاه‌برداری چیزی نیست
بعضی ازین دوره‌ها هم قصد مدرس کلاه‌ برداری نیست بلکه از روی حماقت (نادانی علمی - عدم شناخت کافی به موضوع بیزینسی - استفاده از کلمات و جملات بدون توجه به عواقب) هست که باعث دلزدگی و ... نیروی تازه کار می‌شه

توی لینکدین با یکنفر درحال صحبت بودم و به اینجا رسید که سوادی از هوش مصنوعی نداره و یک دوره شرکت کرده با یک تبلیغ قشنگ و ...
و اینکه طرف گفته توی این دوره آموزش میده که چطور ی سهام خاص روی بورس خارج از ایران رو پیش بینی کنید و ازین طریق پول در بیارید.

و بعد هم یک ویدئو دقیق از کد زدن مدل هوش مصنوعی تا قبل از نحوه predict و اکانتی که در نهایت درآمد زایی می‌کنه

قبل از اینکه زود قضاوت کنید باید بگم که این اولین آدم نبوده که ایجوری ازش کلاه‌برداری میشه (اما بدترین مورد بوده) توی این سالها بسیاری آدم میشناسم که به این طریق سرشون کلاه رفته
ادامه پارت دوم :
👍71