مجتبی میر یعقوب زاده
مجتبی میر یعقوب زاده
خواندن ۶ دقیقه·۵ سال پیش

نکات مثبت و منفی Jupyter Notebook برای دیتا ساینتیست ها

ژوپیتر نوت بوک
ژوپیتر نوت بوک


ژوپیتر نوت بوک سه ویژگی مثبت دارد:

  • برای نمایش دادن نتیجه کار عالی است. شما میتوانید هم کد و هم نتیجه کد را همزمان مشاهده کنید. برای مثال این نوت بوک ها را در Kaggle را ببینید.
  • برای شروع دیتا ساینس، میتوانید به راحتی نوت بوک های دیگران را دانلود کنید و هر قسمت از کد را یکی یکی اجرا کنید تا ببینید هر قسمت چه کاری انجام میدهد.
  • در مواقعی که بحث امنیت در میان است، از ژوپیتر نوت بوک میتوان به راحتی برای کار با سرور استفاده کرد. بسیاری از داده ها حساس هستند و باید محافظت شوند و بخاطر همین نمیتوان آنها را در کامپیوتر شخصی ذخیره کرد.


نکات منفی ژوپیتر نوت بوک

در هنگام نوشتن نسخه اولیه برنامه، امکان نوشتن کد در چند سلول عالی به نظر می آید. اما در نهایت شما به جای استفاده از برنامه نویسی شی گرا، برنامه خود را در چندین سلول نوشته اید.

هنگامی که در نوشتن کد خود، به جای استفاده از تابع/کلاس/شی، از سلول استفاده میکنید، در نهایت به برنامه ای میرسیم که چندین خط در آن تکرار شده است که نگهداری از چنین برنامه ای دشوار است.


عواقب تکرار کردن کد

  • همکاری با یکدیگر سخت میشود چون هر کدام از ما کد هایی را از یکدیگر کپی میکنیم.
  • به سختی میتوان به نتیجه کد اطمینان کرد. کدام یک از این نوت بوک ها نتیجه x را به ما داده است ؟

یکی دیگر از مشکلات مربوط به نمایش نمودار ها است. چگونه میتوانید نمودار هارا به افراد خارج از تیم دیتا ساینس نشان دهید؟ در نگاه اول، ژوپیتر نوت بوک یک روش خوب برای نشان دادن نمودار هاست - فقط نوت بوک را به اشتراک بگذارید! اما چطور میتوانید مطمئن باشید که داده های مورد استفاده در آن نوت بوک و نمودار های حاصل، جدید هستند؟ خیلی راحت، بگذارید دیگران نوت بوک را اجرا کند.

اما در شرکت های بزرگ به مشکل های زیادی برخورد میکنید چون نمیخواهید افراد زیادی دسترسی مستقیم به داده های مورد استفاده داشته باشند. ( GDPR را مطالعه فرمایید ). در عمل، در یک محیط کاری، نمودار ها به محیط پاورپوینت کپی پیست میشوند. این کار برای دیتا ساینتیست بیهوده است که هرگاه که داده ها تغییر میکنند، عمل کپی پیست را دوباره انجام دهد.

یک مثال


این مثال از این نوت بوک را در نظر بگیرید.

شروع کار آسان بود. فقط تعدادی از سلول ها را از بخش اول نوت بوک کپی کردم و سپس برای خودم شروع به گشت و گذار کردم. اما همینجا میتوانیم نکته منفی را ببینیم. قسمت مدیریت دسترسی (access-credentials management) حالا در تمام نوت بوک ها کپی شده است. اگر تغییر بکنند چه میشود؟ در این صورت همه نوت بوک ها را باید تغییر داد.

با اندکی بی نظمی، ممکن است ورژن های مختلفی از یک نوت بوک را ایجاد کنید که هیچکس به یاد ندارد نتیجه هرکدام چه چیزی است.


نکات مثبت یک IDE

میتوانید از Spyder یا PyCharm برای جایگزین ژوپیتر نوت بوک استفاده کنید.

در اسپایدر میتوانید بدون از دست دادن نتیجه کد فعلی خود، یک کد دیگر را بارگزاری کنید که این از ویژگی های خوب اسپایدر به حساب می آید. پس اگر میخواهید بسیاری از تغییرات خود را با استفاده از Pandas یا دیگر ابزار ها در کامپیوتر خود انجام دهید، اسپایدر یک گزینه ایده آل به حساب می آید. اگر از Anaconda استفاده میکنید، اسپایدر به همراه آناکوندا منتشر میشود.

پای‌چارم برای نوشتن برنامه های طولانی و گرفتن نتایج یکسان در کامپیوتر های مختلف مناسب است. پای‌چارم قابلیت های زیادی برای بهره‌وری بیشتر دارد. در اسپایدر و پای‌چارم میتوان از #%% استفاده کرد تا مثل ژوپیتر نوت بوک کد ها را به سلول های مختلف تقسیم بندی کرد.

برای یکی از مشتری های قبلی، میخواستیم کیفیت کد ها را افزایش دهیم ولی اجازه دسترسی به داده ها روی کامپیوتر خود نداشتیم. زمانی را صرف جابجایی Virtual Machine ها با پای‌چارم انجام دادیم تا با یک روش ایمن به داده ها دسترسی داشته باشیم. این کار خیلی سریع نتیجه داد- سرعت توسعه و کیفیت کد به شدت افزایش یافت و روند تبدیل کد به محصول نهایی هم سریع تر انجام شد.


تبدیل ماشین لرنینگ به محصول نهایی

سوالی که پیش می‌آید این است که محاسبات کجا انجام می‌شوند. برای کد میتوان به Docker مراجعه کرد. برای نوت بوک ها هم گزینه های متعددی وجود دارند اگرچه که محدود به چند گزینه مشخص هستید.

برای نوت بوک ها میتوانید به Amazon SageMaker و Kubeflow مراجعه کنید.

خلاصه

آیا باید نوت بوک ها را حذف کنید ؟ نوت بوک ها ویژگی های مثبت زیادی دارند. این بستگی به محیط کار و نیاز های اصلی شما دارد:

  • اگر همه روند ماشین لرنینگ در فضای ابری انجام شده و شما فقط احتیاج به نوشتن چند خط کد دارید، پس در این صورت نوت بوک ها راحت ترین راه هستند.
  • اگر تعداد افراد تیم مهندسی داده کم است یا تیم دیتا ساینس از افراد کم تجربه تشکیل شده است، بهتر است زیاد روی نوت بوک ها متکی نباشید. این کار باعث درست شدن بعضی عادت های بد مانند کپی کردن کد و بدهی فنی(Technical Debt را مطالعه فرمایید) شود.
  • اگر مشکل شما بخصوص است و احتیاج به کد زدن مخصوص به این مشکل دارید، در این صورت ممکن است اندازه ژوپیتر نوت بوک زیاد و نگهداری از آن به کاری دشوار تبدیل شود.
  • هرچقدر اندازه تیم بزرگتر باشد، نگرانی ما درباره برنامه نویسی مشترک و استفاده چندباره از یک نتیجه بین اعضای تیم بیشتر میشود. در این صورت باید از نوت بوک فاصله گرفت.
  • اگر تیم شما متشکل از افرادی با تخصص های مختلف مثل مهندس نرم افزار و دیتا ساینتیست باشد، استفاده از برنامه نویسی شی گرا و کنترل ورژن های مختلف یک برنامه راحت است. اگر همچین تیمی دارید، بهتر است از نوت بوک استفاده نکنید.



منبع


هوش مصنوعیماشین لرنینگبرنامه نویسیژوپیتر نوت بوکپایتون
فارغ التحصیل علوم کامپیوتر
شاید از این پست‌ها خوشتان بیاید