شروع با Google Colab - سخت افزار رایگان برای آموزش مدل های هوش مصنوعی

عکس از مدیوم Tensorflow
عکس از مدیوم Tensorflow

مقدمه

خب خیلی ها هوش مصنوعی رو دوست دارن و میخوان که با پیشرفت علم، ازش عقب نمونن و میخوان مدل های هوش مصنوعی آموزش بدن (که با این ابزارهای منتشر شده، کار آسونی شده). ولی خب یکسری گلوگاه های محدود کننده ای، مثل سخت افزار وجود دارن. گوگل کولب با در اختیار گذاشتن یک فضای پردازشی مبتنی بر Cloud این امکان رو فراهم کرده که نیاز به سخت افزار های قدرتمند برای آموزش مدل هاتون نداشته باشید و همه کار ها رو توی Cloud انجام بدین.

هدف این ویرگول

در این ویرگول سعی میکنیم با گوگل کولب، یک سند قابل اجرا، بیشتر آشنا بشیم. این ویرگول به درد کسایی میخوره که میخوان با پایتون، تسک های هوش مصنوعی انجام بدن.

این چیزا رو سعی میکنیم پوشش بدیم:

  • خلاصه
  • گوگل کولب چیست؟ (مزیت ها و نقاط ضعف ها)
  • کلید های میانبر
  • سخت افزار
  • رقیب ها
  • چیزایی که در این ویرگول نمی گنجد
  • منبع ها

ولی خب چه چیزای رو قبل از خوندن این ویرگول، بدونید؟

  • بدونید ژوپیتر چیست
  • یکمی دستورات لینوکس

خلاصه:

این یک خلاصه ای از نقاط قوت و ضعف گوگل کولب هست. اگر میخواین بیشتر بدونید، simply scroll more ?

خوبی ها:

  1. سخت افزار رایگان
  2. اشتراک گذاری (گوگل درایو - گیت هاب - قابلیت اشتراک مثل گوگل داکز)
  3. عدم نیاز به نصب لایبرری های مشهور (از پیش نصب شده اند)
  4. راحتی استفاده (UX عالی و حتی داک تم!)
  5. استقلال از پلتفرم (روی ویندوز - مک - لینوکس و حتی موبایل میتونید استفاده کنید)

بدی ها :

  1. عدم امکان اجرای کد در بکگراند
  2. نیاز به نصب لایبرری های غیر مشهور در هر Session
  3. همه ی فایل های گوگل کولب در درایو باید ذخیر بشن (فک نکنم فضای ابری دیگه ای رو بشه باهاش کار کرد)
  4. اگر فایلهای زیادی رو روی گوگل درایتون ذخیره کنید، به سرعت پر میشه و باید یه مبلغی رو برای اضافه کردن فضا بدین
  5. تک هسته بودن CPU

گوگل کولب چیست؟

یک داکیومنت اجرا شدنی، تعاملی، بر پایه ی ژوپیتر با سخت افزار رایگان، با قابلیت اتصال به گوگل درایو، قابل اشتراک با دیگران برای کد زنی همزمان است. خیلی سعی کردم توی چند کلمه همش رو جا بدم. ?

سلول ها (Cells)

این داکیومنت که از سلول هایی (Cells) تشکیل شده و توی این سلول ها می‌تونید کد، متن، عکس، تگ HTML و ... بنویسید. کولب شما رو به یک Cloud Based Run-time متصل میکنه که بر پایه ی لینوکس عه و می‌تونید کد های پایتون خودتون رو به راحتی، و بدون نیاز هیچ Dependency اجرا کنید. یعنی حتی میتونید فایل های کولب تون رو با موبایل ویرایش کنید!

علامت گذاری در سلول ها (Markdown)

سلول های کولب مثل ژوپیتر، بر اساس Markdown شکل میگیرن و میتونید اینجا رو برای دیدن نحوه ی استفاده از این Markdown ها ببینید.

مزیت ها

اشتراک گذاری و فرمت ها

دایکومنت های گوگل کولب رو میتونید مثل گوگل داکز، به اشتراک بگذارید. با این قابلیت میتونید با دوستان و همکارانتون روی یکی داکیومنت در آنِ واحد کار کنید. همچنین کولب به گیتهاب شما میتونه متصل بشه. (برای اتصالش این جا رو بخونید) این داکیومنت ها میتونن به export بشن به فرمت های مختلف و حتی شما میتونید به صورت ژوپیتر نوت‌بوک هم دانلودشون کنید و به صورت آفلاین روشون کار کنید. (خب البته باید ژوپیتر local server رو ران کنید)

قبل از رفتن به بخش بعدی بگم که با استفاده از این قابلیت اشتراک گذاری، گوگل یکسری پروژه های معروف رو با داکیومنت هاش توی Google Seed Bank گذاشته که دیدنشون و در نظر گرفتنشون به عنوان Best practice، خیلی میتونه کمکتون کنه. این به شما دید میده که چطور یک داکیومنت بر اساس ژوپیتر بسازید.

لینوکسی بودن

گفتم که بر اساس یک runtime لینوکسی هست، درسته؟ خب برای اجرای دستورات لینوکس اضافه کردن یک علامت تعجب (!) ابتدای دستوری که که می‌نویسید، به کولب می فهمونه که میخواین یک دستور لینوکس مثل pip رو استفاده کنید. یه چیزی مثل این :

!pip install -q matplotlib-venn

اکثر دستورات لینوکسی جواب میدن روی کولب، ls , wget , curl و ... . ولی بعضی دستورات مثل cd یکم اذیت کنندن. خودمم نمی دونم چرا و باید در موردش سرچ کنم. این دستور رو با علامت درصد (%) اجرا میکنن. به این شکل:

%cd /content/

انگار وقتی با ! اجرا بشه، فقط توی همون سلول دایرکتوری شما عوض میشه ولی وقتی به صورت inline با علامت % اجرا میکنید، خارج سلول هم مسیر شما عوض میشه. کسی اگه نکته ای در این مورد داشت خوشحال میشم تو کامنت بگین.

حالا با این دستورات لینوکس، شما دیگه لازم نیست دیتاستی (مجموعه دادگانی) رو روی سیستم خودتون دانلود کنید. فقط کافیه اون رو با wget دانلود کنید و باهاش هرکاری دوست دارین بکنید. گوگل یه سرعت دانلود خیلی بالا در حد 20 مگابایت بر ثانیه (درسته، مگابایت!) بهتون میده که خیلی راضی کنندس!

اتصال به داریو

با این تیکه کد که توی Code Snippets خود کولب هم پیدا میشه، میتونید گوگل درایو خودتون رو به کولب متصل کنید و نتایج کار هاتون (مثلا وزن های شبکه عصبی تون) رو روی گوگل درایوتون ذخیره کنید تا فایل هاتون از بین نرند.

from google.colab import drive
drive.mount('/gdrive')
%cd /gdrive

فقط باید هنگام اجرای این سلول، روی لینک ظاهر شده بزنید، به اکانت گوگلتون لوگین کنید، با دکمه ی Allow اجازه بهش بدین، کد ظاهر شده رو کپی کنید و توی textbox ظاهر شده paste کنید.

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

نقاط ضعف

یک هسته سی پی یو : وجود یک هسته CPU باعث این میشه که یکسری تسک های Cpu-Based به کندی اجرا بشن و این تسک ها احتمالا روی لپتاپ یا کامپیوتر خودتون که معمولا 4 هسته دارن ( با فرض Multi-Thread کردن) سریعتر اجرا میشن

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

کلید های میانبر

من خودم به شخصه همیشه کلید های میانبر رو دوست داشتم و دارم! اصلا Keyboard User بودن رو دوست دارم و اولین قدم برای Super User شدن عه به نظر من.

جدا از این ها به کلید های مبانبر بپردازیم:

  • سلول ها با کلید های Shift + Enter اجرا میشن.
  • با کلید Ctrl + Enter سلول اجرا شده و Cursor شما روی سلول بعدی میره.
  • با کنترل + M + نقطه می تونید Session رو ری استارت کنید.
  • با Ctrl + F9 میتونید همه‌ی سلول ها رو به ترتیب در یک نوتبوک اجرا کنید.
  • با Ctrl + M H میتونید لیست کل کلید های میانبر رو ببینید.

این ها، از مهمترین ها بودن که به نظرم رسید.

سخت افزار

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

GPU: 1xTesla K80 , having 2496 CUDA cores, compute 3.7,  12GB (11.439GB Usable) GDDR5  VRAM

CPU: 1 x single core hyper threaded i.e(1 core, 2 threads) Xeon Processors @2.3Ghz (No Turbo Boost) , 45MB Cache

RAM: ~12.6 GB Available
Disk: ~320 GB Available 

نکته ی قابل توجه این عه که هر 12 ساعت این session ری استارت میشه اگر بهش وصل نشید و اگه 90 دقیقه هم قطع بشید، ری استارت میشه.

رقیب ها

من همه یان رقیب ها رو به شخصه بررسی نکردم و نمی دونم که کدومشون ممکنه مشکلاتی از قبیب تحریم یا احراز هویتی با Credit card دارن یا نه. میدونم که Kaggle مشکلی نداره و اوکیه فقط تحریمه. راستی گوگل کولب تحریم نیست!

  1. Azure Notebooks
  2. Kaggle
  3. Amazon Sagemaker
  4. IBM DataPlatform Notebooks

به شخصه کولب و kaggle رو دوست داشتم.

چیزایی که در این ویرگول نمی گنجد


منبع ها

  1. https://colab.research.google.com/notebooks/welcome.ipynb#scrollTo=-Rh3-Vt9Nev9
  2. https://www.youtube.com/watch?v=inN8seMm7UI&list=PLQY2H8rRoyvyK5aEDAI3wUUqC_F0oEroL
  3. https://colab.research.google.com/notebooks/io.ipynb#scrollTo=lPdTf-6O73ll
  4. https://colab.research.google.com/drive/151805XTDg--dgHb3-AXJCpnWaqRhop_2#scrollTo=vEWe-FHNDY3E
  5. https://www.reddit.com/r/learnpython/comments/7wkrnl/google_colab_a_free_gpu_enabled_jupyer_notebook/
  6. https://www.analyticsindiamag.com/5-alternatives-to-google-colab-for-data-scientists/
  7. https://towardsdatascience.com/google-colab-your-python-workspace-on-cloud-c3aed424de0d


از هرگونه نظرات شما در بخش کامنت استقبال میکنم و اگر خوشتون اومد، میتونید یه ? به این ویرگول بدین. ممنون از وقتتون.