El tamaño cada vez mayor de los modelos de lenguaje ha sido una de las mayores tendencias en el procesamiento del lenguaje natural (PNL) en los últimos años. Desde 2018, hemos visto un desarrollo e implementación sin precedentes de modelos de lenguaje cada vez más grandes, incluidos BERT y sus variantes, GPT-2, T-NLG y GPT-3 (175 XNUMX millones de parámetros).
Estos modelos han ampliado los límites de las posibles innovaciones arquitectónicas. Nos enfrentamos a varios desafíos cuando entrenamos modelos de aprendizaje profundo a gran escala, especialmente la nueva ola de transformadores preentrenados generativos. Estos desafíos incluyen limitaciones de hardware y compensaciones con computación y eficiencia. Para superar estos desafíos de paralelismo de modelos y datos, AWS ofrece una amplia gama de capacidades.
En esta publicación, presentamos dos enfoques principales: paralelización de datos y paralelización de modelos usando Amazon SageMaker, y discutir sus pros y sus contras.
El modelo
Para el modelo de lenguaje, usamos Transformers, introducido en el artículo. La atención es todo lo que necesitas. Los transformadores son modelos de aprendizaje profundo diseñados para evitar deliberadamente las trampas de las RNN al depender de un mecanismo de autoatención para generar dependencias globales entre la entrada y la salida. La arquitectura del modelo Transformer permite una paralelización significativamente mejor y puede lograr un alto rendimiento en un tiempo de entrenamiento relativamente corto. Basado en el éxito de Transformers, BERT, presentado en el documento BERT: pre-entrenamiento de transformadores bidireccionales profundos para la comprensión del lenguaje, agregó pre-entrenamiento bidireccional para la representación del lenguaje. Inspirado en la tarea Cloze, BERT está preentrenado con modelado de lenguaje enmascarado (MLM), en el que el modelo aprende a recuperar las palabras originales para tokens enmascarados aleatoriamente. El modelo BERT también está preentrenado en la tarea de predicción de la siguiente oración (NSP) para predecir si dos oraciones están en el orden de lectura correcto. Desde su aparición en 2018, BERT y sus variaciones se han utilizado ampliamente en modelos de lenguaje.
Comenzamos creando dos capas de incrustación para token y incrustación posicional. Las incrustaciones de entrada son la suma de las incrustaciones de tokens y las incrustaciones de posición.
Luego, definimos un bloque decodificador de transformador con dos subcapas: una capa de autoatención de cabezales múltiples y una red de avance simple totalmente conectada seguida de normalización y abandono de capa:
Finalmente, creamos nuestro modelo de lenguaje con la capa de incrustación anterior y los bloques transformadores:
Dependiendo de sus hiperparámetros, puede escalar este modelo de miles de parámetros a miles de millones de parámetros. El desafío principal con los modelos de mil millones de parámetros es que no puede hospedar el modelo en una instancia y necesita distribuir el modelo en varios nodos para entrenamiento e inferencia.
El conjunto de datos
En nuestros experimentos, usamos el Conjunto de datos de pila. The Pile es un conjunto de datos de texto en inglés de 800 GiB diseñado para entrenar modelos de lenguaje a gran escala. Se crea a partir de 22 conjuntos de datos diversos y de alta calidad, incluidos conjuntos de datos de PNL establecidos y nuevos.
El conjunto de datos se crea a partir de una variedad de fuentes de datos, incluidos libros; repositorios de GitHub; páginas web; registros de chat; y trabajos de medicina, física, matemáticas, informática y filosofía. Específicamente, utiliza las siguientes fuentes: Pile-CC, PubMed Central, ArXiv, GitHub, FreeLaw Project, Stack Exchange, la Oficina de Marcas y Patentes de EE. UU., PubMed, Ubuntu, IRC, HackerNews, YouTube, PhilPapers, Books3, Project Gutenberg ( PG-19), OpenSubtitles, Wikipedia en inglés, DM Mathematics, EuroParl, el corpus de correos electrónicos de Enron y NIH ExPorter. También incluye OpenWebText2 y BookCorpus2, que son extensiones de los conjuntos de datos originales de OpenWebText y BookCorpus, respectivamente. La diversidad en las fuentes de datos puede mejorar el conocimiento general entre dominios y, en consecuencia, mejorar las capacidades de generalización posteriores.
El desafío principal con este conjunto de datos es el gran tamaño; el conjunto de datos tiene 825 GiB de texto, lo que se traduce en 4.2 TiB de puntos de datos preprocesados y comprimidos. Al igual que los desafíos que enfrentamos con la capacitación y el alojamiento de los modelos, la capacitación de un modelo con este conjunto de datos en una sola instancia llevará mucho tiempo y no es práctico.
Nuestra solución es dividir el conjunto de datos en fragmentos de datos de aproximadamente 1 GiB, cargar y preprocesar las funciones en Conjunto de datos TensorFlow objetos y almacenarlos en Servicio de archivos elásticos de Amazon (Amazon EFS). Los conjuntos de datos de TensorFlow proporcionan una canalización de datos fácil de usar y de alto rendimiento que se integra bien con nuestros modelos. Amazon EFS es un servicio fácil de usar que nos permite crear un sistema de archivos compartidos que escala automáticamente a medida que se agregan y eliminan archivos. Además, Amazon EFS es capaz de alcanzar niveles de rendimiento más altos cuando sea necesario, lo cual es fundamental en nuestra canalización de capacitación de modelos y datos.
A continuación, analizamos las estrategias de capacitación distribuida para abordar estos desafíos.
Entrenamiento distribuido
En este proyecto, enfrentamos dos desafíos: escalar el tamaño del modelo y el volumen de datos. Aumentar el tamaño del modelo y la cantidad de parámetros entrenables puede resultar en una mayor precisión, pero hay un límite para el modelo que puede caber en una sola memoria de GPU o incluso en varias GPU en una sola instancia. Además, los tamaños de modelo más grandes toman más tiempo para entrenar.
Puede abordar estos desafíos de dos maneras diferentes: paralelismo de datos y paralelismo de modelos. Con el paralelismo de datos, realizamos Stochastic Gradient Descent (SGD) al distribuir los registros de un mini lote en diferentes dispositivos para acelerar el entrenamiento. Sin embargo, el entrenamiento de datos paralelos viene con la complejidad adicional de calcular el promedio de gradiente de mini lotes con gradientes de todos los dispositivos, un paso llamado AllReduce
, que se vuelve más difícil a medida que crece el grupo de entrenamiento. Mientras usamos el paralelismo de datos, debemos poder ajustar el modelo y un único punto de datos en un dispositivo (CPU o GPU), lo cual es un factor limitante en nuestros experimentos porque el tamaño de un modelo tan grande es mucho mayor que la memoria de una sola GPU. Talla.
Otra solución es utilizar el paralelismo del modelo, que divide el modelo en varios dispositivos. El paralelismo de modelos es el proceso de dividir un modelo entre varios dispositivos o nodos (como instancias equipadas con GPU) y crear una canalización eficiente para entrenar el modelo en estos dispositivos para maximizar la utilización de GPU.
Paralelización de datos
Paralelizar los datos es el enfoque más común para múltiples GPU o entrenamiento distribuido. Puede procesar por lotes sus datos, enviarlos a varios dispositivos (cada uno con un modelo replicado) y luego agregar los resultados. Experimentamos con dos paquetes para la paralelización de datos: Horovod y el Biblioteca paralela de datos distribuidos de SageMaker.
Horovod es un marco de capacitación de aprendizaje profundo distribuido para TensorFlow, Keras, PyTorch y Apache MXNet. Para usar Horovod, pasamos por el siguiente proceso:
- Inicializar ejecutando
hvd.init()
. - Asociar cada dispositivo a un solo proceso. El primer proceso o trabajador está asociado con el primer dispositivo, el segundo proceso está asociado con el segundo dispositivo y así sucesivamente.
- Ajuste la tasa de aprendizaje en función del número de dispositivos.
- Envuelva el optimizador en
hvd.DistributedOptimizer
. - Transmita los estados variables iniciales del primer trabajador con rango 0 a todos los demás procesos. Esto es necesario para garantizar una inicialización consistente de todos los trabajadores cuando el entrenamiento se inicia con pesos aleatorios o se restaura desde un punto de control.
- Asegúrese de que solo el dispositivo 0 pueda guardar puntos de control para evitar que otros trabajadores los dañen.
El siguiente es el script de entrenamiento:
La biblioteca paralela de datos de SageMaker nos permite escalar nuestra capacitación con una eficiencia casi lineal, acelerando nuestra capacitación con cambios mínimos en el código. La biblioteca realiza una costumbre AllReduce
operación y optimiza la comunicación de dispositivo a dispositivo al utilizar completamente la infraestructura de red de AWS y Nube informática elástica de Amazon (Amazon EC2) topología de instancia. Para utilizar la biblioteca paralela de datos de SageMaker, realizamos el siguiente proceso:
- Importar e inicializar
sdp.init()
. - Asociar cada dispositivo con un único
smdistributed.dataparallel
proceso conlocal_rank
.sdp.tensorflow.local_rank()
nos da la clasificación local de los dispositivos. El líder es de rango 0 y los trabajadores son de rango 1, 2, 3, etc. - Ajuste la tasa de aprendizaje en función del número de dispositivos.
- Envuelva
tf.GradientTape
DistributedGradientTape
actuarAllReduce
. - Transmita las variables del modelo inicial desde el nodo líder a todos los nodos trabajadores.
- Asegúrese de que solo el dispositivo 0 pueda guardar puntos de control.
Paralelización de modelos
Podemos ajustar los hiperparámetros para mantener el modelo lo suficientemente pequeño para entrenar con una sola GPU, o podemos usar el paralelismo del modelo para dividir el modelo entre varias GPU en varias instancias. Aumentar la cantidad de parámetros entrenables de un modelo puede resultar en una mejor precisión, pero hay un límite para el tamaño máximo del modelo que puede caber en una sola memoria de GPU. Usamos la biblioteca paralela de modelos distribuidos de SageMaker para entrenar nuestros modelos más grandes. Los pasos son los siguientes:
- Importe e inicialice la biblioteca con
smp.init()
. - El modelo Keras debe heredar de smp.DistributedModel en lugar de la clase Keras Model.
- Set
drop_remainder=True
existentestf.Dataset.batch()
método para garantizar que el tamaño del lote sea siempre divisible por el número de microlotes. - Todas las operaciones aleatorias en la canalización de datos deben usar la misma semilla:
smp.dp_rank()
, por ejemplo,shuffle(ds, seed=smp.dp_rank())
. Esto garantiza la coherencia de las muestras de datos en los dispositivos que contienen particiones de diferentes modelos. - La lógica de avance y retroceso debe estar en una función de paso con
smp.step
decoración. - Realice el posprocesamiento de las salidas en microlotes utilizando métodos StepOutput como
reduce_mean
.smp.step
La función debe tener un valor de retorno que depende de la salida desmp.DistributedModel
.
El script de entrenamiento es el siguiente:
Para obtener una guía detallada para habilitar el script de entrenamiento de TensorFlow para la biblioteca paralela del modelo distribuido de SageMaker, consulte Modificar un script de entrenamiento de TensorFlow. Para PyTorch, consulte Modificar un script de entrenamiento de PyTorch.
Depurador de SageMaker
En las secciones anteriores, discutimos cómo optimizar el entrenamiento usando técnicas de paralelización de datos y modelos. Con Depurador de Amazon SageMaker, ahora podemos capturar información de perfiles de rendimiento de nuestras ejecuciones de capacitación para determinar cuánto ha mejorado la capacitación. De manera predeterminada, Debugger captura las métricas del sistema para cada trabajo de capacitación de SageMaker, como GPU, uso de CPU, memoria, red y E/S en un intervalo de muestreo de 500 milisegundos. Podemos acceder a los datos de la siguiente manera:
El depurador proporciona utilidades para visualizar los datos de perfilado de diferentes maneras. En el siguiente ejemplo, vemos la utilización total de GPU y CPU, así como el tiempo de espera de E/S para el trabajo de entrenamiento de varias GPU con Horovod. Para generar estos gráficos, ejecutamos el siguiente código:
La utilización de la GPU fluctúa con frecuencia entre 0 y 100 %, y los tiempos de espera de E/S elevados con una utilización baja de la GPU son un indicador de un cuello de botella de E/S. Además, la utilización total de la CPU nunca supera el 70 %, lo que significa que podemos mejorar el preprocesamiento de datos aumentando la cantidad de procesos de trabajo.
Podemos mejorar el rendimiento cambiando de Horovod a la biblioteca paralela de datos distribuidos de SageMaker. En los siguientes gráficos, podemos ver que las GPU se utilizan de manera más eficiente y solo se reducen a un uso bajo durante períodos cortos de tiempo.
Infraestructura de entrenamiento
Para entrenar los modelos, usamos instancias de 10 ml.p3.16xlarge mediante un trabajo de entrenamiento de SageMaker. SageMaker reduce el tiempo y el costo de entrenar y ajustar los modelos de aprendizaje automático (ML) sin la necesidad de administrar la infraestructura. Con SageMaker, puede entrenar y ajustar fácilmente los modelos de aprendizaje automático con herramientas integradas para administrar y realizar un seguimiento de los experimentos de entrenamiento, elegir automáticamente los hiperparámetros óptimos, depurar trabajos de entrenamiento y monitorear la utilización de los recursos del sistema, como GPU, CPU y ancho de banda de red. Los datos se alojaron en Amazon EFS, lo que nos permitió crecer y reducirnos a medida que agregamos y eliminamos archivos sin necesidad de administración o aprovisionamiento. Nuestros objetivos principales eran mejorar la velocidad de entrenamiento y reducir los costos.
Escalabilidad del modelo
Aunque esta infraestructura se usa principalmente para la generación de lenguaje, con la arquitectura GPT y el conjunto de datos de Pile, puede usar estas técnicas para entrenar modelos de transformadores a gran escala, lo cual es útil en muchos dominios más allá de NLP. En el aprendizaje automático en sí mismo, muchas tareas de visión por computadora ahora se resuelven con arquitecturas de parámetros grandes (transformadores) en las que se ha demostrado que superan a las CNN (redes neuronales convolucionales) tradicionales en tareas como el aprendizaje de representación (ver Avanzando en el estado del arte en visión por computadora con Transformers autosupervisados y entrenamiento 10 veces más eficiente) y mapeo a gran escala de imágenes a texto (como CLIP). Los modelos de parámetros grandes también están abriendo nuevos caminos en las ciencias de la vida en campos como análisis de la estructura de proteínas y análisis de datos de imágenes médicas.
Las soluciones que detallamos en esta publicación para el entrenamiento distribuido y la gestión de modelos grandes también deberían aplicarse a los modelos en cualquiera de estos dominios.
Compensaciones
Ha habido una discusión en curso en la comunidad de investigación con respecto a los riesgos de entrenar modelos de lenguaje a gran escala, y si se ha pensado lo suficiente en los riesgos potenciales asociados con el desarrollo de ellos y las estrategias para mitigar estos riesgos, algunos de los cuales incluyen los financieros y costos ambientales. De acuerdo a un publicado en ACM, se estimó que entrenar un solo modelo base BERT (sin ajuste de hiperparámetros) en GPU requería tanta energía como un vuelo transamericano. Los impactos ambientales escalan con el tamaño del modelo, y ser capaz de ajustar dichos modelos de manera eficiente puede potencialmente reducir significativamente las emisiones. AWS lanzó recientemente un nuevo Herramienta Huella de Carbono del Cliente, disponible para todos los clientes de AWS sin costo alguno, como parte de los esfuerzos de Amazon para aumentar la sustentabilidad y reducir las emisiones de carbono. La ejecución de aplicaciones en la nube de AWS puede reducir potencialmente la huella de carbono (en comparación con los centros de datos empresariales encuestados en un informe del 2019).
Conclusión
Esta publicación demostró una solución que facilita el ajuste de los modelos de lenguaje con mil millones de parámetros en la nube de AWS mediante SageMaker.
Para obtener más información sobre el paralelismo de modelos con SageMaker, consulte Entrene más de 175 XNUMX millones de modelos de NLP con parámetros con adiciones paralelas de modelos y Hugging Face en Amazon SageMaker y Cómo Latent Space utilizó la biblioteca de paralelismo de modelos de Amazon SageMaker para ampliar las fronteras de los transformadores a gran escala.
Si desea obtener ayuda para acelerar el uso de ML en sus productos y procesos, comuníquese con el Laboratorio de soluciones de Amazon ML.
Acerca de los autores
Sia Gholami es un científico de datos sénior en Amazon ML Solutions Lab, donde crea soluciones de IA/ML para clientes de diversas industrias. Le apasiona el procesamiento del lenguaje natural (PNL) y el aprendizaje profundo. Fuera del trabajo, a Sia le gusta pasar tiempo en la naturaleza y jugar al tenis.
mehdi noories gerente y científico aplicado sénior en Amazon ML Solutions Lab, donde trabaja con clientes de diversas industrias y los ayuda a acelerar su viaje de migración a la nube y a resolver sus problemas de ML utilizando soluciones y soluciones de última generación. tecnologías
muhyun kim es científico de datos en Amazon Machine Learning Solutions Lab. Resuelve los diversos problemas comerciales de los clientes mediante la aplicación del aprendizaje automático y el aprendizaje profundo, y también los ayuda a capacitarse.
Danny Byrd es científico aplicado en Amazon ML Solutions Lab. En el laboratorio, ayudó a los clientes a desarrollar soluciones avanzadas de ML, en especialidades de ML, desde visión por computadora hasta aprendizaje reforzado. Le apasiona impulsar la tecnología y desbloquear el nuevo potencial de los productos de AWS en el camino.
Francisco Calderón Rodríguez es científico de datos en Amazon ML Solutions Lab. Como miembro del ML Solutions Lab, ayuda a resolver problemas comerciales críticos para los clientes de AWS mediante el aprendizaje profundo. En su tiempo libre, a Francisco le gusta tocar música y guitarra, jugar fútbol con sus hijas y disfrutar del tiempo con su familia.
yohei nakayama es un arquitecto de aprendizaje profundo en el laboratorio de soluciones de Amazon ML. Trabaja con clientes de diferentes verticales para acelerar el uso de la inteligencia artificial y los servicios en la nube de AWS para resolver sus desafíos comerciales. Está interesado en aplicar tecnologías ML / AI a la industria espacial.
Nathalie Rauschmayr es científica aplicada sénior en AWS, donde ayuda a los clientes a desarrollar aplicaciones de aprendizaje profundo.
- Coinsmart. El mejor intercambio de Bitcoin y criptografía de Europa.
- Platoblockchain. Inteligencia del Metaverso Web3. Conocimiento amplificado. ACCESO LIBRE.
- CriptoHawk. Radar de altcoins. Prueba gratis.
- Fuente: https://aws.amazon.com/blogs/machine-learning/create-train-and-deploy-a-billion-parameter-language-model-on-terabytes-of-data-with-tensorflow-and- amazon-sagemaker/
- "
- 10
- 100
- 2019
- a
- Nuestra Empresa
- acelerar
- acelerador
- de la máquina
- Conforme
- Lograr
- a través de
- adicional
- adición
- avanzado
- Todos
- permite
- hacerlo
- Amazon
- análisis
- abejas
- aplicaciones
- aplicada
- Aplicá
- La aplicación de
- enfoque
- enfoques
- aproximadamente
- arquitectónico
- arquitectura
- Arte
- artificial
- inteligencia artificial
- asociado
- automáticamente
- Hoy Disponibles
- promedio
- AWS
- porque
- "Ser"
- entre
- Más allá de
- más grande
- Mayor
- mil millones
- miles de millones
- Bloquear
- Libros
- build
- construye
- incorporado
- capacidades
- capaz
- capturar
- capturas
- carbono
- las emisiones de carbono
- central
- Reto
- retos
- Elige
- clase
- Soluciones
- servicios en la nube
- código
- Algunos
- Comunicación
- vibrante e inclusiva
- en comparación con
- cálculo
- Calcular
- computadora
- Ciencias de la Computación
- informática
- conectado
- Desventajas
- consistente
- contacte
- Precio
- Para crear
- creado
- crea
- Creamos
- crítico
- personalizado
- Clientes
- datos
- los centros de datos
- científico de datos
- profundo
- demostrado
- depende
- desplegar
- despliegue
- diseñado
- detalle
- detallado
- Determinar
- desarrollar
- el desarrollo
- Desarrollo
- dispositivo
- Dispositivos
- una experiencia diferente
- discutir
- distribuidos
- distribuido
- Diversidad
- DM
- dominios
- DE INSCRIPCIÓN
- pasan fácilmente
- fácil de usar
- eficiencia
- eficiente
- eficiente.
- esfuerzos
- emisiones
- habilitar
- permite
- energía
- Inglés
- Empresa
- ambientales
- especialmente
- se establece
- estimado
- ejemplo
- excede
- Intercambio
- extensiones
- Cara
- enfrentado
- familia
- Caracteristicas
- Terrenos
- financiero
- Nombre
- cómodo
- vuelo
- siguiendo
- siguiente
- Footprint
- adelante
- Marco conceptual
- Francisco
- en
- función
- Además
- General
- generar
- generación de AHSS
- generativo
- conseguir
- GitHub
- Buscar
- GPU
- GPU
- Crecer
- guía
- Materiales
- ayuda
- ayuda
- Alta
- alta calidad
- más alto
- mantener
- organizado
- hosting
- Cómo
- Como Hacer
- Sin embargo
- HTTPS
- imagen
- imágenes
- mejorar
- mejorado
- incluir
- incluye
- Incluye
- aumente
- creciente
- índice
- industrias
- energético
- información
- EN LA MINA
- innovaciones
- Las opciones de entrada
- inspirado
- ejemplo
- Intelligence
- interesado
- IT
- sí mismo
- Trabajos
- Empleo
- Guardar
- especialistas
- el lab
- Label
- Etiquetas
- idioma
- large
- mayores
- lanzado
- .
- líder
- aprendizaje
- Biblioteca
- Ciencias de la vida
- carga
- local
- Mira
- máquina
- máquina de aprendizaje
- gestionan
- Management
- gerente
- administrar
- cartografía
- máscara
- las matemáticas
- matemáticas
- significa
- servicios
- miembro
- Salud Cerebral
- métodos
- Métrica
- ML
- modelo
- modelos
- Monitorear
- más,
- MEJOR DE TU
- múltiples
- Música
- Natural
- Naturaleza
- necesario
- del sistema,
- NIH
- nodos
- número
- ,
- Ofertas
- Oficina
- en marcha
- Inteligente
- Operaciones
- Optimización
- solicite
- Otro
- Papel
- parte
- apasionado
- patentar
- (PDF)
- actuación
- períodos
- filosofía
- Física
- Jugar
- jugando
- posición
- posible
- posible
- predecir
- predicción
- Predicciones
- anterior
- primario
- problemas
- en costes
- tratamiento
- Productos
- perfiles
- proyecto
- PROS
- proporcionar
- proporciona un
- empujó
- distancia
- Reading
- reciente
- recientemente
- archivos
- Recuperar
- reducir
- con respecto a
- representación
- representado
- exigir
- la investigación
- Recursos
- Resultados
- volvemos
- riesgos
- Ejecutar
- correr
- mismo
- Escala
- la ampliación
- Ciencia:
- CIENCIAS
- Científico
- dispersores
- de coches
- Servicios
- Varios
- SGD
- Forma
- compartido
- En Corto
- mostrado
- similares
- sencillos
- desde
- soltero
- Tamaño
- chica
- So
- Fútbol
- a medida
- Soluciones
- RESOLVER
- Resuelve
- algo
- Espacio
- específicamente
- velocidad
- Gastos
- dividido
- escisiones
- montón
- fundó
- Estado
- el estado de la técnica
- Zonas
- tienda
- estrategias
- comercial
- Sostenibilidad
- te
- tareas
- técnicas
- Tecnologías
- Tecnología
- El
- miles
- A través de esta formación, el personal docente y administrativo de escuelas y universidades estará preparado para manejar los recursos disponibles que derivan de la diversidad cultural de sus estudiantes. Además, un mejor y mayor entendimiento sobre estas diferencias y similitudes culturales permitirá alcanzar los objetivos de inclusión previstos.
- rendimiento
- equipo
- veces
- ficha
- Tokens
- seguir
- marca
- tradicional
- Formación
- Tendencias
- Ubuntu
- sin precedentes
- us
- utilizan el
- utilidades
- Utilizando
- propuesta de
- variedad
- diversos
- verticales
- visión
- volumen
- esperar
- Trenzado
- formas
- sean
- mientras
- Wikipedia
- sin
- palabras
- Actividades:
- obrero
- los trabajadores.
- funciona
- X
- años
- tú
- Youtube