Le framework Open Source accéléré par GPU pour une conservation efficace des données de modèles d'IA génératives ?
NeMo Curator est une bibliothèque Python spécialement conçue pour la préparation et la conservation rapides et évolutives d'ensembles de données pour des cas d'utilisation d'IA générative tels que la pré-formation de modèles de langage de base, la formation de modèles texte-image, la pré-formation adaptative au domaine (DAPT), le réglage fin supervisé (SFT). ) et un réglage fin efficace des paramètres (PEFT). Il accélère considérablement la conservation des données en exploitant les GPU avec Dask et RAPIDS, ce qui entraîne un gain de temps significatif. La bibliothèque fournit une interface personnalisable et modulaire, simplifiant l'expansion du pipeline et accélérant la convergence des modèles grâce à la préparation de jetons de haute qualité.
NeMo Curator fournit une collection de modules de conservation de données évolutifs pour la conservation de textes et d'images.
Tous nos pipelines de texte bénéficient d'un excellent support multilingue.
Téléchargement et extraction
Implémentations par défaut pour les sources Common Crawl, Wikipedia et ArXiv
Personnalisez et étendez facilement à d'autres sources
Identification de la langue
Reformatage Unicode
Filtrage heuristique
Filtrage du classificateur
texte rapide
Modèles accélérés par GPU : classification de domaine, de qualité et de sécurité
Déduplication accélérée par GPU
Déduplication exacte
Déduplication floue via le hachage sensible à la localité MinHash
Déduplication sémantique
Décontamination des tâches en aval
Rédaction d’informations personnelles identifiables (PII)
Création d'intégration
Filtrage du classificateur
Classification esthétique et NSFW
Déduplication GPU
Sémantique
Ces modules offrent de la flexibilité et permettent de réorganiser, à quelques exceptions près. Tous les modules évoluent automatiquement vers plusieurs nœuds pour augmenter le débit.
Documentation
Exemples
Tutoriels
Articles de blog
Organiser des ensembles de données d'un billion de jetons : présentation du conservateur de données NVIDIA NeMo
Faites évoluer et organisez des ensembles de données de haute qualité pour la formation LLM avec NVIDIA NeMo Curator
Organiser des ensembles de données personnalisés pour la formation LLM avec NVIDIA NeMo Curator
Organiser des ensembles de données personnalisés pour un réglage précis des paramètres LLM avec NVIDIA NeMo Curator
Rationalisation du traitement des données pour la pré-formation adaptative de domaine avec NVIDIA NeMo Curator
Cette section explique comment installer NeMo Curator et utiliser la bibliothèque Python, les modules Python et les scripts CLI. Il comprend également une liste de didacticiels pour vous aider à démarrer immédiatement. Enfin, cette section explique comment utiliser le NeMo Framework Launcher comme méthode alternative d'interface avec NeMo Curator.
Avant d'installer NeMo Curator, assurez-vous que les conditions suivantes sont remplies :
Python3.10
Ubuntu 22.04/20.04
GPU NVIDIA (en option)
Volta™ ou supérieur (capacité de calcul 7.0+)
CUDA 12 (ou supérieur)
Vous pouvez obtenir NeMo-Curator de 3 manières.
PyPi
Source
Conteneur de cadre NeMo
pip installer cython pip install --extra-index-url https://pypi.nvidia.com nemo-curator[tous]
clone git https://github.com/NVIDIA/NeMo-Curator.git pip installer cython pip install --extra-index-url https://pypi.nvidia.com "./NeMo-Curator[all]"
La dernière version de NeMo Curator est préinstallée dans le NeMo Framework Container. Si vous souhaitez que le dernier commit soit dans le conteneur, vous pouvez réinstaller NeMo Curator en utilisant :
pip désinstaller nemo-curator rm -r /opt/NeMo-Curateur clone git https://github.com/NVIDIA/NeMo-Curator.git /opt/NeMo-Curator pip install --extra-index-url https://pypi.nvidia.com "/opt/NeMo-Curator[all]"
NeMo Curator dispose d'un ensemble d'extras que vous pouvez utiliser pour installer uniquement les modules nécessaires à votre charge de travail. Ces extras sont disponibles pour toutes les méthodes d’installation proposées.
pip install nemo-curator # Installe les modules de curation de texte CPU uniquementpip install --extra-index-url https://pypi.nvidia.com nemo-curator[cuda12x] # Installe les modules de curation de texte CPU + GPUpip install --extra-index -url https://pypi.nvidia.com nemo-curator[image] # Installe les modules de curation de texte et d'images CPU + GPUpip install --extra-index-url https://pypi.nvidia.com nemo-curator[all] # Installe tout ce qui précède
Vous pouvez également installer NeMo Curator à l'aide des RAPIDS Nightly Builds. Pour ce faire, vous pouvez définir la variable d'environnement RAPIDS_NIGHTLY=1
.
# installation à partir de pypiRAPIDS_NIGHTLY=1 pip install --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple "nemo-curator[cuda12x]"# installation à partir de la sourceRAPIDS_NIGHTLY=1 pip install - -extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple ".[cuda12x]"
Lorsque la variable RAPIDS_NIGHTLY
est définie sur 0 (qui est la valeur par défaut), elle utilisera la version stable de RAPIDS.
L'extrait suivant montre comment créer un petit pipeline de curation de données qui télécharge et gère un petit sous-ensemble de l'ensemble de données Common Crawl.
# Téléchargez votre datasetdataset = download_common_crawl("/datasets/common_crawl/", "2021-04", "2021-10", url_limit=10)# Construisez votre pipelinecuration_pipeline = Sequential([ # Fix unicode Modifier(UnicodeReformatter()), # Supprimer les enregistrements courts ScoreFilter(WordCountFilter(min_words=80)), # Supprimer les enregistrements de mauvaise qualité ScoreFilter(FastTextQualityFilter(model_path="model.bin")), # Supprime les enregistrements des métriques d'évaluation pour éviter les fuites de l'ensemble de test. TâcheDécontamination([Winogrande(), Squad(), TriviaQA()]) ])# Exécutez le pipeline sur votre datasetcurated_dataset = curation_pipeline(dataset)
Pour démarrer avec NeMo Curator, vous pouvez suivre les tutoriels disponibles ici. Ces tutoriels incluent :
tinystories
qui se concentre sur la conservation des données pour la formation des LLM à partir de zéro.
peft-curation
qui se concentre sur la conservation des données pour les cas d'utilisation de réglage fin efficace des paramètres (PEFT) LLM.
distributed_data_classification
qui se concentre sur l'utilisation des classificateurs de qualité et de domaine pour faciliter l'annotation des données.
single_node_tutorial
qui présente un pipeline de conservation de données de bout en bout pour la conservation des données Wikipédia en thaï.
image-curation
qui explore les modules de curation d'images évolutifs.
La section NeMo Curator du guide de l'utilisateur de NeMo Framework fournit des informations détaillées sur le fonctionnement des modules Python. Le répertoire d'exemples du référentiel GitHub fournit des scripts qui présentent ces modules.
NeMo Curator propose également des scripts CLI que vous pouvez utiliser. Les scripts dans nemo_curator/scripts
correspondent étroitement aux modules Python fournis. Reportez-vous au Guide de l'utilisateur de NeMo Framework pour plus d'informations sur les modules et scripts Python.
Comme méthode alternative d'interface avec NeMo Curator, vous pouvez utiliser le NeMo Framework Launcher. Le lanceur vous permet de configurer facilement les paramètres et le cluster. Il peut également générer automatiquement les scripts batch Slurm qui entourent les scripts CLI requis pour exécuter votre pipeline.
De plus, d'autres méthodes sont disponibles pour exécuter NeMo Curator sur Slurm. Par exemple, reportez-vous aux exemples de scripts dans examples/slurm
pour plus d'informations sur la façon d'exécuter NeMo Curator sur Slurm sans le NeMo Framework Launcher.
Les modules de NeMo Curator ont été principalement conçus pour organiser des documents de haute qualité à partir d'instantanés Common Crawl de manière évolutive. Pour évaluer la qualité des documents Common Crawl sélectionnés, nous avons mené une série d’expériences d’ablation. Dans ces expériences, nous avons formé un modèle de style GPT de 357 millions de paramètres à l'aide d'ensembles de données générés à différentes étapes de notre pipeline de conservation de données, qui a été implémenté dans NeMo Curator.
La figure suivante montre que l'utilisation de différents modules de conservation de données implémentés dans NeMo Curator a conduit à une amélioration des performances des tâches en aval du modèle zéro-shot.
En termes d'évolutivité et de performances de calcul, l'utilisation de la combinaison de RAPIDS et de la déduplication floue Dask nous a permis de dédupliquer l'ensemble de données Red Pyjama de 1,1 billion de jetons en 1,8 heure avec 64 GPU NVIDIA A100 Tensor Core.
De plus, en utilisant les modules basés sur le processeur, le tableau suivant montre le temps requis et la réduction de la taille des données qui en résulte pour chaque étape de traitement. Instantané Common Crawl de novembre/décembre 2020 utilisant 30 nœuds de processeur (avec un matériel similaire au c5.24xlarge
Amazon AWS C5 exemple).
Ensemble de données | Téléchargement et extraction de texte | Nettoyage du texte | Filtrage de qualité | |||
---|---|---|---|---|---|---|
Temps | Taille de sortie | Temps | Taille de sortie | Temps | Taille de sortie | |
Exploration commune 2020-50 | 36 heures | 2,8 To | 1 heure | 2,8 To | 0,2 h | 0,52 To |
Nous apprécions les contributions de la communauté ! Veuillez vous référer à CONTRIBUTING.md pour le processus.