NeMo: a toolkit for building AI applications using Neural ModulesOleksii Kuchaiev et al. NVIDIA
arxiv.org/abs/1909.09577Тулкит для быстрого стакания монструозных архитектур из высокоуровневых фреймворк-агностичных блоков.
Боль:- Стандартный подход переиспользования компонентов в комплексных архитектурах - стекать предобученные опенсорсные модели.
- Определение архитектуры и обучение модели могут быть трудноразделимы в одном скрипте.
- Во фреймворках глубокого обучения используются многомерные тензоры без описания семантики содержимого, что затрудняет стек компонентов и отладку в рамках архитектуры.
Болеутоляющее: - Декомпозиция на высокоуровневые функциональные building blocks (такие, как language model, encoder, decoder, data augmentation algorithm, a loss function и т.д.) с фиксированными input и output интерфейсами.
- Разделение на описание архитектуры, обучение, алгоритм оптимизации, выбор фреймворков backend.
- Интерфейсы блоков определены статическими типами данных с описанием семантики данных для каждой оси тензора (такой, как WordEmbedding, ImageEmbeddingTag, Spectrogram), между building blocks выполняется проверка на совместимость.
- Building blocks фреймворк-агностичны, сейчас могут конвертироваться из любой PyTorch nn.Module, а после добавления поддержки, - и из других фреймворков. Кроме базовых блоков уже есть коллекции высокоуровневых: модели распознавания речи, машинного перевода, BERT.
▫️ Python
▫️ Distributed training
▫️ Mixed precision training
▫️ Multi-GPU
▫️ Open Source
https://github.com/NVIDIA/NeMo▫️ Видос с примером использования
https://drive.google.com/file/d/1CF-buP_Y1qCAefzoyvOUCXl_3v2vO5P-/preview