صفحه اصلی / یادگیری عمیق / GPU رایگان برای محققان یادگیری عمیق – آشنایی با سرویس ابری Google Colab

GPU رایگان برای محققان یادگیری عمیق – آشنایی با سرویس ابری Google Colab

بسم الله الرحمن الرحیم

مدتها بود قصد داشتم در مورد سخت افزار و امکانات مورد نیاز محققان یادگیری عمیق مطلب جدیدی بنویسم که متاسفانه فرصت نمیشد. تعطیلات عید یک فرصت کوتاهی رو ایجاد کرد تا بتونم بعضی از مقالات و پروژه های عقب افتاده رو کمی پیش ببرم که انشاءالله طی روزها و هفته های آینده سعی میکنم اون مطالب رو در سایت قرار بدم. یکی از اون مطالب آموزش استفاده از سرویس ابری رایگان Google Colab بود که امروز با هم به یک اشنایی اولیه و شیوه کار با اون میرسیم. از بین عزیزان ایرانی مهندس ملک زاده عزیزمون قبلا لطف کرده بودن و در وبلاگشون توضیحات خوبی رو در مورد Google Colab ارائه کرده بودن (اینجا رو ببینید). در آموزش زیر من سعی کردم بصورت گام بگام تقریبا همه موارد اولیه رو پوشش بدم و عزیزان براحتی بتونن از این سیستم تا زمانی که رایگان هست بهره کافی رو ببرند. در فرصت های آینده این آموزش انشاءالله به روز میشه.

آشنایی با سیستم ابری Google Colab :

یکی از مهمترین دغدغه های محققان حوزه یادگیری عمیق فراهم آوری سخت افزار و بستر مورد نیاز جهت آموزش مدلهای عمیق است. در دو مقاله قبلی ما به بررسی کارتهای گرافیک مناسب پرداختیم و سعی کردیم تا دید مناسبی نسبت به گزینه های در دسترس و میزان اثربخشی آنها برای محققان گرامی ارائه دهیم. شوربختانه به دلیل ناآرامی در بازار ارز و همینطور شروع موج جدیدی در درزمینه Bitcoin mining شاهد افزایش چند برابری قیمت کارتهای گرافیک در سراسر کشور بودیم و طیف زیادی از محققان و دانشجویان را در زمینه تهیه یک سیستم مناسب با مشکل مواجه کرده است. ما سعی میکنیم به این مطلب طی چند مقاله بعدی بپردازیم و راهکارهای گوناگونی در این زمینه ارائه دهیم . در اولین بخش ازاین سری مقالات ما به سرویس جدید و رایگان گوگل بنام Google Colab خواهیم پرداخت که یک سرویس ابری رایگان برای محققان حوزه یادگیری عمیق و یادگیری ماشین است.

با استفاده از این سرویس شما میتوانید بصورت رایگان نسبت به آموزش مدلهای عمیق خود اقدام کنید و از مزایای سخت افزار قدرتمند و بستر آماده گوگل براحتی برای تحقیقات خود بهره ببرید.

توضیحات در مورد Google Colab :

Google Colab سرویس ابری ارائه شده از طرف گوگل است که بشما اجازه برنامه نویسی با زبان پایتون را داده و امکان نصب و کار با پکیج های مختلف زبان پایتون و فریم ورکهای مطرح یادگیری عمیق همانند Tensorflow, Keras, Pytorch, etc را فراهم می آورد. Google Colab امکانی را فراهم آورده است که از طریق آن چند توسعه دهنده میتوانند بر روی یک سورس کد به اشتراک گذاشته شده به فعالیت بپردازند و به همین جهت محیطی غنی برای توسعه و تحقیقات توسط افراد مختلف یک تیم است.

نکته قابل توجه در رابطه با این سرویس، جدای از فراهم آوری بستری آماده به کار برای استفاده از فریم ورکهای یادگیری عمیق، ارائه GPU رایگان به کاربران است که اثربخشی این سرویس را عملا چندین برابر کرده است. در این سرویس به هر کاربر یک  Tesla K80 GPU  ارائه میشود که کاربر میتواند از آن برای توسعه و اجرای برنامه های کاربردی و یا تحقیقاتی در حوزه یادگیری عمیق بهره برداری نماید.

شیوه استفاده :

در این بخش به چگونگی استفاده از این سرویس میپردازیم و خواهیم دید چگونه میتوان از این سرویس ابری فوق االعاده بهره برد :

برای شروع اگر حساب کاربری در گوگل ندارید یک حساب کاربری ایجاد کنید. برای اینکار میتوانید از اینجا شروع کنید. در گام بعد کافیست به آدرس https://colab.research.google.com مراجعه کنید.

با مراجعه به لینک بالا با صفحه خوش آمد گویی به شکل زیر مواجه میشوید:

در این صفحه اطلاعات کلی به منظور آشنایی اولیه شما با محیط Google Colab ، بشما ارائه میشود. چیزی که شما با آن مواجه خواهید بود و از طریق آن میتوانید از خدمات این سرویس استفاده کنید یک Jupyter notebook است.

Jupyter Notebook چیست؟

مقدمه

Jupyter Notebook یک محیط محاسباتی تعاملی[۱] است که کاربران را قادر میسازد تا اسنادی مبتنی بر نوت بوک، را تولید نمایند که شامل کد زنده، ویجت های تعاملی ، نمودارها، متون توضیحی ، معادلات، تصاویر و ویدئو میباشند.

این اسناد ، رکوردی کامل و خودکفا[۲] از یک محاسبه را فراهم آورده و قابلیت تبدیل به فرمت های گوناگون و همچنین به اشتراک گذاری از طریق email, DropBox، سیستم های کنترل نسخه (همانند git/GitHub ) و یا nbviewer.jupyter.org را دارند.

اجزاء

یک نوت بوک جوپیتر(Jupyter Notebook) از سه مولفه تشکیل میشود:

  • برنامه تحت وب نوت بوک: یک برنامه مبتنی بر وب تعاملی است که برای نوشتن و اجرای کد بصورت تعاملی و تولید اسناد مبتنی بر نوت بوک مورد استفاده قرار میگیرد.
  • کرنل ها: فرایندهای مجزایی که از طریق برنامه تحت وب نوت بوک اجرا شده و کدهای کاربران را تحت یک زبان برنامه نویسی مشخص شده اجرا کرده و خروجی آنرا به برنامه تحت وب نوت بوک بازمیگرداند. کرنل همچنین مدیریت مواردی همانند محاسبات مورد نیاز ویجت های تعاملی، auto completion، و دیباگ و… را برعهده دارد.
  • اسناد نوت بوک: اسناد خودکفایی که شامل بازنمایشی از تمامی محتویان قابل مشاهده در یک برنامه تحت وب نوت بوک  شامل ورودی و خروجی مرتبط با محاسبات، متون توضیحی ، معادلات، تصاویر، و … است. هر سند نوت بوک کرنلی مخصوص به خود دارد.

برنامه تحت وب نوت بوک

برنامه تحت وب نوت بوک کاربران را قادر میسازد تا :

  • بتوانند در مرورگر خود با امکاناتی نظیر syntax highlighting ، حاشیه گذاری خودکار و code completion به برنامه نویسی بپردازند .
  • بتوانند کد خود را در داخل مرورگر اجرا کرده و نتایج محاسبات را به همراه کدی که آنها را تولید کرده مشاهده کنند.
  • بتوانند نتایج محاسبات خود را با بازنمایی های غنی ، همانند HTML,LaTeX,PNG,SVG,PDF,etc مشاهده کنند.
  • بتوانند با استفاده از زبان Markdown متون توضیحی ایجاد کنند.
  • در متون توضیحی خود بتوانند با استفاده از سینتکس  LaTeX  معادلات ریاضی را نوشته  که در مرورگر توسط MathJax بصورت طبیعی نمایش داده میشوند.

Kernels

از طریق معماری ارسال پیام و کرنل Jupyter ، نوت بوک به کد این اجازه را میدهد تا در گستره ای از زبانهای برنامه نویسی مختلف اجرا گردد. برای هر سند نوت بوک که کاربری آنرا باز میکند، یک برنامه تحت وب کرنلی را که آن کد را برای آن نوت بوک اجرا میکنید، اجرا مینماید. هر کرنل قادر به اجرای کد در یک زبان برنامه نویسی بوده و برای زبانهای برنامه نویسی زیر کرنل های متناظر در دسترس هستند:

کرنل پیشفرض کدهای زبان پایتون را اجرا میکند. نوت بوک شیوه ای ساده برای کاربران فراهم میکند تا هرکدام از این کرنلها را بتوانند در یک نوت بوک داده شده انتخاب کنند.

هرکدام از این کرنلها از طریق برنامه تحت وب نوت بوک و مرورگر وب که از JSON بر روی پروتکل های پیام رسانی ZeroMQ/WebSockets بهره میبرند ارتباط برقرار میکنند که در اینجا مورد بررسی قرار گرفته است. بیشتر کاربران نیازی به دانستن این جزییات ندارند، اما دانستن این مبحث در درک اینکه “کرنل کد را اجرا میکند” کمک میکند.

اسناد نوت بوک

اسناد نوتبوک حاوی ورودی ها و خروجی های یک جلسه تعاملی و همچنین متون توضیحی که به همراه کد وجود دارد اما قرار نیست اجرا شود میباشند. خروجی غنی تولید شده توسط کد در حال اجرا، شامل HTML، تصاویر، ویدئو، نمودارها و.. در داخل نوت بوک تعبیه میشوند که این امر سبب ایجاد یک رکورد خودکفای (خود دار self contained) کامل از محاسبات میشود.

زمانی که شما یک برنامه تحت وب نوت بوک را بر روی کامپیوتر خود اجرا میکنید، اسناد نوت بوک صرفا فایلهایی بر روی فایل سیستم محلی شما با پسوند .ipynb هستند. این مساله بشما اجازه میدهد تا از جریان کاری مشابه برای ساماندهی نوت بوکهای خود در پوشه های مختلف بهره ببرید و آنها را با دیگران به اشتراک بگذارید.

نوت بوکها شامل دنباله ای خطی از چند سلول هستند. این سلول ها به ۴ نوع مختلف تقسیم میشوند :

سلول کد : ورودیو خروجی کد زنده که توسط یک کرنل اجرا میشود

سلول Markdown : متون توضیحی و تفصیلی به همراه معادلات لاتکس تعبیه شده احتمالی

سلولهای سرتیتر: ۶ سطح از ساماندهی و فرمت دهی سلسله مراتبی

سلولهای خام : متون بدون فرمت را شامل میشود ، بدون هیچ تغییری زمانی که نوت بوکها به فرمتهای دیگیری با استفاده از nbconvert تبدیل میشوند.

اسناد نوت بوک بطور داخلی بصورت  `JSON <https://en.wikipedia.org/wiki/JSON>`__ data  هستند که با  binary values `base64 <http://en.wikipedia.org/wiki/Base64>`__  انکود شده اند. این کار باعث میشود که بتوان آنها را توسط هر زبان برنامه نویسی ای خواند یا مورد تغییر قرار داد. از آنجایی که JSON یک فرمت متنی است، اسناد نوت بوک با سیستم های کنترل نسخه سازگار هستند.

نوت بوکها را میتوان با استفاده از برنامه کاربردی nbconvert جوپیتر به فرمتهای ایستا شامل HTML، reStructeredText ، LaTeX، PDF و اسلاید شو (reveal.js)  تبدیل نمود.

علاوه بر آن، هر سند نوت بوک در دسترس از طریق یک لینک عمومی در گیت هاب و یا غیره را میتوان از طریق nbviewer به اشتراک گذاشت. این سرویس سند نوت بوک را از طریق URL بارگذاری کرده و آن را در قالب یک صفحه ایستای وب (static web page) نمایش میدهد. صفحه وب نتیجه شده را سپس میتوان بدون نیاز به نصب نوت بوک جوپیتر با سایرین به اشتراک گذاشت.

آشنایی با بخشهای مختلف :

در صفحه باز شده ، مشاهده میکنید که در سمت چپ تصویر چندین منو وجود دارد. در زیر منو نیز ، نوار ابزاری با چند عملیات محدود قرار داده شده است. از میان گزینه های مختلف، گزینه File, Runtime و Tools بیشتر حائز اهمیت هستند بنابر این ما به توضیح این منو ها میپردازیم.

برای شروع بر روی منو File کلیک میکنیم. با انجام این کار با تصویر زیر مواجه میشویم:

گزینه اول Locate in Drive : این گزینه زمانی فعال میشود که شما در حال کار بر روی یک سند notebook ذخیره شده در درایو خود باشید. با کلیک بر روی این گزینه شما به Google Drive خود منتقل شده و سند مورد نظر انتخاب میشود. این گزینه در زمانی که شما در حال کار بروی چند سند هستید و یا قصد به اشتراک گذاری، تهیه بک آپ و… دارید بسیار مفید خواهد بود.

New Python 2 Notebook/New Python 3 Notebook :

این گزینه ها بشما اجازه میدهند تا از نسخه پایتون ۲ و یا ۳ در سند نوت بوک خود استفاده کنید. بعد از انتخاب هر نسخه، امکان تغییر نسخه پایتون در آن سند از طریق زیر منو Runtime ممکن است.

Open Drive notebook… : با انتخاب این گزینه میتوانید به محتویات Google Drive خود دسترسی پیدا کرده و اسناد نوت بوک مورد نظر خود را بارگذاری کنید.

Open recent… :  این گزینه لیستی از آخرین اسناد نوت بوک که اخیرا مورد استفاده قرار داده اید را بشما نمایش داده و میتوانید برای بارگذاری آنها از این گزینه نیز استفاده کنید.

Upload a notebook… : از طریق این گزینه میتوانید یک سند Notebook را از سیستم خود بر روی Google Drive خود آپلود کرده و در Google Colab بارگذاری نمایید. دقت نمایید بعد از Upload شدن سند، سند بصورت خودکار بارگذاری میشود و تغییراتی که در سند قبلی داده اید از بین خواهد رفت. پس قبل از استفاده از این گزینه اطمینان حاصل کنید سند فعالی وجود نداشته یا تغییرات مورد نظر خود را ذخیره کرده باشید.

Rename: از این گزینه برای تغییر نام سند notebook استفاده میشود.

Move to trash : برای حذف یک سند از این گزینه استفاده میشود.

Save a copy to Drive… : از این گزینه برای ذخیره یک رونوشت از سند فعال فعلی در Google Drive شما استفاده میشود. با کلیک بر روی این گزینه، سند جدید هم بلادرنگ در صفحه جدیدی اجرا میگردد.

Save: از این گزینه برای ذخیره سازی تغییرات استفاده میشود

Save and pin revision : از این گزینه برای ذخیره تغییرات و همینطور ثبت یک نسخه بازبینی (revision) استفاده میشود.

Revision history: با کلیک بر روی این گزینه یک نوار سیاه رنگ در انتهای تصویر نمایش داده میشود بصورت زیر :

برای مشاهده لیست revision ها کافیست بر روی نوار کلیک کرده و آنرا به سمت بالا بکشید. با انجام اینکار با تصویری مشابه زیر مواجه خواهید شد که میتوانید متعاقبا نسبت به بازگردانی یا download یک نسخه بازبینی اقدام کنید:

Download Ipynb/py : از این گزینه ها میتوانید برای دانلود سند نوت بوک جاری در قالب Jupyter notebook و یا فایل python معادل استفاده نمایید. زمانی که گزینه Download .py را انتخاب میکنید. تمامی متون توضیحی،… بصورت کامنت تبدیل میشود تا اینگونه بتوان براحتی این فایل را نیز اجرا و مورد استفاده قرار داد.

دقت نمایید اگر  در حال کار بر روی یک سند نوت بوک جاری باشید منو File بصورت زیر خواهد بود. در این صورت شما گزینه دیگری تحت عنوان Open in playground خواهید داشت. با کلیک بر روی این گزینه وضعیت شما از online به offline تغییر پیدا خواهد کرد. در این حالت تغیرات شما ذخیره نشده و تنها از طریق کلیک بر روی دکمه Copy to Drive که بر روی نوار ابزار زیرین تعبیه شده میتوانید تغییرات اعمالی را در فایل اصلی ثبت و اعمال نمایید. از این گزینه برای تست بی دغدغه و آزمایشی ، بدون نگرانی از اعمال تغییرات نهایی در فایل اصلی استفاده میشود.

سایر زیر منوها همانند Edit, View, Insert نیاز به توضیح خاصی ندارند و امکانات معمول جهت ویرایش، مشاهده ، و افزودن سلول های مختلف و یا محتوای آنان میباشند.

زیر منو Runtime : از این زیر منو در جهت اجرای یک یا همه سلول ها در یک سند نوت بوک استفاده میگردد. شما میتوانید تنها یک سلول و یا همه سلول ها را به ترتیب اجرا نمایید. همینطور میتوانید از طریق interrupt execution به اجرای یک سلول خاتمه دهید و یا از طریق Restart Runtime نسبت به شروع مجدد محیط اجرا اقدام کنید. از گزینه Connect to runtime… نیز برای اتصال به کرنل جدید استفاده میشود. بعد از مدتی عدم فعالیت محیط اجرای تخصیص یافته بشما منقضی میشود و برای شروع دوباره نیاز است بر روی این گزینه کلیک نمایید.

از طریق Change runtime type شما میتوانید نسخه پایتون (۲ و یا ۳) را در سند نوت بوک جاری خود مشخص کنید همچنین از طریق همین گزینه میتوانید پشتیبانی از GPU را برای محاسبات خود فعال کنید.

از بخش Tools نیز میتوانید به زیر منو Preferences  دست یافته و تغییرات مورد نظر نظیر نمایش شماره سطرها و … را اعمال نمایید.

نحوه اجرا  (یک مثال )

بعد از اینکه از منو File گزینه Python 3 Notebook را انتخاب کردید با صفحه ای همانند زیر مواجه میشویم:

در سلولی که وجود دارد میتوانیم اقدام به برنامه نویسی کنیم و بعد از اتمام کدنویسی با کلیک بر روی دکمه سیاه رنگ که در سمت چپ سلول وجود دارد کد نوشته شده را اجرا مینماییم. برای اجرا همچنین میتوانیم از کلیدهای ترکیبی Ctrl+Enter نیز بهره ببریم.

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

برای اضافه کردن سلول های جدید میتوان از منو Insert بهره برد و یا از نوار  ابزاری که در زیر منو وجود دارد استفاده کرد. با کلیک بر روی Code سلول جدیدی اضافه میشود. در سمت راست هر سلول یک نوار شناور وجود دارد که از آن میتوان برای اضافه کردن توضیحات و یا سلول کد جدید بهره برد.

در صورت حذف اشتباهی یک سلول میتوانید با استفاده از کلید های ترکیبی Ctrl+Shift+Z اعمال اخیر خود را بازیابی کنید.

با بردن اشاره گر ماوس در بین دو سلول نوار شناور جدیدی نمایان میشود که با کلیک بر روی گزینه های آن میتوان سلول جدیدی ایجاد نمود. در اینجا ما بر روی Text کلیک میکنیم تا توضیحاتی در رابطه با کد زیرین ارائه کنیم :

بعد از اعمال تغییرات، نتیجه بصورت زیر خواهد بود :

و متعاقبا نتیجه نهایی بصورت زیر خواهد بود :

به همین ترتیب میتوان سلول های مختلفی را جهت اجرای بخش های گوناگون یک برنامه ایجاد و اجرا نمود :

نصب package یا کتابخانه جدید :

به منظور نصب یک پکیج یا کتابخانه جدید در محیط Jupyter notebook میتوان از دستور !pip install بهره برد. با  استفاده از از عملگر ! میتوان دستورات سیستمی را اجرا نمود. با استفاده از این عملگر  میتوان دستوراتی که در ترمینال میتوان وارد کرد در سلول کد وارد و اجرا نمود. به همین صورت ما از این عملگر برای اجرای pip بهره میبریم .پکیج هایی همانند tensorflow و keras و numpy بصورت پیشفرض نصب و قابل استفاده هستند.

در ادامه ما سعی میکنیم با دستور !pip install -q matplotlib-venn  نسبت به نصب matplotlib-venn اقدام کنیم . ابتدا یک سلول جدید ایجاد کرده و سپس دستور را وارد و اجرا میکنیم :

با اجرای این سلول خروجی ای مشاهده نمیکنیم! علت این امر وجود سویچ –q است . برای مشاهده لاگ دستورات اجرا شده  کافیست دستور را بدون این سویچ اجرا کنیم. خروجی بصورت زیر خواهد بود :

و نهایتا بعد از این کار میتوان از پکیج جدید بهره برد :

به همین شکل میتوان نسبت به نصب فریم ورک کفی اقدام نمود. برای اینکار بصورت زیر عمل میکنیم :

بعد از نصب موفقیت آمیز  کفی :

خلاصه :

سلول ها:

یک نوت بوک لیستی از چند سلول است. هر سلول یا حاوی متن توضیحی و یا کد قابل اجرا و خروجی آن است. برای انتخاب یک سلول کافیست روی آن کلیک کنید.

سلول های کد

در زیر یک سلول کد را مشاهده میکنید.

زمانی که دکمه نوار ابزار به  Connected اشاره میکند، بر روی سلول مربوطه کلیک کنید تا آنرا انتخاب کرده باشید  و بعد محتویات سلول را از طرق زیر اجرا نمایید :

  • با کلید کردن بر روی آیکون Play در حاشیه سمت چپ سلول;
  • با استفاده از کلید های ترکیبی Ctrl+Enter و یا CMD در مک میتوانید بصورت درجا محتویات سلول را اجرا کنید.
  • با استفاده از کلید های ترکیبی Shift+Enter میتوانید محتویات سلول را اجرا کرده و فوکس را به سلول بعدی انتقال دهید و یا در صورتی که سلولی وجود ندارد یک سلول جدید ایجاد کنید.
  • با استفاده از کلید های ترکیبی Alt+Enter میتوانید سلول کد را اجرا کرده و یک سلول کد جدید دقیقا بعد از سلول فعلی ایجاد کنید.

گزینه های اضافی دیگری باری اجرای بعضی و یا همه سلول ها در منو Runtime و جود دارد که میتوانید از آنها نیز استفاده کنید.

سلولهای متنی

تصویر زیر یک سلول متنی را نمایش میدهد. شما میتوانید با دابل کلیک بر روی سلول، محتویات این نوع سلول را ویرایش کنید. سلول های متنی از سینتکس markdown بهره میبرند. با استفاده از این قابلیت شما میتوانید معادلات ریاضی را با استفاده از LaTeX به نگارش در آورید . این محتویات سپس توسط MathJax  که در مرورگر شما تعبیه شده است رندر شده و غنا و زیبایی خاصی به نوشته های شما میبخشد. برای نگارش با زبان LaTeX کافیست دستور مورد نظر خود را بین دو علامت $ قرار دهید. بعنوان مثال $\sqrt{3x-1}+(1+x)^2$ بصورت  [latex]$\sqrt{3x-1}+(1+x)^2$ [/latex] نمایش داده خواهد شد. در تصویر زیر یک سلول متنی در حال ویرایش را مشاهده میکنید. در بخش بالایی متن و در بخش پایینی پیش نمایش متن نگاشته شده قرار دارد.

در تصویر زیر سلول متنی بعد از خروجی از حالت ویرایش را مشاهده میکنید. با زدن Shift+Enter و یا کلیک بر روی سلول کدی دیگر از حالت ویرایش خارج میشویم.

در زیر نمونه دیگری از سلول متنی را مشاهده میکنید :

افزودن و حرکت دادن سلول ها

شما میتوانید با استفاده از دکمه های + CODE و + TEXT که با حرکت دادن نشانگر ماوس در بین سلول ها بشما نمایش داده میشوند سلول های جدیدی اضافه کنید. این دکمه ها در نوار ابزاری که زیر منو وجود دارد نیز قرار دارند و کلیک بر روی آنها سبب ایجاد یک سلول جدید در زیر سلول انتخاب شده فعلی میشود.

شما میتوانید یک سلول را با انتخاب آن و سپس کلیک بر روی Cell Up و یا Cell Down از نوار ابزار فوق الذکر حرکت دهید.

سلول های پشت سر هم را میتوان از طریق lasso selection” ” انتخاب کرد. این کار با کشیدن از خارج یک سلول و از بعد از بین گروهی از سلول ها قابل انجام است. سلول های غیر مجاور را نیز میتوان با کلیک کردن و بعد نگه داشتن کلید Ctrl بطور متوالی انتخاب نمود. به همین صورت با استفاده از کلید Shift بجای Ctrl میتوان تمامی سلول های ما بین را نیز انتخاب نمود.

کار کردن با پایتون

شما میتوانید فرایند های پایتون که مدت زمان بسیاری در حال اجرا هستند را متوقف کنید. برای اینکار کافیست سلول مورد نظر را انتخاب کرده و سپس از منو Runtime گزینه Intrrupt execution را جهت خاتمه دادن به اجرای کد در حال اجرا انتخاب کنید. همچنین میتوانید از کلیدهای ترکیبی Ctrl+M – I برای خاتمه دادن بهره ببرید. برای مشاهده دستورات بیشتر میتوانید از کلیدهای ترکیبی Ctrl+Shift+P استفاده کنید و یا از منو Tools بر روی گزینه Command palette استفاده نمایید.

System aliases

ژوپیتر شورت کات های مختلفی برای عملیاتهای رایج دارد که میتوانید از آنها استفاده کنید. این دستورات در زیر آورده شده اند :

با اجرای این دستورات نیازی به استفاده از عملگر ! نخواهید داشت. تصویر زیر این مساله را نشان میدهد :

به منظور پاک کردن خروجی یک سلول، ابتدا سلول حاوی خروجی را انتخاب کرده و سپس از نوار ابزار بالای سلول بر روی دکمه x کلیک نمایید. با قرار دادن اشاره گر ماوس بر روی هر کدام از دکمه ها میتوانید به کارکرد هرکدام پی ببرید. علاوه بر این روش، شما میتوانید با راست کلیک کردن بر روی حاشیه سمت چپ سلول حاوی خروجی و انتخاب Clear output از منو نمایش داده شده، نسبت به پاک کردن خروجی اقدام نمایید.

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

Tab-completion and exploring code

شما میتوانید از قابلیت کامل شدن خودکار یا auto completion در ژوپیتر نوت بوک بهره ببرید. برای استفاده از این قابلیت کافیست از کلید tab استفاده کنید. شیوه کار به این صورت است که بعد از نوشتن بخشی از یک کلمه کافیست ازکلید tab استفاده کنید. ادامه کلمه بطور خودکار کامل میشود. اگر چند نمونه شبیه به هم وجود داشته باشند لیستی به شما نمایش داده میشود که میتوان گزینه صحیح را انتخاب نمود. به همین شکل میتوان از متدها و کلاس ها و… موجود در یک فضای نام یا کلاس و… نیز مطلع شد. بعنوان مثال بعد از import numpy as np و نوشتن np. و زدن  tab لیستی شامل توابع، اشیاء و…  گوناگون در دسترس بشما نمایش داده خواهد شد.  به همین شکل با فشردن کلید tab بعد . میتوان به توابع عضو و… بصورت سلسله مراتبی دسترسی یافت.

با فشردن کلید tab بعد از ) یک tooltip حاوی اطلاعات اسختراجی از docstring بشما نمایش داده میشود.

شما میتوانید با تایپ ?   بعد از متد و یا شی مورد نظر خود و فشردنCtrl+Enter به اطلاعات کاملی دست پیدا کنید.:

Exceptions ها نیز بخوبی فرمت بندی شده اند و بشما در یافتن مشکل در کد خود کمک ویژه ای میکنند:

خروجی های غنی و تعاملی

خروجی تولید شده تنها محدود به متن نیست و میتوان گستره غنی ای از رسانه ها را نیز بعنوان خروجی نمایش داد. بعنوان مثال در تصویر زیر چگونگی نمایش یک نمودار را مشاهده میکنید :

ادغام با Google Drive

برنامه Colaboratory گوگل با Google Drive ادغام شده است. این امر به شما اجازه به اشتراک گذاری، کامنت گذاری، و همکاری با چندین نفر بر روی یک سند را میدهد.

دکمه Share (در سمت راست و بالای نوار ابزار) بشما اجازه به اشتراک گذاری نوت بوک و همچنین کنترل مجوزهای روی آن را میدهد.

  • File->Make a Copy باعث ایجاد یک رونوشت از سند جاری در Google Drive شما میشود.
  • File->Save باعث ذخیره تغییرات شما بر روی فایل در Google Drive شما میشود. و گزینه File->Save and pin revision باعث ثبت نسخه بازبینی شما میشود بگونه ای که از تاریخچه بازینی شما حذف نشود.
  • File->Save and checkpoint باعث ثابت سازی نسخه شما میشود تا در بخش تاریخچه حذف نگردد..
  • File->Revision history تاریخچه نسخه های بازبینی را بشما نشان میدهد.
  • چند نفر در یک آن میتوانند یک سند یکسان را ویرایش کنند . همانند Google Docs شما میتوانید شرکتکنندگان (همکاری کنندگان کولبریتورها)! را هم در داخل سند (بالا سمت راست سمت چپ دکمه کامنت) و هم در داخل یک سلول مشاهده کنید (سمت راست یک سلول)

ارتباط با فایلهای ذخیره شده در Google Drive خواند و نوشتن :

برای دسترسی به فایلهای آپلود شده خود در Google Drive روشهای مختلفی وجود دارد. یکی از رایج ترین روشها استفاده از رپر ocamlfuse است که به شما اجازه میدهد درایو گوگل خود را mount کرده و از آن استفاده کنید.

به همین منظور کدهای زیر را در نوت بوک جاری خود کپی و اجرا کنید :

در گام بعد توکن های احراز هویت برای برنامه Google Colab را ایجاد میکنیم:

بعد از اجرای این بخش با تصویری همانند شکل زیر مواجه میشید. در اینجا باید بر روی لینک نمایش د اده شده کلیک کنید. بعد از اینکار با اکانتی که در Google Colab فعالیت میکنید لاگین کرده و بر روی Allow کلیک کنید.

بعد از انجام اینکار در صفحه جدید کد احراز هویت شما نمایش داده میشود کد مورد نظر را کپی کرده و در مرحله اول در بخش Enter verification code قرار دهید و بعد Enter کنید.

در ادامه همین مراحل را برای احراز هویت کتابخانه FUSE انجام میدهیم.

بعد از کپی کردن کد تایید :

و در انتها نیز درایو خود را mount کرده و مورد استفاده قرار میدهیم :

به همین صورت میتوانید فایلهای خود را در Google Drive آپلود کرده و به پوشه های مورد نظر خود دسترسی پیدا کرده و نسبت به اجرای برنامه ها و یا …. اقدام کنید.

 

آپلود یا دانلود فایلها :

در مواردی که سورس کد شما حاوی چند ماجول و فایل دیگر میباشد میتوانید با استفاده از دستور زیر  نسبت به اپلود آنها اقدام کنید .

به همین صورت به منظور دانلود فایل یا فایلهایی میتوانید از دستور زیر استفاده کنید :‌

 

شما میتوانید برای مشاهده سایر روشها جهت آپلود و یا دانلود فایل و یا دیتاست خود از این لینک استفاده کنید.

 

 

سید حسین حسن پور

بهار ۱۳۹۷

 

[۱] interactive computing environment

[۲] self-contained

درباره سید حسین حسن پور متی کلایی

سید حسین حسن پور متی کلایی
موسس و مدیر سایت. اطلاعات در مورد فعالیت های کاری و تحصیلی : linkedIn . برای ارتباط از بخش تماس با ما یا در باره من استفاده کنید.

این مطالب را نیز ببینید!

یادگیری عمیق یا Deep learning چیست؟ بخش اول

بسم الله الرحمن الرحیم سلام به همگی , امروز میخوام درمورد یادگیری عمیق صحبت کنم …

35 دیدگاه‌ها

  1. سلام
    نصب کفی چقدر این ساده بود با یک دستور نصب شده در سیستم خودمون هم اینجوری راحتره ؟ نکنه کفی ۲ رو نصب میکنه

    • سید حسین حسن پور متی کلایی

      سلام. نه از اوبونتو ۱۷ این شیوه نصب اضافه شده . ورژن های قبلی کما فی السابق به همون صورت باید نصب بشن .
      البته دقت کنید که شیوه کامپایل کفی به شیوه معمول بهتر هست . من انشاءالله سعی میکنم در یک مطلب جداگانه کامل در مورد شیوه نصب کفی (شیوه های مختلف و…) صحبت کنم و مطلب بزارم .

  2. بسیار متلب جالبی بود.

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

  3. سلام ممنون از این مطلب ارزشمند
    یه سوال دارم توی colab گوگل وقتی یه مدل را که با کراس آموزش داده شده را بخوایم توی درایو گوگل ذخیره کنیم از چه دستوری باید استفاده بشه ؟

    • #Save it to google drive use Pydrive
      # Install the PyDrive wrapper & import libraries.
      # This only needs to be done once in a notebook.
      pip install -U -q PyDrive#a!
      from pydrive.auth import GoogleAuth#a
      from pydrive.drive import GoogleDrive#a
      from google.colab import auth#a
      from oauth2client.client import GoogleCredentials#a
      # Authenticate and create the PyDrive client.
      # This only needs to be done once in a notebook.
      auth.authenticate_user()#a
      gauth = GoogleAuth()#a
      gauth.credentials = GoogleCredentials.get_application_default()#a
      drive = GoogleDrive(gauth)#a

      # Create & upload a file.
      model.save(‘YUOR MODEL.h5’)#a
      uploaded = drive.CreateFile({‘title’: ”YUOR MODEL.h5′})#a
      uploaded.SetContentFile(‘YUOR MODEL.h5’) #a
      auploaded.Upload()#a
      rint(‘Uploaded file with ID {}’.format(uploaded.get(‘id’)))#a

      • ممنون از راهنمایی شما

        البته ممکن است خط اول خطا بدهد. (برای من اینگونه بود) بنابراین بهتر است از
        !pip install pydrive –upgrade
        استفاده شود.

    • سید حسین حسن پور متی کلایی

      من مدتهاست با کراس و تنسورفلو کار نکردم. از طرفی برای ذخیره فایل در همون side bar‌ بخش کد میتونید به نمونه کدهای مختلف برای ذخیره سازی دست پیدا کنید. بعد از اینکه درایو رو مونت کردید فکر نمیکنم مشکلی داشته باشید هرچند مطمپن نیستم و باید چک کنید.

  4. سلام
    ممنون از شما که علمتون رو به صورت رایگان در اختیار دیگران میگذارید. من تو حوزه یادگیری عمیق کار میکنم و با وجود گرون شدن سخت افزارهای لازم قصد دارم طی چند روز آینده کارت گرافیک و رم موردنیازم رو تهیه کنم. شما فرمودید قصد دارید تو مطالب آینده روش های دیگری رو هم معرفی کنین. امکان داره خیلی خلاصه روش ها رو زودتر اعلام کنین تا به جای خریدن سیستم موردنیاز در صورت امکان از روشهای مذکور استفاده کنم.
    در مورد سیستم ابری شخصا ترجیح میدم سخت افزارش رو تهیه کنم.

    • سید حسین حسن پور متی کلایی

      سلام
      یک بخش مربوط به معرفی سرویس های ابری دیگه مثل floydhub‌ و امثالهم بود بخش دیگه مطالب در مورد خرید کارت گرافیک دست دوم از داخل یا خارج کشور که دقت کنن کارتهای تقلبی بهشون ندن چون بعد از موج bitcoin کارتهای تقلبی مختلف و زیادی تو ebay‌و… شروع به فروش کردن خصوصا چینی های متقلب. بحث بعدی در مورد تهیه لپ تاپ بجای PC‌ بود و یه براورد قیمت و اینکه چطور انتخاب کنیم. در ادامه هم میخواستم مطالبی در مورد نحوه اتصای یک کارت گرافیک PC به لپ تاپ رو عنوان کنم. مورادی از این دست .
      شما که قصد خرید کارت داریداگر بودجه شما اجازه میده ۱۰۸۰TI‌اگر نه به ترتیب بیایید پایین . ۱۰۸۰ ۱۰۷۰ ۱۰۶۰ شش گیگی و بعد هم ۱۰۵۰TI چهار گیگی (البته اگر دست دوم ۹۸۰TI پیدا کردید با ۶ گیگ بهتره)

  5. خیلی ممنون آقای حسن پور، لطف کردید.

  6. سلام اقای حسن پور ممکن هست ایمل تان را به من اعلام کنید در خصوص یک سری سوالات و مشاورت در مورد کار تحقیقاتی اینجانب. عاجزانه منتظر دریافت ایمیل از شما هستم. بسیار بسیار کمک بزرگی به من خواهید کرد.
    ایمیل بنده:
    soroorgh24@gmail.com

  7. سلام
    در جوپیتر نوتبوک این دوتا دستوراتی که استفاده میشه دقیقا کارکردشون چی هست ؟
    In [1]: %load_ext autoreload

    In [2]: %autoreload 2

    میدونم برای بارگزاری اتوماتیک ماژوال ها هست ولی هیچ حسی بهش ندارم دقیقا کارکردش چی هست یعنی چی اتوماتیک مازول ها لود میشن ؟ بزاریم نزاریم چه فرقی میکنه ؟

    • سید حسین حسن پور متی کلایی

      سلام
      برای لود کردن ماجول شما بصورت خودکار هست. مثلا شما چندتا فایل داری میری اجرا میکنی بعد دوباره تو ادیتور فایل رو تغییر میدی سید میکنی.
      برای اینکه تغییراتت در حالت عادی اعمال بشه مجبوری کلا ریلود کنی ماجول رو از اول. اما با اینکار هر ماجول بطور خودکار هربار ریلود میشه (قبل اینکه یک خط کدش اجرا بشه)
      اون ۲ هم یه کد هست که به معنای ریلود خودکار همه ماجول هاست .
      ارگومانهای دیگه اش رو میتونی از اینجا ببینی :
      https://ipython.org/ipython-doc/3/config/extensions/autoreload.html

  8. و اینکه اون عدد ۲ چی هست ؟

  9. سلام آقای حسن پور ممنون از وب سایت خوبتون
    یه سوال داشتم زمانی که از این سرویس استفاده کردم و گزینه New Python 2 Notebook/New Python 3 Notebook رو انتخاب کردم پیغام زیر رو نمایش داد ؟
    Notebook loading error
    There was an error loading this notebook. Ensure that the file is accessible and try again.
    بعد از کلیک روی لینک زیر وارد گوگل درایو شده و یک نوت بوک ایجاد میشه. هر بار که این کار رو انجام میدم این روال تکرار میشه
    https://drive.google.com/drive/?action=locate&id=125rl3WGIDxQdWRjBO5P-uBRzoGn29wvO&authuser=0

    • سید حسین حسن پور متی کلایی

      سلام
      من تا بحال با این مشکل مواجه نشدم! متاسفانه هیچ ایده ای ندارم.
      تو گوگل درایو به برنامه Colab اجازه دادید ؟‌
      فکر میکنم تو سایت پرسش و پاسخ مطرح کنید و بعد لینکش رو در گروه تلگرام بزارید بهتر باشه تا غزیزانی اگه احیانا با این مشکل مواجه شدن و رفعش کردن کمکتون کنن

    • حسینجان عباس زاده

      واسه منم داد فکر کنم چون تحریم هستیم باشه. با فیلتر شکن سایفون رفتم و وارد شدم کار کرد و وارد محیط برنامه نویسیش شد و یه برنامه ساده نوشتم و اجرا گرفتم. شمام امتحان کنید ایشالله جواب میده.
      موفق باشید.

  10. با سلام و احترام اگر لازم باشد که دیتاستی حدود ۱ گیگی رو به عنوان داده train معرفی کنیم باید از گوگل درایو استفاده کنیم یا راه های بهتر دیگه هم هست؟

  11. سلام
    ممنون بابت سایت خیلی خوبتون
    میخواسم ببینم چطور میشه برنامه ای که قبلا تو جوپیتر نوشتیم رو تو این محیط لود کنیم و ران کنیم؟و اینکه برنامه من توی چنتا فایل py. جداگانه ست که تو جوپیتر تو یه فولدر قرار میدادم و ران میشد.اینجا به چه صورت هست؟

  12. خیلی ممنون از راهنماییتون
    کد من از چنتا فایل py. جداگانه تشکیل شده فایل اصلی رو فقط ران میکردم. منظورتون این هست که تو colab باید تک تکشونو ران کنم؟

  13. سلام

    ممنون بابت این پستی که گذاشتین. من میخوام از این colab توی لینوکس استفاده کنم اما برای استفاده از اون بایدفیلترشکن داشته باشم. آیا شما فیلترشکن خوب برای لینوکس سراغ دارین؟

  14. خیلی ممنون از پاسختون. من یک vpn خریدم اما متاسفانه خوب نیست. اگه vpn خوب سراغ دارین ممنون میشم راهنمایی کنین

  15. با سلام.
    ممنون از مطلب بسیار عالیتون.
    کار شما جای قدردانی داره .
    انشاالله که همیشه موفق و پیروز باشید .
    باتشکر.

  16. سلام
    خسته نباشید
    ببخشید برای آپلود کردن داده ها در برنامه چطور باید عمل کرد؟
    من دیتاست رو به صورت دو فایل npy تو درایو و پوشه اصلی مربوط به برنامه آپلود کردم ولی نتونستم به برنامه واردش کنم

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

This site uses Akismet to reduce spam. Learn how your comment data is processed.