Что такое google colab
Что такое Google Colab и кому он нужен?
Блокнот Colab — это бесплатная интерактивная облачная среда для работы с кодом от Google. Принцип у нее такой же, как у остальных онлайн-офисов компании: она позволяет одновременно с коллегами работать с данными. Рассказываем, в чем преимущества Colab и в каких сферах он может быть полезен.
Кому нужен Google Colab
В основе «Колаборатории» — блокнот Jupyter для работы на Python, только с базой на Google Диске, а не на компьютере. Здесь те же ячейки (cells), которые поддерживают текст, формулы, изображения, разметку HTML и не только. То есть можно программировать на Python и не качать кучу библиотек, не перегружать машину и не переживать, что место на харде вот-вот закончится. Единственное условие — нужно иметь Google-аккаунт.
Data Science c нуля
Только реальные знание и навыки, обучение на основе практики и помощь в трудоустройстве. Скидка 5% по промокоду BLOG.
Главная особенность «Колаборатории» — бесплатные мощные графические процессоры GPU и TPU, благодаря которым можно заниматься не только базовой аналитикой данных, но и более сложными исследованиями в области машинного обучения. С тем, что CPU вычисляет часами, GPU или TPU справляются за минуты или даже секунды.
CPU — центральный процессор — мозг компьютера, который выполняет операции с данными. Настолько универсален, что может использоваться почти для всех задач: от записи фотографий на флешку до моделирования физических процессов.
GPU — графический процессор. Обрабатывает данные быстрее, так как задачи выполняет параллельно, а не последовательно, как CPU. Он заточен исключительно под графику, поэтому на нем удобнее работать с изображением и видео, например заниматься 3D-моделированием или монтажом.
TPU — тензорный процессор, разработка Google. Он предназначен для тренировки нейросетей. У этого процессора в разы выше производительность при больших объемах вычислительных задач.
Сами процессоры дорогие, и не каждый может их себе позволить. Google Colaboratory дает возможность бесплатно и непрерывно пользоваться ими на протяжении 12 часов. Будьте внимательны: как только это время истечет, Colab сотрет все данные и придется начинать сначала.
Кроме того, Google отключает блокноты после примерно 30 минут бездействия, чтобы не перегружать процессоры. Система Colab так устроена специально: многие факторы, в том числе время простоя, максимальная активность, общие ограничения на объем памяти иногда динамически меняются. Активным участникам ненадолго могут ограничить доступ к GPU, чтобы дать возможность использовать процессор другим.
Для чего используется Google Colab?
Несколько таких примеров есть в открытом доступе прямо в Colab.
С чего начать?
Все просто: на сайте сервиса сразу появляется экран с доступными блокнотами. Можно создавать новый или загружать уже разработанный Python-код из Google Диска.
Чтобы работать с файлами с личного диска, нужно использовать команду mount():
from google.colab import drive
drive.mount (‘/content/drive’)
После запуска команды Colab предложит ввести код авторизации. Открыв URL, вы должны предоставить сервису доступ к своему аккаунту. Тогда он выдаст код, который нужно будет вставить в поле, нажать ВВОД, и Google Colab подключится к хранилищу.
4 причины использовать Google Colab
Еще одно достоинство Colab — интеграция с GitHub. Он открывает доступ к любому хранилищу, если ему предоставить профиль на сервисе.
Кроме того, для определенных задач можно выбрать подходящий по мощности процессор. Необходимо просто сменить среду выполнения в нужной вкладке
и уже в настройках блокнота выбрать между GPU и TPU.
Не стоит работать с мощным процессором, когда не требуется работать с Big Data. Как мы уже говорили, Colab не любит, когда его ресурсы используются нерационально, поэтому любые перегрузки приведут к внезапному вылету из блокнота на неопределенное время.
Google Colab максимально упростил все процессы: в нем есть и базовые библиотеки (NumPy, scikit-learn, Pandas), и более сложные (вроде Keras, TensorFlow или PyTorch), не нужно ставить программы и среды самостоятельно, можно просто сразу писать код. Если же базовых библиотек недостаточно, всегда можно добавить необходимые с помощью установщика PIP и работать дальше:
В Colab можно делиться работой с другими, оставлять комментарии, редакторские заметки и в целом делать все, что доступно в тех же Google Документах. Поэтому при общем доступе к блокноту все его содержимое будет доступно другим пользователям (текст, код, комментарии, выходные данные). Последнее можно отключить: нужно выбрать «Настройки блокнота» в меню «Изменить».
В появившемся окне поставить галочку «Исключить выходные данные кодовой ячейки при сохранении блокнота», и тогда в блокноте сохранится только код, но не результаты его исполнения.
Вместе с тем открытый доступ к коду и его редактированию — отличная возможность найти интересные разработки по всему миру. У Google есть обширный репозиторий SeedBank, в котором можно исследовать множество блокнотов по Data Science или глубокому обучению, просто кликнув мышкой.
Полный курс по Data Science
Освойте самую перспективную IT-профессию с нуля. Вы получите реальные навыки, поддержку менторов и помощь в трудоустройстве. Скидка 5% по промокоду BLOG.
Облачные среды, похожие на Google Colab
Kaggle Kernels – кроме Python, сервис Kaggle поддерживает R, интегрируется с Google Cloud Storage, BigQuery и AutoML. При этом время пользования процессорами – девять часов, на три меньше, чем у GC.
Azure Notebooks – тоже поддерживает другие языки (R, F#). Сервисы Microsoft Azure также, как и Яндекса, тарифицируются за фактическое время использования.
Молчание вентиляторов. Google Colab, Javascript и TensorflowJS
Google Colab — это бесплатный облачный сервис на основе Jupyter Notebook. Google Colab предоставляет всё необходимое для машинного обучения прямо в браузере, даёт бесплатный доступ к невероятно быстрым GPU и TPU. Заранее предупрежу, что у него есть некоторые ограничения, поэтому вы не сможете использовать его для production.
С помощью Google Colab вы можете легко обучить свою модель за считанные секунды. Он поддерживает Python (2/3) из коробки, так что всё должно быть хорошо, верно?
Нет! Я хочу JavaScript
И это, на самом деле, не первый раз, когда я предлагаю заниматься обучением глубоких нейронных сетей на JavaScript. Но даже если предположить на секунду, что это не безумная идея, есть одна проблема. В Google Colab нет встроенной поддержки JavaScript. К счастью, я смог «взломать» его. Благодаря исследованиям, проведённым в этом issue и некоторым простым JavaScript сниппетам, мы можем довольно легко скрестить Google Colab c TensorflowJs.
Быстрый старт
Для того чтобы быстро начать, я создал шаблон. Просто откройте эту ссылку и клонируйте шаблон на Google Диск с помощью команды «Save a copy in Drive».
Теперь у вас есть собственная копия Jupyter Notebook на вашем Google Диске. Выполните код из секции «Prep JS runtime for Google Colab», перезагрузите страницу и всё, ваш JavaScript Jupyter Notebook готов к работе!
Как это работает
В шаблоне Jupyter Notebook заранее прописано ядро javascript. Естественно, при первом запуске на машине, которая вам выделена, нет этого ядра. Поэтому при старте вы увидите сообщение: «Unrecognized runtime javascript; defaulting to python».
Выполнив код в секции «Prep JS runtime for Google Colab», мы устанавливаем ijavascript (это не опечатка — это название npm пакета). Это ядро для Jupyter Notebook, которое поддерживает JavaScript. Более подробно вы можете ознакомиться с проектом на их GitHub репозитории — ijavascript.
Перезагрузив страницу, мы вынуждаем Google Colab загрузить ядро javascript и открываем удивительный мир JavasScript и машинного обучения.
Исправление проблем
Убедитесь, что ядро установилось
Если вы не видите следующую строчку, проверьте форматирование кода:
Google Colab имеет тенденцию добавлять или удалять пробелы, это может всё сломать.
В ядре ijavascript нет простого и понятного способа выполнения команд оболочки
Чтобы это исправить, нужно написать небольшую функцию. Найти её можно в шаблоне.
Так вы можете инициализировать package.json, установить зависимости и запустить несколько команд.
Не используйте let, const
Вы можете использовать её для запуска асинхронного кода:
Лимиты Google Colab
Через некоторое время вашу машину уничтожат (подробнее об этом на сайте Google Colab), и при попытке выполнить любой javascript, вы увидите сообщения об ошибках компиляции кода. Скорее всего, вам выделили новую машину. Чтобы это исправить, просто выполните код из секции «Prep JS runtime for Google Colab» и перезагрузите страницу.
Машины без GPU
Обязательно проверяйте, что ваша машина имеет подключенный GPU. К сожалению, иногда Google Colab может выдать машину без GPU. Можете проверить это, выполнив следующий код:
Почему JavaScript
Есть несколько причин, по которым я предпочитаю JavaScript (TensorflowJS) для машинного обучения:
В чём выгода
Почему мы должны страдать и использовать все эти помощники? Почему бы не обучать нейронные сети на своём MacBook/PC? Причина в том, что даже для небольших наборов данных, таких как MNIST и простой модели CNN, вы можете получить повышение производительности в 3—7 раз.
Ну и в конечном счёте можете достичь молчания вентиляторов.
Дата публикации Jul 8, 2019
Сегодня я перешел на новую машину для своего развития. Несмотря на то, что для приведения в соответствие с новой машиной имеется обучающая кривая, я все еще могу продолжать работать над своими проектами и продолжать свои онлайн-курсы через Google Colab. Это практически так же просто, как войти в мою учетную запись Google, и все готово.
Таким образом, я решил поделиться своими соображениями о том, почему я считаю Google Colab таким полезным и какие команды помогли мне использовать его более эффективно без особых усилий.
Что такое Google Colab?
Google Colab, также известный как Colab Laboratory, представляет собой среду Jupyter, предоставляемую и поддерживаемую Google с возможностью работы с процессорами, графическими процессорами и даже TPU. Это похоже на любую другую записную книжку Jupyter, где мы можем кодировать на Python и писать описания в виде уценки вместе со всеми другими функциями Jupyter и многим другим.
В верхнем разделе содержатся все элементы управления для сохранения записных книжек, обмена записными книжками в репозиториях GitHub, изменения сред выполнения, ячеек запуска и многого другого. Нижний раздел разделен на левую панель, которая содержит оглавление и файлы, а справа находится полностью функционирующая записная книжка.
Почему Google Colab?
Хотя есть много причин, по которым кто-то может предпочесть использовать такой сервис, как Google Colab, для своей работы, вот причины, по которым он работает для меня:
Изучение Google Colab
Теперь, когда мы понимаем, что такое Google Colab и сколько преимуществ он приносит для всех, давайте рассмотрим несколько ключевых важных аспектов. Это, несомненно, помогло мне повысить производительность и сделать свою работу более доступной.
Быстрые сочетания клавиш
Уже есть несколько предопределенных сочетаний клавиш, которые вы можете использовать. Некоторые из самых основных включают Shift + Enter управлять клеткой, Ctrl + M Y преобразовать ячейку в ячейку кода, Ctrl + M M преобразовать ячейку в текстовую ячейку и многое другое. Вы можете получить полный список, перейдя в Tools > Keyboard shortcuts. Вы можете настроить и изменить ярлыки, как вам нравится.
Загрузить наборы данных
Google Colab позволяет нам получить доступ к нашим наборам данных несколькими способами.
Загрузить набор данных
На левой панели выберите Files заголовок. Выберите опцию Upload и выберите файл набора данных.
Тем не менее, файлы удаляются при обновлении во время выполнения, поэтому, если во время выполнения произойдет сбой во время выполнения без выполнения своей задачи, вам придется загрузить их снова.
Загрузить набор данных с Google-диска
Во-вторых, мы можем импортировать наборы данных, которые уже сохранены на диске Google. Это полезно, так как нам не нужно загружать набор данных снова, если ноутбук выходит из строя.
Чтобы подключить диск Google, мы используем следующий код:
Сохранить в GitHub репозиторий
Одной из самых интересных и полезных функций для меня стала интеграция между Google Colab и GitHub. Я предпочитаю работать с ноутбуками Jupyter и сохранять свою работу в определенных репозиториях GitHub в моей учетной записи. Google Colab делает весь процесс простым и удобным в использовании.
От File В меню мы выбираем опцию Save a copy in GitHub. Он загружает экран, чтобы связать нашу учетную запись GitHub, что является одноразовым процессом, после которого нас приветствует другое всплывающее окно. Мы можем выбрать репозиторий, ветвь, имя файла и сообщение о коммите. Это так просто!!
Мы также можем добавить ссылку на эту записную книжку в репозиторий GitHub, чтобы любой, кто просматривает записную книжку на GitHub, мог быстро приступить к работе.
Изменение типа времени выполнения
Если вы когда-либо работали с моделями глубокого обучения, вы бы поняли, какую роль может сыграть графический процессор в многократном увеличении скорости обучения. Google Colab предоставляет возможность добавить GPU / TPU для нашего использования совершенно бесплатно. Это позволяет нам обучать наши модели глубокого обучения гораздо более высокими темпами.
Как только вы нажмете SAVE время выполнения обновится, и вы можете заметить, что в правом верхнем углу, CONNECTING появляется, чтобы показать, что мы сейчас активируем новый тип времени выполнения.
Совместное использование записных книжек Colab
Еще одной важной особенностью является поделиться нашей работой с миром. Опция «Поделиться» в верхнем правом углу Google Colab позволяет нам выбрать список адресов электронной почты, чтобы поделиться с ним записной книжкой или просто получить доступную ссылку.
Вывод
Вам также может понравиться:
Изучение GitHub API
towardsdatascience.com
Глубокое обучение идентификации клеток малярии с использованием CNN на Kaggle
Глубокое обучение в области медицины
towardsdatascience.com
Давайте создадим Статью Рекомендатора, используя LDA
Рекомендовать статьи на основе поискового запроса
towardsdatascience.com
Работа с API с использованием Flask, Flask RESTPlus и Swagger UI
Введение в Flask и Flask-RESTPlus
towardsdatascience.com
Делитесь своими мыслями, идеями и предложениями. Я хотел бы услышать от вас.
Как мы автоматизировали для пользователей работу с данными через Google Colab
Привет! Я Павел, тимлид группы DWH, отвечающей за сбор, хранение и выдачу потребителям аналитических данных. Эту статью мы написали вместе с руководителем Data Office Олегом Сахно.
Сегодня многие говорят об управлении на основе данных, когда решения принимаются только после подкрепления цифрами. Идея заманчивая. Надо всего лишь:
Хранить все данные в понятном и структурированном виде.
Обеспечить пользователям оперативный доступ к данным.
Хранение данных — тема отдельного разговора, и сейчас мы её поднимать не будем. Поговорим о том, как сделать эти данные доступными и легко применимыми для пользователей.
Немного о контексте. eLama — это платформа по управлению интернет-рекламой. У нас большая команда, ведь нужно не только обеспечивать работоспособность сервиса, но и осуществлять поддержку текущих клиентов (служба Заботы), привлекать новых клиентов (маркетинг и отдел продаж), всё это делится на несколько бизнес-юнитов с различной иерархией и правами доступа к данным и т.д.
А еще есть операционный отдел, финансовые службы и так далее. Всего в команде более 300 человек. И многим из них нужна информация, извлекаемая из данных! Все хотят принимать решения обоснованно, не просто «по велению сердца».
Иными словами, нам нужен инструментарий, который позволяет пользователю любой роли получить из хранилища витрину данных, отвечающую нужным ему условиям.
История вопроса в eLama
Немного о том, как мы пришли в точку «Сейчас».
Redash
Эти инструменты почти не давали пользователю возможности настраивать выборку под себя. Стоило, например, маркетологу захотеть выбрать юзеров, пришедших с его источников (при том, что визуализации в разрезе по источникам не было), Redash становился для него бесполезен.
Microsoft Power BI
На смену простенькому Redash (от которого в итоге полностью отказались) пришел Power BI со своим богатым арсеналом фильтров. Вдохновившись его возможностями, мы разработали пару, вроде как, универсальных отчетов, которые помогали настроить пользователю выгрузку под свои нужды.
Эти отчеты некоторые потребности закрыли, но далеко не все. Power BI все-таки предназначен не для такого. Из-за своей громоздкости он плохо уживается со сложными данными и алгоритмами расчета. Также у него есть существенные ограничения по объему данных — как на входе, так и на выходе. Действительно универсальным этот инструмент так и не стал.
Типовые запросы
Гибкости мы добавляли «вручную»: организовали институт дежурства, когда выделенный еженедельно сменяемый аналитик готовил SQL-запрос для выгрузки под каждое обращение внутренних заказчиков. Времени на это уходила масса, дежурный фактически выпадал из остальных процессов, часто ему еще и требовалась помощь.
Стремясь разгрузиться, аналитики стали создавать репозиторий… хотя какой там репозиторий. склад SQL-запросов под часто возникающие потребности сотрудников. Пользователь, не желающий ждать в очереди, теперь мог зайти на страницу с перечнем таких типовых запросов, подобрать себе нужный и выгрузить витрину самостоятельно. Конечно, мы снабдили код комментариями, где менять условия выборки, что по идее должно было еще более облегчить нам жизнь.
Подход «Типовые запросы» одарил нас целым букетом недостатков:
конечные пользователи не владели SQL (и не обязаны владеть!), а значит в их запросы могли закрасться ошибки;
с ростом количества узких запросов стало всё больше времени уходить на поиск нужного;
часто пользователи сохраняли запрос из репозитория куда-то к себе, то есть фактически «отключали» его от обновлений. А если поменяется логика? Запрос станет неактуален, но будет по-прежнему в чьем-то использовании!
по сути, весьма редко запросы являлись «типовыми», ведь данные для того и нужны, чтобы в поисках инсайтов вертеть и крутить их без ограничения свободы.
Короче, наш склад типовых выгрузок использовался редко и неохотно.
Формулировка задачи
Все указанные выше инструменты не позволяли реализовать полный спектр задач автоматической выдачи данных:
Пользователи самостоятельно могут получить выгрузку из аналитического хранилища в соответствии с уровнем доступа к данным. Имеется учет доступа к данным.
Пользователи могут обогатить список user_id необходимыми данными. То есть, к имеющийся таблице добавить несколько полей.
Пользователи не должны самостоятельно писать или редактировать SQL-код. Необходим интерфейс в котором пользователь «натыкает» нужные галочки.
Инструмент постоянно развивается. Необходимо удобство развития инструмента, логика релизов и т.д.
Мы используем Google Cloud Platform, и решение должно гармонично вписываться в эту экосистему.
Решение на основе Colab
Оказалось, что решить поставленные перед нами задачи позволяет Google Colab — бесплатный облачный сервис на основе Jupyter Notebook. Сервис позволяет работать с Python-ноутбуками как с обычными документами Google. С той же логикой по правам на редактирование и на доступ и удобным доступом по ссылке в браузере. Таким образом, код на Python можно дистрибутировать без необходимости устанавливать программное обеспечение на клиентской стороне, при этом сам код можно скрыть, оставив только интерфейс ввода данных.
И итоге мы построили следующее решение.
Разработаны несколько «колабов» (так мы называем этот инструмент), из которых чаще всего используются 3-4 (вместо десятков «типовых запросов»).
При необходимости получить выгрузку с определенными условиями сотрудники компании открывают браузер, запускают скрипт, авторизуются и видят форму, в которой могут задать настройки для своей выгрузки.
По условиям пользователя формируется SQL-запрос, который с помощью соответствующей библиотеки исполняется в BigQuery. Полученная от BigQuery таблица выгружается либо в Google Sheet, либо в xlsx-файл в зависимости от количества строк.
Вот и всё, сотрудник радуется быстро полученной таблице. Не надо ждать, не надо звать, а можно взять и выгрузить всё что тебе надо!
Со стороны дата-аналитиков это большая разгрузка, поток обращений за выгрузками превратился в тонкий ручеек. Да и то теперь каждое обращение мы складываем в бэклог, откуда оно попадает в разработку новых возможностей для колабов.
Техническая реализация колаба
В общих чертах скрипт колаба состоит из 4 частей:
Авторизация в Google и подключение библиотек.
Построение и вывод формы для настройки условий выборки.
Исполнение запроса и вывод результатов.
Авторизация и библиотеки
Для авторизации используем всего две строки кода:
При его исполнении пользователю будет предложено пройти по ссылке, совершить вход через свой аккаунт в Гугле, получить строку-ключ и вставить ее в поле-замок.
Из библиотек мы используем:
pandas для работы с датафреймами, google.cloud.bigquery для обращения к BigQuery, gspread для работы с Google Sheet, ipywidgets для построения формы, а также pydrive при необходимости обращаться к Google Drive.
Форма пользователя
Форму строим на виджетах из библиотеки ipywidgets, которая дает всё необходимое — и основные контролы, и их форматирование, и расположение.
Выбранные через форму параметры передаются в функцию построения SQL-запроса.
Формирование SQL-запроса
Запрос формируется в виде текстовой строки, в которой условия и выводимые поля добавляются исходя из переданных в функцию параметров, набранных юзером в форме. Идея в том, чтобы не выводить пользователю поля, которые он не просил, иначе итоговая таблица будет настолько широкой, что в ней легко потонуть.
Здесь обычно всё сводится к проверке условий и добавлении нужного кусочка SQL, если они принимают соответствующее значение.
Получение результатов
Когда SQL-запрос готов, запускаем его, а результат выводим в Google.Sheet, если строк менее 50 000, и в Excel-файл, если больше.
Сопровождение колаба
Так как количество видов данных, а также число идей по их использованию постоянно растет, мы непрерывно наращиваем функциональность наших колабов. Для этого мы внедрили ритмичный процесс, состоящий из 4-х этапов:
Сбор пожеланий. Здесь мы собираем в бэклог пожелания из обращений. Пожелание заносится сразу по мере поступления.
Планирование релиза. Изучаем пожелания, превращаем их в технические задачи и формируем план на ближайший спринт.
Разработка. Реализуем план, документируем нововведения.
Выкатывание релиза. Деплой и — важный шаг, о котором часто забывают — публикация перечня нововведений. В наших интересах — чтобы пользователи переходили от обращений к дежурным к самостоятельному использованию колаба, поэтому крайне важно раструбить о новшествах где только возможно.
Конечно, сейчас еще не всё идеально, но основные свои задачи инструмент выполняет: разгружает дата-аналитиков, ускоряет получение данных пользователями и при этом достаточно прост в сопровождении.