اجرای نوت‌بوک‌ها تحت وب توسط سرویس Azure notebook

سرویس Microsoft Azure Notebooks یک Interactive Notebook یا یک محیط آنلاین برنامه‌نویسی پویا (interactive) قدرت گرفته از Jupyter است که زبان‌های پایتون، R و #F را پشتیبانی‌می‌کند.

مزیت این سرویس نسبت به سرویس‌های مشابه مثل mybinder و یا حتی repl.it ؛ در دسترس بودن برای همه کاربران و از پیش نصب بودن تعداد زیادی از پکیج‌های مورد نیاز برای انواع زمینه‌ها است. همچنین این سرویس یک ترمینال برای مدیریت و کار با فایل‌های نوت‌بوک در اختیار هر کاربر می‌گذارد و هر کاربر ۴ گیگابایت فضای مموری و ۱ گیگابایت فضای ذخیره‌سازی فایل برای هر نوت‌بوک به صورت رایگان در اختیار دارد.

این سرویس امکان ساخت نوت‌بوک و یا کلون‌کردن (کپی‌کردن) یک ریپوزیتوری گیت که دارای نوت‌بوک است و اجرای آن تحت وب را به کاربران می‌دهد. برای اینکار تنها داشتن یک ایمیل در یکی از سرویس‌های مایکروسافت مثل outlook و یا hotmail کافیست.

 

در ادامه موارد زیر را بررسی می‌کنیم:

  • نحوه ورود و اجرای نوت‌بوک‌ها در Azure notebook و ایجاد یا کلون کردن یک نوت‌بوک
  • نصب پکیج‌ها داخل نوت‌بوک‌ها یا توسط ترمینال

 

ورود، ایجاد یا کلون و اجرای نوت‌بوک‌ها

  • پس از ورود -توسط ایمیل مایکروسافتی (outlook یا hotmail)- برای دسترسی به نوت‌بوک‌ها وارد قسمت Libraries (از گزینه‌های بالای صفحه) می‌شویم تا لیست نوت‌بوک‌ها فعلی نمایش داده شود.
  • برای ساخت و یا کلون کردن نوت‌بوک روی گزینه New Library + کلیک می‌کنیم. حال برای کلون کردن ریپازیتوری کلاس در گیت‌هاب وارد تب From GitHub شده و آدرس آن را در فیلد اول و نام دلخواه خود برای نوت‌بوکی که ساخته خواهد شد را در فیلد دوم و آدرس دلخواهمان برای دسترسی به این نوت‌بوک را در فیلد سوم وارد می‌کنیم.
  • پس از پایان عملیات کلون کردن (مدتی طول می‌کشد) وارد کتابخانه کلون شده می‌شویم و نوت‌بوک‌ها با انتخاب آنها در دسترس هستند.
  • اگر سرور اجرای نوت‌بوک‌ها روشن نباشد با انتخاب یکی از نوت‌بوک‌ها روشن شده و پس از مدتی نوت‌بوک اجرا شده و همانند یک ژوپیتر نوت‌بوک که در کامپیوتر اجرا می‌کردیم، تحت وب قابل استفاده است.
  • با باز کردن نوت‌بوک پنجره‌ای برای انتخاب کرنل مورد نیاز برای این نوت‌بوک باز خواهد شد. البته کرنل را می‌توان بعدا از طریق تب Kernel داخل خود نوت‌بوک هم تغییر داد.
  • در ویدئو برای تست نوت‌بوک و کرنل آن سه کتابخانه openCV، Tensorflow و Keras در نوت‌بوک import شده و ورژن آنها بررسی و چاپ شد.
کلون‌کردن نوت‌بوک‌ها از طریق کلیک روی دکمه launch | azurenb در ابتدای هر نوت‌بوک نیز قابل انجام است.

نصب پکیج

علاوه بر تعداد زیاد پکیج‌های از پیش نصب شده برای هر نوت‌بوک امکان نصب پکیج‌های دلخواه هم از داخل نوت‌بوک و از هم طریق ترمینال وجود دارد.

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

نصب پکیج از داخل نوت‌بوک

  • در داخل نوت‌بوک‌ها با استفاده از اوپراتور «!» در ابتدای خط هر سلول می‌توان دستوری را از داخل نوت‌بوک روی کرنل سیستم‌عامل سرور اجرا کرد و خروجی آن را داخل نوت‌بوک مشاهده کرد. برای امتحان این موضوع دستور cal (کوتاه کلمه calendar) استفاده شد که یک تقویم کوتاه را نمایش می‌دهد.
  • همانطور که دستور cal که یک دستور محیط ترمینال ([terminal [bash) است داخل نوت‌بوک قابل دسترسی است؛ دستورات pip یا conda که برای نصب پکیج‌ها استفاده می‌کنیم هم در دسترس هستند.
  • برای امتحان در دسترس بودن این دو دستور لیست پکیج‌های نصب شده توسط هر دو برنامه با دستورهای pip list و conda list چاپ شد.
  • همچنین برای مثال نصب پکیج، پکیج cowsay از داخل خود نوت‌بوک نصب و بلافاصله قابل import کردن و استفاده شد.

نوت‌بوک توضیحات

نکته مهم در حذف پکیج از داخل نوت‌بوک

از آنجایی که از داخل نوت‌بوک‌ها امکان دادن ورودی (input) به برنامه در حال اجرا روی ترمینال (مثلا هنگام نصب پکیج توسط pip) وجود ندارد و اگر برای حذف یک پکیج نیاز به تایید یا ورود هر نوع اطلاعاتی از سمت کاربر باشد عملیات به صورت کامل انجام نمی‌شود باید از فلگ (flag) یا تنظیم q- به همراه دستور pip استفاده کرد.

نصب پکیج توسط ترمینال

  • هر نوت‌بوک به صورت مجزا ۴ گیگ رم و ۱ گیگ فضای ذخیره‌سازی در اختیار دارد. به علاوه می‌توان به صورت مستقیم از طریق ترمینال به مدیریت و کنترل محیط اختصاصی (Environment / container) نوت‌بوک بر روی سرور پرداخت.
  • ترمینال از طریق دکمه Terminal در صفحه کتابخانه نوت‌بوک‌ها در دسترس است.
  • برای تست ترمینال مشخصات سرور چاپ شد.
  • بر اساس کرنل انتخاب شده برای نوت‌بوک، کرنل پایتون در مسیر جداگانه‌ای مطابق زیر قرار دارد:
    • کرنل python 2.7 :
      مسیر anaconda2_501/~
    • کرنل python 3.5 :
      مسیر anaconda3_420/~
    • کرنل python 3.6 :
      مسیر anaconda3_501/~
  • باید به این نکته توجه کرد که پایتون داخل نوت‌بوک با پایتونی که داخل ترمینال نصب است متفاوت است و در نتیجه برنامه‌های آنها مخصوصا pip و conda که ما نیازشان داریم هم متفاوت هستند؛ چراکه پایتون محیط ترمینال آن پایتونی است که روی سرور نصب است اما پایتونی که به عنوان کرنل نوت‌بوک استفاده می‌شود در مسیری همانند آنچه بالا گفته شد قرار دارد.
  • برای بررسی نکته بالا با استفاده از دستور which و اجرای which pip مسیر برنامه pip درون نوت‌بوک و درون ترمینال چاپ شد که مشاهده می‌شود درون نوت‌بوک pip از درون دایرکتوریanaconda3_501 و درون ترمینال از دایرکتوری دیگری اجرا می‌شوند.
  • برای دسترسی به برنامه pip یا conda ای که پکیج‌های نوت‌بوک را مدیریت می‌کند می‌توان به دو صورت عمل کرد:
    • اجرای مستقیم این برنامه‌ها از مسیر نصبشون به این صورت که بجای دستور pip یا conda می‌نویسیم : [anaconda3_501/bin/[pip or conda/~
    • همچنین می‌توان آدرس این برنامه‌ها را به متغیر (Environment Variable) ای به نام PATH اضافه کنیم تا به راحتی و تنها با نوشتن pip  یا conda در دسترس باشند. برای اینکار با وارد کردن دستور export PATH=~/anaconda3_501/bin:$PATH مسیر برنامه‌های نصب شده پایتون درون فولدر anaconda3_501 (این فولدر باید بر اساس کرنل انتخاب شده برای نوت‌بوک انتخاب شود) به متغیر PATH اضافه شده و برنامه‌های pip و conda (و دیگر برنامه‌ها را) تنها با اسمشان قابل اجرا می‌کند.
  • در ادامه برای استفاده آتی ابتدا یک جمله از شکسپیر درون فایلی نوشته شد.
  • سپس در ترمینال برای مثال نصب پکیج توسط ترمینال، پکیج lolcat نصب شد.
  • همچنین با استفاده از lolcat جمله‌ای از شکسپیر که درون فایل ذخیره شده بود چاپ شد.

نوت‌بوک توضیحات

 

آپدیت

با کلون کردن یک ریپازیتوری و اجرای نوت بوک‌های آن، تغییرات روی ریپازیتوری شامل اضافه شدن فایل‌ها، تغییر در آنها و … درون کتابخانه سرویس Azure به صورت خودکار بروز رسانی نمی‌شود. برای اینکار نیاز است تا با استفاده از git خودمان این کتابخانه (که در واقع کلونی از کتابخانه روی GitHub) است را بروز رسانی کنیم.

برای اینکار به این صورت عمل می‌کنیم که ابتدا ترمینال ریپازیتوریمون رو باز می‌کنیم (بالاتر نحوه باز کردنش توضیح داده شده) و سپس با دستور زیر به پوشه library که پوشه‌ای است که فایل‌های کلون شده از گیت‌هاب قرار داده شده اند میرویم:

→ cd library

در ادامه مطابق تصویر با دستور زیر بررسی می‌کنیم آیا تغییری در فایل‌های نوت بوک داده‌شده است یا خیر:

 git status →

همونطور که مشاهده می‌کنید تغییراتی درون فایل بعضی نوت‌بوک‌ها داده شده است که در قسمت Changes not staged for commit ذکر شده‌اند و فایل‌هایی جدید ایجاد شده‌اند که در قسمت Untracked files مشخص شده‌اند. لازم است قبل از بروزرسانی ریپازیتوری این تغییرات (فایل‌هایی که تغییر کرده‌اند) commit شده [در مورد این کار بخوانید] یا فایل‌ها به حالت اول برگردند (تغییرات آنها پاک شود) که اگر تغییرات داده شده روی نوت‌بوک‌ها مهم نیستند بهتر است همینکار را بکنیم. دلیل این‌کار این است که در طی بروز رسانی ریپازیتوری از منبع آن در گیت‌هاب تغییرات داده شده از دست نرفته و حتی بعدا قابل انتقال به دیگر نسخه‌‌های این ریپازیتوری باشند.

در اینجا تغییرات را پاک کرده و فایل نوت‌بوک‌ها را به حالت اول آنها برمی‌گردانیم. برای اینکار مطابق تصویر با دستور زیر تمامی فایل‌های تغییر کرده را به حالت اولشان برمی‌گردانیم:

→ git checkout .

در دستور بالا به دات (. یا نقطه) در انتهای دستور دقت کنید. این نقطه به معنی اعمال checkout -در نظر نگرفتن تغییرات- به همه فایل‌های modified (فایل‌های تغییر کرده یا همان فایل‌هایی که در تصویر قبلی لیست شده بودند) است.

حال همانطور که از اجرای دوباره دستور git status مشخص است، تغییراتی که در فایل‌ نوت‌بوک‌ها داده بودیم حذف شده اند و نام هیچ فایلی در قسمت Changes not staged for commit ذکر نشده است.

در ادامه برای گرفتن آخرین تغییرات از ریپازیتوری گیت‌هاب و اضافه کردن آنها به ریپازیتوری فعلیمون مطابق تصویر از دستور زیر استفاده می‌کنیم:

→ git pull

پس از اجرای این دستور آخرین تغییرات به زیپازیتوری جاری در Azure اضافه می‌شود. همچنین همانطور که مشاهده می‌کنید لیست نوت‌بوک‌های تغییر کرده به همراه میزان تغییر آن‌ها نمایش داده شده است. حال با بازگشت به قسمت library سرویس نوت‌بوک‌های اضافه شده قابل اجرا هستند.

دانلود و نصب آناکوندا برای کار با پایتون

به آدرس https://www.continuum.io/downloads  بروید.

  1. نسخه‌ای که میخواهیم دانلود و نصب کنیم نسخه بالاتر یا برابر با Python 3.5 version است. لطفا ورژن پایین تر دانلود نکنید.
  2. برای دانلود نسخه ی مناسب, باید بدانید ویندوزتان 32 بیتی یا 64 بیتی است. اگر نمیدانید این لینک را مطالعه کنید:
    https://support.microsoft.com/en-us/help/15056/windows-7-32-64-bit-faq
  3. اگر از سیستم عامل ویندوز استفاده نمیکنید, به اینجانب  پیام بدهید و راهنمای نصب سیستم عامل  (Max، Linux) را دریافت کنید.

راهنمای دانلود برای ویندوز:

اگر سیستم عامل 32 بیتی دارید, روی لیک 32 بیتی و اگر 64 بیتی دارید روی لینک مربوطه کلیک کنید. (مطابق تصویر زیر)

راهنمای نصب:

  • روی فایل exe کلیک نمایید
  • مراحل را پیش بروید تا به تصویر زیر برسید؛ مطابق تصویر هر دو گزینه را تیک بزنید

توجه: (خود Anaconda توصیه کرده به علت احتمال تداخل PATH با نسخه های دیگر پایتون روی سیستمتان این گزینه را تیک نزنید. با این حال اگر دفعه اولی است که پایتون را نصب میکنید, برای سادگی توصیه میکنم این گزینه را تیک بزنید.)

– نصب در حود 15 دقیقه طول میکشد؛ در انتها روی دکمه ی finish کلیک نمایید.

 

راهنمای اجرا

راهنمای اجرای spyder :

از منوی start

آیکن مربوط به Anaconda Navigator

روی دکمه ی آبی رنگ (Launch) اجرای spyder کلیک کنید.

در نهایت محیط زیر را مشاهده خواهید کرد:

در سمت راست (2) کنسول و در سمت چپ (1) محیط کد نویسی را مشاهده میکنید که در کلاس تشریح شد.

 

راهنمای اجرای نوت‌بوکهای jupyter:

پوشه‌ی حاوی فایلهای .ipynb را که از گیت‌هاب درس دانلود کرده اید به مسیر دلخواه کپی کنید.

به این مسیر رفته و shift + کلیک راست کنید.

گزینه‌ی Open command window here را کلیک کنید.

در پنجره‌ی باز شده دستور jupyter notebook را تایپ کنید.

حال باید مرورگر شما باز شده و نوت‌بوکهای شما نشان داده شوند.