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

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

Core Python : @PyHints

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

Rust: @PyRust
Download Telegram
وقتی عاشق بروسلی بودی
ولی خانواده گفتن : درستو بخون کنارش بروسلی رو هم دنبال کن
😁19👍4😱1
قبلتر گفتم وضعیت خرابه، نمی‌دونم شما احساس کردید یا نه ولی من خیلی بهش برخورد کردم توی ماه‌های اخیر

تجربه به تعداد سال یکجا موندن نیست
سنیور شدن به تعداد سال توی یک فیلد کد زدن نیست
Tech lead, Project Manager, Project Owner

شده مثل تگ‌های ۵۰۰ تومنی کنار خیابون؛ هرکسی ی دونه بر میداره


پیام‌هایی که فکر می‌کنم ازین به بعد قراره روزی ۱ دونه داشته باشم،
و کدهایی که بازم فکر می‌کنم قراره توی ۹۰٪ پروژه‌های ایرانی ببینم

حاضرم به همه‌ چیز قسم بخورم توی ۳ سال اخیر
حتی یکبار هم یک کد تمیز توی پروژه های ایرانی - code review - debug - test و ... ندیدم و این شامل بیش از ۳۰ پروژه و ۳۰۰ کد متفاوت می‌شه

مورد قبلی :
https://xn--r1a.website/pytens/727

من ایشون رو نمی‌شناسم مثل خیلی موردهای دیگه‌ای که پیام میدهند ولی اگر نیرویی لازم دارید، ایمیل بدید میگم رزومه بفرستند.
👍6😢1
تا دلتون بخواد
Segmentation Model
توی این لایبراری هست؛ بر اساس
Keras
نوشته شده و کارهای سگمنتیشن رو خیلی ساده می‌کنه

SM Github
🤩6👍2
#تجربه

توی لینکدین یک پستی گذاشتم راجب انتقال دیتابیس یکی از شرکت‌هایی که باهاش کار می‌کنم از SQL به MongoDB
یک توضیح مختصر برای چرایی :

۱- اینکه طراحی اشتباه بخاطر تیم اول شرکت (میگن MongoDB با Django خوب کار نمی‌کنه؛ منم خیلی شنیدم ولی خب قبولش ندارم چون پایتون باهاش خوبه)

۲- ازونجایی که تعداد یوزرهای شرکت میلیونی هست و باتوجه به طراحی دیتابیس تیم دیتاساینس - BI و ... کوئری‌هایی رو میزنن که از ۱۰ دقیقه تا ۴-۵ ساعت اجراش طول می‌کشه و بیشتر بخاطر حجم Join زدن و ... هست

توی مانگو اینو نداریم ؛ ماهیت دیتای ما جوری هست که اطلاعات مهم رو Embed کردم داخل داکیومنت (داکیومنت حکم سطر رو داره توی SQL) و بنابراین برای Frequent Data نیازی نیست که Join - Multiple Query و ... داشته باشیم

تست‌های اولیه؛
کوئری ۱۰ دقیقه‌ایی رو به ۳۴۵میلی‌ثانیه رسونده
(این زمان شامل زمان بکند هم میشه که ترجیح دادم Express.js باشه؛ دلیلش این بود که تمرین کنم)

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

بعد از اینکه کدهای Express تموم شد؛ داشتم روی این ابزار کار میکردم که به پیشنهاد یکی از اعضای تیم قرار شد بجای argv , ... خود پایتون از
Typer
استفاده کنیم (به اندازه خود FastApi فوق‌العاده‌اس) و ۳ نفری که روی این ابزار کار می‌کنیم هم موافقت کردیم.

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

بعد از کلی نوشتن و refactor یاد ابزار Bpytop (جایگزین عالی htop) افتادم و بعد کلی جستجو به Rich رسیدم

خلاصه :
مانگو رو فراموش نکنید مخصوصا برای شرایط بالا
اگر دارید تحت کامند ابزار می‌نویسید؛ حتما help , man و ... براش بذارید
اگر قراره از این ابزار طولانی مدت استفاده بشه؛ حتما از Typer , Rich استفاده کنید
هم خیلی راحت هست هم فوق‌العاده؛ محدودیت توش نیست واقعا
👍12
#تجربه

چطوری برای پروژه‌های هوش مصنوعی تست می‌نویسیم !؟

یک دوستی توی لینکدین این سوال جالب و خیلی خیلی مهم رو گذاشته که من قبل جواب دادن به ایشون گفتم تجربه خودم رو به اشتراک بذارم (قبلاً راجبش صحبت نکرده بودم) :


خداروشکر تست نویسی خوب داره رواج پیدا می‌کنه (متأسفانه بین دولوپرهای هموطن خیلی کم دیده میشه)
حتی وقتایی که زمانبندی پروژه خیلی کم هست (مشکل اصلی ۹۰٪ تست ننوشتن ها)
حداقل باید تمام سناریوهایی که بهش فکر میشه توی دیزاین و تست‌های دستی وجود داشته باشه (ی جور Todo خاص برای وقتی زمان اجازه میده و دولوپر‌های بعدی)

من ی مورد دیگه رو هم اضافه کنم بعد میرم سراغ جواب دادن به سوال :

تورو خدا Error Handling بذارید، دیباگر خوبه، print , log و ... هم خوبه ولی یوزر یا دولوپر‌های دیگه‌ای که از کد شما بعنوان سرویس استفاده می‌کنند باید متوجه بشن کجا به مشکل خورده پروژه که بتونه به شما اطلاع بده و شما reproduce کنید. (Debuger , ... فقط برای زمان توسعه کد هست توی production این error handle هست که کمک می‌کنه ؛ ی فکری بکنید به پروژه‌های بدون error handle که از باقی گرفتید چقدر سخت بوده رفع ارور توش ؟! )


جواب من برای این سوال، تست نویسی رو من برای پروژه‌های خودم (نظرشخصی و تجربه خودم) اینطور تعریف می‌کنم (باتوجه به تجربه‌ام خیلی خوب جواب ML/DL رو میده)
من دیدم بعضی دوستان میگن، تست فقط برای بخش
Data Engineering
هست کاملاً غلط هست؛ جا بندازم که اینجا چیزی به اسم تست نداریم مثل باقی موضوع بطور کلی تست نویسی اسم اشتباهی هست، برای این مرحله بهش میگیم Data Validation ینی توقع داریم یکسری اطلاعات مثلاً توزیع داده‌ها / بالانس بودن یا نبودن و ... به مرور زمان ثابت باشه (بسته به نوع پروژه داره) و اگر نبود میگیم دیتا valid نیست و بعنوان ارور نوتیف برمیگرده برای تیم‌هایی که با اون داده کار می‌کنند.

اما من چطوری تست می‌نویسم یا از تیمم توقع دارم بنویسند:
اولین قدم:
تست رو فقط و فقط برای توابع pure می‌نویسم، توابعی که مطمئنم همیشه یک خروجی ثابتی رو باید برگردونه
قدم دوم :
توابعی که side effect روی پروژه نداره ولی خروجی خودش بستگی به یکسری پارامتر ورودی داره اول تست خود پارامتر بعد تست مقادیر و خروجی تابع
قدم سوم :
تست side effect ها و توابعی که به دیتای valid شده مرحله data engineering بستگی داره, یک مثال خیلی خیلی ساده توی مراحل preprocessing فرض کنید تابعی داریم که outlier و ... رو حذف می‌کنیم
تستی که می‌نویسم اینه که اگر ورودی توزیع نرمال هست خروجی هم توزیع نرمال باشه
یا دیتا از ی حدی بیشتر imbalance نشه بیشتر از ی تعدادی outlier پیدا نشه وگرنه validation مرحله قبلی زیر سوال هست

در نهایت پارامتر‌های مدل و دقت و لاس و .... رو بررسی می‌کنم (توقع دارم اگر مدل تا حالا روی ۹۰٪ دقت بوده توی همین حدود بمونه، اشاره کنم بازم که دقت به تنهایی اصلا معیاری خوبی نیست)


خلاصه :
تست نویسی توی پروژه‌های هوش و هرجایی که به دیتای متغییر وابسته هست متفاوت می‌شه بطور کلی.

پ.ن : من اینجا از valid / test و ... که برای خروجی مدل هست و همه بلدش هستید صحبتی نکردم
چون سوال بنظرم ربطی به این موضوع نداشت.
👍192🥰1🎉1
توی تست‌هایی که تو یوتیوب دیدم از
Gpt-3
عملکرد بهتری داره روی سوال و جواب
Open source
و بر اساس T5 توسعه داده شده، جالب بود.

https://github.com/allenai/macaw
چقدر خوبه دنیای OpenSource,
شاید نهایتاً ۲ سال پیش بود که نیاز به ساخت Knowledge Graph داشتیم، چقدر زمان برد چقدر تحقیق لازم بود و واقعاً سخت بود.

حالا توی ۸ خط، تازه با print هاش

GitHub Link
👍8
Machine LearningData Science Interview_Cheat sheets.pdf
7.6 MB
Machine Learning/Data Science Interview_Cheat sheets.pdf

منبع :
LinkedIn Profile
👍5
این لینک خیلی خوب و عالی بود، اگر تازه از دانشگاه فارغ‌التحصیل شدید این لیست رو حتماً ببینید

اگر چندسال توی کار برنامه‌نویسی هستید، قطعاً و حتماً باید چک کنید که چقدر آشنایی با این لیست دارید

همه‌ی واجباتی که باید بدونید + آموزش از دانشگاه MIT


The Missing Semester of Your CS Education



منبع :
LinkedIn Profile
👍63🔥1
جمع خوبا جمع بوده، خروجیش این شده

ETH Zurich, Meta, KU Leuven


Github Link (VRT) Video Restoration Transformer
👍7
می‌دونستید، تعداد باگ‌های گذارش شده توی تنسورفلو از ۲۰۱۹ تا ۲۰۲۱ حدوداً ۱۵ برابر شده !؟

Youtube Link
👍1
Forwarded from فوتبال ۱۲۰
Media is too big
VIEW IN TELEGRAM
#آیتم_120
▶️ هوش مصنوعی در فوتبال؛ تکنولوژی‌های استعدادیاب
🎞 کیفیت بالا در آپارات
@Futball120
2
فوتبال ۱۲۰
#آیتم_120 ▶️ هوش مصنوعی در فوتبال؛ تکنولوژی‌های استعدادیاب 🎞 کیفیت بالا در آپارات @Futball120
اگر به فوتبال علاقه دارید این آیتم رو از دست ندید.

قبل از این از همچین روشی توی
NBA (BASKETBALL), HOCKEY, ....

استفاده شده بود، البته توی موضوع بسکتبال سیستم عملکرد بازیکن‌ها در کنارهم رو مقایسه و پیشنهاد رو بر این اساس میداد

اینبار موضوع استعدادیابی هست


نکته جالبتر که باید اضافه کنم (برای کارفرماهای ایرانی) :

اشتباهات میلیون دلاری این وسط هم خیلی مهمه، که خب خیلی از تیم‌ها (فوتبال و بسکتبال و ...) این موضوع رو درک می‌کنند
نکته :

اگر تو پروژه از Docker استفاده میکنید حتما multi-stage رو در نظر بگیرید
بخصوص وقتی قرار هست ابزار یا کد رو کامپایل هم بکنید.

#تجربه

فایل داکر برای golang حدود 1GB هست روی لینوکس و روی ویندوز به 5.5GB میرسه
مهم نیست کد چقدر بزرگ باشه برای کامپایل به همچین چیزی نیاز دارید؛ اگر single-stage docker ایجاد کنید حجم docker image بیشتر از حجم golang image میشه و خب خیلی زیاد هست مخصوصا وقتی کل سورس پروژه کمتر از 100MB هست.

همین رو اگر multi-stage کنید و کد رو روی stage قبلی کامپایل کنید و فقط نسخه کامپایل شده رو بردارید
توی لینوکس کمتر از 100MB و روی ویندوز کمتر از 300MB خواهد بود.


امنیتش هم بیشتر هست

خلاصه: چیزی که لازم ندارید رو بین لایه های ایمیج جابجا نکنید.