Google Colaboratory: бесплатная видеокарта в облаке

Google Colaboratory — это облачный сервис, направленный на упрощение исследований в области машинного и глубокого обучения. Используя Colaboratory, можно получить удаленный доступ к машине с подключенной видеокартой (NVidia Tesla K80), причем совершенно бесплатно, что сильно упрощает жизнь, когда приходится делать глубокое обучение нейросетей.

Однако будьте внимательны — изначально разработчики предупредили, что ноутбук «сбрасывается» каждые 12 часов, то есть если оставить нейросеть обучаться больше, чем на 12 часов, то может произойти неприятное — ноутбук просто перестанет выполнятся сам по себе. То есть, если вам нужно запустить ноутбук на -сервере с одним бесплатным GPU часа на 3-4, то этот вариант точно для вас (нужно только стабильное интернет-соединение).

Ссылка на сервис: https://colab.research.google.com

Можно сказать, что Colab является некоторым аналогом гугл-документов для .

Jupyter Notebook — популярнейшая бесплатная интерактивная оболочка для языка программирования , позволяющая объединить код, текст и диаграммы, и распространять их для других пользователей. Раньше она называлась IPython Notebook, но название сменили, чтобы подчеркнуть совместимость не только с Python, но и другими языками программирования. Это крайне удобный инструмент для проведения экспериментов (как чисто математических, так и связанных с обработкой данных от приборов) и оформления результатов в виде профессиональных научных статей. А вообще человечество нашло ему бесчисленные применения — от дизайна электронных схем до обработки астрономических фотографий. Подробнее о Jupyter Notebook читайте здесь.

Коротко о Colaboratory

Грубо говоря, Colaboratory позволяет запускать Jupyter Notebook на удалённой машине. Файлы Colaboratory представляют собой обычные .ipynb «ноутбуки» и хранятся на Гугл-диске. Также есть набор функций, позволяющий загружать файлы с удаленной машины на Гугл-диск и обратно. Этими файлами можно так же делиться с другими, можно писать к ним комментарии, как в Гугл-документах.

В Colaboratory можно использовать GPU, а именно Tesla K80. Для этого нужно подключить ее в настройках: Runtime->Change runtime type->Hardware accelerator. Стоит заметить, что GPU не всегда доступны, и тогда Colaboratory предложит запустить машину без нее.

Читайте также:  В Microsoft Office появилось новое приложение

Похоже, что ничего, кроме самого Jupyter Notebook, запустить нельзя, но есть косвенный доступ к терминалу: для этого нужно добавить восклицательный знак перед командой терминала, например !mkdir images. Вообще можно считать, что мы имеем дело с совершенной обычной машиной, на которой установлена Ubuntu, но подключенной удаленно. Отсюда следует, что на ней можно делать вообще все, что можно делать через терминал (не в интерактивном режиме), в том числе:

  • клонировать репозитории с помощью git clone,
  • загружать данные с помощью wget (кстати, с Гугл-диска даже большие файлы грузятся почти мгновенно),
  • использовать make (и скорее всего cmake),
  • устанавливать инструменты и библиотеки с помощью apt-get и pip

Еще несколько замечаний по поводу Colaboratory:

  • Похоже, у пользователя есть неограниченный доступ ко всем файлам системы (любые команды нужно писать без sudo);
  • Состояние терминала не переносится между командами, даже если они в одной ячейке (например cd dir при необходимости придется писать в начале каждой команды);
  • Если надолго отключиться от Colaboratory, все изменения на виртуальной машине будут стёрты, включая все установленные пакеты и скачанные файлы, поэтому рекомендуют установку пакетов включать в Jupyter Notebook;
  • Через 12 часов непрерывного использования машина автоматически отключается, но потом ее можно перезапустить (в теории, на практике GPU может быть недоступна).

Работа с файлами

Выполнив команду !ls в ячейке с кодом можно увидеть, какие файлы лежат в данной папке (вместе с запущенным ноутбуком).

  • Чтобы загрузить свой файл/несколько файлов, можно выполнить этот код:
from .colab import files

uploaded = files.upload()

for fn in uploaded.keys():
  print('User uploaded file "{name}" with length {length} bytes'.format(
      name=fn, length=len(uploaded[fn])))

— появится виджет с предложением выбрать файлы на компьютере (файлы закачиваются в ту же папку, где запущен ноутбук на Colab’e).

  • Чтобы скачать файл (или много файлов/папку) из Colab’а себе на компьютер (тестировалось в браузере , возможно, в остальных не работает), тогда можно так:
from google.colab import files

files.download(<имя вашего файла, лежащего в Colab>)

— это для одного файла. Если нужно скачать много файлов/папку, можно написать цикл (если имена однотипные), или вручную для каждого вызвать эту команду. Папку можно удобно выкачать, если получить имена всех файлов в этой папке с помощью библиотеки glob и выкачать их в цикле с помощью files.download().

  • Чтобы загрузить папку с файлами со своего компьютера, запустите ячейку со следующей функцией:
def upload_files(path='./', verbose=False):
  '''
    Загружает выбранные файлы в папку path
  '''
  from google.colab import files
  import os
  
  uploaded = files.upload()
  if not os.path.exists(path):
    os.makedirs(path)
    
  for name, bytes_ in uploaded.items():
    open(os.path.join(path, name), 'wb').write(bytes_)
    os.remove(name)
    
  if verbose:
    print('Uploaded files: ' + '\n'.join(list(uploaded.keys())))

Использование — в отдельной ячейке напишите:

upload_files(path='<путь до папки, куда хотите закачать>')

Пример:

upload_files(path='./data/train/')  

Как посмотреть, что лежит в папке — выполнить в отдельной ячейке:

!ls <имя папки, например, data/train>

Несколько полезных приёмов

По есть отличный туториал. Также в самой Colaboratory есть файлы с примерами почти всего, что может понадобиться.

Читайте также:  Искусственный интеллект Google научат писать музыку и снимать кино

Монтировать Гугл-диск в файловую систему виртуальной машины:

!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse
from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}

Этот код вернёт ссылку и выдаст окно ввода. Нужно перейти по ссылке, скопировать код и ввести его в окно. Дальше:

!mkdir -p drive
!google-drive-ocamlfuse drive

После этого можно использовать свой Гугл-диск как обычный каталог. Кроме того, все изменения в этом каталоге автоматически синхронизируются с Гугл-диском.

Установка Keras:

!pip install -q keras
import keras

Установка PyTorch:

from os import path
from wheel.pep425tags import get_abbr_impl, get_impl_ver, get_abi_tag
platform = '{}{}-{}'.format(get_abbr_impl(), get_impl_ver(), get_abi_tag())
accelerator = 'cu80' if path.exists('/opt/bin/nvidia-smi') else 'cpu'

!pip install -q http://download.pytorch.org/whl/{accelerator}/torch-0.3..post4-{platform}-linux_x86_64.whl torchvision
import torch

Сменить рабочий каталог:

import os
os.chdir("/path/to/wdir")

Стереть все изменения и перезапустить машину:

!kill -9 -1

Загрузить файл на локальную машину:

from google.colab import files
files.download('file.ext')

Получить словарь из файлов, загруженных на Гугл-диск:

from google.colab import files
uploaded = files.upload()

Приглушить вывод команды терминала (перенаправить в переменную):

lines_list = !pwd

В целом, Google Colaboratory предоставляет неплохую возможность производить обучение нейросетей в облаке. Правда, этого может быть недостаточно для совсем больших сеток. Другой плюс — это возможность запускать код независимо от локальной операционной системы (что хорошо для воспроизводимости), а также совместно работать над одним проектом. В качестве подвоха — GPU может быть недоступна, в том числе надолго.

Читайте также:  Российская операционная система станет заменой Windows

По материалам: habr.com, github.com

Читайте также:

 

Похожие статьи:

Оставить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *