что такое google colab
Ваши идеи. Наши технологии. Для миллиардов пользователей
Масштабирование
Развивайте свой бизнес по всему миру, используя нашу платформу.
Итерации
Проводите эксперименты и тестирования, чтобы подготовить приложение для запуска и дальнейшего использования.
Статистика
Используйте детальную информацию и данные, имеющие практическое значение, чтобы принимать правильные решения.
Что нового в Google Play
Рассказываем новости с Саммита для разработчиков Android. Узнайте о новых функциях и инструментах, которые помогут вам добиться успеха на нашей платформе.
Создавайте качественные приложения и игры
Хотите добиться долгосрочного успеха? Повышайте производительность приложения и качество контента, а также улучшайте интерфейс и функции.
Отчеты о тестировании
Выявляйте проблемы, например со стабильностью и производительностью приложения, до того, как они коснутся пользователей.
Android Vitals
Отслеживайте и повышайте производительность своего приложения или игры.
Будьте уверены в своем продукте
Выбирайте подходящую стратегию и пользуйтесь инструментами, которые позволяют публиковать приложения, управлять ими и успешно выводить их на международный рынок.
Страница приложения
Совершенствуйте страницу приложения в Google Play, чтобы завоевать внимание пользователей.
Обзор выпусков
Отслеживайте сборки и управляйте выпусками на всех этапах.
Молчание вентиляторов. 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 раз.
Ну и в конечном счёте можете достичь молчания вентиляторов.
Что такое 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
Google Colaboratory — это облачный сервис, направленный на упрощение исследований в области машинного и глубокого обучения. Используя Colaboratory, можно получить удаленный доступ к машине с подключенной видеокартой, причем совершенно бесплатно, что сильно упрощает жизнь, когда приходится делать глубокое обучение нейросетей. Можно сказать, что Colab является некоторым аналогом гугл-документов для Jupyter Notebook.
Итак, используя Google Colab вы можете:
Наиболее важной особенностью, которая отличает Colab от других бесплатных облачных сервисов, является то, что Colab предоставляет GPU и это абсолютно бесплатная услуга.
Подробную информацию об услуге можно найти на странице часто задаваемых вопросов.
Подготовка Google Colab к работе
Создание папки на Google Диске
Мы создали пустую папку «app»
Создание нового ноутбука Colab
Создайте новый ноутбук, щелкнув правой кнопкой мыши > More > Colaboratory
Переименуйте ноутбук, нажав на имя файла.
Настройка работы с бесплатной видеокартой
Необходимо изменить аппаратное обеспечение по умолчанию (CPU на GPU или наоборот) просто выполнив Edit > Notebook settings или Runtime>Change runtime type и выбрав GPU в качестве Hardware accelerator.
Запуск основных кодов Python с Google Colab
Теперь мы можем начать использовать Google Colab.
Мы будем запускать некоторые коды базовых типов данных из Python Numpy Tutorial.
Ну что же, всё работает как положено 🙂 Если вы не знаете Python, который является самым популярным языком программирования для ИИ, то мы бы порекомендовали вам этот простой и понятный учебник.
Сначала запустите эти коды, чтобы установить необходимые библиотеки и выполнить авторизацию.
Когда вы запустите приведенный выше код, вы должны увидеть такой результат:
Нажмите на ссылку, скопируйте код подтверждения и вставьте его в текстовое поле.
После завершения процесса авторизации вы должны увидеть это:
Теперь вы можете подключиться к Google Диску с помощью:
Загрузите файл mnist_cnn.py в папку app, расположенную на вашем Google Диске.
Запустите приведенный ниже код, чтобы обучить простой конвнет (свёрточную нейронную сеть) на наборе данных MNIST.
Как видно из результатов, каждая эпоха длится всего 11 секунд.
Клонирование Github Repo в Google Colab
Легко клонировать репозиторий Github с помощью Git.
Шаг 1: Найти репозиторий Github и получить ссылку «Git»
Найдите любой репозиторий Github для использования.
Clone or download > Copy the link!
2. Git Clone
3. Откройте папку на Google Диске
Конечно, имя папки совпадает с именем репозитория Github 🙂
4. Откройте ноутбук
Щелкните правой кнопкой мыши > Open With > Colaboratory
5. Запустите
Теперь вы можете запустить Github-репо в Google Colab.
Несколько полезных советов
1. Как установить библиотеки?
или попробуйте так:
Любые другие библиотеки
2. Работает ли GPU?
Чтобы увидеть, используете ли вы в настоящее время графический процессор в Colab, вы можете запустить следующий код для перекрестной проверки:
3. Какой графический процессор я использую?
4. Как насчет оперативной памяти?
5. А как насчет процессора?
6. Изменение рабочего каталога
Обычно, когда вы запускаете этот код:
Поэтому вы должны добавить drive/app перед определением каждого имени файла.
Чтобы избавиться от этой проблемы, вы можете просто изменить рабочий каталог, например, с помощью этого простого кода:
После отработки кода выше, если вы запустите снова
Вы увидите содержимое папки app, и вам больше не нужно постоянно добавлять drive/app.
7. Устранение ошибки «No backend with GPU available»
Если вы столкнулись с этой ошибкой:
Попробуйте еще раз чуть позже. Многие пользователи сейчас работают с графическими процессорами, и это сообщение появляется, когда используются все доступные видеокарты.
8. Как очистить выходы всех ячеек
Tools>>Command Palette>>Clear All Outputs
9. Предупреждение “apt-key output should not be parsed (stdout is not a terminal)”
Если вы столкнулись с этим предупреждением:
Это означает, что аутентификация уже выполнена. Вам нужно только подключить Google Drive:
10. Как использовать Tensorboard с Google Colab?
Мы рекомендуем этот репозиторий:
11. Как перезапустить Google Colab?
Чтобы перезапустить (или перезагрузить) вашу виртуальную машину, просто запустите:
12. Как добавить форму в Google Colab?
Чтобы не изменять гиперпараметры каждый раз в своем коде, вы можете просто добавить форму в Google Colab.
13. Как увидеть аргументы функции?
Чтобы увидеть аргументы функции в TensorFlow, Keras и т.д., просто добавьте знак вопроса (?) после имени функции:
Теперь вы можете просмотреть оригинальную документацию, не переходя на веб-сайт TensorFlow.
14. Как отправить большие файлы из Colab на Google Drive?
15. Как запустить Tensorboard в Google Colab?
Если вы хотите запустить Tensorboard в Google Colab, запустите приведенный ниже код.
Обратите внимание, что ваши журналы Tensorboard будут сохранены в директории tb_logs. Конечно, вы можете изменить имя каталога.
После этого мы можем увидеть Tensorboard в действии! После запуска приведенного ниже кода вы можете отслеживать журналы Tensorboard через URL-адрес ngrok.
Заключение
Мы думаем, что Colab вдохнет новое дыхание в глубокое обучение нейросетей и изучение искусственного интеллекта во всем мире.
Если вы сочли эту статью полезной — поделитесь ссылкой с друзьями, чтобы помочь другим интересующимся найти её! И не стесняйтесь оставлять комментарии.
Как мы автоматизировали для пользователей работу с данными через 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-х этапов:
Сбор пожеланий. Здесь мы собираем в бэклог пожелания из обращений. Пожелание заносится сразу по мере поступления.
Планирование релиза. Изучаем пожелания, превращаем их в технические задачи и формируем план на ближайший спринт.
Разработка. Реализуем план, документируем нововведения.
Выкатывание релиза. Деплой и — важный шаг, о котором часто забывают — публикация перечня нововведений. В наших интересах — чтобы пользователи переходили от обращений к дежурным к самостоятельному использованию колаба, поэтому крайне важно раструбить о новшествах где только возможно.
Конечно, сейчас еще не всё идеально, но основные свои задачи инструмент выполняет: разгружает дата-аналитиков, ускоряет получение данных пользователями и при этом достаточно прост в сопровождении.