Das GPU-beschleunigte Open-Source-Framework für eine effiziente generative KI-Modelldatenkuration ?
NeMo Curator ist eine Python-Bibliothek, die speziell für die schnelle und skalierbare Vorbereitung und Kuratierung von Datensätzen für generative KI-Anwendungsfälle wie Foundation-Language-Modell-Vortraining, Text-zu-Bild-Modelltraining, domänenadaptives Vortraining (DAPT) und überwachtes Feintuning (SFT) entwickelt wurde ) und Parametereffiziente Feinabstimmung (PEFT). Durch die Nutzung von GPUs mit Dask und RAPIDS wird die Datenkuratierung erheblich beschleunigt, was zu erheblichen Zeiteinsparungen führt. Die Bibliothek bietet eine anpassbare und modulare Schnittstelle, die die Pipeline-Erweiterung vereinfacht und die Modellkonvergenz durch die Vorbereitung hochwertiger Token beschleunigt.
NeMo Curator bietet eine Sammlung skalierbarer Datenkurationsmodule für die Text- und Bildkuration.
Alle unsere Text-Pipelines bieten hervorragende mehrsprachige Unterstützung.
Herunterladen und Extrahieren
Standardimplementierungen für Common Crawl-, Wikipedia- und ArXiv-Quellen
Einfache Anpassung und Erweiterung auf andere Quellen
Sprachidentifikation
Unicode-Neuformatierung
Heuristische Filterung
Klassifikatorfilterung
fastText
GPU-beschleunigte Modelle: Domänen-, Qualitäts- und Sicherheitsklassifizierung
GPU-beschleunigte Deduplizierung
Exakte Deduplizierung
Fuzzy-Deduplizierung über MinHash Locality Sensitive Hashing
Semantische Deduplizierung
Dekontamination nachgelagerter Aufgaben
Schwärzung personenbezogener Daten (PII).
Schöpfung einbetten
Klassifikatorfilterung
Ästhetische und NSFW-Klassifizierung
GPU-Deduplizierung
Semantisch
Diese Module bieten Flexibilität und erlauben bis auf wenige Ausnahmen eine Nachbestellung. Alle Module skalieren automatisch auf mehrere Knoten, um den Durchsatz zu erhöhen.
Dokumentation
Beispiele
Tutorials
Blogbeiträge
Kuratieren von Billionen-Token-Datensätzen: Vorstellung des NVIDIA NeMo Data Curator
Skalieren und kuratieren Sie hochwertige Datensätze für die LLM-Ausbildung mit NVIDIA NeMo Curator
Kuratieren benutzerdefinierter Datensätze für das LLM-Training mit NVIDIA NeMo Curator
Kuratieren benutzerdefinierter Datensätze für eine LLM-parametereffiziente Feinabstimmung mit NVIDIA NeMo Curator
Optimieren Sie die Datenverarbeitung für das domänenadaptive Vortraining mit NVIDIA NeMo Curator
In diesem Abschnitt wird erläutert, wie Sie NeMo Curator installieren und die Python-Bibliothek, Python-Module und CLI-Skripte verwenden. Es enthält auch eine Liste mit Tutorials, die Ihnen den sofortigen Einstieg erleichtern. Abschließend wird in diesem Abschnitt erläutert, wie Sie den NeMo Framework Launcher als alternative Methode zur Schnittstelle mit NeMo Curator verwenden.
Stellen Sie vor der Installation von NeMo Curator sicher, dass die folgenden Anforderungen erfüllt sind:
Python 3.10
Ubuntu 22.04/20.04
NVIDIA-GPU (optional)
Volta™ oder höher (Rechenleistung 7.0+)
CUDA 12 (oder höher)
Sie können NeMo-Curator auf drei Arten erhalten.
PyPi
Quelle
NeMo Framework-Container
Pip Cython installieren pip install --extra-index-url https://pypi.nvidia.com nemo-curator[all]
Git-Klon https://github.com/NVIDIA/NeMo-Curator.git Pip Cython installieren pip install --extra-index-url https://pypi.nvidia.com "./NeMo-Curator[all]"
Die neueste Version von NeMo Curator ist im NeMo Framework Container vorinstalliert. Wenn Sie den neuesten Commit im Container haben möchten, können Sie NeMo Curator wie folgt neu installieren:
pip nemo-curator deinstallieren rm -r /opt/NeMo-Curator Git-Klon 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 verfügt über eine Reihe von Extras, mit denen Sie nur die für Ihre Arbeitslast erforderlichen Module installieren können. Diese Extras sind für alle angebotenen Installationsmethoden verfügbar.
pip install nemo-curator # Installiert reine CPU-Textkurationsmodulepip install --extra-index-url https://pypi.nvidia.com nemo-curator[cuda12x] # Installiert CPU + GPU-Textkurationsmodulepip install --extra-index -url https://pypi.nvidia.com nemo-curator[image] # Installiert CPU + GPU-Text- und Bildkurationsmodulespip install --extra-index-url https://pypi.nvidia.com nemo-curator[all] # Installiert alles oben Genannte
Sie können NeMo Curator auch mit den RAPIDS Nightly Builds installieren. Dazu können Sie die Umgebungsvariable RAPIDS_NIGHTLY=1
setzen.
# Installation von pypiRAPIDS_NIGHTLY=1 pip install --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple "nemo-curator[cuda12x]"# Installation von sourceRAPIDS_NIGHTLY=1 pip install - -extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple ".[cuda12x]"
Wenn die Variable RAPIDS_NIGHTLY
auf 0 gesetzt ist (was die Standardeinstellung ist), wird die stabile Version von RAPIDS verwendet.
Das folgende Snippet zeigt, wie Sie eine kleine Datenkurationspipeline erstellen, die eine kleine Teilmenge des Common Crawl-Datensatzes herunterlädt und kuratiert.
# Laden Sie Ihren Datensatz herunterdataset = download_common_crawl("/datasets/common_crawl/", "2021-04", "2021-10", url_limit=10)# Erstellen Sie Ihre Pipelinecuration_pipeline = Sequential([ # Unicode reparieren Modify(UnicodeReformatter()), # Kurze Datensätze verwerfen ScoreFilter(WordCountFilter(min_words=80)), # Datensätze mit geringer Qualität verwerfen ScoreFilter(FastTextQualityFilter(model_path="model.bin")), # Datensätze aus den Bewertungsmetriken verwerfen, um Testsatzlecks zu verhindern. TaskDecontamination([Winogrande(), Squad(), TriviaQA()]) ])# Führen Sie die Pipeline auf Ihrem Datensatz aus. curated_dataset = curation_pipeline(dataset)
Um mit NeMo Curator zu beginnen, können Sie den hier verfügbaren Tutorials folgen. Zu diesen Tutorials gehören:
tinystories
, das sich auf die Datenkuratierung für die Ausbildung von LLMs von Grund auf konzentriert.
peft-curation
konzentriert sich auf die Datenkuratierung für LLM-Anwendungsfälle mit Parameter-effizienter Feinabstimmung (PEFT).
distributed_data_classification
, das sich auf die Verwendung der Qualitäts- und Domänenklassifikatoren konzentriert, um bei der Datenannotation zu helfen.
single_node_tutorial
, das eine End-to-End-Datenkurationspipeline zum Kuratieren von Wikipedia-Daten auf Thailändisch demonstriert.
image-curation
, das die skalierbaren Bildkurationsmodule untersucht.
Der Abschnitt „NeMo Curator“ des NeMo Framework-Benutzerhandbuchs bietet ausführliche Informationen zur Funktionsweise der Python-Module. Das Beispielverzeichnis im GitHub-Repository stellt Skripte bereit, die diese Module präsentieren.
NeMo Curator bietet auch CLI-Skripte zur Verwendung an. Die Skripte in nemo_curator/scripts
sind eng mit den bereitgestellten Python-Modulen verknüpft. Weitere Informationen zu den Python-Modulen und -Skripten finden Sie im NeMo Framework-Benutzerhandbuch.
Als alternative Methode zur Schnittstelle mit NeMo Curator können Sie den NeMo Framework Launcher verwenden. Mit dem Launcher können Sie die Parameter und den Cluster einfach konfigurieren. Es kann auch automatisch die Slurm-Batch-Skripte generieren, die die CLI-Skripte umschließen, die zum Ausführen Ihrer Pipeline erforderlich sind.
Darüber hinaus stehen andere Methoden zur Ausführung von NeMo Curator auf Slurm zur Verfügung. Informationen dazu, wie Sie NeMo Curator auf Slurm ohne den NeMo Framework Launcher ausführen, finden Sie beispielsweise in den Beispielskripten in examples/slurm
.
Die Module in NeMo Curator wurden in erster Linie dazu entwickelt, hochwertige Dokumente aus Common Crawl-Snapshots auf skalierbare Weise zu kuratieren. Um die Qualität der kuratierten Common Crawl-Dokumente zu bewerten, haben wir eine Reihe von Ablationsexperimenten durchgeführt. In diesen Experimenten haben wir ein GPT-Modell mit 357 Millionen Parametern mithilfe von Datensätzen trainiert, die in verschiedenen Phasen unserer Datenkurationspipeline generiert und in NeMo Curator implementiert wurden.
Die folgende Abbildung zeigt, dass die Verwendung verschiedener in NeMo Curator implementierter Datenkurationsmodule zu einer verbesserten Modell-Zero-Shot-Downstream-Aufgabenleistung führte.
Im Hinblick auf Skalierbarkeit und Rechenleistung konnten wir durch die Kombination von RAPIDS und Dask-Fuzzy-Deduplizierung den 1,1 Billionen Token umfassenden Red Pajama-Datensatz in 1,8 Stunden mit 64 NVIDIA A100 Tensor Core-GPUs deduplizieren.
Darüber hinaus zeigt die folgende Tabelle unter Verwendung der CPU-basierten Module die erforderliche Zeit und die daraus resultierende Reduzierung der Datengröße für jeden Verarbeitungsschritt. Common Crawl Snapshot vom November/Dezember 2020 mit 30 CPU-Knoten (mit Hardware ähnlich dem c5.24xlarge
Amazon AWS C5 Beispiel).
Datensatz | Download und Textextraktion | Textreinigung | Qualitätsfilterung | |||
---|---|---|---|---|---|---|
Zeit | Ausgabegröße | Zeit | Ausgabegröße | Zeit | Ausgabegröße | |
Gemeinsamer Crawl 2020-50 | 36 Std | 2,8 TB | 1 Std | 2,8 TB | 0,2 Std | 0,52 TB |
Wir freuen uns über Community-Beiträge! Den Vorgang finden Sie unter CONTRIBUTING.md.