¿El marco de código abierto acelerado por GPU para una curación de datos de modelos de IA generativa eficiente ?
NeMo Curator es una biblioteca de Python diseñada específicamente para la preparación y curación de conjuntos de datos rápidas y escalables para casos de uso de IA generativa, como el entrenamiento previo del modelo de lenguaje básico, el entrenamiento del modelo de texto a imagen, el entrenamiento previo adaptable al dominio (DAPT), el ajuste fino supervisado (SFT). ) y ajuste fino eficiente de parámetros (PEFT). Acelera enormemente la curación de datos al aprovechar las GPU con Dask y RAPIDS, lo que genera importantes ahorros de tiempo. La biblioteca proporciona una interfaz modular y personalizable, que simplifica la expansión de la canalización y acelera la convergencia de modelos mediante la preparación de tokens de alta calidad.
NeMo Curator proporciona una colección de módulos de curación de datos escalables para la curación de textos e imágenes.
Todos nuestros canales de texto tienen un excelente soporte multilingüe.
Descarga y extracción
Implementaciones predeterminadas para fuentes Common Crawl, Wikipedia y ArXiv
Personalice y extienda fácilmente a otras fuentes
Identificación del idioma
Reformateo Unicode
Filtrado heurístico
Filtrado de clasificador
texto rápido
Modelos acelerados por GPU: clasificación de dominio, calidad y seguridad
Deduplicación acelerada por GPU
Deduplicación exacta
Deduplicación difusa mediante hash sensible a la localidad de MinHash
Deduplicación semántica
Descontaminación de tareas posteriores
Redacción de información de identificación personal (PII)
Creación de incrustaciones
Filtrado de clasificador
Clasificación estética y NSFW
Deduplicación de GPU
Semántico
Estos módulos ofrecen flexibilidad y permiten reordenar, con sólo unas pocas excepciones. Todos los módulos escalan automáticamente a múltiples nodos para aumentar el rendimiento.
Documentación
Ejemplos
Tutoriales
Publicaciones de blog
Curación de conjuntos de datos de billones de tokens: presentación de NVIDIA NeMo Data Curator
Escale y seleccione conjuntos de datos de alta calidad para la formación LLM con NVIDIA NeMo Curator
Curación de conjuntos de datos personalizados para la formación LLM con NVIDIA NeMo Curator
Curación de conjuntos de datos personalizados para un ajuste eficiente de parámetros de LLM con NVIDIA NeMo Curator
Optimización del procesamiento de datos para el preentrenamiento adaptativo de dominio con NVIDIA NeMo Curator
Esta sección explica cómo instalar NeMo Curator y utilizar la biblioteca Python, los módulos Python y los scripts CLI. También incluye una lista de tutoriales para ayudarle a comenzar de inmediato. Finalmente, esta sección explica cómo utilizar NeMo Framework Launcher como método alternativo para interactuar con NeMo Curator.
Antes de instalar NeMo Curator, asegúrese de que se cumplan los siguientes requisitos:
Pitón 3.10
Ubuntu 22.04/20.04
GPU NVIDIA (opcional)
Volta™ o superior (capacidad de cálculo 7.0+)
CUDA 12 (o superior)
Puedes conseguir NeMo-Curator de 3 formas.
PyPi
Fuente
Contenedor de marco NeMo
pip instalar cython instalación de pip --extra-index-url https://pypi.nvidia.com nemo-curator[todos]
clon de git https://github.com/NVIDIA/NeMo-Curator.git instalación de pip en cython instalación de pip --extra-index-url https://pypi.nvidia.com "./NeMo-Curator[all]"
La última versión de NeMo Curator viene preinstalada en NeMo Framework Container. Si desea la última confirmación dentro del contenedor, puede reinstalar NeMo Curator usando:
pip desinstalar nemo-curator rm -r /opt/NeMo-Curator clon de git https://github.com/NVIDIA/NeMo-Curator.git /opt/NeMo-Curator instalación de pip --extra-index-url https://pypi.nvidia.com "/opt/NeMo-Curator[all]"
NeMo Curator tiene un conjunto de extras que puede utilizar para instalar solo los módulos necesarios para su carga de trabajo. Estos extras están disponibles para todos los métodos de instalación proporcionados.
pip install nemo-curator # Instala módulos de curación de texto solo para CPUpip install --extra-index-url https://pypi.nvidia.com nemo-curator[cuda12x] # Instala módulos de curación de texto CPU + GPUpip install --extra-index -url https://pypi.nvidia.com nemo-curator[imagen] # Instala módulos de curación de imágenes y texto de CPU + GPUpip install --extra-index-url https://pypi.nvidia.com nemo-curator[all] # Instala todo lo anterior
También puede instalar NeMo Curator utilizando RAPIDS Nightly Builds. Para hacerlo, puede configurar la variable de entorno RAPIDS_NIGHTLY=1
.
# instalando desde pypiRAPIDS_NIGHTLY=1 pip install --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple "nemo-curator[cuda12x]"# instalando desde sourceRAPIDS_NIGHTLY=1 pip install - -extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple ".[cuda12x]"
Cuando la variable RAPIDS_NIGHTLY
se establece en 0 (que es el valor predeterminado), utilizará la versión estable de RAPIDS.
El siguiente fragmento demuestra cómo crear una pequeña canalización de curación de datos que descarga y selecciona un pequeño subconjunto del conjunto de datos de rastreo común.
# Descargue su conjunto de datosdataset = download_common_crawl("/datasets/common_crawl/", "2021-04", "2021-10", url_limit=10)# Construya su pipelinecuration_pipeline = Sequential([ # Fix Unicode Modificar(UnicodeReformatter()), # Descartar registros cortos ScoreFilter(WordCountFilter(min_words=80)), # Descartar registros de baja calidad ScoreFilter(FastTextQualityFilter(model_path="model.bin")), # Descartar registros de las métricas de evaluación para evitar fugas del conjunto de pruebas. TareaDescontaminación([Winogrande(), Squad(), TriviaQA()]) ])# Ejecute la canalización en su conjunto de datoscurated_dataset = curation_pipeline(dataset)
Para comenzar con NeMo Curator, puede seguir los tutoriales disponibles aquí. Estos tutoriales incluyen:
tinystories
que se centra en la curación de datos para la formación de LLM desde cero.
peft-curation
que se centra en la curación de datos para casos de uso de ajuste fino eficiente de parámetros (PEFT) de LLM.
distributed_data_classification
que se centra en el uso de clasificadores de calidad y dominio para ayudar con la anotación de datos.
single_node_tutorial
que demuestra un proceso de curación de datos de extremo a extremo para curar datos de Wikipedia en tailandés.
image-curation
que explora los módulos de curación de imágenes escalables.
La sección NeMo Curator de la Guía del usuario de NeMo Framework proporciona información detallada sobre cómo funcionan los módulos de Python. El directorio de ejemplos en el repositorio de GitHub proporciona scripts que muestran estos módulos.
NeMo Curator también ofrece scripts CLI para su uso. Los scripts en nemo_curator/scripts
se corresponden estrechamente con los módulos Python suministrados. Consulte la Guía del usuario de NeMo Framework para obtener más información sobre los módulos y scripts de Python.
Como método alternativo para interactuar con NeMo Curator, puede utilizar NeMo Framework Launcher. El iniciador le permite configurar fácilmente los parámetros y el clúster. También puede generar automáticamente los scripts por lotes de Slurm que se ajustan a los scripts CLI necesarios para ejecutar su canalización.
Además, hay otros métodos disponibles para ejecutar NeMo Curator en Slurm. Por ejemplo, consulte los scripts de ejemplo en examples/slurm
para obtener información sobre cómo ejecutar NeMo Curator en Slurm sin NeMo Framework Launcher.
Los módulos de NeMo Curator se diseñaron principalmente para seleccionar documentos de alta calidad a partir de instantáneas de Common Crawl de forma escalable. Para evaluar la calidad de los documentos seleccionados de Common Crawl, realizamos una serie de experimentos de ablación. En estos experimentos, entrenamos un modelo estilo GPT de 357M de parámetros utilizando conjuntos de datos generados en varias etapas de nuestro proceso de curación de datos, que se implementó en NeMo Curator.
La siguiente figura muestra que el uso de diferentes módulos de curación de datos implementados en NeMo Curator condujo a un mejor rendimiento de las tareas posteriores del modelo.
En términos de escalabilidad y rendimiento informático, el uso de la combinación de RAPIDS y la deduplicación difusa de Dask nos permitió deduplicar el conjunto de datos de Red Pajama de 1,1 billones de tokens en 1,8 horas con 64 GPU NVIDIA A100 Tensor Core.
Además, al utilizar los módulos basados en CPU, la siguiente tabla muestra el tiempo requerido y la reducción resultante del tamaño de los datos para cada paso de procesamiento. Instantánea de rastreo común de noviembre/diciembre de 2020 usando 30 nodos de CPU (con hardware similar al c5.24xlarge
Amazon AWS C5 instancia).
Conjunto de datos | Descarga y extracción de texto. | Limpieza de texto | Filtrado de calidad | |||
---|---|---|---|---|---|---|
Tiempo | Tamaño de salida | Tiempo | Tamaño de salida | Tiempo | Tamaño de salida | |
Rastreo común 2020-50 | 36 horas | 2,8 TB | 1 hora | 2,8 TB | 0,2 horas | 0,52 TB |
¡Agradecemos las contribuciones de la comunidad! Consulte CONTRIBUTING.md para conocer el proceso.