Neural Modules (NeMo) — это библиотека от NVIDIA для обучения нейросетевых моделей. NeMo основана на PyTorch. NeMo делится на коллекции моделей для задач из отдельных сфер. Сейчас доступны две коллекции: nemo_asr для распознавания речи и nemo_nlp для обработки естественного языка.
Ключевым юнитом в библиотеке является “нейронный модуль” (Neural Module). Разработчики называют так черный ящик, который принимает на вход данные, а на выходе отдает предсказания на основе входных данных. Входные и выходные данные в нейронных модулях проверяются на соответствие типам с помощью “нейронного типа” (Neural Type).
Приложение, построенное на основе NeMo, — это направленный ациклический граф (DAG). DAG состоит из связанных модулей и позволяет обращаться к различным модулям через API.
Разработчики выпустили видеодемонстрацию работы библиотеки. Помимо демонстрации возможностей библиотеки, есть тьюториалы по работе с библиотекой для решения NLP задач и задач анализа речи.
Ключевые концепции и опции
Среди составных частей библиотеки:
- Класс NeuralModule реализует нейронный модуль;
- NmTensor представлет функции активации, которые находятся между портами нейронных модулей;
- NeuralType представляет типы портов модулей и NmTensors;
- NeuralFactory нужна, чтобы создавать нейронные модули и контролировать обучение;
- Lazy execution — при описании функции активации между нейронными модулями, операция не исполнится, если не вызвать (such as optimizer.optimize(…);
- Collections — NeMo делится на коллекции моделей для задач из отдельных сфер. Сейчас доступны две коллекции: nemo_asr для распознавания речи и nemo_nlp для обработки естественного языка