15 советов, которые помогут повысить вашу продуктивность

Независимо от того, являетесь ли вы пользователем Free, Pro или Pro+, мы все любим Colab за ресурсы и простоту обмена, которые он делает доступными для всех нас. Как бы мы ни ненавидели его ограничения, Google заслуживает похвалы за демократизацию глубокого обучения, особенно для студентов из стран, которые в противном случае не имели бы возможности участвовать в этой «новой электрификации» целых отраслей.

Вы провели бессчетное количество часов, работая в Colab, но еще не потратили несколько минут, чтобы по-настоящему изучить инструмент и быть максимально продуктивными?

«Время не возвращается; использовать его с намерением».

1. Проверьте и сообщите о распределении GPU

«Жизнь похожа на коробку конфет. Никогда не знаешь, что получишь».
— Форест Гамп

Мне очень жаль, у нас закончились V100, давайте настроим вас на наш старый надежный K80 с 8 ГБ ОЗУ. Вы можете попробовать еще раз через час, если вам повезет! Хм, да, Google, спасибо, но нет, спасибо.

gpu = !nvidia-smi -L
print(gpu[0])
assert any(x in gpu[0] for x in ['P100', 'V100'])

Шутки в сторону, я уверен, что вы обожглись, пройдя длительную установку pip, монтируя GDrive, загружая и подготавливая свои данные, только для того, чтобы обнаружить три четверти способов через свой ноутбук, которые вы забыли установить для своей среды выполнения ' ГПУ? Поместите это утверждение в первую ячейку своего блокнота — вы сможете поблагодарить меня позже.

2. Больше никакой аутентификации «gdrive.mount()»

Не все ноутбуки Python одинаковы, Colab относится к ноутбукам Jupyter как к гражданам второго сорта. Когда вы загрузите блокнот Jupyter на GDrive, вы увидите, что он отображается в виде синего значка папки. Когда вы создаете новую записную книжку Colab с нуля в GDrive (+Кнопка "Новая" ➤ "Дополнительно" ➤ Google Colaboratory), она отображается в виде оранжевого значка с логотипом Colab.

Этот «родной» блокнот Colab обладает особыми возможностями, а именно: Google может автоматически подключить ваш GDrive к виртуальной машине Colab, как только вы откроете блокнот. Если вы откроете блокнот Jupyter и щелкнете значок «Файлы» (левая боковая панель), а затем значок «Подключить диск» (всплывающая панель в верхнем ряду), Colab вставит следующую новую ячейку в ваш блокнот Jupyter:

from google.colab import drive
drive.mount('/content/drive')

И когда вы выполните эту ячейку, она откроет новую вкладку браузера, и вам придется пройти через это надоедливое i. Выберите свою учетную запись, ii. Разрешить и iii. Копировать и вставить iv. Переключать и закрывать вкладки, вздор.

Если у вас есть записная книжка Jupyter, которую вы часто открываете и для которой требуется доступ к GDrive, потратьте тридцать секунд и избавьте себя от этих постоянных хлопот. Просто создайте новый (собственный) блокнот Colab (как описано выше), затем откройте существующий блокнот Jupyter — с помощью Colab — на другой вкладке браузера. Нажмите: «Правка» ➤ «Очистить все выходные данные». Затем, убедившись, что вы находитесь в командном режиме, нажмите <SHIFT> + <CMD|CTRL> + A , затем <CMD|CTRL> + C. Перейдите к своей новой записной книжке Colab и нажмите <CMD|CTRL> + V . Смонтируйте GDrive с помощью значка Mount Drive и удалите старую записную книжку Jupyter, чтобы избежать путаницы.

3. Самый быстрый способ скопировать ваши данные в Colab

Один из способов — скопировать его из Google Cloud Storage. Вам необходимо зарегистрировать учетную запись Google Cloud Platform, но Google предлагает Уровень бесплатного пользования, который дает вам 5 ГБ, если вы выбираете US-WEST1, US-CENTRAL1 или US-EAST1 в качестве своего региона.

Помимо безопасности, еще одним преимуществом использования корзин Google Storage является то, что вы используете наборы данных TensorFlow для своих собственных данных (если вы этого не делаете, вам действительно следует… Я напишу статью о почему Подпишитесь на уведомления), вы можете обойти копирование и напрямую загрузить свои наборы данных, используя tfds.load():

Другой способ — использовать замечательную утилиту gdown. Обратите внимание, что на момент написания этой статьи (март 2022 г.), хотя gdown предустановлен на инстансах Colab, вам необходимо обновить пакет, чтобы он заработал. Вам понадобится идентификатор файла, который вы можете получить, щелкнув правой кнопкой мыши файл на Диске ➤ Получить ссылку ➤ Любой, у кого есть ссылка, а затем вытащить идентификатор (выделенный жирным шрифтом ниже) из предоставленного URL-адреса:

https://drive.google.com/file/d/1sk...IzO/view?usp=sharing

ПРИМЕЧАНИЕ. Поскольку любой, у которого есть ссылка, может получить доступ к вашему файлу с этим разрешением на общий доступ к файлам, используйте этот метод только для своих личных проектов!

4. Обход «pip install…» при перезапуске среды выполнения (ядра)

Если вы похожи на меня и всегда перезапускаете и повторно запускаете ядро ​​​​python — обычно потому, что у вас есть неидемпотентный код, такой как dataset = dataset.map().batch() — сэкономьте драгоценные секунды и сделайте свои записные книжки читабельными и краткими, не вызывая pip install каждый раз, когда вы перезапускаете время выполнения, создав фиктивный файл и проверив его наличие:

![ ! -f "pip_installed" ] && pip -q install tensorflow-datasets==4.4.0 tensorflow-addons && touch pip_installed

На самом деле, используйте тот же метод, чтобы избежать ненужного копирования и загрузки этих больших файлов данных всякий раз, когда вы перезапускаете блокнот:

![ ! -d "my_data" ] && unzip /content/drive/MyDrive/my_data.zip -d my_data

5. Импортируйте свои собственные модули/пакеты Python

Если вы обнаружите, что постоянно используете helper.py или свой собственный личный Python package, например. чтобы отобразить сетку изображений или составить график потерь/показателей на тренировках, поместите их все на свой GDrive в папку с именем /packages, а затем:

import sys
sys.path.append('/content/drive/MyDrive/packages/')
from helper import *

6. Скопируйте файлы в корзину Google Storage

Если вы тренируетесь на TPU Google, ваши данные должны храниться в корзине облачного хранилища Google. Вы можете использовать предустановленную утилиту gsutil для переноса файлов с локального диска виртуальной машины Colab в корзину хранилища, если вам нужно выполнить некоторую предварительную обработку данных перед запуском каждого обучающего прогона TPU.

!gsutil -m cp -r /root/tensorflow_datasets/my_ds/ gs://my-bucket/

7. Убедитесь, что все файлы были полностью скопированы на GDrive.

Я уверен, вам хорошо известно, что Google может и прервет ваш сеанс из-за бездействия. Есть веские причины не хранить (огромные) контрольные точки модели во время обучения модели на смонтированном GDrive. Например. чтобы не превысить ограничения ввода-вывода Colab, или у вас заканчивается квота хранилища GDrive, и вам необходимо использовать достаточно места на локальном диске в вашем экземпляре Colab и т. д. Чтобы убедиться, что ваша окончательная модель и данные полностью переведены на GDrive, если вы параноик, назовите drive.flush_and_unmount() в самом конце блокнота:

from google.colab import drive
model.fit(...)  # I'm going to take a nap now, <yawn>
model.save('/content/drive/MyDrive/...')
drive.flush_and_unmount()

Обратите внимание, что завершение копирования/записи файлов на /content/drive/MyDrive/ не означает, что все файлы находятся в безопасности на GDrive и что вы можете немедленно завершить работу своего экземпляра Colab, поскольку передача данных между виртуальной машиной и инфраструктурой Google происходит асинхронно, поэтому выполнение этой очистки поможет убедитесь, что отключение действительно безопасно.

8. Быстро откройте свой локальный блокнот Jupyter.

Нет необходимости копировать файл .ipynb на GDrive, а затем дважды щелкать по нему. Просто перейдите на https://colab.research.google.com/ и нажмите на вкладку Загрузить. Ваш загруженный блокнот будет находиться GDrive://Colab Notebooks/ .

9. Используйте команды оболочки с переменными Python

OUT_DIR = './models_ckpt/'
...
model.save(OUT_DIR + 'model1')
...
model.save(OUT_DIR + 'model2')
...
!rm -rf {OUT_DIR}*

Используйте доступные вам мощные команды Linux… зачем импортировать zip-файл, запрашивать библиотеки и весь сопутствующий код? На самом деле, получите лучшее из обоих миров, направив вывод команды Linux в переменную Python:

!wget -O data.zip https://github.com/ixig/archive/data_042020.zip
!unzip -q data.zip -d ./tmp
# 'wc': handy linux word and line count utility
result = !wc ./tmp/tweets.txt
lines, words, *_ = result[0].split()

10. Я работаю в Colab или Jupyter?

Если вы переключаетесь между запуском своих блокнотов на локальном компьютере и обучением в Colab, вам нужен способ определить, где работает этот блокнот, например. не pip install при запуске на вашем локальном компьютере. Вы можете сделать это, используя:

COLAB = 'google.colab' in str(get_ipython())
if COLAB:
    !pip install ...

11. Напиши мне, детка!

Не нужно сидеть и ждать завершения обучения, пусть Colab отправит вам уведомление на ваш телефон! Во-первых, вам нужно будет следовать инструкциям, чтобы разрешить CallMeBot отправлять вам сообщения в вашем приложении Signal/FB/WhatsApp/Telegram. Занимает всего одну минуту — очень простая, быстрая и безопасная регистрация. Тогда ты можешь:

import requests
from urllib.parse import quote_plus
number = '...'
api_key = '...'
message = quote_plus('Done Baby!')
requests.get(f'https://api.callmebot.com/signal/send.php?phone={number}&apikey={api_key}&text={message}')

12. Используйте магию IPython Cell

Хорошо, это относится не только к блокнотам Colab, но и к блокнотам Jupyter, но вот наиболее полезные из них, о которых нужно знать.

%%capture : Заглушить обильные раздражающие результаты выполнения операторов в ячейке. Полезно для таких «pip install…», «tfds.load(…)» и бесчисленных предупреждений об устаревании TensorFlow.

%%writefile <filename> : Записывает текст, содержащийся в остальной части ячейки, в файл. Полезно для создания YAML, JSON или простого текстового файла на лету для тестирования.

%tensorflow_version 1.x : Если вы все еще застряли в прошлом (не сужу… ну, может быть, совсем немного!), не делайте 'pip install tensorflow==1.0', это приведет к беспорядку. зависимостей, используйте вместо этого магию строк, прежде чем импортировать TensorFlow.

13. Закрепите терминал

Если вы являетесь пользователем Pro/Pro+, у вас есть доступ к виртуальной машине через Терминал. Вы можете делать некоторые сверхмощные вещи, например запускать на нем свой собственный сервер Jupyter (так что вы можете вернуться к знакомому пользовательскому интерфейсу Jupyter Notebook, если хотите). Кроме того, для обработки файлов терминал незаменим. Если вы являетесь пользователем уровня бесплатного пользования и хотите получить доступ к терминалу, проверьте colab-xterm.

Когда вы щелкаете по значку терминала на левой боковой панели, панель терминала появляется справа на странице, но ее действительно сложно использовать, учитывая, насколько она узкая и ее постоянно приходится закрывать, чтобы вы могли видеть свой код!Решение. Закрепите терминал как отдельную вкладку. После открытия Терминала щелкните многоточие (…) ➤ Изменить макет страницы ➤ Представление с одной вкладкой.

14. Измените эти ярлыки

Кто помнит непонятные ярлыки, которые присваивает Google?! Перейдите в Инструменты ➤ Сочетания клавиш и убедитесь, что вы назначили следующие сочетания клавиш своим запоминающимся двухклавишным комбинациям:

  • Перезапустите среду выполнения и запустите все ячейки в записной книжке.
  • Перезапустить среду выполнения
  • Запускать ячейки перед текущей
  • Запустить выбранную ячейку и все ячейки после

Приятно то, что Colab запоминает ваши изменения (обязательно нажмите кнопку «Сохранить» внизу всплывающего окна), поэтому вам нужно сделать это только один раз.

15. Интеграция с GitHub

Вы можете запустить любую записную книжку, размещенную на GitHub, непосредственно в Colab, используя следующий URL-адрес:

https://colab.research.google.com/github/<org>/<repo>/…/<xx.ipynb>

Если вы установили расширение Chrome Открыть в Colab и в настоящее время просматриваете блокнот Jupyter на GitHub, вы можете щелкнуть значок расширения (закрепить его, чтобы обеспечить легкий доступ) в правой части панели навигации вашего браузера. , чтобы напрямую открыть его в Colab.

Или вы можете просто добавить в закладки свою любимую организацию/репозиторий со следующим URL-адресом, и браузер файлов будет предлагать вам каждый раз, когда вы нажимаете на закладку:

https://colab.research.google.com/github/<org>/<repo>

Несколько дополнительных советов…!

16. Интерактивные таблицы Pandas

from google.colab import data_table
data_table.enable_dataframe_formatter()

Включение этой функции улучшит рендеринг DataFrames и позволит проводить интерактивное исследование. Разбиение на страницы поддерживается с возможностью выбора количества строк, отображаемых на странице, что делает ваши записные книжки компактными и удобочитаемыми. Столбцы можно сортировать (глобально по всему фрейму данных). Самая мощная функция — это диалоговое окно «Фильтры» с сопоставлением регулярных выражений.

17. Зеркальная ячейка во вкладке

Если вы обнаружите, что часто прокручиваете назад или повторно выполняете ячейку, например. вы используете его для построения графика потерь при обучении или матрицы путаницы - вместо того, чтобы раздувать свой блокнот дублирующимся кодом / ячейками, которые делают то же самое, что и вы экспериментируете с различными настройками кода в ячейках, следующих за ним, вы можете «закрепить» ячейку "отзеркалив" его. Выберите ячейку, которую вы хотите отразить, щелкните: Инструменты ➤ Палитра команд ➤ Отразить ячейку на вкладке .

Эта ячейка теперь появится как отдельная панель вкладок в вашей записной книжке. Colab позаботится о синхронизации изменений, которые вы вносите либо в исходную ячейку в блокноте, либо в зеркальной ячейке на вкладке. Вы можете повторно выполнить автономную ячейку с <SHIFT|CTRL> + <ENTER>, как и любую другую ячейку.

18. Отключить среду выполнения Colab

Быть ответственным и внимательным пользователем Colab означает не перегружать экземпляр графического процессора после того, как вы закончите обучение… Google заметит и вознаградит вас лучшим графическим процессором в следующий раз, когда вы его запросите! Итак, после того, как вы скопировали сохраненные файлы моделей в GDrive или Google Storage и отправили себе сообщение о том, что ваше обучение завершено, поместите следующее в последнюю ячейку своей записной книжки:

from google.colab import runtime
runtime.unassign()