تو پست های پایین هم یکسری GIF هایی همراه با پارامتر ها از عملیات Convolution رو براتون میفرستم.
This media is not supported in your browser
VIEW IN TELEGRAM
2D Convolution
Input: Down
Output: Up
kernel size: 3x3
dilation: 1
stride: 1
padding: 1
Input: Down
Output: Up
kernel size: 3x3
dilation: 1
stride: 1
padding: 1
This media is not supported in your browser
VIEW IN TELEGRAM
2D dilated convolution
Input: Down
Output: Up
kernel size: 3
dilation: 2
stride: 1
padding: 0
Input: Down
Output: Up
kernel size: 3
dilation: 2
stride: 1
padding: 0
This media is not supported in your browser
VIEW IN TELEGRAM
2D Transposed convolution
Input: Up
Output: Down
kernel size: 3
dilation: 1
stride: 2
padding: 0
Input: Up
Output: Down
kernel size: 3
dilation: 1
stride: 2
padding: 0
انگار که GIF روی telegram-web و telegram-desktop اوکیه ولی روی Telegram X به صورت فایل نمایش میداد.
خلاصه GIF های بالا رو به فرمت ویدیویی با ffmpeg انکود کردم و اوکی شد.
خلاصه GIF های بالا رو به فرمت ویدیویی با ffmpeg انکود کردم و اوکی شد.
Build a Large Language Model (From Scratch)
از نویسنده و محقق معروف Sebastian Raschka.
این کتاب راجب صفر تا صد LLM ها صحبت میکنه. من نخوندمش ولی رفتم و سر فصل هاشو بررسی کردم و منبع کاملی هست برای این موضوع. از Trasnformer ها شروع میکنه و تا ساخت مدل GPT و train کردنش و بهینه سازی هاش و کلی چیزایه دیگه.
قطعا مرجع مهمی برای LLM ها.
از نویسنده و محقق معروف Sebastian Raschka.
این کتاب راجب صفر تا صد LLM ها صحبت میکنه. من نخوندمش ولی رفتم و سر فصل هاشو بررسی کردم و منبع کاملی هست برای این موضوع. از Trasnformer ها شروع میکنه و تا ساخت مدل GPT و train کردنش و بهینه سازی هاش و کلی چیزایه دیگه.
قطعا مرجع مهمی برای LLM ها.
👍1
Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow | Concepts, Tools, and Techniques to Build Intelligent Systems | 3rd Edition
اگر با Tensorflow میخواید کار کنید. این مرجع و کتاب خیلی مهمی هست.
دو بخش داره.
بخش اولش کلا با الگوریتم های کلاسیک ML مثل Random Forest, SVM, Decision Trees k-means و ...
بخش دومش هم راجب شبکه های عصبی و یادگیری عمیق هست.
وقتی این کتابو تو اینترنت جستجو میکنید معمولا نسخه دوم کتاب رو میبینید ولی نسخه سومش هست که جدیدترینشه.
سال ۲۰۲۲ منتشر شده و گفتم بزارم اینجا که ساده بهش دسترسی داشته باشید.
اگر با Tensorflow میخواید کار کنید. این مرجع و کتاب خیلی مهمی هست.
دو بخش داره.
بخش اولش کلا با الگوریتم های کلاسیک ML مثل Random Forest, SVM, Decision Trees k-means و ...
بخش دومش هم راجب شبکه های عصبی و یادگیری عمیق هست.
وقتی این کتابو تو اینترنت جستجو میکنید معمولا نسخه دوم کتاب رو میبینید ولی نسخه سومش هست که جدیدترینشه.
سال ۲۰۲۲ منتشر شده و گفتم بزارم اینجا که ساده بهش دسترسی داشته باشید.
Hands_On_Machine_Learning_with_Scikit_Learn,_Keras,_and_TensorFlow.pdf
68 MB
Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow | Concepts, Tools, and Techniques to Build Intelligent Systems | 3rd Edition
TECH STASH
درود به تمامی دوستان کانال TECH STASH. خواستم که سال نو رو خدمت شما پیشاپیش تبریک بگم. امیدوارم که سالی پر از موفقیت، سلامتی، آرامش و خوشحالی رو داشته باشید و در تمامی عرصه های علمی پیشرفت چشمگیری داشته باشید. سالی با جیب های پر از پول و ذهنی خالی از ناراحتی.…
چشم انداز کانال تو سال بعدی به این صورت هست.
1. میخوام این کانال تبدیل به مرجع و جایی پر از منابع مفید برای حوزه یادگیری ماشین باشه. و میخوام که دوستانی که میخوان به منابع با کیفیت دسترسی داشته باشن بتونن از این کانال برای پیدا کردن همچنین منابعی استفاده کنن.
2. مطالب و توضیحات تخصصی بیشتر بشه. همونطور که میدونید این فیلد خیلی سنگینی هست و بنده همچنان خیلی فاصله دارم تا تسلط نسبتا خوبی داشته باشم. ولی تو سال آینده میخوام که مطالب رو تخصصی تر و عمیق تر کنم.
3. کانال رو فقط به مطالب یادگیری ماشین/عمیق محدود نمیکنم. به عنوان کاربر لینوکس و دوستدار نرم افزار آزاد و همچنین کسی که به مهندسی نرم افزار نیز خیلی علاقه داره قطعا مطالب مرتبطی راجب این موضوعات خواهم گذاشت، هرچند که تمرکز بنده در حال حاضر در حوزه یادگیری ماشین/عمیق هست.
ممنونم که تا الان همراه من بودید.
1. میخوام این کانال تبدیل به مرجع و جایی پر از منابع مفید برای حوزه یادگیری ماشین باشه. و میخوام که دوستانی که میخوان به منابع با کیفیت دسترسی داشته باشن بتونن از این کانال برای پیدا کردن همچنین منابعی استفاده کنن.
2. مطالب و توضیحات تخصصی بیشتر بشه. همونطور که میدونید این فیلد خیلی سنگینی هست و بنده همچنان خیلی فاصله دارم تا تسلط نسبتا خوبی داشته باشم. ولی تو سال آینده میخوام که مطالب رو تخصصی تر و عمیق تر کنم.
3. کانال رو فقط به مطالب یادگیری ماشین/عمیق محدود نمیکنم. به عنوان کاربر لینوکس و دوستدار نرم افزار آزاد و همچنین کسی که به مهندسی نرم افزار نیز خیلی علاقه داره قطعا مطالب مرتبطی راجب این موضوعات خواهم گذاشت، هرچند که تمرکز بنده در حال حاضر در حوزه یادگیری ماشین/عمیق هست.
ممنونم که تا الان همراه من بودید.
👍3❤2
پردازش سریع دیتا ها (قسمت اول):
چند وقت پیش داشتم روی پردازش یکسری دیتا ها کار میکردم.
کاری که خیلی فرمول و پردازش های ریاضی داشت.
اولین پیاده سازی از الگوریتم نزدیک چند تا for loop داشت.
که پردازشش تقریبا 40 ثانیه طول کشید.
ولی خب طبیعیه. واسه شروع شما بهتره که یه چیزی رو غیر بهینه بنویسید بعدش بهینه کنید. یعنی به صورت شفاف و ساده بنویسید که قابل فهم و به سادگی قابل تایید باشه.
در غیر اینصورت قضیه premature optimization (بهینه سازی زودرس) رخ میده که میبینید هیچ معیاری برای مقایسه و تایید روش کارتون دارید.
میشه ضرب المثل "خشت اول گر نهد معمار کج تا ثریا میرود دیوار کج".
بعدش گفتم که برم و از broadcasting استفاده کنم.
و کل عملیات ها رو بدون for loop و تنها با پردازش ماتریس ها انجام بدم.
اینکار پیچیدگی زیادی داشت ولی ارزشش رو داشت.
سرعت خیلی خیلی زیاد شد.
اون 40 ثانیه که گفته بودم تبدیل به 0.5 ثانیه شد.
وقتی که میتونید فرمول های ریاضی رو به صورت broadcast شده پیاده کنید اون موقع میتونید بگید که به اندازه خوبی numpy بلدید.
و اما گفتم که چی میشه اگر با numba برم و compile کنم.
و اونجا دیدم که numba محدودیت هایی داره.
یه سری اوپراتور ها و عملیات های numpy ساپورت نمیشن و خلاصه دردسر های زیادی که باهاشون رو به رو شدم.
دوم اینکه همه قابلیت های پایتون ساپورت نمیشن، که نیازم نیست از اونجایی که زبان به شدت بزرگی هست.
پیاده سازی for loop رو تونستم کامپایل کنم و نزدیک 12 ثانیه شد.
جالبیش این بود که با قابلیت parallel زمان پردازش نزدیک 50 ثانیه شد.
یعنی حتی کند تر از حالت پایه.
ولی نسخه broadcasting اش اصلا کامپایل نمیشد.
به خاطر به کارگیری یکسری عملیات های numpy که توسط numba ساپورت نمیشه.
و اما خواستم یه حرکت نهایی بزنم و ببرم روی PyTorch.
خیلی تغییرات نیاز نداشت از اونجایی که تمام عملیات هایی که روی numpy استفاده میکردم توسط pytorch پشتیبانی میشن.
و در نهایت روی GPU بردم و سرعت از 0.5 ثانیه به 50 میلی ثانیه رسید.
Wow, just wow.
و میدونم که آپشن های دیگه هم هستن.
مثل JAX, cupy, Tensorflow.
ولی خب تا همینجا کافی هست.
احتمالا از JAX تو آینده استفاده کنم.
چون چیز جالبی به نظر میاد.
چند وقت پیش داشتم روی پردازش یکسری دیتا ها کار میکردم.
کاری که خیلی فرمول و پردازش های ریاضی داشت.
اولین پیاده سازی از الگوریتم نزدیک چند تا for loop داشت.
که پردازشش تقریبا 40 ثانیه طول کشید.
ولی خب طبیعیه. واسه شروع شما بهتره که یه چیزی رو غیر بهینه بنویسید بعدش بهینه کنید. یعنی به صورت شفاف و ساده بنویسید که قابل فهم و به سادگی قابل تایید باشه.
در غیر اینصورت قضیه premature optimization (بهینه سازی زودرس) رخ میده که میبینید هیچ معیاری برای مقایسه و تایید روش کارتون دارید.
میشه ضرب المثل "خشت اول گر نهد معمار کج تا ثریا میرود دیوار کج".
بعدش گفتم که برم و از broadcasting استفاده کنم.
و کل عملیات ها رو بدون for loop و تنها با پردازش ماتریس ها انجام بدم.
اینکار پیچیدگی زیادی داشت ولی ارزشش رو داشت.
سرعت خیلی خیلی زیاد شد.
اون 40 ثانیه که گفته بودم تبدیل به 0.5 ثانیه شد.
وقتی که میتونید فرمول های ریاضی رو به صورت broadcast شده پیاده کنید اون موقع میتونید بگید که به اندازه خوبی numpy بلدید.
و اما گفتم که چی میشه اگر با numba برم و compile کنم.
و اونجا دیدم که numba محدودیت هایی داره.
یه سری اوپراتور ها و عملیات های numpy ساپورت نمیشن و خلاصه دردسر های زیادی که باهاشون رو به رو شدم.
دوم اینکه همه قابلیت های پایتون ساپورت نمیشن، که نیازم نیست از اونجایی که زبان به شدت بزرگی هست.
پیاده سازی for loop رو تونستم کامپایل کنم و نزدیک 12 ثانیه شد.
جالبیش این بود که با قابلیت parallel زمان پردازش نزدیک 50 ثانیه شد.
یعنی حتی کند تر از حالت پایه.
ولی نسخه broadcasting اش اصلا کامپایل نمیشد.
به خاطر به کارگیری یکسری عملیات های numpy که توسط numba ساپورت نمیشه.
و اما خواستم یه حرکت نهایی بزنم و ببرم روی PyTorch.
خیلی تغییرات نیاز نداشت از اونجایی که تمام عملیات هایی که روی numpy استفاده میکردم توسط pytorch پشتیبانی میشن.
و در نهایت روی GPU بردم و سرعت از 0.5 ثانیه به 50 میلی ثانیه رسید.
Wow, just wow.
و میدونم که آپشن های دیگه هم هستن.
مثل JAX, cupy, Tensorflow.
ولی خب تا همینجا کافی هست.
احتمالا از JAX تو آینده استفاده کنم.
چون چیز جالبی به نظر میاد.
👍1
یه ایونت هم چند وقت پیش دیدم ولی فراموش کردم که تو کانال اعلام کنم.
Join the 5-Day Gen AI Intensive Course with Google
راجب Generative AI هست و شاید واستون جالب باشه.
شروعش از 31 March هست. تقریبا ۲ روز دیگه و به مدت ۵ روزه.
https://rsvp.withgoogle.com/events/google-generative-ai-intensive_2025q1
Join the 5-Day Gen AI Intensive Course with Google
راجب Generative AI هست و شاید واستون جالب باشه.
شروعش از 31 March هست. تقریبا ۲ روز دیگه و به مدت ۵ روزه.
https://rsvp.withgoogle.com/events/google-generative-ai-intensive_2025q1
Withgoogle
5-Day Gen AI Intensive Course with Google
Join our 5-day course, March 31–April 4, to explore the fundamental technologies and techniques behind Generative AI.
TECH STASH
یه ایونت هم چند وقت پیش دیدم ولی فراموش کردم که تو کانال اعلام کنم. Join the 5-Day Gen AI Intensive Course with Google راجب Generative AI هست و شاید واستون جالب باشه. شروعش از 31 March هست. تقریبا ۲ روز دیگه و به مدت ۵ روزه. https://rsvp.withgoogle.com/events/google…
این ایونت اونقدرا هم که فکر میکردم خفن نبود.
البته که برای کسایی که دوست دارن از API گوگل استفاده کنن و برنامه هایی بر پایه Generative AI درست کنن خوبه.
ولی خب خود داستان مدل سازی و train کردن این LLM ها فرق داره.
طبق اولویت هام تصمیم گرفتم که ادامه ندم و بزارم واسه دوره بعدی. چون این دومین دوره هست که این course برگزار میشه.
البته که برای کسایی که دوست دارن از API گوگل استفاده کنن و برنامه هایی بر پایه Generative AI درست کنن خوبه.
ولی خب خود داستان مدل سازی و train کردن این LLM ها فرق داره.
طبق اولویت هام تصمیم گرفتم که ادامه ندم و بزارم واسه دوره بعدی. چون این دومین دوره هست که این course برگزار میشه.
High Performance Python: Practical Performant Programming for Humans 2nd Edition
کتاب پایتون سریع
بحث و جدال اینکه چه زبانی سریع هست رو بزاریم کنار.
پایتون کلی تجهیزات، لایبرری ها برای پردازش دیتا و سریع تر کردن این پروسه داره.
این کتاب هر چیزی که نیاز دارید راجب اینکه کد سریع برای پردازش دیتای عظیم با پایتون بنویسید رو با خودش داره و میتونم بگم یکی از کتاب های فوق العاده برای افرادی که تو حوزه Data Science کار میکنن هست.
پروفایلر ها، شناسایی گلوگاه ها (bottleneck)، حتی خود data structure های پایتون و تفاوت سرعتشون، numpy و pandas و حتی کامپایل کردن به سی مثل numba, cython و بقیه JIT کامپایلر ها مثل PyPy و حتی FFI ها برای اتصال زبان های دیگه به پایتون و اونقدر چیزایه دیگه که جا نمیشه.
نه فقط راجب پردازش، راجب مصرف بهینه RAM هم صحبت میشه که تاپیک خیلی مهمی هست.
در ضمن خیلی کاربردی هم جلو میره و در آخر کتاب مثال ها و تجربه هایی از بهینه سازی ها تو شرکت ها و پروژه های بزرگ میاره که خیلی بینش خوبی به برنامه نویس میده.
کلا کتابیه که حتما خودم سر فرصت مناسب میخونم.
کتاب پایتون سریع
بحث و جدال اینکه چه زبانی سریع هست رو بزاریم کنار.
پایتون کلی تجهیزات، لایبرری ها برای پردازش دیتا و سریع تر کردن این پروسه داره.
این کتاب هر چیزی که نیاز دارید راجب اینکه کد سریع برای پردازش دیتای عظیم با پایتون بنویسید رو با خودش داره و میتونم بگم یکی از کتاب های فوق العاده برای افرادی که تو حوزه Data Science کار میکنن هست.
پروفایلر ها، شناسایی گلوگاه ها (bottleneck)، حتی خود data structure های پایتون و تفاوت سرعتشون، numpy و pandas و حتی کامپایل کردن به سی مثل numba, cython و بقیه JIT کامپایلر ها مثل PyPy و حتی FFI ها برای اتصال زبان های دیگه به پایتون و اونقدر چیزایه دیگه که جا نمیشه.
نه فقط راجب پردازش، راجب مصرف بهینه RAM هم صحبت میشه که تاپیک خیلی مهمی هست.
در ضمن خیلی کاربردی هم جلو میره و در آخر کتاب مثال ها و تجربه هایی از بهینه سازی ها تو شرکت ها و پروژه های بزرگ میاره که خیلی بینش خوبی به برنامه نویس میده.
کلا کتابیه که حتما خودم سر فرصت مناسب میخونم.
👍3
High_Performance_Python_Practical_Performant_Programming_for_Humans.pdf
10.6 MB
High Performance Python: Practical Performant Programming for Humans 2nd Edition
🔥2👍1
نکات راجب data pipeline تو PyTorch
ما domain library های مختلف داریم تو PyTorch.
برای سیگنال و صدا: torchaudio
برای تصویر: torchvision
برای متن هم torchtext
هر کدوم هم یه سری ویژگی ها دارن ولی همشون یه چیز مشترک دارن.
اونم transforms هست.
اگر داخل transforms که تو torchvision هست یه نگاه بندازید.
اومده و برای هر تغییری روی دیتاش کلاس تعریف کرده. و توابع خاص init, call و repr رو تعریف کرده.
و در نهایت یه کلاس Compose ساخته که عملا دیزاین پترن composite رو روی اینا پیاده میکنه.
اگر شما دیتایی دارید که خاص هست و کسی واسش لایبرری یا transform ای نساخته.
میتونید خودتون راحت بسازید. و حتی لایبرری واسه حوزه خودتون درست کنید.
یادتون باشه نصف machine learning خط پردازش دیتاتون هست. باید حتما اینا رو بدونید.
عنصر دیگه ای که وجود داره کلاس Dataset هست که تو دوره ZTM PyTorch بهش پرداخته شده و تو کتاب آنلاینش هم هست.
این کلاس توسط DataLoader ها کپی میشه سر همین نباید از خود دیتا چیزی داشته باشه و فقط مکانیزم بارگزاری دیتا از روی دیسک رو داشته باشه.
در غیر اینصورت حتی اگر بتونید این دیتا عظیم رو هم کامل روی RAM لود کنید با کپی کردن این دیتا توسط worker ها حافظه RAM اتون کامل پر میشه، به معنای ساده memory leak.
چند وقت پیش یکی از دوستانم راهکار جالبی پیشنهاد کردن که به صورت زیر هست:
اگر دیتای خام ماتریسی دارید. اول به صورت فایل .npy ذخیره کنید و بعد با np.memmap میتونید بدون بارگزاری روی RAM دیتا رو بخونید.
به این کار میگن memory mapping.
خود پایتون هم ساپورت برای چنین کاری داره. با ماژول mmap.
راجب save کردن هم اینجا توضیحات نوشته شده.
روش های خلاقانه دیگه هم وجود داره قطعا.
راجب apache arrow هم شنیدم که توسط لایبرری huggingface datasets استفاده میشه و خیلی هم قوی هست و memory mapping هم انجام میده ولی خودم ازش فعلا استفاده نکردم.
ما domain library های مختلف داریم تو PyTorch.
برای سیگنال و صدا: torchaudio
برای تصویر: torchvision
برای متن هم torchtext
هر کدوم هم یه سری ویژگی ها دارن ولی همشون یه چیز مشترک دارن.
اونم transforms هست.
اگر داخل transforms که تو torchvision هست یه نگاه بندازید.
اومده و برای هر تغییری روی دیتاش کلاس تعریف کرده. و توابع خاص init, call و repr رو تعریف کرده.
و در نهایت یه کلاس Compose ساخته که عملا دیزاین پترن composite رو روی اینا پیاده میکنه.
اگر شما دیتایی دارید که خاص هست و کسی واسش لایبرری یا transform ای نساخته.
میتونید خودتون راحت بسازید. و حتی لایبرری واسه حوزه خودتون درست کنید.
یادتون باشه نصف machine learning خط پردازش دیتاتون هست. باید حتما اینا رو بدونید.
عنصر دیگه ای که وجود داره کلاس Dataset هست که تو دوره ZTM PyTorch بهش پرداخته شده و تو کتاب آنلاینش هم هست.
این کلاس توسط DataLoader ها کپی میشه سر همین نباید از خود دیتا چیزی داشته باشه و فقط مکانیزم بارگزاری دیتا از روی دیسک رو داشته باشه.
در غیر اینصورت حتی اگر بتونید این دیتا عظیم رو هم کامل روی RAM لود کنید با کپی کردن این دیتا توسط worker ها حافظه RAM اتون کامل پر میشه، به معنای ساده memory leak.
چند وقت پیش یکی از دوستانم راهکار جالبی پیشنهاد کردن که به صورت زیر هست:
اگر دیتای خام ماتریسی دارید. اول به صورت فایل .npy ذخیره کنید و بعد با np.memmap میتونید بدون بارگزاری روی RAM دیتا رو بخونید.
به این کار میگن memory mapping.
خود پایتون هم ساپورت برای چنین کاری داره. با ماژول mmap.
راجب save کردن هم اینجا توضیحات نوشته شده.
روش های خلاقانه دیگه هم وجود داره قطعا.
راجب apache arrow هم شنیدم که توسط لایبرری huggingface datasets استفاده میشه و خیلی هم قوی هست و memory mapping هم انجام میده ولی خودم ازش فعلا استفاده نکردم.
🔥1