آزادی و تحمل: بازگشت به مدرنیسم
پرده اول: اعتراضات گسترده ی چند روز اخیر به کشیدن تصویر کاریکاتور پیامبر اسلام باز هم سوالات زیادی در ذهن ایجاد کرده است. اینکه چرا این دعوا پایانی ندارد؟ آیا توهین حق زندگی در یک جامعه ی آزاد است؟ و چرا فرانسه نوک پیکان حمله ی اسلام گرایان هست؟ تضاد پنهانی که ریشه در تاریخ و فلسفه ای دارد که غرب را گاه در برابر مذهب قرار می دهد.
پرده دوم: امسال مانند سال های پیش ویدئویی در فضای مجازی پخش شده از ایرانیانی که در تورنتو کانادا در حال عزاداری محرم هستند. در همین حین عده ای دیگر تا جای ممکن به آنها نزدیک شده و با پخش موسیقی شاد با صدای بسیار بلند طوری که صدای عزاداری شنیده نمی شد، سعی در مختل کردن عزاداری داشتند. قطعا این افراد با برنامه به آنجا رفته بودند و سعی کرده بودند همه چیز از آهنگ و بلندگو را آماده کنند تا بتوانند تا جای ممکن به هدف خود برسند. این کار حتی به درگیری فیزیکی منجر شده بود که با دخالت پلیس خاتمه یافته بود. کاری با حدس ها و گمان ها از این که این افراد چرا چنین کاری کردند نداریم اما این مثال از یک جهت جالب است. بسیاری از افرادی که در این جریان شرکت کرده بودند خود سالها قربانی "عدم آزادی" بودند اما اکنون در شرایطی که در محیطی "آزاد" قرار گرفته اند اصولا باید قدر آن را بدانند و به آن «احترام» بگذارند. اما چه اتفاقی می افتد؟
همواره هنگامی که تضادی بوجود می آید که منجر به انتقام، سرکوب یا حذف فیزیکی فرد یا گروهی توسط معتقدان به تفکر یا کیشی خاص در قدرت می شود، اولین موضوعی که رسانه ها از آن صحبت به میان می آورند بحث "آزادی" یا به طور خاص تر "آزادی بیان" است. تقریبا همه جا پر است از اینکه چرا شرایط سیاسی حاکم بر منطقه یا کشوری خاص "آزادی" را محدود می کند. تمامی این جریانات به نحوی شکل می گیرند که تصور همگانی از مشکلات نبود "آزادی" است. شعرها در باب آزادی سروده می شود و میدان ها به اسم آن می گذارند. صد البته که مفهوم "آزادی" برای یک جامعه پیشرو مفهومی کلیدی و اساسی است و قطعا ایده آل هر جامعه ای رسیدن به چنین آزادی ای است. اما صرف خواستن چیزی به معنی دانستن نحوه رسیدن به آن نیست.
بخشی از پیچیده بودن مسئله به روانشناسی بشر در بستر زندگی اجتماعی بر می گردد. برخلاف دیگر حیوانات که تمام برخورد هایشان بر سر قلمرو، غذا و جفت است بشر به طرز عجیبی نسبت به باورهایش حساس است تا جایی که حاضر است همه چیز را فدای آن کند!
ادامه
پرده اول: اعتراضات گسترده ی چند روز اخیر به کشیدن تصویر کاریکاتور پیامبر اسلام باز هم سوالات زیادی در ذهن ایجاد کرده است. اینکه چرا این دعوا پایانی ندارد؟ آیا توهین حق زندگی در یک جامعه ی آزاد است؟ و چرا فرانسه نوک پیکان حمله ی اسلام گرایان هست؟ تضاد پنهانی که ریشه در تاریخ و فلسفه ای دارد که غرب را گاه در برابر مذهب قرار می دهد.
پرده دوم: امسال مانند سال های پیش ویدئویی در فضای مجازی پخش شده از ایرانیانی که در تورنتو کانادا در حال عزاداری محرم هستند. در همین حین عده ای دیگر تا جای ممکن به آنها نزدیک شده و با پخش موسیقی شاد با صدای بسیار بلند طوری که صدای عزاداری شنیده نمی شد، سعی در مختل کردن عزاداری داشتند. قطعا این افراد با برنامه به آنجا رفته بودند و سعی کرده بودند همه چیز از آهنگ و بلندگو را آماده کنند تا بتوانند تا جای ممکن به هدف خود برسند. این کار حتی به درگیری فیزیکی منجر شده بود که با دخالت پلیس خاتمه یافته بود. کاری با حدس ها و گمان ها از این که این افراد چرا چنین کاری کردند نداریم اما این مثال از یک جهت جالب است. بسیاری از افرادی که در این جریان شرکت کرده بودند خود سالها قربانی "عدم آزادی" بودند اما اکنون در شرایطی که در محیطی "آزاد" قرار گرفته اند اصولا باید قدر آن را بدانند و به آن «احترام» بگذارند. اما چه اتفاقی می افتد؟
همواره هنگامی که تضادی بوجود می آید که منجر به انتقام، سرکوب یا حذف فیزیکی فرد یا گروهی توسط معتقدان به تفکر یا کیشی خاص در قدرت می شود، اولین موضوعی که رسانه ها از آن صحبت به میان می آورند بحث "آزادی" یا به طور خاص تر "آزادی بیان" است. تقریبا همه جا پر است از اینکه چرا شرایط سیاسی حاکم بر منطقه یا کشوری خاص "آزادی" را محدود می کند. تمامی این جریانات به نحوی شکل می گیرند که تصور همگانی از مشکلات نبود "آزادی" است. شعرها در باب آزادی سروده می شود و میدان ها به اسم آن می گذارند. صد البته که مفهوم "آزادی" برای یک جامعه پیشرو مفهومی کلیدی و اساسی است و قطعا ایده آل هر جامعه ای رسیدن به چنین آزادی ای است. اما صرف خواستن چیزی به معنی دانستن نحوه رسیدن به آن نیست.
بخشی از پیچیده بودن مسئله به روانشناسی بشر در بستر زندگی اجتماعی بر می گردد. برخلاف دیگر حیوانات که تمام برخورد هایشان بر سر قلمرو، غذا و جفت است بشر به طرز عجیبی نسبت به باورهایش حساس است تا جایی که حاضر است همه چیز را فدای آن کند!
ادامه
ویرگول
آزادی و تحمل: بازگشت به مدرنیسم
امسال مانند سال های پیش ویدئویی در فضای مجازی پخش شده از ایرانیانی که در تورنتو کانادا در حال عزاداری محرم هستند در همین حین عده ای دیگر ت…
This media is not supported in your browser
VIEW IN TELEGRAM
شرکت huggingface اولین مدل پرسش و پاسخ دیداری (Visual Question Answering ) خود را بر روی ریپوی محبوب transformers منتشر کرد. این قدم بزرگی برای ایجاد امکانات بیشتر برای توسعه مدل های زبانی درگیر با تصویر و بقیه منابع اطلاعاتی است.
کولب برای تست (بدون نصب هیچ چیز خاصی)
کولب برای تست (بدون نصب هیچ چیز خاصی)
مقاله نامپای (Numpy) چاپ شد
این مقاله یک مقاله بسیار خوش خوان و حتی برای کسانی که تاریخ و کاربرد نامپای را نمی دانند بسیار مفید است.
برنامه نویسی آرایه ای که نامپای به پایتون معرفی کرد اساس تقریبا تمام کتابخانه های سطح بالاتر از scipy و matplotlib تا tensorflow و pytorch شد.
نامپای نقش بسیار پر رنگی در بزرگترین اکتشافات علمی یک دهه پیش داشته. نامپای کتابخانه ای بود که با کمک آن اولین موج های گرانشی شناسایی شدند و اولین تصویر سیاهچاله به دست آمد.
همچنین نامپای موتور مرکزی تمام کتابخانه هایی است که انقلاب دیپ لرنینگ را رقم زد و تقریبا هر تکنولوژی هوش مصنوعی که میبینیم به آن وابسته ست.
لینک مقاله
این مقاله یک مقاله بسیار خوش خوان و حتی برای کسانی که تاریخ و کاربرد نامپای را نمی دانند بسیار مفید است.
برنامه نویسی آرایه ای که نامپای به پایتون معرفی کرد اساس تقریبا تمام کتابخانه های سطح بالاتر از scipy و matplotlib تا tensorflow و pytorch شد.
نامپای نقش بسیار پر رنگی در بزرگترین اکتشافات علمی یک دهه پیش داشته. نامپای کتابخانه ای بود که با کمک آن اولین موج های گرانشی شناسایی شدند و اولین تصویر سیاهچاله به دست آمد.
همچنین نامپای موتور مرکزی تمام کتابخانه هایی است که انقلاب دیپ لرنینگ را رقم زد و تقریبا هر تکنولوژی هوش مصنوعی که میبینیم به آن وابسته ست.
لینک مقاله
ComplexityExplained[Farsi].pdf
5.7 MB
«در اتـم کربـن هیـچ عشقـی وجود ندارد، هیـچ طوفانـی در یک مولکول آب نیسـت، هیـچ فروپاشـی مالـی در یـک اسکناس دلار نیست.»
– پیتر دادز
کتابچه «شرح پیچیدگی» (ترجمه شده به فارسی) یک توضیح بسیار زیبا و مختصر از دانشی است که به اعتقاد هاوکینگ علم اصلی قرن پیش رو است. مطالعه سیستم های پیچیده از مغز گرفته تا هوش مصنوعی و بازارهای مالی همه و همه در این علم مطالعه می شوند.
لینک به وبسایت
وبسایت دیگری در مورد پیچیدگی
– پیتر دادز
کتابچه «شرح پیچیدگی» (ترجمه شده به فارسی) یک توضیح بسیار زیبا و مختصر از دانشی است که به اعتقاد هاوکینگ علم اصلی قرن پیش رو است. مطالعه سیستم های پیچیده از مغز گرفته تا هوش مصنوعی و بازارهای مالی همه و همه در این علم مطالعه می شوند.
لینک به وبسایت
وبسایت دیگری در مورد پیچیدگی
یکی از سخت ترین مراحل مقاله نوشتن یا هر نوشته علمی فرمول نویسی ست که بسیار طاقت فرساست. از طرفی نوشتن این فرمول ها بر روی کاغذ خیلی راحت است. ابزاری که استفاده میکنم و به بقیه هم بشدت توصیه میکنم در لینک زیر پیدا میکنید.
(خطاهای کوچکی هم میبینید به راحتی با یک دست خط بهتر 😁 یا اصلاح فرمول لاتک قابل حل هستند)
https://mathpix.com/
(خطاهای کوچکی هم میبینید به راحتی با یک دست خط بهتر 😁 یا اصلاح فرمول لاتک قابل حل هستند)
https://mathpix.com/
بدون شک مهمترین معماری شبکه ی عصبی دهه دوم این قرن در حوزه یادگیری ماشین transformers ها هستند (دهه اول دهه کانولوشن هاست). این معماری جدید آنقدر موفق عمل کرده است که منجر به ساختن قدرتمند ترین هوش مصنوعی حال حاضر یعنی gpt3 شده و کاربردهای آن حتی به حوزه پردازش تصویر رسیده است. بدون ترنسفورمر ها پردازش زبان طبیعی هنوز با مسایل بسیاری درگیر بود.
با اینکه مطالب بسیار زیادی در مورد این معماری نوشته شده است هنوز درک درستی از آن نداریم. نه به این خاطر که این معماری خودش پیچیده است بلکه به این خاطر که نمیدانیم چرا ساختار attention در آن خوب عمل میکند. به شخصه برای مدت ها برای من سوال بود که چرا اسم گذاری query key و value وجود دارد!
در این پست سعی کرده ام یافته های خودم را که از مطالعات گوناگون به دست آورده ام دسته بندی کنم و تاریخچه ای که پشت این مفهوم است را بررسی کنم و اصلا بفهمیم attention از کجا آمده و چرا اینقدر مهم است.
(پست به انگلیسی)
https://link.medium.com/GagdWVr529
با اینکه مطالب بسیار زیادی در مورد این معماری نوشته شده است هنوز درک درستی از آن نداریم. نه به این خاطر که این معماری خودش پیچیده است بلکه به این خاطر که نمیدانیم چرا ساختار attention در آن خوب عمل میکند. به شخصه برای مدت ها برای من سوال بود که چرا اسم گذاری query key و value وجود دارد!
در این پست سعی کرده ام یافته های خودم را که از مطالعات گوناگون به دست آورده ام دسته بندی کنم و تاریخچه ای که پشت این مفهوم است را بررسی کنم و اصلا بفهمیم attention از کجا آمده و چرا اینقدر مهم است.
(پست به انگلیسی)
https://link.medium.com/GagdWVr529
Medium
From Memory networks to Transformers
The attention mechanism is probably the most important idea in modern NLP. Even though it’s almost omnipresent in all-new architectures it…
اصلا چرا قاعده attention کار می کند. تفسیر ریاضی این مدل در کار جدید
Hopfield Network is all you need
یکی از زیبا ترین مقاله هایی ست که دیده ام. به جای خواندن مقاله می توانید خلاصه بلاگ زیر را هم بخوانید که توسط خود نویسنده ها منتشر شده است و حاوی همه لینک های مفید است.
https://ml-jku.github.io/hopfield-layers/
Hopfield Network is all you need
یکی از زیبا ترین مقاله هایی ست که دیده ام. به جای خواندن مقاله می توانید خلاصه بلاگ زیر را هم بخوانید که توسط خود نویسنده ها منتشر شده است و حاوی همه لینک های مفید است.
https://ml-jku.github.io/hopfield-layers/
چرا جهان می رقصد؟
تحلیل ریاضی پدیده sync و اینکه چرا همه جا هست. شبیه سازی در متلب ( به انگلیسی)
در جنبش اندرآور زلف عبرفشان را
در رقص اندرآور جانهای صوفیان را
خورشید و ماه و اختر رقصان بگرد چنبر
ما در میان رقصیم رقصان کن آن میان را
تحلیل ریاضی پدیده sync و اینکه چرا همه جا هست. شبیه سازی در متلب ( به انگلیسی)
در جنبش اندرآور زلف عبرفشان را
در رقص اندرآور جانهای صوفیان را
خورشید و ماه و اختر رقصان بگرد چنبر
ما در میان رقصیم رقصان کن آن میان را
Medium
Synchronization: The Sama dance of Nature
Sometimes things happen in our surroundings that we ignore easily but for a real scientist, they are seeds to further investigations. A…
This media is not supported in your browser
VIEW IN TELEGRAM
مدل جدید یادگیری عمیق با مدل سازی دینامیکی ریاضی نورون های واقعی موجوداتی به اسم seatworm (یا همان کرم روده!) توانسته تنها با ۱۹ نورون اتومبیل خودران را هدایت کند!!! این را مقایسه کنید با بهترین مدلهای کنونی یادگیری عمیق که نیاز به صدها هزار نورون و میلیاردها پارامتر دارند!
مدل جدید ساده. مقاوم به نویز و بسیار اسپارس است. همچنین مدل قابل تفسیر و فهم است و شبیه به شبکه های عمیق مانند یک جعبه سیاه نیست.
مقاله
پیپر
ویدیو
مدل جدید ساده. مقاوم به نویز و بسیار اسپارس است. همچنین مدل قابل تفسیر و فهم است و شبیه به شبکه های عمیق مانند یک جعبه سیاه نیست.
مقاله
پیپر
ویدیو
This media is not supported in your browser
VIEW IN TELEGRAM
تا حالا برای شما پیش آمده است که ترانه ای در ذهنتان هست اما بجز زمزمه ای از آن چیزی را به خاطر نمی آورید؟
سرچ جدید گوگل با تحلیل صدای زمزمه آهنگ مورد نظر را پیدا میکند!!
سرچ جدید گوگل با تحلیل صدای زمزمه آهنگ مورد نظر را پیدا میکند!!
اوبر کتابخانه ای به نام لودویگ را منتشر کرده است که نیاز به کد زدن برای یادگیری ماشین را حذف می کند! در واقع تنها چیزی که شما لازم است داشته باشید دیتاست و تایپ ورودی و خروجی است. بقیه کار را لودویگ انجام می دهد! این کتابخانه عمل پروتوتایپینگ را بسیار سریع می کند و نیاز به نوشتن کدهای طولانی یا پردازش های اضافه را حذف می کند. لودویگ با استفاده از سیستم تایپینگ خود متوجه می شود که شما دقیقا چه چیزی می خواهید به طور مثال اگر ورودی عکس و خروجی متن باشد شما image captioning می خواهید. اگر ورودی متن و خروجی عدد باشد احتمالا sentiment analysis لازم دارید!!
کتابخانه
ویدیوی معرفی
کتابخانه
ویدیوی معرفی
How to user Pytorch more efficiently? (by NVIDIA)
🔵In dataloader it’s almost always better to use pin_memory=true and num_worker>0
🔵If you have convolution followed by batch norm, set the bias in convolution to zero that has no effect on the result but makes everything faster.
🔵Use the param.grad=None instead of zero_grad()
model.zero_grad() ===> for param in model.parameters():
param.grad =None
🔵Using pytorch jit can fuse operations into one single CUDA kernel
Unfused point-wise operations are memory bound. They have to
Launch a separate CUDA kernel
Load data from global memory
Perform computation
Store results back into global memory
@torch.jit.script
def gelu(x):
Return x*0.5*(1+ torch.erf(x/1.41))
That decorator makes it much faster!
More here
slides
🔵In dataloader it’s almost always better to use pin_memory=true and num_worker>0
🔵If you have convolution followed by batch norm, set the bias in convolution to zero that has no effect on the result but makes everything faster.
🔵Use the param.grad=None instead of zero_grad()
model.zero_grad() ===> for param in model.parameters():
param.grad =None
🔵Using pytorch jit can fuse operations into one single CUDA kernel
Unfused point-wise operations are memory bound. They have to
Launch a separate CUDA kernel
Load data from global memory
Perform computation
Store results back into global memory
@torch.jit.script
def gelu(x):
Return x*0.5*(1+ torch.erf(x/1.41))
That decorator makes it much faster!
More here
slides
YouTube
PyTorch Performance Tuning Guide - Szymon Migacz, NVIDIA
ECCV 2020 Tutorial on Accelerating Computer Vision with Mixed PrecisionWebsite: https://nvlabs.github.io/eccv2020-mixed-precision-tutorial/Slides: https://nv...
🔵Some key notes on Installing Python🔵
Even though installing python seems easy there are a couple of problems that need to be addressed:
if you are on a Linux machine you probably have one version of python installed. you can check the version by typing python in the terminal. Sometimes other versions of python are also installed. You can check them all by checking
It is recommended to use python in virtual environments. The benefit of it is every time you install a library it will remain in that environment and doesn't change the global libraries that system or other projects might use. So you also need to install virtualenv
Even though installing python seems easy there are a couple of problems that need to be addressed:
if you are on a Linux machine you probably have one version of python installed. you can check the version by typing python in the terminal. Sometimes other versions of python are also installed. You can check them all by checking
/usr/bindirectory. If your desired version is not installed you can install them by using the following command (on a debian/ubuntu linux):
sudo add-apt-repository ppa:deadsnakes/ppaYou can replace python3.7 by other versions.
sudo apt install python3.7
It is recommended to use python in virtual environments. The benefit of it is every time you install a library it will remain in that environment and doesn't change the global libraries that system or other projects might use. So you also need to install virtualenv
sudo apt-get install python3-pipNow you can create a virtualenv with different versions of python. For example you can write:
sudo pip install virtualenv
virtualenv --python python2.7 venvFinally there is one more step that is needed for libraries that use C extensions. They need the tools to compile the c codes and this is needed for a lot of useful python libraries like lxml. For this purpose, you have to install python-dev
source venv/bin/activate
sudo apt install python3.7-devNote that you need to specify the version of the python-dev. Also you have to make sure the library you are currently using and has C extension is compatible with the python version you use.
MatlabTips via @vote
به کدام مطالب بیشتر علاقه دارید؟
public poll
متلب – 34
👍👍👍👍👍👍👍 47%
پایتورچ – 25
👍👍👍👍👍 35%
تنسرفلو – 9
👍👍 13%
نامپای و scikit-learn – 4
👍 6%
👥 72 people voted so far.
public poll
متلب – 34
👍👍👍👍👍👍👍 47%
پایتورچ – 25
👍👍👍👍👍 35%
تنسرفلو – 9
👍👍 13%
نامپای و scikit-learn – 4
👍 6%
👥 72 people voted so far.
🔵گسترش پایتون به سی🔵
یکی از ویژگی های بسیار خوب پایتون این است که به شما اجازه می دهد به راحتی آن را به زبان های دیگر مانند سی، سی پلاس پلاس، راست (Rust) و go گسترش بدهید. منظور از گسترش این است که شما مجبور نیست تمام کدها را در پایتون بنویسید بلکه می توانید بخشی از آن را در یک زبان دیگر بنویسید و از داخل پایتون آن ها را مانند یک کتابخانه فراخوانی کنید. اما اصلا چرا باید چنین کاری بکنیم؟
دلایل زیادی برای این کار وجود دارد که مهمترین آن ها کارآمدی یا سرعت است. بیشتر اوقات کدهای کامپایل شده ی زبان سی بسیار سریع تر اجرا می شوند. اساسا دلیل محبوبیت پایتون این بود که کتابخانه های بسیاری مانند نامپای توانستند حجم عظیمی از کدهای ناخوانا و سخت سی را که سرعت بالایی دارند به صورت سطح بالا در اختیار کاربران پایتون قرار دهند. چنین چیزی تقریبا برای هر کتابخانه ی جدی ای صادق است. مثال های دیگر آن کتابخانه های پایتورچ و تنسورفلو هستند.
شما شاید هرگز نیاز نداشته باشید که کدی به زبان سی بنویسید که از درون پایتون فراخوانی شود اما یاد گرفتن آن بسیار روشنگر است. برای اینکه متوجه می شوید وقتی یک کتابخانه با pip نصب می کنید و setup.py در حال اجرا است در عمل آن کتابخانه در حال کامپایل شدن است. در نهایت فایل .so که ساخته می شود از درون پایتون قابل صدا زدن است.
بر روی آزمایش های ساده ای که انجام دادم محاسبه یک فاکتوریل ساده با استفاده از کد سی تا صد برابر سریع تر است که جای تعجب ندارد اما این سرعت حتی زمانی که از درون پایتون فراخوانی می شود به همان اندازه سریع تر از کد پایتون معادل آن است! چنین افزایش سرعتی آنقدر وسوسه انگیز است که ممکن است بخواهید بخش هایی از کدهایتان را درون سی بنویسید و از پایتون فراخوانی کنید. در زیر یک کد برای این کار نوشته ام که می توانید دانلود و امتحان کنید
https://github.com/roholazandie/pythoncextension
یکی از ویژگی های بسیار خوب پایتون این است که به شما اجازه می دهد به راحتی آن را به زبان های دیگر مانند سی، سی پلاس پلاس، راست (Rust) و go گسترش بدهید. منظور از گسترش این است که شما مجبور نیست تمام کدها را در پایتون بنویسید بلکه می توانید بخشی از آن را در یک زبان دیگر بنویسید و از داخل پایتون آن ها را مانند یک کتابخانه فراخوانی کنید. اما اصلا چرا باید چنین کاری بکنیم؟
دلایل زیادی برای این کار وجود دارد که مهمترین آن ها کارآمدی یا سرعت است. بیشتر اوقات کدهای کامپایل شده ی زبان سی بسیار سریع تر اجرا می شوند. اساسا دلیل محبوبیت پایتون این بود که کتابخانه های بسیاری مانند نامپای توانستند حجم عظیمی از کدهای ناخوانا و سخت سی را که سرعت بالایی دارند به صورت سطح بالا در اختیار کاربران پایتون قرار دهند. چنین چیزی تقریبا برای هر کتابخانه ی جدی ای صادق است. مثال های دیگر آن کتابخانه های پایتورچ و تنسورفلو هستند.
شما شاید هرگز نیاز نداشته باشید که کدی به زبان سی بنویسید که از درون پایتون فراخوانی شود اما یاد گرفتن آن بسیار روشنگر است. برای اینکه متوجه می شوید وقتی یک کتابخانه با pip نصب می کنید و setup.py در حال اجرا است در عمل آن کتابخانه در حال کامپایل شدن است. در نهایت فایل .so که ساخته می شود از درون پایتون قابل صدا زدن است.
بر روی آزمایش های ساده ای که انجام دادم محاسبه یک فاکتوریل ساده با استفاده از کد سی تا صد برابر سریع تر است که جای تعجب ندارد اما این سرعت حتی زمانی که از درون پایتون فراخوانی می شود به همان اندازه سریع تر از کد پایتون معادل آن است! چنین افزایش سرعتی آنقدر وسوسه انگیز است که ممکن است بخواهید بخش هایی از کدهایتان را درون سی بنویسید و از پایتون فراخوانی کنید. در زیر یک کد برای این کار نوشته ام که می توانید دانلود و امتحان کنید
https://github.com/roholazandie/pythoncextension
GitHub
roholazandie/pythoncextension
Contribute to roholazandie/pythoncextension development by creating an account on GitHub.
نمودار های زنده با قابلیت صف بندی وظایف برای یک سیستم async
یکی از بهترین ویژگی های رابط کاربری جذاب این است که گزارش واقعی از میزان پیشرفت یک فرآیند سنگین ارائه بدهد. به طور مثال شما ممکن است یه وظیفه سنگین یادگیری ماشین داشته باشید و بخواهید از طریق رابط کاربری وبی بدانید که چقدر از کار انجام شده است. نمودارهای زنده (live charts) برای این منظور ساخته می شوند و برخلاف رسم های معمولی که کتابخانه های زیادی هم برایشان وجود دارند پیاده سازی آنها به هیچ وجه کار ساده و سر راستی نیست. این مورد بخصوص وقتی بیشتر مشخص می شود که بخواهید رابط های کاربری async بسازید. به این معنا که لایه GUI به صورت غیر همزمان با backend کار میکند. مثلا اگر شما یک دکمه بزنید که کار زمانبری را انجام بدهید باید همچنان قادر باشید یک نمودار میزان پیشرفت انجام کار ببینید یا به قسمت های دیگر برنامه یا وب اپ سر بزنید. ویژگی ای که بر روی خیلی از رابط های کاربری مانند streamlit یا django یا dash وجود ندارد.
برای انجام این کار نیاز به یک مدیر وظایف (task manager) دارید که کارهای ورودی به سیستم را صف بندی و منظم کند. پیاده سازی خود این کار بسیار پیچیده است به همین خاطر کتابخانه هایی مانند celery در پایتون انجام این کار را ساده تر می کنند. پروژه های بزرگ تری که نیاز به پخش بار محاسبه بر روی محیط ابر دارند نیز می توانند از چنین ابزارهایی استفاده کنند. وارد شدن در جزییات آن ها از حوصله این بحث خارج است. در اینجا یک کد نمونه که می تواند یک رابط کاربری async را همزمان با آپدیت زنده میزان پیشرفت را نشان دهد آورده ام
https://github.com/roholazandie/live_charts
یکی از بهترین ویژگی های رابط کاربری جذاب این است که گزارش واقعی از میزان پیشرفت یک فرآیند سنگین ارائه بدهد. به طور مثال شما ممکن است یه وظیفه سنگین یادگیری ماشین داشته باشید و بخواهید از طریق رابط کاربری وبی بدانید که چقدر از کار انجام شده است. نمودارهای زنده (live charts) برای این منظور ساخته می شوند و برخلاف رسم های معمولی که کتابخانه های زیادی هم برایشان وجود دارند پیاده سازی آنها به هیچ وجه کار ساده و سر راستی نیست. این مورد بخصوص وقتی بیشتر مشخص می شود که بخواهید رابط های کاربری async بسازید. به این معنا که لایه GUI به صورت غیر همزمان با backend کار میکند. مثلا اگر شما یک دکمه بزنید که کار زمانبری را انجام بدهید باید همچنان قادر باشید یک نمودار میزان پیشرفت انجام کار ببینید یا به قسمت های دیگر برنامه یا وب اپ سر بزنید. ویژگی ای که بر روی خیلی از رابط های کاربری مانند streamlit یا django یا dash وجود ندارد.
برای انجام این کار نیاز به یک مدیر وظایف (task manager) دارید که کارهای ورودی به سیستم را صف بندی و منظم کند. پیاده سازی خود این کار بسیار پیچیده است به همین خاطر کتابخانه هایی مانند celery در پایتون انجام این کار را ساده تر می کنند. پروژه های بزرگ تری که نیاز به پخش بار محاسبه بر روی محیط ابر دارند نیز می توانند از چنین ابزارهایی استفاده کنند. وارد شدن در جزییات آن ها از حوصله این بحث خارج است. در اینجا یک کد نمونه که می تواند یک رابط کاربری async را همزمان با آپدیت زنده میزان پیشرفت را نشان دهد آورده ام
https://github.com/roholazandie/live_charts
GitHub
roholazandie/live_charts
Contribute to roholazandie/live_charts development by creating an account on GitHub.
This media is not supported in your browser
VIEW IN TELEGRAM
Live update of a task with django backend, celery task manager and ajax calls from javascript in web UI
دوستی از طریق ایمیل از من سوالی پرسید که فکر کردم ممکن است برای خیلی ها پیش آمده باشد. من قطعا نمیتوانم ادعا کنم که جواب را به درستی میدانم اینجا فقط چیزهایی که به تجربه فهمیده ام یا از بقیه یاد گرفته ام را به اشتراک می گذارم:
سوال (نقل به مضمون): مشکل بزرگی که من همیشه دارم این است که احساس میکنم که انگار یکی دو فصل برنامه نویسی را جا گذاشته ام. مثلا در کدها طرف می گوید من اینجا سریالایزر استفاده کردم! من میگم سریالایزر چیه؟ خوب راهی که وجود داره فوری سرچ میکنم سریالایزر چیه؟ اما انگار پایانی وجود نداره. یا با کلی عذاب یک مشکل رو حل می کنم، یک کد طویل می نویسم و چرخ رو از اول اختراع می کنم، یه برنامه نویس حرفه ای در اولین نگاه میگه این چه کاریه کردی؟ این که با فلان چیز راحتتر بود! سوال اصلی این است که این مطالب را چرا اصلا من در هیچکدوم از آموزش های پایتونم باهاشون روبرو نشدم، اینها کجا هستند؟ کجا باید دنبال چیزهایی بگردم و یاد بگیرم که بدونم لااقل به اکثر پایتون آگاهی دارم.
سوال (نقل به مضمون): مشکل بزرگی که من همیشه دارم این است که احساس میکنم که انگار یکی دو فصل برنامه نویسی را جا گذاشته ام. مثلا در کدها طرف می گوید من اینجا سریالایزر استفاده کردم! من میگم سریالایزر چیه؟ خوب راهی که وجود داره فوری سرچ میکنم سریالایزر چیه؟ اما انگار پایانی وجود نداره. یا با کلی عذاب یک مشکل رو حل می کنم، یک کد طویل می نویسم و چرخ رو از اول اختراع می کنم، یه برنامه نویس حرفه ای در اولین نگاه میگه این چه کاریه کردی؟ این که با فلان چیز راحتتر بود! سوال اصلی این است که این مطالب را چرا اصلا من در هیچکدوم از آموزش های پایتونم باهاشون روبرو نشدم، اینها کجا هستند؟ کجا باید دنبال چیزهایی بگردم و یاد بگیرم که بدونم لااقل به اکثر پایتون آگاهی دارم.