À propos du projet

Apex est une collection d'utilitaires maintenue par NVIDIA qui vise à rendre rapidement disponibles aux utilisateurs de PyTorch des fonctionnalités récentes de précision mixte et d'entraînement distribué, avec une partie du code destinée à être intégrée en amont dans PyTorch. Ce qu'il fournit : - Des assistants d'entraînement en précision mixte (apex.amp) pour exécuter des modèles en précision réduite. - Des utilitaires d'entraînement distribué, notamment apex.parallel.DistributedDataParallel et SyncBatchNorm. - Des noyaux fusionnés pour des optimiseurs tels que FusedAdam, et des couches de normalisation telles que FusedLayerNorm et FusedRMSNorm. - Un ensemble de modules contrib optionnels couvrant des domaines comme la parcimonie, la group batch norm, xentropy, la focal loss, les pertes transducer, la peer memory, NCCL P2P, les couches bottleneck, les optimiseurs distribués et le GPU direct storage. Notes d'installation : - Les conteneurs NVIDIA PyTorch sur NGC sont livrés avec les extensions personnalisées déjà disponibles. - Depuis les sources, la voie recommandée utilise des variables d'environnement telles que APEX_CPP_EXT=1 et APEX_CUDA_EXT=1 avec pip install --no-build-isolation ; les anciens indicateurs en ligne de commande (--cpp_ext, --cuda_ext) restent pris en charge. - Une compilation Python uniquement est possible mais omet les noyaux fusionnés, de sorte que FusedAdam, FusedLayerNorm/FusedRMSNorm et les chemins fusionnés pour SyncBatchNorm, DistributedDataParallel et amp sont indisponibles ou plus lents. - Les modules contrib individuels nécessitent leurs propres options d'installation ; certains peuvent n'être compatibles qu'avec les versions nightly de PyTorch plutôt qu'avec les versions stables. APEX_ALL_CONTRIB_EXT=1 compile toutes les extensions contrib en une seule fois. - Ninja est recommandé pour une compilation plus rapide, et des options de compilation parallèle sont documentées pour les environnements à CPU ou mémoire limités. - La prise en charge de Windows est décrite comme expérimentale. Il s'agit d'une bibliothèque destinée aux développeurs qui entraînent des modèles d'apprentissage profond et souhaitent des briques de base pour la précision mixte et l'entraînement distribué, plutôt qu'une application destinée à l'utilisateur final.