Dev Tweet – Telegram
Dev Tweet
850 subscribers
113 photos
15 videos
3 files
98 links
گعده‌ای در باب برنامه نویسی، پایتون، هوش مصنوعی و داده
Download Telegram
روش جدید عقده‌ای بازی😜 در تعیین نقش نویسنده در کار علمی
👎2🤯1
یک شاخه کار دیتاساینس هست تو دنیا که خیلی جذابه تو ایران هم هست، نمیدونم عنوان درستش چی میتونه باشه. من بهش میگم «دیتاساینس ژورنالیستی».
تم این کار بین بچه‌هایی که اقتصاد سنجی خوندن برجسته‌تر و رایج‌تره تا بچه‌های کامپیوتری.
از طریق دوستان میدونم در ایران مثلا «موسسه دنیا اقتصاد» تیم تحلیل داده داره. احتمالا اگر «اکوایران» رو دیده باشید بعضی از گزارشهای این چنینی رو منتشر میکنه.
چند روز پیش توی توئیتر به چندتا اکانت در خبرگزاریهای خارجی برخوردم مثلا توی بیوش زده «ستون‌نویس دپارتمان دیتای واشنگتن پست»
اکانت جالبیه اکثر محتواش خبرهایی تحلیلی داده است مثلا این پستش.
تو دنیا امروز دیگه آدمهای با سواد رو کمتر میشه با خبر خام بایاس کرد ولی با خبرهای تحلیلی چرا هنوز میشه!
👍3
دیزاین‌ها فیگما تولید شده از سند PRD!

توضیحات کاملتر
Dev Tweet
اگر شما تجربه خرید اشتراک رو دارید بنویسید از چه سرویسی استفاده می‌کنید راضی هستید یا نه. من خودم دارم متقاعد می‌شم برم اشتراک text.cortex رو بگیرم. بعدا توضیح میدم چرا.
اشتراک Poe.com: اقتصادی‌ترین راه برای استفاده از مدل‌های زبانی پیشرفته(تجربه شخصی)
ست:

بعد از چند هفته بررسی برای خریدن یک اشتراک به‌صرفه برای دسترسی به انواع مدل‌های هوش مصنوعی، باید اعلام کنم که poe.com بهترین، به‌صرفه‌ترین و خفن‌ترین اشتراک ممکن است!
سرویس‌های اشتراک مدل‌های زبانی از GPT-4 گرفته تا Claude و Gemini Advanced و موتورهای جستجو جدید مبتنی بر مدل زبانی مثل Perplexity و You.com همگی حدود ۱۸ تا ۲۰ دلار قیمت دارند.
من سرویس‌های خیلی زیادی را بررسی کردم اما!
هیچ‌کدام به پای سرویس Poe.com نمی‌رسند! چرا؟
۱. مدل هزینه‌ی اشتراک
به این صورت که بشه یک میلیون پوینت امتیاز می‌دهد و برای هر کوئری و سوالی که کاربر به آن مدل زبانی می‌دهد، هزینه‌ای از آن پوینت کم می‌کند.
برای اینکه ملموس باشد، این‌طوری بگویم قیمت اکانتش با دلار الان حدود یک میلیون و پانصد هزار تومان است.
یعنی هر پوینت Poe می‌شود ۱.۵ تومان!
مثلاً هر درخواست gpt-4o به اندازه ۳۰۰ پوینت هزینه دارد، یعنی شما برای هر درخواست به این مدل زبانی دارید ۴۵۰ تومان خرج می‌کنید.
مثلاً فکر کنم گران‌ترینش که Claude Opus با کانتکست ۲۰۰k است، ۳۰۰۰ پوینت، یعنی می‌شود ۴۵۰۰ تومان.
مثلاً فرض کنید یک مقاله بزرگ را می‌دهید به او و از او ۱۰ تا سوال می‌پرسید، می‌شود ۴۵ هزار تومان. به نظر برخی‌ها این عدد به اینکه گران‌ترین واقعاً می‌ارزد، فرض کنید یک مقاله بزرگ که دو سه روز طول می‌کشد بخوانید، نکات لازمش را دو سه ساعته یاد بگیرید، واقعاً می‌ارزد!

۲. تنوع مدل‌های زبانی
من هیچ سرویسی ندیدم این تنوع مدل زبانی را داشته باشد. حیرت‌انگیز است.
من اینجا لیست مهم‌ترین این مدل‌ها را جمع کردم.(حتما زوم کنید عکس رو ببیند یا از اینجا ببینید)
مدل‌هایی که پوشش می‌دهد دو دسته‌اند: یک سری مدل اشتراکی که شما باید پول بدهید و بخرید که بخواهید استفاده کنید، مثلاً ۲۰ دلار بدهید جی‌پی‌تی بخرید که از همه ظرفیتش هم نمی‌توانید استفاده کنید، پولتان هدر می‌رود.
یک سری مدل اپن‌سورس هم هست که مثل لاما-۳ که یا باید از یک سری سرویس رایگان مثل lab.perplexity.com استفاده کنید یا اینکه یک GPU در حد 4090 انویدیا داشته باشید که برای خودتان ران کنید.
این Poe.com همه انواع این دو دسته مدل را ساپورت می‌کند.
ساپورت خوبی از مدل‌های کمتر شناخته شده مثل deepseek دارد و همچنین مدل زبانی چینی Qwen.
یا مدل‌های کمتر شناخته‌ای که در بنچمارک‌ها می‌بینید، مثل Command-R.
همچنین ساپورت خیلی خوبی از مدل‌های مولد تصویر مثل DALL-E, Playground و Stable Diffusion و Ideogram دارد.
👍6
Dev Tweet
اشتراک Poe.com: اقتصادی‌ترین راه برای استفاده از مدل‌های زبانی پیشرفته(تجربه شخصی) ست: بعد از چند هفته بررسی برای خریدن یک اشتراک به‌صرفه برای دسترسی به انواع مدل‌های هوش مصنوعی، باید اعلام کنم که poe.com بهترین، به‌صرفه‌ترین و خفن‌ترین اشتراک ممکن است! سرویس‌های…
یک نکته ای حسب تجربه خودم بگم اینکه من فکر میکردم چقدر این یک میلیون پوینتی که میده کمه!
مثلا تهش میشه باهاش در طول یک ماه 3000 تا درخواست به gpt-4o زد! این که چیزی نیست!
ولی الان که نزدیک یک هفته است دارم استفاده میکنم بهتون میگم خیلیه!
و حتی منی که از این سرویس خیلی خیلی استفاده میکنم خیلی بعیده تا ته ماه بتونم همه یک میلیون پوینتش رو هزینه کنم.

یک نکته دیگه، در یک برآورد سر انگشتی دارید یک ساله حدود ۱۸ میلیون تومن خرج این بات میشه که میتونید با دوستاتون اشتراکی استفاده کنید نصف بشه.
اگر فکر میکنید که مثلا ۳۰ درصد از وقت تحصیلی و کاری‌تون در یک سال اینقدر می ارزه حتما بخریدش چون به نظرم اقلا ۳۰ درصد بهره‌وری محقق و برنامه‌نویس رو بالا می‌بره به شرطی که بلد باشید درست استفاده کنید.


خودش هم چند تا قابلیت جذاب داره وبش یکی‌ش اینیه که تو عکس میذارم. فرض کنید یه سوال رو از gpt-4o پرسیدید خوب جواب نداده یا میخواهید جوابش رو از یک بات دیگه هم بپرسید که خودش برای این باتها رو پیشنهاد میده . مطابق عکس.
2👍2👏1
Dev Tweet
اشتراک Poe.com: اقتصادی‌ترین راه برای استفاده از مدل‌های زبانی پیشرفته(تجربه شخصی) ست: بعد از چند هفته بررسی برای خریدن یک اشتراک به‌صرفه برای دسترسی به انواع مدل‌های هوش مصنوعی، باید اعلام کنم که poe.com بهترین، به‌صرفه‌ترین و خفن‌ترین اشتراک ممکن است! سرویس‌های…
یه نکته دیگه اضافه کنم این Poe.com مثه سرویسهای دیگه یه شرکت استارت آپی نیست! برای شرکت Quoraاست که قطعا میشناسید و استفاده کردید ازش(ورژن انگلیسی نی‌نی سایت 😂😂)که واسه دو تا کارمند سابق فیس بوکه بیش از ۲۰۰ تا کارمند داره ارزشش نزدیک دو میلیارد دلاره!
👍4
فرمتینگ مناسب در پایتون (تجربه)
همیشه برام دغدغه بود که چه فرمتر (formatter) یا ابزار فرمت‌بندی کد رو برای پروژه‌های پایتون (Python) انتخاب کنم. فرمترها ابزارهایی هستند که کد منبع را مطابق با دستورالعمل‌های استایل خاصی تجزیه و تحلیل و بازنویسی می‌کنند تا خوانایی و یکنواختی کد افزایش پیدا کنه. این ابزارها به ما کمک می‌کنند تا اطمینان حاصل کنیم که کد ما نه تنها درست کار می‌کند، بلکه به زیبایی و به شکل استاندارد نوشته شده. برای پایتون سه تا formatter اصلی وجود داره.همیشه بین این سه گزینه گیر می‌کردم: Black، autopep8، و YAPF. هر بار در پروژه‌های یکی رو انتخاب می‌کردم ولی یه بار رفتم اساسی بررسی کردم اینا چه تفاوتهایی دارن. هر کدوم قابلیت‌ها و ویژگی‌های منحصر به فرد خودشون رو دارند و انتخاب بین این‌ها واقعا سخته. اما بزارید یه نگاه دقیق‌تر به هر کدوم بندازیم:

1. Black
فرمتر Black به شدت خودکار و بی‌طرفانه (opinionated) عمل می‌کنه. این فرمتر با اینکه خیلی سفت و سخته (uncompromising)، ولی به خاطر همین خصوصیتش خیلی هم محبوب شده. نظم خاصی به کد می‌ده و تقریبا هیچ جایی برای بحث و جدل در مورد سبک کدنویسی باقی نمی‌ذاره. ویژگی بارزش بخاطر این سختی‌گیری نسبت به yapf متعین(deterministic) بودنشه یعنی اگر روی یک کد اجرا کنی حتما به یک شکل مشخص در میاره. برای یک کد چند تا حالت مختلف رو به عنوان حالت معتبر از نظر فرمت در نظر نمی‌گیره ولی yapf اینطوری نیست جلوتر توضیح میدم.
یک مشکل بزرگ داره انعطاف‌پذیری کمی داره (less flexible) و شاید برای پروژه‌هایی که نیاز به سبک خاصی دارند مناسب نباشه.

2. autopep8
فرمتر autopep8 دقیقا روی استانداردهای PEP 8 (PEP 8) تمرکز داره. این فرمتر کدها رو به شکلی استاندارد و خوانا (readable) درمیاره ولی فقط مطابق autopep8. کد را آنالیز می‌کند و خطاهای استایل را اصلاح می‌کند تا با استانداردهای PEP 8 همخوانی داشته باشد.
گاهی اوقات نمی‌تونه به اندازه Black یا YAPF انعطاف‌پذیر باشه (not as flexible) و ولی تعداد قوانین‌ش به اندازه‌ی black‌ زیاد نیست.
معنی انعطاف پذیر بودنش اینه که اگر یک کدی با black فرمت شده باشه اینقدر قوانین خیلی سفت و سختی داره (strict rules) که قوانین Autopep هم درش رعایت شده مثلا PEP8 میگه طول خط از 79 بیشتر نشه ولی black میاد اینقدر طول خط رو کوتاه میکنه که از 79 خیلی کمتر و قواعد هر دو تا استاندارد رو پاس میکنه.

3. YAPF
فرمتر YAPF خیلی قابل تنظیم و انعطاف‌پذیره (highly configurable). این فرمتر بر اساس یک پروفایلی که شما تعیین می‌کنید، کد رو فرمت می‌کنه. YAPF کد را بازبینی کرده و بر اساس پروفایل تعیین شده تغییرات لازم را اعمال می‌کند تا کد هم خوانا و هم زیبا باشد.
اگر دنبال سفارشی‌سازی د
دقیق فرمت کدتان هستید (customization)، YAPF انتخاب خوبیه. خصوصا توی پروژه‌ها. البته اگر کسی باشه بشینه استاندارهای فرمت رو همه رو کانفیگ کنه.اما گاهی اوقات تنظیمات می‌تونه خیلی پیچیده بشه (complex configuration) و این ممکنه باعث سردرگمی شود.
خیلی ساده بخوام بگم YAPF بیشتر یک ابزار کانفیگ فرمته تا فرمتر با قواعد مشخص! یعنی میتونی یه جوری کانفیگ کنی که خروجی بشه مثه خروجی هر کدوم از دوتا قبلی، میتونی هم طوری کانفیگ کنی که اصلا هیچ شبیه دو تا قبلی نشه.


چند تا قطعه کد ببنید یه کم حس بگیرید به حرفام:
این کد رو در نظر بگیرید که فرمت خیلی بدی داره:
def compute(value1,value2,value3):return value1+value2+value3

Formatted by autopep8
def compute(value1, value2, value3): return value1 + value2 + value3

Formatted by Black
def compute(value1, value2, value3):
return value1 + value2 + value3

اما اینکه میگم به جز black اون دو تا دیگه متعین نیستن مثالش اینطوریه که فرض کنید کد ورودی این سه تا باشه. در این صورت با اینکه تابع یک چیزه ولی هر سه تا اینا قواعد YAPF رو رعایت کرد و هر سه تا میتونه تو پروژه باشه!

def function(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10):
print(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10)

def function(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10):
print(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10)

def function(
arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10):
print(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10)


طبق تجربه میگم اگر گیت در پروژه تون نقش پررنگی داره قواعد فرمتیگ رو همون اول ست کنید وسط پروژه اعمال کردن فرمت شدیدا روی مرج کانفلیکت میده!
قواعد black به نظر من از جهت deterministic بودن خیلی خوبن ولی در زمینه‌ی طول خط خیلی کوتاه و سختگیرانه است.

تجربه شما چیه؟
👍9
استفاده از llm در پزشکی
سوتی رو گرفتی؟
👍3👎1
نظر نامحبوب(تجربه):

چت بات Gemini-Pro عملکردش شانه به شانه‌ی GPT-4 بعضی جاها بهتره حتی!
حتی اگر یک کدی رو با GPT-4 زدید یا دیباگ کردید بد نیست اگه دسترسی دارید به Gemni-Pro هم بدید.
این دو باید در طول کانتکس بالا هم باید مقایسه بشن که فعلا من خیلی تجربه نکردم. اگر این مقایسه رو انجام دادم با شما در میون میذارم.

محبوبیت کمتر Gemini بخاطر کار مارکتینگ و بازریابی غلطشه! زمانی که GPT-4 منتشر شد گوگل چت بات آشغال PaLM-2 رو عرضه کرد هر کسی استفاده کرد پشیمون شد. مشکل دوم گوگل این بود که Gemni-Pro رو یکسال بعد که منتشر کرد واقعا چیز بهتری از GPT-4‌ نبود دیگه بقیه انتظار نداشتن بعد از یکسال تازه یه چیزی در حد همون GPT-4 بیرون بده اگر چه خود OpenAI هم شق القمری نکرده بود و هنوزم از یک سال و نیم پیش که GPT-4 رو عرضه کرده پیشرفت ویژه‌ای نداشته.
مزیت فعلی GPT-4 به Gemini-Pro به نظر من فعلا فضل تقدم و محبوبیت بیشتره همین!
👍2
Dev Tweet
نظر نامحبوب(تجربه): چت بات Gemini-Pro عملکردش شانه به شانه‌ی GPT-4 بعضی جاها بهتره حتی! حتی اگر یک کدی رو با GPT-4 زدید یا دیباگ کردید بد نیست اگه دسترسی دارید به Gemni-Pro هم بدید. این دو باید در طول کانتکس بالا هم باید مقایسه بشن که فعلا من خیلی تجربه نکردم.…
یک مزیت دیگه Gemni که من کاملا حس کردم نسخه Gemini-Flash هست که در بین مدلهای بزرگ بیشترین سرعت رو با یک مقدار عملکرد ضعیف‌تر میده ولی این افزایش سرعت اینقدر قابل توجه که واقعا کاهش عملکردش اصلا به چشم نمیاد.
برای متون طولانی کاملا Gemini-Flash-128K بر هر مدلی ترجیح داره.
Forwarded from DevTweet Chat
حتی دو تا نکته جالب بگم:
دیروز توی بنچمارکی دیدم که Gemni-Flash که مدل خیلی سریع و ارزانیه حتی از Claude-Opus هم بهتره!
من کاملا این رو تجربه کردم واقعا Anthropic در مدل Pro از گوگل و OpenAI خیلی عقب مونده چون حتی GPT-4o و Gemni-Flash هم از Claude-Opus بهترن چه برسه به GPT-4 و Gemni-Pro
و نکته دوم اینکه
اگه اشتراک پولی Gemni رو بخرید گوگل بهتون ماهی دو ترابایت دیسک Google Drive میده
یه چند سالی هست عناوین مقاله اینطوری زیاد دیده میشه که رسما با عنوان مقاله کار تبلیغاتی و برندینگ می‌کنند و بعضا جواب هم میده!
مثلا همین مقاله رو که دیدم تا صفحه اولش رو کامل خوندم و ایده‌ش رو گرفتن چرا میگه bullshit!
ولی به نظرم این رویه جالبی نیست که این مقالات از peer review در میان!
آخه bullshit!! در عنوان و کلمات کلیدی مقاله!🤯
این کار هیچ کارکردی جز impression گرفتن نداره!
👍6
مسخره‌بازی!
این خانم یکی از مدیران OpenAI هست.
...
لابد GPT-6 هم در حد Post-Doc
و GPT-7 هم در حد Faculty هست
و GPT-8 هم در حد Tenure Faculty !
🤣10👍1🥰1
تعالی در AI!
بحثی مهم و پرمناقشه‌ای در هوش مصنوعی هست که می‌گوید آیا می‌شود که یک مدل یادگیری ماشین خودش از داده‌هایی که در اختیارش قرار می‌گیرد استفاده کند و به دانشی فراتر از دانش درون داده‌هایی ورودی دست پیدا کند، به این مفهوم پشت سر گذاشتن دانش درون داده ورودی تعالی (Transcendence) می‌گن، تعالی به معنی ارتقا یافتن از دانش درون داده ورودی است. این پدیده در مورد انسان عجیب نیست مثلا شاگردی از استاد خود در دانشی پیشی بگیرد حتی بدون اینکه به منبع متفاوتی از دانش و معرفتِ استادِ خودش متصل بشه چون ذهن انسان قادر به تولید دانش(knowledge) و بصیرت(insight) است و در مورد هوش مصنوعی این همواره مورد سوال بوده.

این مقاله برای چند وقت پیشه ولی از اهمیتش همین بگم که حتی در توئیتر مورد توجه Ian Goodfellow خالق GAN و ایلان ماسک هم قرار گرفت. تیم اصلی مقاله برای دانشگاه هاروارده. مقاله موضوع تعالی را حول مساله‌ی یادگیری مدل زبانی از بازی شطرنج می‌چیند.

تصور کنید که شما یک مدل زبانی را آموزش داده‌اید تا فقط با استفاده از خلاصه‌های بازی‌های شطرنج بازیکنانی که رتبه‌شان تا ۱۰۰۰ ایلو (Elo) است، شطرنج بازی کند(ایلو یک سیستم رتبه‌بندی است که برای اندازه‌گیری مهارت بازیکنان در بازی‌های رقابتی مثل شطرنج استفاده می‌شود). حالا، آیا ممکن است این مدل بتواند بهتر از ایلو ۱۰۰۰ بازی کند؟ یعنی آیا می‌تواند عملکرد داده‌های آموزشی خود را "پشت سر بگذارد"؟

این مقاله نشان می‌دهد که این امکان‌پذیر است که یک مدل بر اساس بازی‌های با رتبه ۱۰۰۰ ایلو آموزش ببنید و به مدلی دست یابد که می‌تواند در سطح ۱۵۰۰ ایلو بازی کند! این یعنی تعالی مدل بر آموزش‌ش. جایی که یک مدل تولیدی توانایی‌هایی را نشان می‌دهد که فراتر از توانایی‌های کارشناسانی است که داده‌های آن را تولید کرده‌اند.

نویسندگان این مقاله با استفاده از چهارچوب نظری دقیق و مشخص، این موضوع را به "تجمع یادگیرندگان ضعیف" (Ensembling Weak Learners) ربط می‌دهند. در این رویکرد، با میانگین‌گیری از خطاهای مستقل چندین مدل کوچک و ضعیف‌تر، یک نتیجه قوی‌تر حاصل می‌شود که می‌تواند اشتباهات فردی را "پاک‌سازی" کند (Denoising) و به نتایج دقیق‌تری برسد. این مفهوم یادگیری تجمعی ضعیف مطلب جدیدی نیست قبلا در بحث درخت‌های تصادفی Random Forestها کاربرد بحث Bootstrap Aggregation یا همون Bagging رو به عنوان یک یادگیری تجمعی ضعیف دیدید.

این مقاله تاکید دارد که برای رخ دادن این "تعالی"، نیاز به تنوع کافی داده‌ها و نمونه‌برداری دقیق دمایی (Temperature Sampling) است. "نمونه‌برداری دما" یک فرآیند است که در آن میزان تصادفی بودن تصمیمات مدل را تنظیم می‌کنیم؛ دمای پایین‌تر باعث می‌شود که مدل بر روی گزینه‌های با احتمال بیشتر، بیشتر تمرکز کند و کمتر به سمت گزینه‌های کم احتمال برود.
در راستای این تحقیقات، مدلی به نام ChessFormer توسعه یافته که توانسته است به چنین تعالی دست یابد. ChessFormer، که به طور خاص برای بازی شطرنج طراحی شده، تنها با داده‌هایی از بازیکنان با رتبه حداکثر ۱۰۰۰ ایلو آموزش دیده است. با این حال، قابلیت‌های این مدل به قدری پیشرفته بوده که توانسته است در سطوحی بالاتر از ۱۵۰۰ ایلو عملکرد نشان دهد، که این خود بیانگر دستیابی به سطحی از مهارت است که فراتر از تمام بازیکنان موجود در دیتاست آموزشی آن است.

این پیشرفت شگفت‌انگیز به خاطر بهره‌گیری از تکنیک‌های "نمونه‌برداری دما" با دمای پایین و تاکید بر تنوع داده‌ها ممکن شده است. نمونه‌برداری دما به ChessFormer اجازه می‌دهد تا تصمیمات دقیق‌تری بگیرد، به این معنی که مدل تمایل دارد تا از حرکات با احتمال بالای پیروزی استفاده کند و از حرکات کم‌بازده دوری کند. این استراتژی به‌ویژه در موقعیت‌های کلیدی بازی که تعیین‌کننده نتیجه هستند، تأثیر بسزایی دارد.
تأکید بر تنوع داده‌ها اقتضای اصلی تحقق تعالی است تا مدل با دیدن یک مجموعه گسترده‌ای از سناریوها و استراتژی‌ها، دانش لازم برای مواجهه با طیف وسیعی از شرایط مختلف را یاد بگیره و در عمل از "خرد جمعی" بازیکنان مختلف بهره‌مند بشه تا به نتایج بهتری نسبت به عملکرد هر بازیکن به تنهایی برسه.

اهمیت مدلی مثه ChessFormer اینه که درک ما از مرزهای دانش و توانایی‌های هوش مصنوعی را عوض می‌کند وقتی بدانیم پتانسیل فراتر رفتن از محدودیت‌های داده‌های آموزشی در هوش مصنوعی وجود داره هدف‌ گذاری‌هامون برای توسعه هوش مصنوعی شکل متفاوتی می‌گیره.
👍41
وقتی یک برنامه مینویسیم، برای داشتن دید جزئی‌تر از اجرای برنامه و منابع در حین اجرا میریم سراغ پروفایلینگ (Profiling)

درپایتون ابزار Memray یک memory profiler خوبه
https://github.com/bloomberg/memray
امکانات قابل توجهی داره

@DevTwitter | <MehrdadLinux/>
DevTwitter | توییت برنامه نویسی
وقتی یک برنامه مینویسیم، برای داشتن دید جزئی‌تر از اجرای برنامه و منابع در حین اجرا میریم سراغ پروفایلینگ (Profiling) درپایتون ابزار Memray یک memory profiler خوبه https://github.com/bloomberg/memray امکانات قابل توجهی داره @DevTwitter | <MehrdadLinux/>
به به چه ابزاری❤️!
کار دیتایی تو پایتون کرده باشین بسیار دیدین که نشت حافظه اتفاق می‌افته یا مثلا یک پایپلاین از فانکشن‌ها پشت سر هم روی یک داده فراخوانی میشه براتون مهمه بدونید که هر کدوم از فانکشن‌ها چقدر حافظه مصرف می‌کنند که اگه بعدا خواستید موازی‌سازی کنید بدونید چندتا instance از برنامه رو میتونید موازی اجرا کنید یا مثلا اگر برنامه‌تون مولتی‌ترد هست و یک دفعه کرش می‌کنه مانیتور کنید کدوم تابع منجر به کرش حافظه میشه.
شما برای همه‌ی این‌ها به یک memory profiler نیاز داشتید که یا بصورت یک پکیج پایتون بود یا اینکه خودتون با دیزاین پترن دکوریتور پیاده‌سازی‌ش می‌کردید.
مشکل اینجا بود که باید برای تک‌تک فانکشنهایی می‌خواستید در تمیزترین حالت دکوریتور ست می‌کردید.
گاهی لازم میشه یک مانیتورینگ سنگین روی یک محصول پروداکشن یا یک سرویس تست پیچیده راه بندازید که تاریخچه مصرف حافظه رو نگه‌ دارید اونجا مجبورید کد بزنید ولی واسه‌ کارهای دم دستی در این آپ لینوکسی که فقط هم روی لینوکس و مک جواب میده شبیه htop که مصرف حافظه و پردازنده رو به ازای هر پراسس بصورت لحظه‌ای نشون میده این ابزار مصرف حافظه رو به ازای هر فانکشن نشون میده.
👍5
Dev Tweet
به به چه ابزاری❤️! کار دیتایی تو پایتون کرده باشین بسیار دیدین که نشت حافظه اتفاق می‌افته یا مثلا یک پایپلاین از فانکشن‌ها پشت سر هم روی یک داده فراخوانی میشه براتون مهمه بدونید که هر کدوم از فانکشن‌ها چقدر حافظه مصرف می‌کنند که اگه بعدا خواستید موازی‌سازی…
ولی همچنان یک چالش رو جواب نمیده!
مموری پروفایل واسه دونستن مصرف لحظه‌ای حافظه خیلی ارزشی نداره! معمولا ارزشش به اینه که بدونید یک تابع در طول اجرائش حداکثر حافظه‌ای که استفاده می‌کنه چقدره. واسه اینکار من هنوز یک راه‌حل آماده پیدا نکردم. حتی با کد از داخل برنامه‌ هم نمی‌تونید این پروفایلینگ رو انجام بدید چون مثلا فرض کنید یک داده خاصی مثه nii.gz یک گیگی رو میخواید لود کنید یک خط از کد شما این داده رو لود می‌کنه ولی خود این لودر حین اجرائش مصرفش از صفر بایت حافظه شروع می‌شه به مصرف یک گیگ می‌رسه(اگر فرض کنیم داده nii.gz در دیسک و مموری یک حجم برابر اشغال میکنه یعنی وقتی تو حافظه لود میشه جای بیشتری نمیگیره) اما ممکنه حین لودش مثلا یک گیگ و بیست مگ حافظه استفاده کنه بعد از پایان لود به حافظه یک گیگ برسه یعنی میخوام بگم در خیلی از موارد اصلا اینطوری نیست مصرف حافظه قبل و بعد از اجرای یک تابع رو حساب کنید بعد از هم کم کنید حداکثر مصرف رو به دست می‌میارید، نه اصلا اینطور نیست! ممکنه حین اجرائش پردازشی انجام بده که نیاز به حافظه زیاد داره ولی در اخر استیتی رو return میکنه که کم حافظه‌تره. در این موارد دیگه اون پترن دیکوریتور جواب نمیده! حتی لاگ کردن تاریخچه مصرف حافظه، ترسیم تاریخچه‌ها جوابگو نیست چون ریزدانگی کافی رو نداره چون لحظه‌ای نیست خط به خطه.
این اپ لینوکسی که معرفی کردم چون داره از بیرون برنامه حافظه رو مانیتور و پروفایل می‌کنه میتونه تغییرات مصرف حافظه نه تنها قبل و بعد از اجرا هر فانکشن بلکه حین اجرای اون رو هم پروفایل کنه ولی هنوز کار ساز نیست! چون ثبت نمیشه که بتونیم حداکثر مصرف اون تابع رو بدونیم حالا باید بگردیم ببینم این اپ کامندلاین بهمون api واسه ثبت لحظه‌ای حافظه در فایل میده که ازش حداکثر حافظه رو بیرون بکشیم اگه بده مشکل حله! چون میتونه مستقیم به خود اپ bind بشه و فقط اپ پایتونی رو پروفایل کنه.
👍4
از اهمیت مدل جدید 405 میلیارد پارامتری جدید شرکت متا یعنی Llama3.1 همین بس که داره کپ فاصله‌ی بین مدل‌های متن-بسته(closed-source) و وزن-باز(مدلهایی که وزن‌شان را به همراه کد منتشر می‌کنند) رو از بین می‌بره.
همین این اتفاقات تقریبا در یک سال افتاده از آپریل 2023 که جولای 2024
باید منتظر باشیم ببنیم آیا به نقطه‌ای می‌رسید که خط قرمز و سبز به هم بخورن و خط قرمز از خط سبز عبور کنه!؟ صد البته که خیلی بعیده مخصوصا با این زیرساخت افسانه‌ای که شرکت xAI ایلان ماسک برای مدل جدیدش راه انداخته!
👍2