Los últimos años han visto un rápido desarrollo en el campo del procesamiento del lenguaje natural (PNL). Si bien el hardware ha mejorado, como con la última generación de aceleradores de NVIDIA y Amazon, los practicantes de aprendizaje automático (ML) avanzado todavía tienen problemas para escalar sus modelos de lenguaje grande en múltiples GPU.
En esta publicación de blog, resumimos brevemente el auge de los modelos de PNL a pequeña y gran escala, principalmente a través de la abstracción proporcionada por Hugging Face y con el backend modular de Amazon SageMaker. En particular, destacamos el lanzamiento de cuatro características adicionales dentro de la biblioteca paralela de modelos de SageMaker que desbloquean 175 XNUMX millones de parámetros de entrenamiento previo y ajuste del modelo NLP para los clientes.
Usamos esta biblioteca en la plataforma de capacitación SageMaker y logramos un rendimiento de 32 muestras por segundo en instancias de 120 ml.p4d.24xlarge y 175 mil millones de parámetros. Anticipamos que si aumentamos esto hasta 240 instancias, el modelo completo tardaría 25 días en entrenarse.
Para obtener más información sobre el paralelismo de modelos, consulte el artículo Paralelismo de modelos de Amazon SageMaker: un marco general y flexible para el entrenamiento de modelos grandes.
También puede ver el portátil GPT2 que usamos para generar estos números de rendimiento en nuestro Repositorio GitHub.
Para obtener más información sobre cómo usar las nuevas funciones dentro del modelo paralelo de SageMaker, consulte Funciones ampliadas de la biblioteca paralela de modelos de SageMaker para PyTorchy Uso con el SDK de Python de SageMaker.
PNL en Amazon SageMaker: Hugging Face y modelo paralelismo
Si es nuevo en Hugging Face y NLP, lo más destacado que necesita saber es que las aplicaciones que utilizan procesamiento de lenguaje natural (NLP) están comenzando a lograr un rendimiento de nivel humano. Esto es impulsado en gran parte por un mecanismo de aprendizaje, llamado Whatsapp, que dio lugar a un modelo de aprendizaje profundo, llamado transformador, que es mucho más escalable que los métodos secuenciales de aprendizaje profundo anteriores. El ahora famoso modelo BERT fue desarrollado para capitalizar el transformador y desarrolló varias tácticas útiles de PNL en el camino. Transformers y el conjunto de modelos, tanto dentro como fuera de la PNL, todos inspirados en BERT, son el motor principal detrás de los resultados de búsqueda de Google, En su Resultados del traductor de Googley una gran cantidad de nuevas empresas.
SageMaker y Hugging Face se asociaron para que esto sea más fácil que nunca para los clientes. Hemos lanzado contenedores de aprendizaje profundo (DLC) de Hugging Face para que entrene y aloje modelos previamente entrenados directamente desde Hugging Face. repositorio de más de 26,000 modelos. Hemos lanzado el compilador de formación de SageMaker para que aceleres el tiempo de ejecución de tus bucles de entrenamiento Hugging Face hasta en un 50 %. También hemos integrado el SDK de Transformers insignia de Hugging Face nuestras bibliotecas de formación distribuidas para hacer que escalar sus modelos NLP sea más fácil que nunca.
Para obtener más información acerca de los modelos Hugging Face Transformer en Amazon SageMaker, consulte Soporte para modelos de transformadores de cara abrazada.
Nuevas funciones para el entrenamiento de modelos de PNL a gran escala con la biblioteca paralela de modelos de SageMaker
En AWS re:Invent 2020, SageMaker lanzó bibliotecas distribuidas que brindan el mejor rendimiento en la nube para entrenar modelos de visión artificial como Máscara-RCNN y modelos de PNL como T5-3B. Esto es posible a través de primitivas de comunicación mejoradas que son entre un 20 % y un 40 % más rápidas que NCCL en AWS, y técnicas de distribución de modelos que permiten escalar modelos de lenguaje extremadamente grandes entre decenas, cientos y miles de GPU.
La biblioteca paralela de modelos (SMP) de SageMaker siempre le ha brindado la capacidad de tomar su modelo NLP predefinido en PyTorch, ya sea a través de Hugging Face o en otro lugar, y dividir ese modelo en múltiples GPU en su clúster. Dicho de otra manera, SMP divide su modelo en partes más pequeñas para que no experimente errores de falta de memoria (OOM). Nos complace agregar técnicas adicionales de ahorro de memoria que son fundamentales para los modelos a gran escala, a saber:
- paralelismo tensorial
- Fragmentación del estado del optimizador
- Control de activación
- Descarga de activación
Puede combinar estas cuatro funciones para utilizar la memoria de manera más eficiente y entrenar la próxima generación de modelos NLP de escala extrema.
Entrenamiento distribuido y paralelismo tensorial
Para comprender el paralelismo tensorial, es útil saber que hay muchos tipos de entrenamiento distribuido o paralelismo.. Probablemente ya esté familiarizado con el tipo más común, paralelismo de datos. El núcleo del paralelismo de datos funciona así: agrega un nodo adicional a su clúster, como pasar de una a dos instancias ml.EC2 en su estimador de SageMaker. Luego, utiliza un marco paralelo de datos como Horovod, PyTorch Distributed Data Parallel o SageMaker Distributed. Esto crea réplicas de su modelo, una por acelerador, y maneja la fragmentación de los datos en cada nodo, además de reunir todos los resultados durante el paso de propagación hacia atrás de su red neuronal. Piense en el descenso de gradiente distribuido. El paralelismo de datos también es popular dentro de los servidores; está fragmentando datos en todas las GPU y, en ocasiones, en las CPU de todos sus nodos. El siguiente diagrama ilustra el paralelismo de datos.
Paralelismo modelo es ligeramente diferente. En lugar de hacer copias del mismo modelo, dividimos su modelo en partes. Luego gestionamos su ejecución, por lo que sus datos aún fluyen a través de su red neuronal exactamente de la misma manera matemáticamente, pero diferentes partes de su modelo están ubicadas en diferentes GPU. Si está utilizando un ml.p3.8xlarge, tiene cuatro NVIDIA V100, por lo que probablemente desee fragmentar su modelo en 4 piezas, una pieza por GPU. Si salta a dos ml.p4d.24xlarge, eso es un total de 16 A100 en su grupo, por lo que podría dividir su modelo en 16 piezas. Esto también se llama a veces paralelismo de tuberías. Esto se debe a que el conjunto de capas en la red se divide en GPU y se ejecuta de manera canalizada para maximizar la utilización de GPU. El siguiente diagrama ilustra el paralelismo del modelo.
Para hacer que el paralelismo del modelo suceda a escala, necesitamos un tercer tipo de distribución: paralelismo tensorial. El paralelismo de tensores aplica los mismos conceptos un paso más allá: separamos las capas más grandes de su red neuronal y colocamos partes de las capas en diferentes dispositivos. Esto es relevante cuando se trabaja con 175 XNUMX millones de parámetros o más y se intenta incluir incluso algunos registros en la RAM, junto con partes de su modelo, para entrenar ese transformador. El siguiente diagrama ilustra el paralelismo de tensores.
Para permitir paralelismo tensorial, configúrelo dentro de las opciones de smp usted pasa a su estimador.
En el código anterior, pipeline_parallel_degree
describe en cuántos segmentos se debe fragmentar su modelo, según el paralelismo de canalización que discutimos anteriormente. Otra palabra para esto es puntajes.
Para habilitar el paralelismo tensorial, establezca tensor_parallel_degree
a su nivel deseado. Asegúrese de elegir un número igual o menor que el número de GPU por instancia, de modo que no supere 8 para las máquinas ml.p4d.24xlarge. Para cambios de script adicionales, consulte Ejecutar un trabajo de entrenamiento paralelo de modelo distribuido de SageMaker con paralelismo de tensor.
El parámetro ddp se refiere a datos distribuidos en paralelo. Por lo general, habilita esto si usa paralelismo de datos o paralelismo de tensor, porque la biblioteca de paralelismo de modelos se basa en DDP para estas características.
Fragmentación del estado del optimizador, descarga de activación y puntos de control
Si tiene un modelo extremadamente grande, también necesita un estado optimizador extremadamente grande. Preparar su optimizador para SMP es sencillo: simplemente recójalo del disco en su secuencia de comandos y cárguelo en el smp.DistributedOptimizer()
objeto.
Asegúrese de habilitar esto en el estimador configurando shard_optimizer_state
a Verdadero en el smp_options
utiliza para configurar SMP:
De forma similar al paralelismo de tensor y canalización, SMP perfila su modelo y su tamaño mundial (la cantidad total de GPU en todos sus nodos de entrenamiento) para encontrar las mejores estrategias de ubicación.
En el aprendizaje profundo, las salidas de la capa intermedia también se denominan activaciones, y deben almacenarse durante el paso hacia adelante. Esto se debe a que deben usarse para el cálculo de gradientes en el paso hacia atrás. En un modelo grande, almacenar todas estas activaciones simultáneamente en la memoria puede crear importantes cuellos de botella en la memoria. Para abordar este cuello de botella, puede utilizar punto de control de activación, la tercera característica nueva en la biblioteca de paralelismo de modelos de SageMaker. Control de activación, o puntos de control de gradiente, es una técnica para reducir el uso de la memoria al borrar las activaciones de ciertas capas y volver a calcularlas durante un paso hacia atrás. Esto cambia efectivamente el tiempo de cálculo adicional por un uso de memoria reducido.
Y por último, descarga de activación utiliza directamente los puntos de control de activación. Es una estrategia mantener solo unas pocas activaciones de tensor en la GPU RAM durante el entrenamiento del modelo. Específicamente, movemos las activaciones marcadas a la memoria de la CPU durante el paso hacia adelante y las cargamos nuevamente en la GPU para el paso hacia atrás de un microlote específico.
Micro-lotes y estrategias de colocación
Otros temas que a veces causan confusión en los clientes son los microlotes y las estrategias de colocación. Ambos son hiperparámetros que puede proporcionar a la biblioteca paralela de modelos de SageMaker. Específicamente, los microlotes son relevantes cuando se implementan modelos que se basan en el paralelismo de canalización, como aquellos con un tamaño de al menos 30 XNUMX millones de parámetros o más.
Los microlotes son subconjuntos de minilotes. Cuando su modelo está en su ciclo de entrenamiento, define una cierta cantidad de registros para recoger y pasar hacia adelante y hacia atrás a través de las capas; esto se denomina minilote, o a veces simplemente un lote. Un pase completo a través de su conjunto de datos se llama época. Para ejecutar pases hacia adelante y hacia atrás con paralelismo de canalización, la biblioteca paralela de modelos de SageMaker fragmenta los lotes en subconjuntos más pequeños llamados microlotes, que se ejecutan uno a la vez para maximizar la utilización de la GPU. El conjunto resultante, mucho más pequeño, de ejemplos por GPU, se denomina microlote. En nuestro ejemplo GPT-2, agregamos un valor predeterminado de 1 microlote directamente al script de entrenamiento.
A medida que amplía su configuración de entrenamiento, se recomienda encarecidamente cambiar el tamaño de lote y el tamaño de microlote en consecuencia. Esta es la única forma de garantizar un buen rendimiento: debe considerar el tamaño del lote y el tamaño de los microlotes como una función del tamaño mundial general cuando se basa en el paralelismo de la canalización.
Las estrategias de ubicación son cómo decirle a SageMaker físicamente dónde colocar las particiones de su modelo. Si usa tanto el modelo paralelo como los datos paralelos, establezca placement_strategy
a “cluster”
coloca réplicas de modelos en identificadores de dispositivos (GPU) que están físicamente cerca uno del otro. Sin embargo, si realmente quiere ser más prescriptivo sobre su estrategia de paralelismo, puede dividirla en una sola cadena con diferentes combinaciones de tres letras: D para el paralelismo de datos, P
indica el paralelismo de la tubería, y T
para el paralelismo tensorial. Por lo general, recomendamos mantener la ubicación predeterminada de "cluster"
, porque esto es más apropiado para el entrenamiento de modelos a gran escala. La ubicación del "clúster" corresponde a "DPT
".
Para obtener más información acerca de las estrategias de ubicación, consulte Estrategia de colocación con paralelismo tensorial.
Caso de uso de ejemplo
Imaginemos que tiene un ml.p3.16xlarge en su trabajo de entrenamiento. eso te da 8 NVIDIA V100 por nodo. Recuerde, cada vez que agrega una instancia adicional, experimenta una sobrecarga de ancho de banda adicional, por lo que siempre es mejor tener más GP'U en un solo nodo. En este caso, estará mejor con un ml.p3.16xlarge que, por ejemplo, dos ml.p3.8xlarges. Aunque la cantidad de GPU es la misma, la sobrecarga de ancho de banda adicional del nodo adicional ralentiza el rendimiento.
El siguiente diagrama ilustra el paralelismo del modelo de cuatro vías, combinado con el paralelismo de datos de dos vías. Esto significa que en realidad tiene dos réplicas de su modelo (piense en datos paralelos), con cada una de ellas dividida en cuatro GPU (modelo paralelo).
Si alguna de esas particiones modelo es demasiado grande para caber en una sola GPU, puede agregar un tipo adicional de distribución, el paralelismo de tensores, para escupirla y utilizar ambos dispositivos.
Conclusión
En esta publicación de blog, analizamos las bibliotecas de capacitación distribuidas de SageMaker, centrándonos especialmente en el paralelismo de modelos. Compartimos puntos de referencia de rendimiento de nuestra última prueba, logrando 32 muestras por segundo en instancias de 120 ml.p4d.24xlarge y parámetros de 175B en Amazon SageMaker. Anticipamos que si aumentamos esto a 240 instancias p4, podríamos entrenar un modelo de parámetros de 175B en 25 días.
También discutimos las características más nuevas que permiten el entrenamiento a gran escala, a saber, el paralelismo de tensores, la fragmentación del estado del optimizador, los puntos de control de activación y la descarga de activación. Compartimos algunos consejos y trucos para habilitar esto a través de la capacitación en Amazon SageMaker.
Pruébelo usted mismo usando el mismo cuaderno que generó nuestros números, que está disponible en GitHub aquí. También puede solicitar más GPU para su cuenta de AWS a través de solicitar una aprobación de límite de servicio aquí mismo.
Acerca de los autores
emilio webber se unió a AWS justo después del lanzamiento de SageMaker y ha estado tratando de contárselo al mundo desde entonces. Además de crear nuevas experiencias de aprendizaje automático para los clientes, a Emily le gusta meditar y estudiar el budismo tibetano.
Aditya Bindal es gerente sénior de productos de AWS Deep Learning. Trabaja en productos que facilitan a los clientes la formación de modelos de aprendizaje profundo en AWS. En su tiempo libre, le gusta pasar tiempo con su hija, jugar al tenis, leer ficción histórica y viajar.
luis quintela es el administrador de desarrollo de software para la biblioteca paralela de modelos de AWS SageMaker. En su tiempo libre, se le puede encontrar montando su Harley en el Área de la Bahía de SF.
- 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/train-175-billion-parameter-nlp-models-with-model-parallel-additions-and-hugging-face-on-amazon-sagemaker/
- "
- 000
- 100
- 2020
- 39
- Sobre nosotros
- acelerador
- Mi Cuenta
- alcanzado
- a través de
- Adicionales
- dirección
- avanzado
- Todos
- ya haya utilizado
- Amazon
- Otra
- aplicaciones
- Reservada
- Hoy Disponibles
- AWS
- Bay
- MEJOR
- Mayor
- mil millones
- Blog
- Construir la
- Causar
- el cambio
- Soluciones
- código
- combinaciones
- Algunos
- Comunicación
- Configuración
- confusión
- Contenedores
- Core
- podría
- Clientes
- datos
- desarrollado
- Developer
- Desarrollo
- dispositivo
- Dispositivos
- una experiencia diferente
- distribuidos
- DE INSCRIPCIÓN
- impulsados
- permitiendo
- especialmente
- ejemplo
- experience
- Experiencias
- extremo
- Cara
- más rápida
- Feature
- Caracteristicas
- Ficción
- cómodo
- siguiendo
- adelante
- encontrado
- Marco conceptual
- ser completados
- función
- General
- generar
- GitHub
- va
- candidato
- Búsqueda de Google
- GPU
- Materiales
- serviciales
- Destacar
- histórico
- Cómo
- Como Hacer
- HTTPS
- Cientos
- aumentado
- información
- inspirado
- COMPLETAMENTE
- cuestiones
- IT
- Trabajos
- se unió a
- saltar
- acuerdo
- idioma
- large
- más reciente
- lanzamiento
- APRENDE:
- aprendizaje
- Nivel
- Biblioteca
- carga
- máquina
- máquina de aprendizaje
- Máquinas
- Realizar
- gerente
- Salud Cerebral
- ML
- modelo
- modelos
- modulares
- MEJOR DE TU
- movimiento
- a saber
- Natural
- del sistema,
- Nuevas características
- nodos
- cuaderno
- números
- Otro
- Papel
- asociado
- (PDF)
- actuación
- pieza
- plataforma
- Popular
- posible
- primario
- Producto
- Productos
- Perfiles
- proporcionar
- RAM
- RE
- Reading
- recomiendan
- archivos
- reducir
- Resultados
- Ejecutar
- correr
- Said
- escalable
- Escala
- la ampliación
- Sdk
- Buscar
- de coches
- set
- pólipo
- sharding
- compartido
- importante
- Tamaño
- So
- Software
- específicamente
- velocidad
- Gastos
- dividido
- Estado
- estrategias
- Estrategia
- suministro
- táctica
- técnicas
- test
- el mundo
- 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.
- equipo
- recomendaciones
- consejos y trucos
- juntos
- Temas
- oficios
- Formación
- entender
- utilizan el
- utilizar
- visión
- dentro de
- trabajando
- funciona
- mundo
- años