Что такое PyTorch Lightning CLI?

Шаблон - это код, который часто перерабатывается практически без функциональных изменений. Шаблон глубокого обучения делает код глубокого обучения трудным для чтения, повторного использования, воспроизведения и отладки.

PyTorch Lighting - это легкая оболочка PyTorch для высокопроизводительных исследований искусственного интеллекта. Организация кода PyTorch с помощью Lightning обеспечивает автоматическое установление контрольных точек, ведение журнала, плавное обучение на нескольких графических процессорах, TPU, CPU, а также использование сложных для реализации передовых методов, таких как сегментирование моделей и обучение со смешанной точностью, без изменения кода. PyTorch Lightning обеспечивает истинную гибкость за счет сокращения количества инженерных шаблонов и ресурсов, необходимых для реализации современного искусственного интеллекта.

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

Реализация инструментов командной строки с использованием таких библиотек, как argparse для управления сотнями возможных конфигураций обучающего модуля, данных и сети, является важным источником Deep Learning Boilerplate. Это часто приводит к тому, что важные конфигурации жестко запрограммированы и недоступны для экспериментов и повторного использования.

В своем 1.3 Release Lighting представлен новый бета-интерфейс командной строки, который напрямую предоставляет аргументы Lightning Data, Model и Trainer для прямого доступа к интерпретатору python, обеспечивая чистую и настраиваемую структуру для вашего кода.

LightningCLI предоставляет стандартизированный механизм для настройки тренировочных прогонов с помощью одного файла (.yaml), который включает настройки для классов Trainer, LightningModule и LightningDataModule. Это имеет то преимущество, что значительно упрощает воспроизводимость экспериментов.

LightningCLI может предоставлять аргументы напрямую через подсказки типа Python и строки документации для автоматической генерации проверки типов и справочных сообщений из вашего кода!

Настройка LightningCLI вручную

Готовая конфигурация, предоставляемая LightningCLI, не предназначена для замены специализированных библиотек конфигурации глубокого обучения, таких как Hydra. Если вы хотите выполнить более сложные конфигурации заданий и среды, рекомендуется ознакомиться с некоторыми из лучших практик интеграции Lightning и Hydra из нашей библиотеки Lightning Transformers.



При этом параметры инициализации класса LightningCLI могут использоваться для настройки описаний, позволяя анализировать переменные среды и дополнительные аргументы для создания экземпляра обучающего модуля и анализатора конфигурации. Если аргументы инициализации не охватывают область вашего варианта использования, класс LightningCLI может быть расширен с помощью add_arguments_to_parser() и имеет два встроенных крючка, которые можно использовать для запуска кода до и после выполнения trainer.fit: before_fit() и after_fit() .

Интерфейс командной строки также может быть расширен для поддержки конфигураций для нескольких наборов данных, так что модель и / или Lightning DataModule указываются путем импорта и аргументами инициализации.

Например, в приведенной выше конфигурации CLI, поскольку CLI реализован как LightningCLI(MyMainModel), многомодельная конфигурация кодера / декодера может быть указана следующим образом:

Lightning CLI + Grid

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

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

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

Теперь, когда вы узнали, как структурировать и настраивать проекты глубокого обучения, вы можете начать работу локально или в Grid бесплатно с учетной записью Google или GitHub.

Надеюсь, вам понравилась эта статья, и теперь вы лучше понимаете ценность Lightning CLI для ваших проектов машинного обучения. Если у вас есть какие-либо вопросы о Lightning CLI или Grid, не стесняйтесь задавать их в комментариях.

об авторе

Аарон (Ари) Борнштейн - исследователь искусственного интеллекта, страстно увлекающийся историей, занимающийся новыми технологиями и вычислительной медициной. В качестве главы отдела защиты разработчиков в Grid.ai он сотрудничает с сообществом машинного обучения, чтобы решать реальные проблемы с помощью технологий, меняющих правила игры, которые затем документируются, публикуются в открытом доступе и передаются остальному миру.