Google colab چیست؟ و چگونه ازآن به عنوان یک RDP رایگان استفاده کنیم؟

Google colab چیست؟ و چگونه ازآن به عنوان یک RDP رایگان استفاده کنیم؟

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

کولب (Colab) چیست؟

برای گرفتن جواب درست بهتر است بپرسیم google colab چیست. Colab محصول شرکت گوگل و کوتاه شده واژه colabratory به معنی آزمایشگاه اشتراکی است. ایده اصلی کولب ایجاد یک محیط برای فراهم آوردن امکان همکاری بین توسعه دهندگان برروی یک پروژه بود. دراصل این پروژه برای تمرین و ایجاد پروژه‌های یادگیری ماشین/ تحلیل داده بااستفاده از python3 ایجاد شده بود. محیط آن بسیار شبیه به محیط Jupyter notebook است. Jupyter notebook یک محیط ویرایشگر نوت بوک متن باز است که در آن میتوانید کدهای خود را به صورت یک جا و یا در بلوک های جداگانه اجرا کنید. این قابلیت به شما این امکان را می‌دهد تا کدهای تمیزی بنویسید و خروجی کدها را به راحتی بررسی کنید.

دراین مقاله به بررسی مزایای گوگل کولب که به صورت رایگان دراختیار ما قرارداده پرداخته‌ایم. گوگل یک 12GB NVIDIA Tesla K80 GPU دراختیار ما قرارداده است که 12 ساعت پشت سرهم می توانیم از آن استفاده کنیم. ما هم از این فرصت استفاده می ‌کنیم و از آن به عنوان rdp مجانی استفاده می‌کنیم. در ادامه به بررسی چند ویژگی گوگل کولب می‌پردازیم:

بلوک های گوگل کولب

 

  • +Code بلوکی را دراختیار شما قرار می‌دهد تا کدهایتان را دراین بلوک وارد کنید.
  • +Text بلوکی را دراختیار شما قرار می‌دهد تا دستورالعمل ها یا موارد سلب مسئولیت را دراین بلوک به صورت متن وارد کنید.

پس از اینکه بلوک کد جدیدی را ایجاد کردید، تنها بااضافه کردن (!) قبل از دستور سیستم عامل، آن دستور را اجرا کنید.

اجرای کد

 

با زدن دکمه play هم کد شما اجرا می‌شود. همچنین با نوشتن markdown قبل از کد، کاری که کد انجام می دهد را توضیح دهید. برای نوشتن نشانه گذاری دریک بلوک کد فقط کافیست (#@markdown) را بنویسید و در ادامه نشانه های خودتان را وارد کنید. این علامت گذاری درزمان اجرا ترجمه خواهد شد.

مارک داون کولب

 

همچنین می‌توانید با استفاده از تابع داخلی param کولب،  ورودی کاربر را به صورت بصری و گرافیکی در متغیر پایتون خودتان مشاهده کنید. فقط کافیست یک متغیر ساده را وارد کنید و و (#@param {type:”string”}) را اضافه کنید. برای مثال:

var = "Default value" #@param {type:"string"} // can change type

پارامترهای کولب

 

اکنون به بررسی توابع و قابلیت ایجاد rdp بااستفاده از google colab می‌پردازیم.

https://colab.research.google.com/gist/JoyGhoshs/2952df40c3f589af1a276537a06ab9fa/colab-rdp.ipynb

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

  • نام کاربری را وارد کنید.
  • رمزعبور را وارد کنید.
  • دستور اتصال را از این لینک بردارید و وارد کنید.
  • پین گوگل ریموت دسکتاپ را وارد کنید.

ریموت دسکتاپ گوگل

 

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

پین کد لینوکس دبین

 

اکنون فقط دکمه اجرا (Run) را فشار دهید، بعد از 1 الی 2 دقیقه پرامپت دسترسی درایو گوگل برای شما نمایش داده می‌شود. به یاد داشته باشید که ما از درایو گوگل به منظور ذخیره سازی داده های سیستم عامل مان استفاده می‌کنیم، یعنی پس از کشته شدن(بسته شدن) نمونه اطلاعات از بین نمی‌روند. به این آدرس بروید و منتظر برقراری ارتباط شوید. اگر قبلا از گوگل ریموت دسکتاپ استفاده نکرده اید، دسترسی ریموت دسکتاپ شما مثل شکل زیر خالی خواهد بود.

اتصال گوگل به سیستم خالی

 

پس از 2 الی 3 دقیقه ارتباط شما برقرار خواهد شد.

انتخاب دستگاه کولب

 

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

متصل کردن دستگاه ریموت

 

rdp ما متصل شد، بفرمایید.

ماشین مجازی RDP

 

دراین مرحله با مشکلی مواجه می‌شویم. اگر تب بازشده 10 دقیقه بدون فعالیت بماند، کولب ماشین را تعلق می‌کند. اما نگران نباشید، ما برای این مشکل راه حل مناسبی داریم. برای حل این مشکل یک قطعه کد جاوا اسکریپت ایجاد می‌کنیم که هر 1 دقیقه یکبار دکمه اتصال را فشار می‌دهد. اول از همه بایستی id دکمه را برای کلیک کردن روی دکمه اتصال پیدا کنیم. وقتی وارد برچسب المنت در قسمت inspect شویم، با id های تو درتوی زیادی مواجه می‌شویم:

شناسه دکمه اتصال

 

اکنون تابع را ایجاد می‌کنیم. داخل تابع #top-toolbar را انتخاب می‌کنیم که تمام نوار ابزار را درخود جا داده است. سپس colab-connect-button که دکمه اتصال است و شناسه #connect که داخل shadowRoot قرار دارد را انتخاب می‌کنیم. پس از آن از تابع click() برای فشار دادن این دکمه استفاده می‌کنیم.

function ClickConnect() {
document
.querySelector('#top-toolbar > colab-connect-button')
.shadowRoot.querySelector('#connect')
.click()
}

درصورت فراخوانی این تابع، دکمه اتصال یکبار فشرده خواهد شد، اما ما می‌خواهیم هر یک دقیقه یکبار این کار انجام شود. بدین‌منظور از تابع داخلی setInterval() جاوا اسکریپت استفاده می‌کنیم. دراینصورت قطعه کد ما به شکل زیر خواهد بود.

function ClickConnect() {
console.log('Clicked')
document
.querySelector('#top-toolbar > colab-connect-button')
.shadowRoot.querySelector('#connect')
.click()
}
setInterval(ClickConnect, 60000)//milliseconds

من یک لاگ کنسول با متن “کلیک شده” برای نشان دادن اینکه روی دکمه کلیک شده است اضافه کرده‌ام. اکنون فقط کافیست این کد را در صفحه گوگل کولب پیست کنیم.

لاگ کلیک اتصال

 

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

منبع

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

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