گروه مطالعه علوم داده
در این گروه به مدیریت جناب دکتر توتونچیان، به صورت هفتگی، ارائههایی در رابطه با مسائل و چالشهای دیتاساینس برگزار میشود.
https://news.1rj.ru/str/+8mhPMpJw97QwOWUx
در این گروه به مدیریت جناب دکتر توتونچیان، به صورت هفتگی، ارائههایی در رابطه با مسائل و چالشهای دیتاساینس برگزار میشود.
https://news.1rj.ru/str/+8mhPMpJw97QwOWUx
Telegram
Data Science Study Group
Milad Toutounchian invites you to join this group on Telegram.
ایلان ماسک از اوپنسورس شدن کدهای Recommender System توییتر خبرداد.
سرویسهای ریکامندیشن توییتر مسئول بازیابی اطلاعات برای نمایش در تایملاین افراد اند.
بلاگ پست مهندسی:
https://blog.twitter.com/engineering/en_us/topics/open-source/2023/twitter-recommendation-algorithm
ریپازیتوری:
https://github.com/twitter/the-algorithm
سرویسهای ریکامندیشن توییتر مسئول بازیابی اطلاعات برای نمایش در تایملاین افراد اند.
بلاگ پست مهندسی:
https://blog.twitter.com/engineering/en_us/topics/open-source/2023/twitter-recommendation-algorithm
ریپازیتوری:
https://github.com/twitter/the-algorithm
👍14
School of AI
ایلان ماسک از اوپنسورس شدن کدهای Recommender System توییتر خبرداد. سرویسهای ریکامندیشن توییتر مسئول بازیابی اطلاعات برای نمایش در تایملاین افراد اند. بلاگ پست مهندسی: https://blog.twitter.com/engineering/en_us/topics/open-source/2023/twitter-recommendation…
همونطور که میدونید دیروز #ایلان_ماسک از اوپنسورس شدن کدهای سرویس #ریکامندر_سیستم #توییتر به عنوان مهمترین بخش این پلتفرم، که در توییتر بهش The Algorithm میگن خبر داد. در این پست میخوایم خیلی کلی این سرویس رو بررسی کنیم.
توییتر رو به جرات میشه اصلیترین مرکز مکالمات امروز در جهان قلمداد کرد. این یعنی این پلتفرم به راحتی میتونه با نمایش یا عدم نمایش بعضی توییتها به برخی افراد، جریان اطلاعات، اخبار، نگرانیها، بحثها و حتی کامیونیتیها رو در جهتی که میخواد هدایت کنه و تاثیر جدی بر روی افکار و سلائق عمومی و اجتماعی بذاره. در چنین شرایطی، شفافیت (Transparency) و توضیحپذیری (Explainability) اهمیت پیدا میکنند بهطوریکه هرلحظه میتونن تمام اعتبار پلتفرم رو از بین ببرن. دقیقا به همین دلیل هم هست که توییتر تصمیم به اوپنسورس کردن #سامانه_بازیابی_اطلاعات (Information Retrieval System) خود یا همون ریکامندر سیستمش گرفته.
این سیستم در واقع اصلیترین بخش الگوریتمی توییتر است و بقیهی بخشهای پلتفرم عمدتا تمرکز بر چالشهای مهندسی مثل Availability و Scalability دارند نه الگوریتمی.
زمانی که اپلیکیشن توییتر رو باز میکنید، یک تب اصلی (For You) داره که تا حدی صفحهی Home اپلیکیشن به حساب میاد و توییتهایی رو در قالب یک تایملاین به شما نشون میده. نیمی از این توییتها معمولا از افرادی اند که شما فالو نمیکنید و حتی نمیشناسید اما جالب اینجاست که کم پیش میاد توییت کسی که همیشه فالو میکنید رو نبینید یا توییتهایی رو ببینید که براتون جالب نباشه و بخواید که اپ رو ببندید. این هنر سامانه بازیابی اطلاعات یا همون ریکامندر توییتره.
هر بار که این صفحه رو تا انتها اسکرول میکنید، یک درخواست از اپ شما به سرویس Home Mixer روی سرور توییتر زده میشود (روزانه حدود ۵ میلیارد درخواست) و به صورت میانگین، حدود ۱/۵ ثانیه بعد، در پاسخ، لیستی ترکیب (Mix) شده از توییتهای جدید، تبلیغات، پیشنهاد برای فالو کردن افراد و … را دریافت میکنید. اما این سیستم چطور میتواند ازبین میلیاردها توییت!!!! (روزانه تقریبا ۵۰۰ میلیون توییت)، یک تعداد کم از توییتهای مناسب رو برای شما بازیابی کند؟! اگر قرار است اندازهی ورودی یک الگوریتم فیلترسازی انقدر بزرگ باشد، طبیعتا نباید قادر باشیم از الگوریتمهای قدرتمند با پیچیدگی زمانی (Time Complexity) زیاد استفاده کنیم.
همهی ریکامندر سیستمها (ازجمله توییتر) برای غلبه بر این مشکل، فرایند بازیابی رو به ۲ یا ۳ مرحله (stage) میشکنند. در فاز اول که بهش candidate generation و یا candidate sourcing و یا retrieval گفته میشه، یک الگوریتم فیلترسازی بسیار بسیار ساده (با پیچیدگی زمانی کم) از بین میلیاردها آیتم، در حد چندهزارتا که میتوان به سادگی مطمئن شد کاندیدای مناسب و غیر پرتی اند را فیلتر میکند. این کاندیدها در مرحله دوم (Ranking) به یک الگوریتم بسیار پیچیده و سنگین داده میشوند و چون در حد چندهزار آیتم اند به راحتی و با سرعت رتبهبندی میشوند. توییتر هر بار ۱۵۰۰ آیتم کاندید را از بین ۳ منبع (source) اطلاعاتی، بازیابی و کاندید میکند (از هر منبع ۵۰۰ آیتم به عنوان کاندید بازیابی میشود). این سه منبع اطلاعاتی عبارتند از:
۱. فضای Embedding: در الگوریتمهای یادگیری ماشین، سعی بر این است که همه کانسپتها (کاربرها، توییتها، کامیونیتیها و …) رو با بردارهای متراکم عددی به نام embedding vector بازنمایی کنیم بطوریکه کاربران شبیه به هم بردارهای شبیه به هم، توییتهای شبیه به هم بردارهایی شبیه به هم و همینطور کاربر علاقه مند به یک توییت هم برداری شبیه به بردار آن توییت داشته باشد. توییتر ۲ فضای embedding جداگانه به نامهای SimClusters و TwHIN دارد. در فضای SimClusters با استفاده از روش Matrix Factorization بردارهای embedding با مرکزیت افراد influencer مثل خواننده ها و … خوشه بندی میشوند (۱۴۵ هزار خوشه که هر ۳ هفته یک بار آپدیت می شوند)
۵۰۰ توییت که بردار embedding مشابه با بردار کاربر دارند، از این منبع استخراج میشوند.
۲. منبع Social Graph: توییتهای مربوط به افرادی که شما فالو نمیکنید ولی فالورهای شما یا افراد شبیه به شما فالو میکنند یا با آن تعامل (لایک، ریتوییت و …) دارند. لازم به ذکر است دیتای رابطهی فالو کردن افراد، در یک گراف جهتدار بهنام Follow graph نگهداری میشود که گرههای آن، نمایانگر کاربران و یالهای آن نمایانگر فالوها اند.
توییتر رو به جرات میشه اصلیترین مرکز مکالمات امروز در جهان قلمداد کرد. این یعنی این پلتفرم به راحتی میتونه با نمایش یا عدم نمایش بعضی توییتها به برخی افراد، جریان اطلاعات، اخبار، نگرانیها، بحثها و حتی کامیونیتیها رو در جهتی که میخواد هدایت کنه و تاثیر جدی بر روی افکار و سلائق عمومی و اجتماعی بذاره. در چنین شرایطی، شفافیت (Transparency) و توضیحپذیری (Explainability) اهمیت پیدا میکنند بهطوریکه هرلحظه میتونن تمام اعتبار پلتفرم رو از بین ببرن. دقیقا به همین دلیل هم هست که توییتر تصمیم به اوپنسورس کردن #سامانه_بازیابی_اطلاعات (Information Retrieval System) خود یا همون ریکامندر سیستمش گرفته.
این سیستم در واقع اصلیترین بخش الگوریتمی توییتر است و بقیهی بخشهای پلتفرم عمدتا تمرکز بر چالشهای مهندسی مثل Availability و Scalability دارند نه الگوریتمی.
زمانی که اپلیکیشن توییتر رو باز میکنید، یک تب اصلی (For You) داره که تا حدی صفحهی Home اپلیکیشن به حساب میاد و توییتهایی رو در قالب یک تایملاین به شما نشون میده. نیمی از این توییتها معمولا از افرادی اند که شما فالو نمیکنید و حتی نمیشناسید اما جالب اینجاست که کم پیش میاد توییت کسی که همیشه فالو میکنید رو نبینید یا توییتهایی رو ببینید که براتون جالب نباشه و بخواید که اپ رو ببندید. این هنر سامانه بازیابی اطلاعات یا همون ریکامندر توییتره.
هر بار که این صفحه رو تا انتها اسکرول میکنید، یک درخواست از اپ شما به سرویس Home Mixer روی سرور توییتر زده میشود (روزانه حدود ۵ میلیارد درخواست) و به صورت میانگین، حدود ۱/۵ ثانیه بعد، در پاسخ، لیستی ترکیب (Mix) شده از توییتهای جدید، تبلیغات، پیشنهاد برای فالو کردن افراد و … را دریافت میکنید. اما این سیستم چطور میتواند ازبین میلیاردها توییت!!!! (روزانه تقریبا ۵۰۰ میلیون توییت)، یک تعداد کم از توییتهای مناسب رو برای شما بازیابی کند؟! اگر قرار است اندازهی ورودی یک الگوریتم فیلترسازی انقدر بزرگ باشد، طبیعتا نباید قادر باشیم از الگوریتمهای قدرتمند با پیچیدگی زمانی (Time Complexity) زیاد استفاده کنیم.
همهی ریکامندر سیستمها (ازجمله توییتر) برای غلبه بر این مشکل، فرایند بازیابی رو به ۲ یا ۳ مرحله (stage) میشکنند. در فاز اول که بهش candidate generation و یا candidate sourcing و یا retrieval گفته میشه، یک الگوریتم فیلترسازی بسیار بسیار ساده (با پیچیدگی زمانی کم) از بین میلیاردها آیتم، در حد چندهزارتا که میتوان به سادگی مطمئن شد کاندیدای مناسب و غیر پرتی اند را فیلتر میکند. این کاندیدها در مرحله دوم (Ranking) به یک الگوریتم بسیار پیچیده و سنگین داده میشوند و چون در حد چندهزار آیتم اند به راحتی و با سرعت رتبهبندی میشوند. توییتر هر بار ۱۵۰۰ آیتم کاندید را از بین ۳ منبع (source) اطلاعاتی، بازیابی و کاندید میکند (از هر منبع ۵۰۰ آیتم به عنوان کاندید بازیابی میشود). این سه منبع اطلاعاتی عبارتند از:
۱. فضای Embedding: در الگوریتمهای یادگیری ماشین، سعی بر این است که همه کانسپتها (کاربرها، توییتها، کامیونیتیها و …) رو با بردارهای متراکم عددی به نام embedding vector بازنمایی کنیم بطوریکه کاربران شبیه به هم بردارهای شبیه به هم، توییتهای شبیه به هم بردارهایی شبیه به هم و همینطور کاربر علاقه مند به یک توییت هم برداری شبیه به بردار آن توییت داشته باشد. توییتر ۲ فضای embedding جداگانه به نامهای SimClusters و TwHIN دارد. در فضای SimClusters با استفاده از روش Matrix Factorization بردارهای embedding با مرکزیت افراد influencer مثل خواننده ها و … خوشه بندی میشوند (۱۴۵ هزار خوشه که هر ۳ هفته یک بار آپدیت می شوند)
۵۰۰ توییت که بردار embedding مشابه با بردار کاربر دارند، از این منبع استخراج میشوند.
۲. منبع Social Graph: توییتهای مربوط به افرادی که شما فالو نمیکنید ولی فالورهای شما یا افراد شبیه به شما فالو میکنند یا با آن تعامل (لایک، ریتوییت و …) دارند. لازم به ذکر است دیتای رابطهی فالو کردن افراد، در یک گراف جهتدار بهنام Follow graph نگهداری میشود که گرههای آن، نمایانگر کاربران و یالهای آن نمایانگر فالوها اند.
❤12
School of AI
ایلان ماسک از اوپنسورس شدن کدهای Recommender System توییتر خبرداد. سرویسهای ریکامندیشن توییتر مسئول بازیابی اطلاعات برای نمایش در تایملاین افراد اند. بلاگ پست مهندسی: https://blog.twitter.com/engineering/en_us/topics/open-source/2023/twitter-recommendation…
۳. منبع In Network: توییتهای مربوط به افرادی که شما فالو میکنید و بهصورت مستمر با توییتهای آنها در تعامل هستید. این منبع از یک مدل ساده دیگر به نام RealGraph که بر روی Follow graph سوارشده و احتمال تعامل دونفر را پیشبینی میکند، به همراه یک مدل logistic regression برای ranking استفاده میکند. برای اطلاعات بیشتر در مورد مدل RealGraph به مقاله زیر رجوع کنید:
https://www.ueo-workshop.com/wp-content/uploads/2014/04/sig-alternate.pdf
از هر کدام از این منابع به کمک الگوریتم بسیار سادهی Logistic Regression تعداد ۵۰۰ کاندید (در مجموع ۱۵۰۰ توییت) انتخاب شده و وارد فاز ranking میشوند.
در فاز ranking به کمک یک شبکه عصبی عمیق و پیچیده با حدود ۴۸ میلیون پارامتر و هزاران فیچر ورودی، که به صورت continuous آموزش میبیند (سرویس Heavy Ranker)، تعداد ۱۰ امتیاز مجزا (multi-task learning) برای engagement های مختلف (لایک، ریپلای، ریتوییت و …) محاسبه شده و توییتها بر اساس این score ها رتبهبندی میشوند.
معمولا ریکامندر سیستمها به جز فازهای candidate sourcing و ranking یک فاز سوم هم دارند که با روشهای شهودی، هیوریستیک و سنتیتر (غیر هوشمند) ملاحضات کسب و کار رو اعمال میکنیم مثلا وزن آیتمهای اسپانسر رو بیشتر میکنیم یا آیتمهایی که کاربر قبلا دیده رو حذف میکنیم و …
توییتر هم در فاز سوم (که بهش Heuristics & Filters میگه) توییتهایی که قبلا دیده شده یا توییت افراد mute یا بلاک شده را حذف میکند (Visibility Filtering)، توییتهایی که مربوط به افرادی اند که بیش از ۲ درجه جدایی با شما در follow graph دارند، حذف میشوند (Social Proof)، امتیاز توییتهایی که با فیدبک منفی شما روبرو شده اند کم میشود (Feedback-based Fatigue)، مطمئن میشود که نیمی از توییتها مربوط به افراد In Network و نیمی مربوط به افراد Out of Network باشند (Content Balance)، مطمئن میشود که فید شما با توییتهای یک شخص خاص پر نشده باشد (Author Diversity) و …
اطلاعات بیشتر:
https://blog.twitter.com/engineering/en_us/topics/open-source/2023/twitter-recommendation-algorithm
کدها:
https://github.com/twitter/the-algorithm
https://github.com/twitter/the-algorithm-ml
اگر به طراحی سامانههای بازیابی اطلاعات و ریکامندر سیستمها علاقهمندید و مایلید درک بهتری از این سیستمها داشته باشید، میتوانید ویدیوی ضبط شده از بوتکمپ رایگان سامانههای پیشنهاددهنده مقیاسپذیر در مدرسهی هوش مصنوعی (School of AI) رو از لینک زیر مشاهده کنید:
https://www.aparat.com/playlist/5220444
https://www.ueo-workshop.com/wp-content/uploads/2014/04/sig-alternate.pdf
از هر کدام از این منابع به کمک الگوریتم بسیار سادهی Logistic Regression تعداد ۵۰۰ کاندید (در مجموع ۱۵۰۰ توییت) انتخاب شده و وارد فاز ranking میشوند.
در فاز ranking به کمک یک شبکه عصبی عمیق و پیچیده با حدود ۴۸ میلیون پارامتر و هزاران فیچر ورودی، که به صورت continuous آموزش میبیند (سرویس Heavy Ranker)، تعداد ۱۰ امتیاز مجزا (multi-task learning) برای engagement های مختلف (لایک، ریپلای، ریتوییت و …) محاسبه شده و توییتها بر اساس این score ها رتبهبندی میشوند.
معمولا ریکامندر سیستمها به جز فازهای candidate sourcing و ranking یک فاز سوم هم دارند که با روشهای شهودی، هیوریستیک و سنتیتر (غیر هوشمند) ملاحضات کسب و کار رو اعمال میکنیم مثلا وزن آیتمهای اسپانسر رو بیشتر میکنیم یا آیتمهایی که کاربر قبلا دیده رو حذف میکنیم و …
توییتر هم در فاز سوم (که بهش Heuristics & Filters میگه) توییتهایی که قبلا دیده شده یا توییت افراد mute یا بلاک شده را حذف میکند (Visibility Filtering)، توییتهایی که مربوط به افرادی اند که بیش از ۲ درجه جدایی با شما در follow graph دارند، حذف میشوند (Social Proof)، امتیاز توییتهایی که با فیدبک منفی شما روبرو شده اند کم میشود (Feedback-based Fatigue)، مطمئن میشود که نیمی از توییتها مربوط به افراد In Network و نیمی مربوط به افراد Out of Network باشند (Content Balance)، مطمئن میشود که فید شما با توییتهای یک شخص خاص پر نشده باشد (Author Diversity) و …
اطلاعات بیشتر:
https://blog.twitter.com/engineering/en_us/topics/open-source/2023/twitter-recommendation-algorithm
کدها:
https://github.com/twitter/the-algorithm
https://github.com/twitter/the-algorithm-ml
اگر به طراحی سامانههای بازیابی اطلاعات و ریکامندر سیستمها علاقهمندید و مایلید درک بهتری از این سیستمها داشته باشید، میتوانید ویدیوی ضبط شده از بوتکمپ رایگان سامانههای پیشنهاددهنده مقیاسپذیر در مدرسهی هوش مصنوعی (School of AI) رو از لینک زیر مشاهده کنید:
https://www.aparat.com/playlist/5220444
❤12👍6
School of AI
دورهی آموزشی برنامهنویسی پایتون مقدماتی ویژه علاقهمندان به علوم داده و هوش مصنوعی مدرس: خانم دکتر معصومه نفری، استاد برنامهنویسی دانشگاه صنعتی شریف سطح دوره: مقدماتی (پیشنیاز ندارد) طول دوره: ۱۲ جلسه ۹۰ دقیقهای - آنلاین - جمعهها ساعت ۹ تا ۱۰:۳۰ …
این کد تخفیف تا انتهای امروز مهلت دارد 🥳
😍3
School of AI
عیدی مدرسه هوش مصنوعی! بوتکمپ نوروزی طراحی و پیادهسازی سامانههای پیشنهاددهندهی مقیاسپذیر (Scalable Recommender Systems) پنجم تا یازدهم فروردین - هر روز ساعت ۹ الی ۱۱ سامانههای پیشنهاددهنده، یکی از اصلیترین و پولسازترین کاربردهای مدرن هوش مصنوعی و…
ویدیوهای ضبط شده از بوتکمپ نوروزی "طراحی و پیادهسازی سامانههای پیشنهاددهندهی مقیاسپذیر" روی آپارات قرار گرفت:
https://www.aparat.com/playlist/5220444
جلسه اول: آشنایی با سامانههای بازیابی اطلاعات و سامانههای پیشنهاددهنده
جلسه دوم: طراحی پایپلاین دادههای ورودی با استفاده از TensorFlow Datasets
جلسه سوم: پیشپردازش ویژگیها و بردار Embedding
جلسه چهارم: پیادهسازی فاز Candidate Generation با استفاده از TensorFlow
جلسه پنجم: ایندکس کردن بردارهای تعبیه با استفاده از Google ScaNN
جلسه ششم: پیادهسازی فاز Ranking با استفاده از TensorFlow
جلسه هفتم: آشنایی با MLOps و استقرار مدل با استفاده از TFX و Docker
گروه پرسش و پاسخ در مورد سامانههای پیشنهاددهنده:
https://news.1rj.ru/str/+lIj28PPb9xY4Nzc8
https://www.aparat.com/playlist/5220444
جلسه اول: آشنایی با سامانههای بازیابی اطلاعات و سامانههای پیشنهاددهنده
جلسه دوم: طراحی پایپلاین دادههای ورودی با استفاده از TensorFlow Datasets
جلسه سوم: پیشپردازش ویژگیها و بردار Embedding
جلسه چهارم: پیادهسازی فاز Candidate Generation با استفاده از TensorFlow
جلسه پنجم: ایندکس کردن بردارهای تعبیه با استفاده از Google ScaNN
جلسه ششم: پیادهسازی فاز Ranking با استفاده از TensorFlow
جلسه هفتم: آشنایی با MLOps و استقرار مدل با استفاده از TFX و Docker
گروه پرسش و پاسخ در مورد سامانههای پیشنهاددهنده:
https://news.1rj.ru/str/+lIj28PPb9xY4Nzc8
👍32😍7❤2
آشنایی با انواع نمودارهای آماری و روشهای صحیح به تصویر کشیدن دادهها:
https://dataio.ir/%D8%A8%D9%87-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1-%DA%A9%D8%B4%DB%8C%D8%AF%D9%86-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7-voubuiqwuqhb
https://dataio.ir/%D8%A8%D9%87-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1-%DA%A9%D8%B4%DB%8C%D8%AF%D9%86-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7-voubuiqwuqhb
😍7👍3
Forwarded from Tensorflow(@CVision) (Alireza Akhavan)
This media is not supported in your browser
VIEW IN TELEGRAM
متا به تازگی Segment Anything Model (SAM) را منتشر کرده است، یک مدل هوش مصنوعی جدید که می تواند هر شی، در هر تصویر/ویدیویی را با یک کلیک سگمنت کنه (به قول خودشون "cut out" کنه)
این مدل قابلیت تعمیم دهی بدون نیاز به داده اضافی برای اشیاء جدید هم به صورت zero-shot داره
https://segment-anything.com/
تو سایت برید و بیشتر بخونید...
این مدل قابلیت تعمیم دهی بدون نیاز به داده اضافی برای اشیاء جدید هم به صورت zero-shot داره
https://segment-anything.com/
تو سایت برید و بیشتر بخونید...
👍10❤3
خیلی وقتها در دنیای واقعی، هنگام تحلیل دادههای کسبوکارهای آنلاین به دیتاستهای حجیم (در حد چندده گیگابایت، حتی ترابایت و پتابایت!) بر میخوریم که دانستههای ما هنگام کار با دیتاستهای کوچک رو زیر سوال میبرد. برای مثال:
- میخواهیم این دادهها رو از روی یک (برفرض) دیتابیس کوئری کنیم. این کوئری (درخواست بکباره این حجم اطلاعات روی یک thread) احتمالا long-running شده و حتی ممکن است توسط دیتابیس kill شود.
- با فرض اینکه این حجم داده را به نحوی کوئری کردیم، احتمالا در لود کردن آن روی حافظه RAM (مثلا ساختن Pandas Dataframe برای آن) به مشکل بر میخوریم و حافظه کم میآوریم.
- با فرض اینکه دادهها را کوئری کردیم و در رم هم لود کردیم، باز هنگام پردازش آن و اجرای فیلترهای سنگین به مشکل زمان اجرا بر میخوریم.
درست حدس زدید! در این حالت ما با Big Data مواجه ایم و برای حل این چالشها باید به سراغ پلتفرمهای پردازش داده توزیعشده بریم مثل:
- Dask
- Spark
- Flink
این روزها تسلط بر این ابزارها بر هر متخصص داده (Data Analyst, Data Scientist, Data Engineer) از واجبات است.
قبلا در @schoolofai ورکشاپ آموزش Dask رو داشتیم و ویدئوی ضبطشدهی اون رو میتونید از کانال آپارات و یوتیوب مشاهده کنید.
اما خیلی وقتها Dask جوابگوی نیاز شما نیست و لازم است از مزیتهای Spark بهره بگیرید. درسته که اسپارک یک پلتفرم JVM-based است اما با استفاده از پکیج PySpark میتوانید با زبان
پایتون و بسیار شبیه به Pandas و Dask از آن استفاده کنید.
لینک زیر، با یک مثال، در مدت ۱۰ دقیقه، قدم به قدم و بسیار ساده، از نصب PySpark تا تحلیل کلانداده و همینطور آموزش مدل یادگیری ماشین با استفاده از این ابزار را آموزش میدهد.
https://www.datacamp.com/tutorial/pyspark-tutorial-getting-started-with-pyspark
- میخواهیم این دادهها رو از روی یک (برفرض) دیتابیس کوئری کنیم. این کوئری (درخواست بکباره این حجم اطلاعات روی یک thread) احتمالا long-running شده و حتی ممکن است توسط دیتابیس kill شود.
- با فرض اینکه این حجم داده را به نحوی کوئری کردیم، احتمالا در لود کردن آن روی حافظه RAM (مثلا ساختن Pandas Dataframe برای آن) به مشکل بر میخوریم و حافظه کم میآوریم.
- با فرض اینکه دادهها را کوئری کردیم و در رم هم لود کردیم، باز هنگام پردازش آن و اجرای فیلترهای سنگین به مشکل زمان اجرا بر میخوریم.
درست حدس زدید! در این حالت ما با Big Data مواجه ایم و برای حل این چالشها باید به سراغ پلتفرمهای پردازش داده توزیعشده بریم مثل:
- Dask
- Spark
- Flink
این روزها تسلط بر این ابزارها بر هر متخصص داده (Data Analyst, Data Scientist, Data Engineer) از واجبات است.
قبلا در @schoolofai ورکشاپ آموزش Dask رو داشتیم و ویدئوی ضبطشدهی اون رو میتونید از کانال آپارات و یوتیوب مشاهده کنید.
اما خیلی وقتها Dask جوابگوی نیاز شما نیست و لازم است از مزیتهای Spark بهره بگیرید. درسته که اسپارک یک پلتفرم JVM-based است اما با استفاده از پکیج PySpark میتوانید با زبان
پایتون و بسیار شبیه به Pandas و Dask از آن استفاده کنید.
لینک زیر، با یک مثال، در مدت ۱۰ دقیقه، قدم به قدم و بسیار ساده، از نصب PySpark تا تحلیل کلانداده و همینطور آموزش مدل یادگیری ماشین با استفاده از این ابزار را آموزش میدهد.
https://www.datacamp.com/tutorial/pyspark-tutorial-getting-started-with-pyspark
Datacamp
Pyspark Tutorial: Getting Started with Pyspark
Discover what Pyspark is and how it can be used while giving examples.
👏11👍4😍1
سامانه پیشنهاددهنده TikTok یکی از قدرتمندترین و مثالزدنیترین سامانههای پیشنهاددهنده است که به اعتقاد برخی متخصصین، بهترین در نوع خود است.
این سامانه جزو معدود نمونههای موفق Real-time ML است که به صورت آنلاین آموزش میبیند.
اخیرا این شرکت در مقالهای، سامانه پیشنهاددهنده خود را شرح داده:
https://arxiv.org/pdf/2209.07663.pdf
این سامانه جزو معدود نمونههای موفق Real-time ML است که به صورت آنلاین آموزش میبیند.
اخیرا این شرکت در مقالهای، سامانه پیشنهاددهنده خود را شرح داده:
https://arxiv.org/pdf/2209.07663.pdf
👍15❤3
Estimating long-term effects when only short-run experiments are available - Spotify
https://research.atspotify.com/2023/04/estimating-long-term-effects-when-only-short-run-experiments-are-available/
https://research.atspotify.com/2023/04/estimating-long-term-effects-when-only-short-run-experiments-are-available/
❤2
مصاحبه با علی اسلامی، پژوهشگر هوش مصنوعی در DeepMind درمورد پیشرفتهای اخیر
https://tankmagazine.com/moving-images
https://tankmagazine.com/moving-images
🙏3👍2❤1🔥1😍1
Exploring Goal-oriented Podcast Recommendations - Spotify
https://research.atspotify.com/2023/03/exploring-goal-oriented-podcast-recommendations/
https://research.atspotify.com/2023/03/exploring-goal-oriented-podcast-recommendations/
❤1
در این پست میخواهیم با زبان ساده به یکی از مرسومترین پرسشها در بین علاقهمندان به علوم کامپیوتر پاسخ بدیم.
نرمافزارهای مسیریابی مثل Waze و Google Maps اینروزها به یکی از اعضای بدن ما تبدیل شده اند و خیلی از ما بدون استفاده از آنها یا دیر به مقصد میرسیم و یا حتی گم میشیم. اما این نرمافزارها چگونه کار میکنند و چطوری کوتاهترین مسیر رو به ما پیشنهاد میدهند؟!
در زیر مرحله به مرحله به این مساله میپردازیم:
۱. اطلاعات جفرافیایی و هندسی خیابونها و کوچهها و میدونها و … (اینکه کجا اند، چقدر طول و چقدر عرض دارند، شکل آنها چجوری است و …) در قالب دادههای Geospatial (فارسی: زمین-مکانی!) با فرمتهایی مثل GeoJSON ذخیره میشوند که شما هم میتونید دیتاهای geospatial شهر خودتون رو در قالب فایل GeoJSON از اینترنت دانلود کنید.
۲. دادههای geospatial خیابونها پردازش شده و اطلاعاتی مثل تقاطع خیابونها ازش استخراج میشه. شما هم میتونید مثلا با پکیج GeoPandas خودتون این پردازشها رو انجام بدید.
۳. یک گراف بزرگ ساخته میشه. فرض کنید هر گره گراف یکی از تقاطعها و هر یال گراف یکی از خیابونهای متصلکننده دو تقاطع است. این گراف یک گراف وزنداره. یعنی هر یال یه عدد داره که مدت زمان لازم برای تردد در اون یال (خیابون) رو نشون میده. حالا این عدد رو فعلا نداریم. مرحله بعد این عدد تخمین زده میشه.
۴. بر اساس میانگین سرعت حرکت افرادی که در اون خیابون در حال تردد اند و اطلاعات آنها توسط اپلیکیشن جمعآوری میشود میشه به یک تخمینی از میزان ترافیک موجود در اون خیابون رسید. به کمک این تخمین و همچنین اطلاعات و تاریخچهی جمعآوری شده در روزهای قبل، یک مدل Machine Learning (معمولا یک شبکه عصبی عمیق) میاد و مدت زمانی که برای طی کردن اون خیابون (بین دو تقاطع) لازمه (Estimated Time of Arrival) رو تخمین میزنه. این عدد در واقع میشه وزن هر یال روی گراف.
۵. حالا که داستان به یک مساله فرمال ریاضی (گراف) مدلسازی شد، به راحتی با الگوریتمهای پیمایش گراف و الگوریتمهای Shortest Path Finding برای گرافهای وزندار میشه کوتاهترین مسیر بین دو نقطه و همینطور مدت زمان لازم برای تردد از آن را پیدا کرد. سیستمهای مسیریاب (Routing Engines) معمولا از الگوریتم *A برای پیدا کردن مسیر شبهبهینه استفاده میکنند. اگر با این الگوریتم آشنا باشید (بچههای کامپیوتری در درس هوش مصنوعی میخونن) میدونید که با سرعت بالایی مسیر شبهبهینه رو پیدا میکنه. این الگوریتم از یک نقطه در گراف شروع کرده و به بهترین نقطه همسایه خود میرود و اینکار را انقدر ادامه داده تا به مقصد برسد. بهترین نقطه همسایه هم نقطه ای است که (زمان رسیدن از مبدا تا آن نقطه + فاصله تا مقصد) در آن کمترین باشه. اما اینجا فاصله تا مقصد رو که نداریم (اگه داشتیم که مساله وجود نداشت) بنابراین با استفاده از یک هیوریستیک شهودی اون رو تخمین میزنیم. هیوریستیک شهودی اینجا معمولا فاصله مستقیم (بدون توجه به ساختار خیابونها) بین مختصات جغرافیایی دو نقطه است. فقط دقت کنید که مختصات جغرافیایی در بیشتر موارد بر اساس طول و عرض جغرافیایی (Latitude/Longitude) بیان شده که برحسب درجه است بنابراین نمیتونید از فرمول فاصله اقلیدسی (یا قضیه فیثاغورث) برای آن استفاده کنید به جاش باید از فرمول Haversine استفاده کرده و فاصله great-circle distance رو حساب کنید که قوس سیاره زمین را هم در نظر بگیره.
۶. مسیر شبهبهینه رو که پیدا کردید میتونید جمع وزن یالهاش رو هم به عنوان مدت زمان طی شدن مسیر در نظر بگیرید.
تمام.
نرمافزارهای مسیریابی مثل Waze و Google Maps اینروزها به یکی از اعضای بدن ما تبدیل شده اند و خیلی از ما بدون استفاده از آنها یا دیر به مقصد میرسیم و یا حتی گم میشیم. اما این نرمافزارها چگونه کار میکنند و چطوری کوتاهترین مسیر رو به ما پیشنهاد میدهند؟!
در زیر مرحله به مرحله به این مساله میپردازیم:
۱. اطلاعات جفرافیایی و هندسی خیابونها و کوچهها و میدونها و … (اینکه کجا اند، چقدر طول و چقدر عرض دارند، شکل آنها چجوری است و …) در قالب دادههای Geospatial (فارسی: زمین-مکانی!) با فرمتهایی مثل GeoJSON ذخیره میشوند که شما هم میتونید دیتاهای geospatial شهر خودتون رو در قالب فایل GeoJSON از اینترنت دانلود کنید.
۲. دادههای geospatial خیابونها پردازش شده و اطلاعاتی مثل تقاطع خیابونها ازش استخراج میشه. شما هم میتونید مثلا با پکیج GeoPandas خودتون این پردازشها رو انجام بدید.
۳. یک گراف بزرگ ساخته میشه. فرض کنید هر گره گراف یکی از تقاطعها و هر یال گراف یکی از خیابونهای متصلکننده دو تقاطع است. این گراف یک گراف وزنداره. یعنی هر یال یه عدد داره که مدت زمان لازم برای تردد در اون یال (خیابون) رو نشون میده. حالا این عدد رو فعلا نداریم. مرحله بعد این عدد تخمین زده میشه.
۴. بر اساس میانگین سرعت حرکت افرادی که در اون خیابون در حال تردد اند و اطلاعات آنها توسط اپلیکیشن جمعآوری میشود میشه به یک تخمینی از میزان ترافیک موجود در اون خیابون رسید. به کمک این تخمین و همچنین اطلاعات و تاریخچهی جمعآوری شده در روزهای قبل، یک مدل Machine Learning (معمولا یک شبکه عصبی عمیق) میاد و مدت زمانی که برای طی کردن اون خیابون (بین دو تقاطع) لازمه (Estimated Time of Arrival) رو تخمین میزنه. این عدد در واقع میشه وزن هر یال روی گراف.
۵. حالا که داستان به یک مساله فرمال ریاضی (گراف) مدلسازی شد، به راحتی با الگوریتمهای پیمایش گراف و الگوریتمهای Shortest Path Finding برای گرافهای وزندار میشه کوتاهترین مسیر بین دو نقطه و همینطور مدت زمان لازم برای تردد از آن را پیدا کرد. سیستمهای مسیریاب (Routing Engines) معمولا از الگوریتم *A برای پیدا کردن مسیر شبهبهینه استفاده میکنند. اگر با این الگوریتم آشنا باشید (بچههای کامپیوتری در درس هوش مصنوعی میخونن) میدونید که با سرعت بالایی مسیر شبهبهینه رو پیدا میکنه. این الگوریتم از یک نقطه در گراف شروع کرده و به بهترین نقطه همسایه خود میرود و اینکار را انقدر ادامه داده تا به مقصد برسد. بهترین نقطه همسایه هم نقطه ای است که (زمان رسیدن از مبدا تا آن نقطه + فاصله تا مقصد) در آن کمترین باشه. اما اینجا فاصله تا مقصد رو که نداریم (اگه داشتیم که مساله وجود نداشت) بنابراین با استفاده از یک هیوریستیک شهودی اون رو تخمین میزنیم. هیوریستیک شهودی اینجا معمولا فاصله مستقیم (بدون توجه به ساختار خیابونها) بین مختصات جغرافیایی دو نقطه است. فقط دقت کنید که مختصات جغرافیایی در بیشتر موارد بر اساس طول و عرض جغرافیایی (Latitude/Longitude) بیان شده که برحسب درجه است بنابراین نمیتونید از فرمول فاصله اقلیدسی (یا قضیه فیثاغورث) برای آن استفاده کنید به جاش باید از فرمول Haversine استفاده کرده و فاصله great-circle distance رو حساب کنید که قوس سیاره زمین را هم در نظر بگیره.
۶. مسیر شبهبهینه رو که پیدا کردید میتونید جمع وزن یالهاش رو هم به عنوان مدت زمان طی شدن مسیر در نظر بگیرید.
تمام.
👍31❤8🔥4
School of AI
در این پست میخواهیم با زبان ساده به یکی از مرسومترین پرسشها در بین علاقهمندان به علوم کامپیوتر پاسخ بدیم. نرمافزارهای مسیریابی مثل Waze و Google Maps اینروزها به یکی از اعضای بدن ما تبدیل شده اند و خیلی از ما بدون استفاده از آنها یا دیر به مقصد میرسیم…
در ادامهی این پست، روش Google Maps برای پیشبینی وضعیت ترافیکی و ETA رو بررسی میکنیم.
اپلیکیشن Google Maps برروی بیش از ۱۰ میلیارد دستگاه تلفن همراه نصب شده و روزانه توسط افراد زیادی برای مسیریابی مورد استفاده قرار میگیره. مکان جغرافیایی، سرعت و شتاب حرکت دستگاههای موبایل داخل اتوموبیلها توسط سنسورهای GPS و Accelerometer و Gyroscope اندازهگیری شده و بهطور ناشناس (Anonymized) برای سرورهای گوگل ارسال میشن. این مقادیر بهعنوان یک منبع اطلاعاتی مهم برای پیشبینی حجم ترافیک و زمان رسیدن به مقصد (ETA) مورد استفاده قرار میگیرن. توجه کنید که داشتن وضعیت ترافیک در هر لحظه (live traffic data) بهتنهایی برای پیشبینی زمان رسیدن کافی نیست چون حجم ترافیک هر نقطه هر چند دقیقه تغییر میکنه. بنابراین گوگل از تاریخچهی اطلاعات ترافیکی جمعآوری شده (historical traffic data) نیز برای کشف الگوی تغییر ترافیک و پیشبینی ترافیک در چند دقیقهی آینده استفاده میکند.
۱. در ابتدا، هر مسیر (خیابان و جاده و …) به بخشهای بسیار کوچک (در حد چند متر) به نام segment شکسته شده و دادههای مربوط به تاریخچهی اطلاعات ترافیکی سگمنتها (چندین ترابایت داده) توسط یک سامانهی کلاسترینگ بهنام route analyzer تحلیل شده و سگمنتهای کنار هم که حجم و الگوی ترافیک مشابه دارند با هم ترکیب شده و تعدادی supersegment میسازند. این سوپرسگمنتها، هر چندروز یکبار مجددا بررسی و بازتولید میشوند و تعداد آنها کاملا متغیر است.
۲. یک گراف بزرگ از وضعیت مسیرها ساخته می شه. اما بهجای اینکه هر گره در گراف معرف یک تقاطع و هر یال معرف یک مسیر باشه، هر گره معرف یک supersegment و هر یال گراف معرف همسایگی دو سوپرسگمنت است. بنابراین گراف وزندار نیست و مدتزمان طی شدن هر بخش به عنوان وزن در یالها ذخیره نمیشه بلکه به عنوان یک متغیر (state) داخل هر گره نگهداری میشن. بنابراین گراف حاصل، یک گراف بدون وزن بسیار بزرگ (درحد چند میلیون گره) است که هر گره در آن حاوی اطلاعات یک سوپرسگمنت است.
۳. ساخت گرافهای بزرگ و پردازش دادههای حجیم مبتنی بر این گرافها نوعی از Big Data است که نیاز به ابزارها و مدلهای پردازشی مثل Google Pregel ویا Apache Giraph داره. بنابراین پردازشهای لازم روی گراف با استفاده از فریمورک Google Pregel انجام میشه.
۴. همونطور که گفتیم، اطلاعات لحظهای ترافیک در هر گره (سوپرسگمنت) توسط موبایلهای روشن در آن مسیر تامین میشه اما اطلاعات ترافیکی چند دقیقه آینده در هر سوپرسگمنت باید با توجه به وضعیت فعلی و الگوی موجود در تاریخچه اطلاعات پیشین هر سوپرسگمنت، پیشبینی شه. بنابراین به ازای هر گره (میلیونها گره داریم) باید یک مدل یادگیری ماشین مستقل آموزش داده شه که نگهداری و آموزش همزمان این تعداد مدل یادگیری ماشین در عمل کار بسیار پیچیده و دشواری است بنابراین گوگل کار دیگه ای کرده.
۵. راهحل گوگل استفاده از GNN یا Graph Neural Networks است. ایننوع شبکههای عصبی در سالهای اخیر بسیار داغ شده اند و در جاهایی که دادههای مبتنی بر گراف داریم (مثل شبکههای اجتنماعی) نتایج جالبی رو خلق کرده اند.
۶. بعد از آموزش GNN در هر گره، اطلاعات ترافیکی فعلی و پیشبینی وضعیت ترافیکی در چند دقیقه و چند ساعت آینده وجود دارد که با روشهای جستجوی گراف مثل *A مسیر بهینه و ETA مشخص میشه 🙂
اپلیکیشن Google Maps برروی بیش از ۱۰ میلیارد دستگاه تلفن همراه نصب شده و روزانه توسط افراد زیادی برای مسیریابی مورد استفاده قرار میگیره. مکان جغرافیایی، سرعت و شتاب حرکت دستگاههای موبایل داخل اتوموبیلها توسط سنسورهای GPS و Accelerometer و Gyroscope اندازهگیری شده و بهطور ناشناس (Anonymized) برای سرورهای گوگل ارسال میشن. این مقادیر بهعنوان یک منبع اطلاعاتی مهم برای پیشبینی حجم ترافیک و زمان رسیدن به مقصد (ETA) مورد استفاده قرار میگیرن. توجه کنید که داشتن وضعیت ترافیک در هر لحظه (live traffic data) بهتنهایی برای پیشبینی زمان رسیدن کافی نیست چون حجم ترافیک هر نقطه هر چند دقیقه تغییر میکنه. بنابراین گوگل از تاریخچهی اطلاعات ترافیکی جمعآوری شده (historical traffic data) نیز برای کشف الگوی تغییر ترافیک و پیشبینی ترافیک در چند دقیقهی آینده استفاده میکند.
۱. در ابتدا، هر مسیر (خیابان و جاده و …) به بخشهای بسیار کوچک (در حد چند متر) به نام segment شکسته شده و دادههای مربوط به تاریخچهی اطلاعات ترافیکی سگمنتها (چندین ترابایت داده) توسط یک سامانهی کلاسترینگ بهنام route analyzer تحلیل شده و سگمنتهای کنار هم که حجم و الگوی ترافیک مشابه دارند با هم ترکیب شده و تعدادی supersegment میسازند. این سوپرسگمنتها، هر چندروز یکبار مجددا بررسی و بازتولید میشوند و تعداد آنها کاملا متغیر است.
۲. یک گراف بزرگ از وضعیت مسیرها ساخته می شه. اما بهجای اینکه هر گره در گراف معرف یک تقاطع و هر یال معرف یک مسیر باشه، هر گره معرف یک supersegment و هر یال گراف معرف همسایگی دو سوپرسگمنت است. بنابراین گراف وزندار نیست و مدتزمان طی شدن هر بخش به عنوان وزن در یالها ذخیره نمیشه بلکه به عنوان یک متغیر (state) داخل هر گره نگهداری میشن. بنابراین گراف حاصل، یک گراف بدون وزن بسیار بزرگ (درحد چند میلیون گره) است که هر گره در آن حاوی اطلاعات یک سوپرسگمنت است.
۳. ساخت گرافهای بزرگ و پردازش دادههای حجیم مبتنی بر این گرافها نوعی از Big Data است که نیاز به ابزارها و مدلهای پردازشی مثل Google Pregel ویا Apache Giraph داره. بنابراین پردازشهای لازم روی گراف با استفاده از فریمورک Google Pregel انجام میشه.
۴. همونطور که گفتیم، اطلاعات لحظهای ترافیک در هر گره (سوپرسگمنت) توسط موبایلهای روشن در آن مسیر تامین میشه اما اطلاعات ترافیکی چند دقیقه آینده در هر سوپرسگمنت باید با توجه به وضعیت فعلی و الگوی موجود در تاریخچه اطلاعات پیشین هر سوپرسگمنت، پیشبینی شه. بنابراین به ازای هر گره (میلیونها گره داریم) باید یک مدل یادگیری ماشین مستقل آموزش داده شه که نگهداری و آموزش همزمان این تعداد مدل یادگیری ماشین در عمل کار بسیار پیچیده و دشواری است بنابراین گوگل کار دیگه ای کرده.
۵. راهحل گوگل استفاده از GNN یا Graph Neural Networks است. ایننوع شبکههای عصبی در سالهای اخیر بسیار داغ شده اند و در جاهایی که دادههای مبتنی بر گراف داریم (مثل شبکههای اجتنماعی) نتایج جالبی رو خلق کرده اند.
۶. بعد از آموزش GNN در هر گره، اطلاعات ترافیکی فعلی و پیشبینی وضعیت ترافیکی در چند دقیقه و چند ساعت آینده وجود دارد که با روشهای جستجوی گراف مثل *A مسیر بهینه و ETA مشخص میشه 🙂
👍6❤5🔥2
How Twitter and TikTok Recommend Content to their Users
https://newsletter.theaiedge.io/p/how-twitter-and-tiktok-recommend
https://newsletter.theaiedge.io/p/how-twitter-and-tiktok-recommend
❤1👍1
بالاخره دو تیم هوش مصنوعی گوگل (Google Brain و DeepMind) با هم ترکیب شدند و از این به بعد به عنوان یک تیم با نام Google DeepMind فعالیت میکنند.
در تیم جدید، ژوبین قهرمانی هم به عنوان یکی از رهبران بورد پژوهشی حضور دارد.
مدیرعامل DeepMind یعنی Demis Hassabis به عنوان مدیراجرایی تیم جدید و Jeff Dean سرپرست تیم Google Brain هم به عنوان Google's Chief Scientist مستقیم با Sundar Pichai کار میکند و به هر دو تیم Google Research و Google DeepMind کمک میکند.
https://blog.google/technology/ai/april-ai-update/
https://www.deepmind.com/blog/announcing-google-deepmind?utm_source=linkedin&utm_medium=social&utm_campaign=GDM
در تیم جدید، ژوبین قهرمانی هم به عنوان یکی از رهبران بورد پژوهشی حضور دارد.
مدیرعامل DeepMind یعنی Demis Hassabis به عنوان مدیراجرایی تیم جدید و Jeff Dean سرپرست تیم Google Brain هم به عنوان Google's Chief Scientist مستقیم با Sundar Pichai کار میکند و به هر دو تیم Google Research و Google DeepMind کمک میکند.
https://blog.google/technology/ai/april-ai-update/
https://www.deepmind.com/blog/announcing-google-deepmind?utm_source=linkedin&utm_medium=social&utm_campaign=GDM
👍7❤1