Skip to content

Специфика Google Colab ​

Работать с Google Colab довольно просто, но есть некоторые моменты, на которые всё же стоит обратить внимание. Об этом и пойдет речь в данном материале.

Ошибки и предупреждения ​

Google Colab постоянно проверяет код на наличие проблемных мест. Если он находит таковые, то автоматически подчёркивает их красной (такой код точно не запустится) или оранжевой (к такому коду есть вопросы) волнистой линией, примерно так:

Картинка с ошибкой и предупреждением

Увидев что-то подобное, имеет смысл навести на подчёркнутый сегмент курсор и почитать причину во всплывающей подсказке.

Имейте ввиду

Искать решение проблемы стоит не только в подчёркнутом коде, но и вокруг него, т. к. дело может быть, скажем, в пропущенном до этого знаке препинания.

Важные настройки ​

В Настройках (иконка шестерёнки в правом верхнем углу) есть несколько важных пунктов, на которых следует остановиться подробнее:

  • «Сайт» → «Тема» (каждый выбирает на свой вкус, но многие предпочитают тёмную);
  • «Редактор» → «Размер шрифта» (можно поставить побольше для удобства);
  • «Редактор» → «Ширина отступа» (рекомендуется поставить четыре пробела, это стандарт в Python);
  • «Редактор» → «Диагностика кода» (рекомендуется выбрать Syntax and type checking, чтобы линтер сразу находил ошибки с неправильным использованием типов).

Особенности среды выполнения ​

Блокноты в Jupiter Notebook (читай: Google Colab) по умолчанию состоят из ячеек с кодом и ячеек с текстом текстом.

Markdown

Ячейки с текстом поддерживают формат Markdown для таблиц, списков и красивого оформления. Подробнее можно почитать тут.

Ячейки с кодом кажутся изолированными друг от друга, однако это совсем не так: объявленные в одной ячейке переменные и функции (одним словом, состояния) могут быть использованы также и во всех последующих ячейках с кодом.

Это очень удобно, когда блокнот используется для работы с данными, исследования или обучения. Можно, скажем, разделять связанные блоки кода описанием промежуточных результатов или теорией.

Скрытые состояния

Однако (и это очень важно), если ячейка запускалась, то состояния останутся в памяти даже после удаления этой ячейки. Это называется hidden state (скрытое состояние).

Обычно это не вызывает проблем, однако скрытые состояния иногда могут всплывать неожиданно и вызывать баги там, где, казалось бы, всё написано правильно.

Чтобы сбросить все состояния (включая скрытые) нужно перезагрузить среду выполнения следующим образом:

Вкладка «Среда выполнения» > Перезапустить сеанс > Да

Вместо этого можно перезагрузить страницу браузера, но это банально дольше.

Порядок выполнения

Если вы работаете в чужом блокноте, важно запускать или весь блокнот целиком, или все ячейки строго по порядку (если не указано иное), так как код в одной ячейке может зависеть от состояний, которые объявляются в другой ячейке, что происходит именно при её запуске.

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

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

Включите расширения файлов в Windows

Чтобы не путаться и лучше понимать файловую систему, имеет смысл включить отображение расширений у всех файлов в проводнике Windows следующим образом: откройте Проводник -> «Параметры» -> «Вид» -> Cнимите галочку с пункта «Скрывать расширения для зарегистрированных типов файлов».

Через интерфейс Google Colab ​

  1. Нажимаем на иконку папочки в вертикальном меню слева, а затем на иконку загрузки (стрелочка вверх);
  2. Выбираем файлы через стандартный интерфейс;
  3. Файлы загрузятся в открытую директорию (по-умолчанию /content/).

Программно в Python ​

Па аналогии с input(), когда мы запрашиваем значение в процессе выполнения кода, можно запросить загрузку какого-либо файла уже после запуска.

python
from google.colab import files

uploaded = files.upload()

В поле вывода появится стандартная кнопка браузера для выбора файлов, uploaded станет словарём вида {"имя файла": b"байтовое содержимое файла"}, а файлы появятся по пути /content/.

Доступ к файлам на Google Диске ​

Иногда удобнее работать с файлами на собственном Google Диске, монтировать который можно следующим образом (этот код можно поместить в отдельную ячейку где-нибудь в начале блокнота, функция сама сохранит все ключи для текущего сеанса):

python
from google.colab import drive

drive.mount("/content/drive") # Или другой путь, но обязательно в /content/

Во всплывающем окне будет предложено Подключиться к Google Диску. После авторизации, файлы с диска станут доступны по пути /content/drive/My Drive/

Дальнейшая работа ​

Директория /content/ является стандартной, поэтому c файлами в ней можно работать как в текущей директории, т. е. не указывая полный путь.

python
with open("example.txt") as file:
    print(file.read())

Примеры кода

Специфика работы с файлами в Google Colab очень подробно разбирается в официальном блокноте.

Файлы загружаются в удалённую среду выполнения, которая, напомним, запускается при открытии блокнота и отключается при закрытии, что также удаляет и все загруженные файлы, поэтому при следующем запуске их снова понадобится загрузить.

В блокноте только код

Если вы хотите поделиться блокнотом или запустить его с другого устройства, не забудьте передать ещё и все необходимые файлы, так как в сам блокнот они не сохраняются.

Установка модулей ​

Когда встроенной библиотеки Python не хватает, мы обращаемся к сторонним модулям, которые расширяют функционал языка до невообразимых масштабов: django для написания сайтов, pandas для анализа данных, pytorch для обучения нейросетей и много чего ещё.

Предустановленные модули

Популярные модули для работы с данными и машинного обучения, включая pandas, scikit-learn, matplotlib, уже предустановленны в Google Colab (полный список можно вывести командой pip list). Бездумно обновлять эти модули командой pip не стоит, так как это может привести к конфликту версий.

Обычно модули устанавливаются из официального репозитория PyPI при помощи менеджера пакетов pip в интерфейсе командной строки (terminal), например:

cmd
pip install 'markitdown[all]'

Однако установку сторонних модулей в Google Colab можно упростить и автоматизировать, чтобы всё само загружалось при запуске кода. Для этого нужно добавить команду установки в сам код до того, как модуль будет импортирован, начиная строку с восклицательного знака (!), например:

python
!pip install 'markitdown[all]'

from markitdown import MarkItDown
...

Linux-команды

Это работает и для других Linux-команд, включая !grep, !ls -la, !pwd и т. д., а также для упомянутой ранее !pip list.

Уменьшение окна вывода ​

Команда pip, всевозможные модули или ваш собственный код иногда могут печатать очень много текста в окне вывода, что не всегда удобно.

Существует способ программно установить максимальную высоту окна вывода у конкретной ячейки с кодом:

python
from google.colab.output import eval_js
eval_js('google.colab.output.setIframeHeight("350")')

# Теперь результат не будет занимать весь экран
!pip list

Комбинации клавиш ​

Нажмите Ctrl/Cmd + M then H (или вкладка «Инструменты» → «Сочетания клавиш») чтобы открыть список доступных сочетаний клавиш целиком и при необходимости установить свои.