Об этом проекте

Apex — поддерживаемый NVIDIA набор утилит, цель которого — быстро предоставить пользователям PyTorch актуальные возможности смешанной точности и распределённого обучения; часть кода в перспективе должна попасть в upstream PyTorch. Что он предоставляет: - Вспомогательные средства обучения со смешанной точностью (apex.amp) для запуска моделей в пониженной точности. - Утилиты распределённого обучения, включая apex.parallel.DistributedDataParallel и SyncBatchNorm. - Объединённые ядра для оптимизаторов, таких как FusedAdam, и слоёв нормализации, таких как FusedLayerNorm и FusedRMSNorm. - Набор опциональных модулей contrib, охватывающих такие области, как разреженность, групповая пакетная нормализация, xentropy, focal loss, transducer losses, peer memory, NCCL P2P, узкие слои, распределённые оптимизаторы и GPU direct storage. Замечания по установке: - Контейнеры NVIDIA PyTorch на NGC поставляются с уже доступными пользовательскими расширениями. - При сборке из исходного кода рекомендуемый путь использует переменные окружения, такие как APEX_CPP_EXT=1 и APEX_CUDA_EXT=1, вместе с pip install --no-build-isolation; устаревшие флаги командной строки (--cpp_ext, --cuda_ext) по-прежнему поддерживаются. - Возможна сборка только на Python, но она исключает объединённые ядра, поэтому FusedAdam, FusedLayerNorm/FusedRMSNorm и объединённые пути для SyncBatchNorm, DistributedDataParallel и amp становятся недоступными или медленнее. - Отдельные модули contrib требуют собственных опций установки; некоторые могут быть совместимы только с nightly-сборками PyTorch, а не со стабильными релизами. APEX_ALL_CONTRIB_EXT=1 собирает все расширения contrib сразу. - Для более быстрой компиляции рекомендуется Ninja, а параметры параллельной сборки документированы для сред с ограниченными ресурсами CPU или памяти. - Поддержка Windows описывается как экспериментальная. Это библиотека для разработчиков, обучающих модели глубокого обучения и желающих получить строительные блоки смешанной точности и распределённого обучения, а не приложение для конечных пользователей.