Погружение в глубокое обучение: Нельзя просто так взять и запустить Deep Learning
Мои заметки о погружении в глубокое обучение:
- Как учить и не учить математике
- MIT 6.S191
- Нельзя просто так взять и запустить Deep Learning
- Digit Recognizer (MNIST) точность 0.99585
- Ссылки на курсы по Machine Learning & Deep Learning
- Реализация Generative Adversarial Network
Продолжаю разбираться с Deep Learning, решил попробовать его на практике: сам придумал лабу, сам сделал, сам себя похвалил.
Целью было построить простейшую, но более-менее полную цепочку обучения модели с помощью Keras+TensorFlow и запустить её на своей машине.
Публикую notebook с выполненной лабой, комментариями о базовых штуках, костылях и нюансах. Надеюсь, будет полезна новичкам. Может быть меня даже поругает кто-нибудь из опытных датасаентистов.
А в этом посте покритикую инфраструктуру всего этого.
Почему TensorFlow
Погуглив про PyTorch & TensorFlow, я пришёл к следующей картине:
- Сначала был низкоуровневый TensorFlow 1.0.
- Потом появился PyTorch, который некоторые вещи сделал «правильнее» и проще.
- Поэтому TensorFlow переписали: получили версию 2.0 и догнали PyTorch по фичам.
- Сейчас они, если не смотреть на специализированные задачи и детали реализации, примерно одинаково популярны, имеют примерно одинаковые фичи, удобство и производительность.
- Поскольку TensorFlow старше, для него есть больше обвеса: дебаг, визуализация, деплой на разные штуки. То есть новичку немного удобнее TensorFlow. Наверно :-)
- PyTorch потихоньку догоняет TensorFlow по обвесу и в целом нельзя сказать, что в среднесрочной перспективе один фреймворк сделает другой.
- PyTorch & TensorFlow — два топовых фреймворка, остальные до них не дотягивают или занимают более специализированные ниши.
Поскольку я новичок, решил от добра добра не искать.
Запуск на «голом» железе
Первая попытка запустить полный pipeline закончилась убийством графической оболочки и переустановкой системы. Заодно винду снёс — давно хотел.
Оказывается, в 21 году XXI века куча неглупых людей из ведущей корпорации не в состоянии реализовать поддержку актуальной LTS Ubuntu, которая вышла больше года назад. Драйвера NVidia для ML доступны максимум для Ubuntu 18.04.
Поставить их можно, если осторожно. Но я был неосторожен, за что и поплатился.
По правде я не особо старался — это была последняя система с неавтоматизированной подготовкой рабочего окружения, за годы в ней скопилось много мусора и я давно ждал, когда ж ей придёт конец.
Но ситуация всё равно не радует, как-то не по-людски такие задержки с обновлениями делать.
Запуск через Docker
Поскольку откатывать версию операционной системы я не хотел, решил воспользоваться вторым вариантом — готовыми docker контейнерами с TensorFlow и Python 3.6… Ну, чем богаты, не страшно.
Тут тоже не всё просто.
Во-первых, всё равно нужны драйвера NVidia, на этот раз для Docker.
Во-вторых, необходимо наладить взаимодействие Jupyter с контейнером.
Официальный вариант — контейнер с предустановленным Jupyter. Мне этот путь не нравится — как хочу иметь единственную кастомизированную версию Jupyter, вместо зоопарка.
К сожалению, пришлось остановиться на нём — унаследовал собственный контейнер от официального, доставив необходимые пакеты.
Альтернативный путь — научить Jupyter работать со своими ядрами в контейнерах. Для этого недавно появилась утилита dockernel и она даже работает, но не для контейнеров с поддержкой GPU.
Потому что поддержка включается отдельно при запуске контейнера, а dockernel пока не умеет пробрасывать опции запуска. Но автор говорит, что может быть научится.
Этот пост является частью серии
- Следующий пост: Digit Recognizer (MNIST) точность 0.99585
- Предыдущий пост: MIT 6.S191
- Первый пост: Как учить и не учить математике
Читать далее
- Модная типизация в Python
- Генерация подземелий — от простого к сложному
- Автоматический генератор квестов
- Feeds Fun — читалка новостей с тегами и ChatGPT
- Топовые LLM фреймворки могут быть не так надёжны, как вы думаете
- Миграции backend на практике
- Типы в Python не радуют
- Open source сервисы аутентификации
- Как завалить собес у меня
- Генерация текста на русском по шаблонам