محیط ژوپیتر نوت بوک زیباست، کار با آن سادهتر است و نتیجه هر کد، تصویر و یا محاسبهای، بلافاصله در همان صفحه مشهود است. این نوت بوکها به کاربران اجازه میدهند تا اسنادی حاوی کد زنده، معادلات، تجسمها و متنهای توضیحی ایجاد کنند و به اشتراک بگذارند.
اما دلایل محبوبیت ژوپیتر، فراتر از این حرفاست. کاربردهای ژوپیتر نوت بوک در هوش مصنوعی باعث شکوفایی خلاقیتها، تسهیل سبک زندگی و کسب درآمدهای بالا توسط دانشمندان و مردم عادی شده است. در ادامه با ژوپیتر نوت بوک پایتون، ژوپیتر لب، ژوپیتر نوت بوک، ژوپیتر هاب و سایر ابزارها و امکانات محیط ژوپیتر آشنا خواهیم شد. با ابر فردوسی همراه باشید:
فهرست مطالب
- نوت بوک چیست؟
- پروژه ژوپیتر چیست؟
- تاریخچه ژوپیتر نوت بوک چیست؟ ژوپیتر پایتون چیست؟
- تفاوت ژوپیتر نوت بوک با IDE و Text Editor
- مزیتهای استفاده از ژوپیتر نوت بوک چیست؟
- استفاده از سرور ژوپیتر ابر فردوسی
نوت بوک چیست؟
دونالد کنوث (Donald Knuth) پدر علم آنالیز الگوریتم و خالق زبان TEX، افزونه LATEX و کتاب مشهور The Art of Computer Programming است. وی در این کتاب که در سال 1984 به چاپ رسید، برای اولین بار ایده برنامهنویسی ادیبانه و یا همان Literate Programming را شرح داد.
ایده کنوث شکلگیری یک زبان برنامهنویسی قابل درک برای انسان بود. یعنی شیوه گفتار تحمیل شده از کامپیوتر، جای خود را به زبانی قابل درک برای انسانها بدهد. این ایده جذاب از سال 2010 به بعد، به واسطه نوت بوک های محاسباتی، به ویژه در علم داده، تجدید حیات یافت.
پروژه ژوپیتر چیست؟
پروژه ژوپیتر یک اکوسیستم پویا از ابزارها و استانداردهای منبع باز است که برای تسهیل محاسبات تعاملی در زبانهای برنامه نویسی مختلف طراحی شده است. این پروژه در ابتدا برای زبان پایتون توسعه یافت. سپس قادر شد از زبانهای برنامه نویسی مختلف از قبیل جولیا، R و اسکالا نیز از طریق “کرنل” پشتیبانی کند. به همین دلیل نیز نام آن به Jupyter، ترکیبی از Julia، Python و R تغییر یافت. در سایت رسمی ژوپیتر آمده است که:
ژوپیتر یک محیط توسعه تعاملی مبتنی بر وب رایگان، منبع باز و استاندارد باز است که از تمام زبانهای برنامهنویسی پشتیبانی میکند.
ژوپیتر در محاسبات علم داده، آمار، یادگیری ماشین، تجزیه و تحلیل دادهها، تحقیقات علمی، آموزش و محاسبات پیچیده ریاضی بیشترین کاربرد را دارد. این دادهها بر روی یک سرور اجرا و از طریق یک مرورگر در دسترسند. مهمترین شاخصههای آن انعطاف پذیری، وب سرویس بودن، سهولت در استفاده و امکان دسترسی و تعامل بالا است. در ادامه با محیطهای مختلف ژوپیتر آشنا میشویم:
1. ژوپیتر نوت بوک چیست:
ژوپیتر نوت بوک (Jupyter Notebook) در قلب پروژه ژوپیتر نشسته است و یک برنامه وب منبع باز به شمار میآید. کاربران ژوپیتر نوت بوک میتواننند اسناد مختلفی از قبیل کد زنده (Live code)، معادلات (Equations)، تجسمها (Visualizations) و متن روایتها (Narrative text) را ایجاد کنند و به اشتراک گذارند.
میتوان ژوپیتر نوت بوک را یک دفترچه یادداشت مجازی دانست که از انواع مختلفی از محتوا در یک سند واحد پشتیبانی میکند. هر محتوا سلول مخصوص به خودش را دارد. یعنی هر سلول میتواند حاوی یکی از این موارد: کد، خروجی کد، جدول، نمودار، لینکها، تصاویر، متن “Markdown” و یا انواع دیگری از رسانهها باشد.
نکته حائز اهمیت در این محیط این است که میتوان نتیجه هر کد را در سلول بعدی ران کرد و بدون نیاز به رفتن به صفحه دیگر، اشکالات و شمایل آن را همانجا دید و سنجید. رابط کاربری ژوپیتر میتواند کدها، دادهها و نتایج را به روشی تعاملی با یکدیگر ترکیب کند.
Jupyter Notebook به دلیل انعطاف پذیری، سهولت در استفاده و پشتیبانی از تحقیقات تکرارپذیر، محبوبیت گستردهای در علوم داده و جوامع علمی محاسباتی به دست آورده است. این ویژگی باعث میشود که کاربران بتوانند دادههای فراوانی را آزمایش و فرضیههای مختلف را بررسی کنند.
2. ژوپیتر لب چیست:
از ژوپیترلب (JupyterLab) به عنوان نسل بعدی ژوپیتر نوت بوک یاد میشود. زیرا تجربهای مشابه IDE ها را به کاربران ارائه میدهد. با این تفاوت که IDE مخفف عبارت Integrated Development Environment است. اما ژوپیتر لب یک Interactive Development Environment میباشد.
یعنی به کاربران این امکان را میدهد که به جای مدیریت ابزارهای پراکندهای که برای علم داده مورد نیاز هستند، تنها از JupyterLab استفاده نمایند. زیرا محیط ژوپیترلب ماژولار است. یعنی امکان کم و زیاد کردن پنجرههای مختلف با کاربردهای متفاوت، و ترکیب کردن آنها با یکدیگر را فراهم میآورد.
این رابط انعطاف پذیر از قابلیتهایی نظیر همگامسازی چندین تب، مدیریت فایل با کشیدن و رها کردن، دسترسی به ترمینال یکپارچه و پشتیبانی از انواع پسوندها پشتیبانی میکند. JupyterLab تمام بلوکهای سازنده ژوپیتر نوت بوک از قبیل نوت بوکها، ترمینالها، ویرایشگر متن، مرورگر فایل، خروجیهای غنی و غیره را دارد و به زودی جایگزین آن خواهد شد.
3. ژوپیتر هاب چیست:
JupyterHub یک محیط مشترک را مدیریت میکند و کار تیمی را تقویت میکند. این فناوری نوت بوکها را به گروهی از کاربران، که عضو یک تیم هستند، ارائه میدهد. ژوپیترهاب قابل تنظیم و مقیاس پذیر است. این ابزار به کاربران امکان دسترسی به محیط و منابع محاسباتی موردنیازشان را از طریق ابرها میدهد.
JupyterHub در فضای ابری یا بر روی یک سختافزار شخصی اجرا میشود. و ارائه یک محیط علم داده از پیش پیکربندی شده را برای هر کاربر در جهان ممکن میسازد. مدیریت احراز هویت با PAM، OAuth و غیره، محیط کانتینر Docker و Kubernetes پسند، جداسازی فرآیندهای کاربر و… از جمله ویژگیهای محیط ژوپیتر هاب میباشند.
4. ژوپیتر وویلا چیست:
محیط ژوپیتر وویلا یا به تنهایی وویلا (Voilà) را میتوان بنا به تعریف سایت ژوپیتر، برای به اشتراکگذاری نتایج در نظر گرفت. Voilà با تبدیل نوتبوکها به برنامههای وب امن و مستقلی که میتوان آنها را سفارشی کرد و به اشتراک گذاشت، به ارتباط بینش کمک میکند.
5. Kernel یا هسته چیست:
هسته ها موتورهای محاسباتی هستند که کد را در نوت بوکهای Jupyter اجرا میکنند. هر هسته وظیفه تفسیر و اجرای کدهای نوشته شده در یک زبان برنامه نویسی خاص را بر عهده دارد. اکوسیستم Jupyter از طیف گستردهای از هستهها پشتیبانی میکند و کاربران را قادر میسازد تا با زبانهای مختلف به طور یکپارچه کار کنند.
تاریخچه ژوپیتر نوت بوک چیست؟ ژوپیتر پایتون چیست؟
فرناندو پرز در سال 2010 میلادی شروع به توسعه محیط IPython Notebook کرد. وی به همین دلیل نیز در سال 2012 از بنیاد نرمافزارهای آزاد جایزه گرفت. پرز در سال 2014 تصمیم گرفت بخش نوت بوک را از پروژه IPython Notebook جدا کند و آن را با نام تجاری Jupyter Project راهی بازار کند.
فرق این محصول با محصول قبلی در این است که تنها از کرنل پایتون پشتیبانی نمیکند. بلکه امروزه جوپیتر نوت بوک تقریبا تمام کرنلها را ران میکند. در ابتدا پروژه ژوپیتر تنها از سه کرنل یا زبان Julia، Python و R پشیتیبانی میکرد. به همین دلیل نیز نام آن از ترکیب همین سه اسم به وجود آمد.
اما به تدریج همانگونه که در لگو آن مشخص است، زبانهای مختلفی همچون جاوا، متلب، PHP ،SPARK، سی شارپ، اف شارپ و… را نیز در خود جای داده است. همچنین یکی دیگر از دلایل این نامگذاری مربوط به بزرگداشت گالیله و تلاشهای آن برای شناخت سیاره ژوپیتر یا مشتری و قمرهای آن است.
به طور کلی هدف از توسعه ژوپیتر نوت بوک این بود که جامعه دانشمندان، به یک روش تعاملی و مشارکتی وسیعتر، برای کار با کدها و دادهها نیاز داشتند. زیرا محیطهای برنامهنویسی سنتی (IDE و Text Editor) برای کار با دادههای بزرگ مناسب نبودند. همچنین فاقد قدرت ترکیب کد با توضیحات متن و تجسم آنها بودند.
تفاوت ژوپیتر نوت بوک با IDE و Text Editor
برای توسعه کد محیطهای فراوانی وجود دارند. از یک نوت پد ساده تا یک IDE یا Text Editor ها، همگی برای کدنویسی و برنامه نویسی در خدمتند. اما محیط نوت بوکهایی مانند ژوپیتر، فراتر از تمام اینها عمل میکنند. چرا که میشود با آنها دادهسازی، جدولسازی و مهمتر از همه تصویرسازی کرد.
از طرفی در هر IDE معمولا میتوان یک نوع زبان را اجرا کرد. همچنین از آن فقط برای یکی از حوزههای اپلیکیشن، طراحی وب و… استفاده میشود. پس برای یک حوزه یا یک زبان دیگر باید یک IDE دیگر را انتخاب نمود. اما مشکلی که وجود دارد این است که نصب و اجرا یک IDE نیاز به مقدار زیادی رم و CPU دارد.
از طرفی Text Editor ها نیاز به حافظه و رم کمتری نسبت به IDE ها دارند. اما این حجم کمتر به این دلیل است که بسیاری از امکانات IDE ها را ندارند. در واقع IDE ها یک پک کامل از امکانات را پیشکش برنامه نویس میکنند. ولی Text Editor ها صرفا ملزومات را ارائه میکنند و برای سایر نیازها باید پلاگین نصب شود.
اما ژوپیتر نوت بوک به دلیل وب سرویس بودنش، منابع کمی از سیستم را درگیر میکند. همچنین مانند Text Editorها ماژولار است. تفاوت ماژولار بودن این دو در این است که اکثر پلاگینهای مورد نیاز در ژوپیتر وجود دارند و نیاز به گشتن نیست. اما برای Text Editorها باید گشت و گاهی هم پیدا نمیشوند.
و اما مهمترین چیزی که ژوپیتر نوت بوک از آن پشتیبانی میکند تجسم سازی دادهها است که آن دو محیط دیگر فاقد این امکان هستند. منظور از تجسم سازی ساختن الگوریتمها و تصاویر از روی دادهها است. در ادامه یک مثال از تجسم سازی به وسیله ژوپیتر نوت بوک آمده است:
مزایا و ویژگی های ژوپیتر نوت بوک چیست؟
عکس بالا کاملا گویای مزایای ژوپیتر نوت بوک هست. فضای روشن، گرافیک جذاب، تجسمسازی و وجود یک سلول برای کدنویسی (In) و سلولی دیگر برای نمایش نتیجه (Out).
با این حال ویژگی های ژوپیتر نوت بوک که گاها به آن ژوپیتر پایتون نیز میگویند، محدود به این موارد نیست. در ادامه به صورت خلاصه به برخی دیگر از مهمترین مزایای پروژه ژوپیتر اشاره کردهایم:
ویژگیهای ژوپیتر نوت بوک چیست:
- هزینه مسئله است.پروژه ژوپیتر قول داده است که تا همیشه رایگان بماند.
- نوت بوکها را میتوان با استفاده از ایمیل، Dropbox، GitHub و Jupyter Notebook Viewer اشتراکگذاری کرد.
- میتوان انواع خروجیهای HTML، تصویر، ویدئو، زبان لاتک و انواع MIMEهای سفارشی تولید کرد.
- میتوان از ابزارهای کلان داده مانند Apache Spark از پایتون، R و اسکالا استفاده کرد. و همان داده ها را با پانداها، scikit-learn، ggplot2 و TensorFlow کاوش کرد.
- محیط ژوپیتر زیباست و انواع تم انتخابی دارد.
- امکان اجرا و تکرار و آزمایش کدها در آن ممکن است. زیرا همان زیر نتیجه معلوم میگردد.
- علاوه بر تحقیق، محل خوبی برای تدریس زبانهای برنامه نویسی است.
- با ابزار Nbconvert میتوان خروجیهای متعددی در فرمت PDF، TEX، HTML و… گرفت.
- با ابزار nbviewer میتوان نوت بوک های ژوپیتر را به صورت آنلاین بدون نیاز به نصب بر روی دستگاه محلی مشاهده کرد.
- امکان استفاده از MarkDown برای اموراتی فراتر از کامنت نویسی دارد.
- تحت وب بودن آن منجر به عدم وابستگی به فایلها و سیستم عامل خانگی میشود.
- پایداری و مقیاسپذیری بالای آن برای کسب وکارهایی با کاربران متعدد مثال زدنی است.
- به تیمها قدرت همکاری، اشتراک گذاری و استقرار سریع میدهد.
- امکان ذخیرهسازی و اشتراکگذاری نوت بوکها تحت عنوان فایلهای متنی ساختار یافته با فرمت JSON.
- کد، متن، تصاویر، فیلم، انیمیشن، نمودار، نقشه اشکال معادلات ریاضی، تعاملات و رابطهای کاربری گرافیکی همه در یک سند گردآوی میشوند.
- امکان فارسی نوشتن در ژوپیتر نوت بوک میسر است.
- معماری مستقل از زبان آن، امکان نگارش هر کرنلی با هر زبانی را میسر میکند.
- امکان نگارش دستورات جادویی (Magic Commands) و تسهیل محاسبات تعاملی.
استفاده از ژوپیتر نوت بوک ابر فردوسی
استفاده از پیپ یا آناکوندا برای نصب و راه اندازی ژوپیتر نوت بوک راه رایجی است. قبلا در مقاله آموزش خرید سرور ژوپیتر نوت بوک به مراحل نصب آن پرداختهایم. اما راههای سادهتری نیز از قبیل استفاده از رایانش ابری وجود دارد.
در حال حاضر امکان استفاده از ژوپیتر لب، جدیدترین محیط توسعه تعاملی مبتنی بر وب، در ابر فردوسی فراهم است. در ادامه برخی از دلایل استفاده از ابر فردوسی را شرح دادهایم:
1- امکان انتخاب نوع کارت گرافیک
یکی از ویژگیهای منحصر بهفرد در ژوپیتر لب ابر فردوسی این است که کاربر میتواند با توجه به نوع نیاز خود، نوع کارت گرافیک مورد نظرش را انتخاب نماید:
( RTX 2080i (11GB
24GB)RTX 3090
(32GB) Tesla v100s
Tesla a100 (40GB
همچنین کتابخانههای ژوپیتر لب از جمله Tensor flow / Pytorch / Pure python در محیط ابر فردوسی فعالند.
2-عدم وجود محدودیت زمانی
یکی از مهمترین ویژگیهای کار با ژوپیتر لب ابر فردوسی، عدم وجود محدودیت در زمان استفاده است.
یعنی بر خلاف سایر ارائهدهندگان، کاربران ابر فردوسی قادرند بدون محدودیت زمانی از محیط ژوپیتر لب بهرهبرداری کنند.
3- قیمت مقرون بهصرفه
ویژگی حائز اهمیت دیگر خدمات ابر فردوسی، قیمت پایین و مقرون بهصرفه آنهاست. خدمات این شرکت به صورت PAY AS YOU GO محاسبه میگردد.
این بدان معناست که کاربران تنها به میزان مصرف واقعی خود از منابع، پول پرداخت مینماید.
4- انتخاب میزان منابع پردازشی
و اما انتخاب بسته دلخواه در ابر فردوسی بر عهده خود کاربر است. یعنی هر فرد قادر است مقدار CPU، RAM، هارد و سایر منابع پردازشی دلخواه خود را انتخاب نماید.
در راستای یافتن پاسخی مناسب برای سوال ژوپیتر نوت بوک چیست، به سرویس ژوپیترلب ابر فردوسی سر بزنید. بدین منظور بر روی لینک زیر کلیک نمایید.