Почему вам стоит использовать свой
велосипед и почему не стоит
Александр Бельских
Обо мне
TeamLead @ Withy
https://github.com/belskikh/kekas
[ods.ai] - @belskikh
О чем этот доклад?
Для чего вообще нужен какой-то фреймворк?
Унификация пайплайнов
Ускорение экспериментов
Уменьшение количества кода
Это отличный повод прочитать доклад
Для чего вообще нужен какой-то фреймворк?
Унификация пайплайнов
Ускорение экспериментов
Уменьшение количества кода
Это отличный повод прочитать доклад
Для чего вообще нужен какой-то фреймворк?
Унификация пайплайнов
Ускорение экспериментов
Уменьшение количества кода
Это отличный повод прочитать доклад
Для чего вообще нужен какой-то фреймворк?
Унификация пайплайнов
Ускорение экспериментов
Уменьшение количества кода
Это отличный повод прочитать доклад
Почему не нужен какой-то фреймворк?
- Копируются баги
- Коллегам сложно работать по вашему фреймворку
- Ограничивает в возможностях
- В реальной работе пайплайн меняется относительно редко
Как появился на свет кекас?
Что собой представляет кекас?
Какие фичи есть в кекасе (и каких там нет)?
● Awesome name
● Mixed Precision (FP16)
● Learning Rate Finder
● One Cycle policy
● Tensoboard logging
● Best checkpoints saving
● Early stopping
● TTA
● Freeze / unfreeze
● Easy customization
Какие фичи есть в кекасе (и каких там нет)?
● Awesome name
● Mixed Precision (FP16)
● Learning Rate Finder
● One Cycle policy
● Tensoboard logging
● Best checkpoints saving
● Early stopping
● TTA
● Freeze / unfreeze
● Easy customization
● “Normal” name
● Tests
● Documentation
● Distributed training
Чуть подробнее про коллбеки
Чуть подробнее про коллбеки
Пример использования кекаса
ТЫК
Инициализация
Обычное обучение
Обучение с другим оптимизатором
Обучение со шкедулером
Логгирование
Сохранение чекпоинтов
Ранняя остановка обучения
Всё вместе
Заморозка / разморозка весов
Сохранение/загрузка весов модели
Сохранение/загрузка весов модели
Инференс модели
И ещё несколько...
- Test Time Augmentations
- One Cycle learning (~warmup)
- Plot logs in notebook
- Add custom callbacks
Что я получил после того, как написал кекас
- очень много веселья
- прокачался как DL-инженер
- получил в руки заточенный под себя инструмент
Почему мы в команде (больше) не используем кекас
- нет доков -> только я знаю внутренности
- нет Distributed training
- недостаточно гибкости для генеративных моделей
- не всех устраивает название
Чем пользуемся сейчас
Pytorch-lightning (https://github.com/PyTorchLightning/pytorch-lightning)
Фичи pytorch-lightning
● Running grid search on a cluster
● Fast dev run
● Logging
● Implement Your Own Distributed (DDP) training
● Multi-GPU & Multi-node
● Training loop
● Hooks
● Configure optimizers
● Validations
● Model saving & Restoring training session
Интерфейс
Обучение
Заключение
Написание своего велосипеда это отличное упражнение и обязательно вас
прокачает
Но в команде лучше пользоваться чем-то общим - написать свой совместный
или же воспользоваться готовым
Спасибо!

Почему вам стоит использовать свой велосипед и почему не стоит Александр Бельских