Los desarrollos recientes en el aprendizaje profundo han llevado a modelos cada vez más grandes, como GPT-3, BLOOM y OPT, algunos de los cuales ya superan los 100 mil millones de parámetros. Aunque los modelos más grandes tienden a ser más potentes, entrenar dichos modelos requiere recursos computacionales significativos. Incluso con el uso de bibliotecas de capacitación distribuidas avanzadas como FSDP y DeepSpeed, es común que los trabajos de capacitación requieran cientos de dispositivos aceleradores durante varias semanas o meses a la vez.
A fines de 2022, AWS anunció la disponibilidad general de Instancias Amazon EC2 Trn1 creado por tren de AWS—un acelerador de aprendizaje automático (ML) especialmente diseñado y optimizado para proporcionar una plataforma de alto rendimiento, rentable y enormemente escalable para entrenar modelos de aprendizaje profundo en la nube. Las instancias Trn1 están disponibles en varios tamaños (consulte la siguiente tabla), con hasta 16 aceleradores Trainium por instancia.
Tamaño de instancia | Aceleradores de Trainio | Memoria del acelerador (GB) | vCPU | Memoria de instancia (GiB) | Ancho de banda de red (Gbps) |
trn1.2xgrande | 1 | 32 | 8 | 32 | Hasta 12.5 |
trn1.32xgrande | 16 | 512 | 128 | 512 | 800 |
trn1n.32xlarge (próximamente) | 16 | 512 | 128 | 512 | 1600 |
Las instancias Trn1 se pueden implementar como instancias independientes para trabajos de capacitación más pequeños o en ultraclústeres altamente escalables que admiten la capacitación distribuida en decenas de miles de aceleradores Trainium. Todas las instancias Trn1 admiten la configuración independiente, mientras que los ultraclusters Trn1 requieren instancias trn1.32xlarge o trn1n.32xlarge. En un ultraclúster, varias instancias Trn1 se ubican en una misma zona de disponibilidad de AWS y se conectan con una red de adaptador de tejido elástico (EFA) de baja latencia y alta velocidad que proporciona 800 Gbps de ancho de banda de red sin bloqueo por instancia para operaciones informáticas colectivas. . El tipo de instancia trn1n.32xlarge, que se lanzará a principios de 2023, aumentará este ancho de banda a 1600 Gbps por instancia.
Muchos clientes empresariales eligen implementar sus cargas de trabajo de aprendizaje profundo mediante Kubernetes, el estándar de facto para la orquestación de contenedores en la nube. Los clientes de AWS a menudo implementan estas cargas de trabajo utilizando Servicio Amazon Elastic Kubernetes (Amazon EKS). Amazon EKS es un servicio de Kubernetes administrado que simplifica la creación, la configuración, el ciclo de vida y el monitoreo de los clústeres de Kubernetes al mismo tiempo que ofrece la flexibilidad total de Kubernetes ascendente.
Hoy, nos complace anunciar la compatibilidad oficial con los trabajos de capacitación distribuidos mediante instancias de Amazon EKS y EC2 Trn1. Con este anuncio, ahora puede ejecutar fácilmente trabajos de capacitación en contenedores a gran escala dentro de Amazon EKS mientras aprovecha al máximo la relación precio-rendimiento, la escalabilidad y la facilidad de uso que ofrecen las instancias Trn1.
Junto con este anuncio, también estamos publicando un tutorial detallado que lo guía a través de los pasos necesarios para ejecutar un trabajo de capacitación distribuido de varias instancias (preentrenamiento BERT fase 1) utilizando instancias de Amazon EKS y Trn1. En esta publicación, aprenderá sobre la arquitectura de la solución y revisará varios pasos clave del tutorial. Referirse a repositorio oficial de tutoriales para el flujo de trabajo completo de principio a fin.
Para seguir, una amplia familiaridad con los servicios principales de AWS, como Nube informática elástica de Amazon (Amazon EC2) y Amazon EKS está implícito, y sería útil una familiaridad básica con el aprendizaje profundo y PyTorch.
Arquitectura de soluciones
El siguiente diagrama ilustra la arquitectura de la solución.
La solución consta de los siguientes componentes principales:
- Un clúster de EKS
- Un grupo de nodos de EKS que consta de instancias trn1.32xlarge
- La AWS neurona SDK
- Complementos EKS para Neuron y EFA
- An Registro de contenedores elásticos de Amazon (Amazon ECR) Repositorio
- Una imagen de contenedor de entrenamiento
- An Amazon FSx para Lustre del sistema de archivos
- Un programador de lotes Volcano y un servidor etcd
- El lanzador de trabajos universal TorchX
- El módulo TorchX DDP para Trainium
En el corazón de la solución se encuentra un clúster de EKS que le brinda la funcionalidad de administración central de Kubernetes a través de un punto final de servicio de EKS. Uno de los beneficios de Amazon EKS es que el servicio monitorea y escala de forma activa el plano de control en función de la carga, lo que garantiza un alto rendimiento para grandes cargas de trabajo, como la capacitación distribuida. Dentro del clúster de EKS hay un grupo de nodos que consta de dos o más instancias basadas en Trainium trn1.32xlarge que residen en la misma zona de disponibilidad.
Neuron SDK es la pila de software que proporciona el controlador, el compilador, el tiempo de ejecución, la integración del marco (por ejemplo, PyTorch Neuron) y las herramientas de usuario que le permiten acceder a los beneficios de los aceleradores de Trainium. El controlador del dispositivo Neuron se ejecuta directamente en los nodos EKS (instancias Trn1) y brinda acceso a los chips Trainium desde los contenedores de capacitación que se lanzan en los nodos. Los complementos Neuron y EFA se instalan dentro del clúster EKS para brindar acceso a los chips Trainium y los dispositivos de red EFA necesarios para la capacitación distribuida.
Se utiliza un repositorio ECR para almacenar las imágenes del contenedor de entrenamiento. Estas imágenes contienen el SDK de Neuron (excepto el controlador de Neuron, que se ejecuta directamente en las instancias de Trn1), el script de entrenamiento de PyTorch y las dependencias requeridas. Cuando se inicia un trabajo de entrenamiento en el clúster de EKS, las imágenes del contenedor primero se extraen de Amazon ECR a los nodos de EKS, y luego se crean instancias de los contenedores de trabajo de PyTorch a partir de las imágenes.
El almacenamiento compartido se proporciona mediante un sistema de archivos FSx for Lustre de alto rendimiento que existe en la misma zona de disponibilidad que las instancias trn1.32xlarge. La creación y conexión del sistema de archivos FSx for Lustre al clúster de EKS está mediada por el Controlador CSI de Amazon FSx para Lustre. En esta solución, el almacenamiento compartido se usa para almacenar el conjunto de datos de entrenamiento y cualquier registro o artefacto creado durante el proceso de entrenamiento.
La solución utiliza el Lanzador de trabajos universal TorchX para lanzar trabajos de capacitación distribuidos dentro de Amazon EKS. TorchX tiene dos dependencias importantes: el programador de lotes Volcano y el servidor etcd. Volcano maneja la programación y la puesta en cola de los trabajos de entrenamiento, mientras que el servidor etcd es un almacén de valores clave que utiliza TorchElastic para la sincronización y el descubrimiento de pares durante el inicio del trabajo.
Cuando se inicia un trabajo de entrenamiento con TorchX, el comando de lanzamiento usa el módulo DDP distribuido de TorchX provisto para Trainium para configurar el trabajo de entrenamiento general y luego ejecutar los comandos de antorcha apropiados en cada uno de los módulos de trabajo de PyTorch. Cuando un trabajo se está ejecutando, se puede monitorear con herramientas estándar de Kubernetes (como kubectl) o mediante conjuntos de herramientas de aprendizaje automático estándar como TensorBoard.
Resumen de la solución
Veamos los pasos importantes de esta solución. A lo largo de este resumen, nos referimos a la Lanzar un trabajo de entrenamiento de neuronas PyTorch de múltiples nodos en Trainium usando TorchX y EKS Tutorial en GitHub.
Crear un clúster de EKS
Para comenzar con los trabajos de capacitación distribuidos en Amazon EKS con instancias Trn1, primero debe crear un clúster de EKS como se describe en el tutorial en GitHub. La creación de clústeres se puede lograr utilizando herramientas estándar como eksctl
y Formación en la nube de AWS.
Crear un grupo de nodos de EKS
A continuación, debemos crear un grupo de nodos de EKS que contenga dos o más instancias trn1.32xlarge en una región admitida. En el tutorial, AWS CloudFormation se utiliza para crear una plantilla de lanzamiento de EC2 específica de Trainium, lo que garantiza que las instancias Trn1 se lancen con una imagen de máquina de Amazon (AMI) adecuada y la configuración de red EFA correcta necesaria para admitir la capacitación distribuida. La AMI también incluye el controlador del dispositivo Neuron que brinda soporte para los chips aceleradores Trainium. Con el eksctl
Herramienta de administración de Amazon EKS, puede crear fácilmente un grupo de nodos de Trainium mediante un manifiesto YAML básico que hace referencia a la plantilla de lanzamiento recién creada. Por ejemplo:
En el manifiesto anterior, se configuran varios atributos para permitir el uso de instancias Trn1 en el clúster de EKS. Primero, metadata.region
está configurado en una de las Regiones que admite instancias Trn1 (actualmente us-east-1
y us-west-2
). A continuación, para las zonas de disponibilidad, Amazon EKS requiere que se especifiquen dos zonas de disponibilidad. Una de estas zonas de disponibilidad debe admitir el uso de instancias Trn1, mientras que la otra puede elegirse al azar. El tutorial muestra cómo determinar qué zonas de disponibilidad permitirán instancias Trn1 dentro de su cuenta de AWS. La misma zona de disponibilidad compatible con Trn1 también debe especificarse mediante el availabiltyZones
atributo asociado con el grupo de nodos EKS. efaEnabled
se establece a true
para configurar los nodos con la configuración de red EFA adecuada que se requiere para el entrenamiento distribuido. Por último, el launchTemplate.id
El atributo asociado con el grupo de nodos apunta a la plantilla de lanzamiento de EC2 creada a través de AWS CloudFormation en un paso anterior.
Suponiendo que ya haya aplicado la plantilla de CloudFormation e instalado el eksctl
herramienta de administración, puede crear un grupo de nodos EKS compatible con Trainium ejecutando el siguiente código:
Instalar complementos de Kubernetes para dispositivos Trainium y EFA
Con el grupo de nodos en su lugar, el siguiente paso es instalar los complementos de Kubernetes que brindan soporte para los aceleradores Trainium (a través del complemento Neuron) y los dispositivos EFA (a través del complemento EFA). Estos complementos se pueden instalar fácilmente en el clúster utilizando el estándar kubectl
herramienta de gestión como se muestra en el tutorial.
Para usar el lanzador PyTorch universal TorchX para lanzar trabajos de entrenamiento distribuidos, se requieren dos requisitos previos: el programador por lotes Volcano y el servidor etcd. Al igual que los complementos Neuron y EFA, podemos usar el kubectl
herramienta para instalar Volcano y el servidor etcd en el clúster EKS.
Adjuntar almacenamiento compartido al clúster de EKS
En el tutorial, FSx for Lustre se utiliza para proporcionar un sistema de archivos compartidos de alto rendimiento al que pueden acceder los distintos módulos de trabajo de EKS. Este almacenamiento compartido se utiliza para alojar el conjunto de datos de entrenamiento, así como cualquier artefacto y registro que se cree durante el proceso de entrenamiento. El tutorial describe cómo crear y adjuntar el almacenamiento compartido al clúster utilizando el Controlador CSI de Amazon FSx para Lustre.
Crear una imagen de contenedor de entrenamiento
A continuación, debemos crear una imagen de contenedor de capacitación que incluya el script de capacitación de PyTorch junto con las dependencias. En el tutorial se incluye un Dockerfile de ejemplo, que incorpora el script de entrenamiento previo BERT junto con sus dependencias de software. El Dockerfile se usa para crear la imagen del contenedor de capacitación y, luego, la imagen se envía a un repositorio de ECR desde el cual los trabajadores de PyTorch pueden extraer la imagen cuando se inicia un trabajo de capacitación en el clúster.
Configurar los datos de entrenamiento
Antes de iniciar un trabajo de entrenamiento, los datos de entrenamiento primero se copian en el volumen de almacenamiento compartido en FSx for Lustre. El tutorial describe cómo crear un pod de Kubernetes temporal que tenga acceso al volumen de almacenamiento compartido y muestra cómo iniciar sesión en el pod para descargar y extraer el conjunto de datos de entrenamiento mediante los comandos de shell estándar de Linux.
Con los diversos requisitos previos de infraestructura y software establecidos, ahora podemos centrarnos en los aspectos Trainium de la solución.
Precompila tu modelo
Neuron SDK es compatible con PyTorch a través de una capa de integración llamada Neurona PyTorch. De forma predeterminada, PyTorch Neuron funciona con una compilación justo a tiempo, donde los diversos gráficos de cómputo de redes neuronales dentro de un trabajo de entrenamiento se compilan a medida que se encuentran durante el proceso de entrenamiento. Para modelos más grandes, puede ser más conveniente usar el neuron_parallel_compile
herramienta para precompilar y almacenar en caché los diversos gráficos de cálculo por adelantado para evitar la compilación de gráficos en el momento del entrenamiento. Antes de iniciar el trabajo de entrenamiento en el clúster de EKS, el tutorial muestra cómo iniciar primero un trabajo de precompilación a través de TorchX usando el neuron_parallel_compile
herramienta. Al finalizar el trabajo de precompilación, el compilador de Neuron habrá identificado y compilado todos los gráficos de cómputo de la red neuronal y los habrá almacenado en caché en el volumen de almacenamiento compartido para su uso posterior durante el trabajo de preentrenamiento BERT real.
Inicie el trabajo de entrenamiento distribuido
Con la precompilación completa, TorchX se usa para iniciar un trabajo de capacitación distribuido de 64 trabajadores en dos instancias trn1.32xlarge, con 32 trabajadores por instancia. Usamos 32 trabajadores por instancia porque cada instancia trn1.32xlarge contiene 16 aceleradores Trainium, y cada acelerador proporciona 2 Núcleos neuronales. Se puede acceder a cada NeuronCore como un único Dispositivo PyTorch XLA en el guión de entrenamiento. Un ejemplo de comando de lanzamiento de TorchX del tutorial se parece al siguiente código:
Los diversos argumentos de la línea de comandos en el comando TorchX anterior se describen en detalle en el tutorial. Sin embargo, los siguientes argumentos son los más importantes para configurar el trabajo de entrenamiento:
- -cfg cola=prueba – Especifica la cola Volcano que se usará para el trabajo de entrenamiento
- -cfg repositorio_imagen – Especifica el repositorio ECR que se usará para las imágenes del contenedor TorchX
- –script_args – Especifica los argumentos que deben pasarse al script de entrenamiento de PyTorch
- –nnodos y –nproc_por_nodo – La cantidad de instancias y trabajadores por instancia que se usarán para el trabajo de capacitación
- -guión – El nombre del script de entrenamiento de PyTorch para iniciar dentro del contenedor de entrenamiento
- -imagen – La ruta a la imagen del contenedor de entrenamiento en Amazon ECR
- –bf16 – Habilitar o no el tipo de datos BF16
Monitorear el trabajo de entrenamiento
Una vez que se ha iniciado el trabajo de entrenamiento, hay varias formas en las que se puede monitorear el trabajo. El tutorial muestra cómo monitorear las métricas básicas del script de entrenamiento en la línea de comando usando kubectl
, cómo monitorear visualmente el progreso del script de entrenamiento en TensorBoard (vea la siguiente captura de pantalla) y cómo monitorear la utilización del acelerador de Trainium usando el neuron-top
herramienta del Neuron SDK.
Limpiar o reutilizar el medio ambiente
Cuando se completa el trabajo de entrenamiento, el clúster se puede reutilizar o reconfigurar para trabajos de entrenamiento adicionales. Por ejemplo, el grupo de nodos de EKS se puede escalar rápidamente usando el eksctl
comando para admitir trabajos de entrenamiento que requieren instancias Trn1 adicionales. Del mismo modo, los comandos de inicio de Dockerfile y TorchX provistos se pueden modificar fácilmente para admitir modelos de aprendizaje profundo adicionales y distribuir topologías de capacitación.
Si el clúster ya no es necesario, el tutorial también incluye todos los pasos necesarios para eliminar la infraestructura de EKS y los recursos relacionados.
Conclusión
En esta publicación, exploramos cómo las instancias Trn1 y Amazon EKS brindan una plataforma administrada para la capacitación distribuida de alto rendimiento, rentable y escalable masivamente de modelos de aprendizaje profundo. También compartimos un tutorial completo que muestra cómo ejecutar un trabajo de entrenamiento distribuido de instancias múltiples en el mundo real en Amazon EKS usando instancias Trn1, y destacamos varios de los pasos y componentes clave en la solución. El contenido de este tutorial se puede adaptar fácilmente para otros modelos y cargas de trabajo, y le brinda una solución fundamental para la capacitación distribuida de modelos de aprendizaje profundo en AWS.
Para obtener más información sobre cómo comenzar con las instancias Trn1 con tecnología de Trainium, consulte la Documentación de neuronas.
Acerca de los autores
Scott Perry es arquitecto de soluciones en el equipo acelerador de Annapurna ML en AWS. Con sede en Canadá, ayuda a los clientes a implementar y optimizar cargas de trabajo de inferencia y capacitación de aprendizaje profundo mediante AWS Inferentia y AWS Trainium. Sus intereses incluyen grandes modelos de lenguaje, aprendizaje de refuerzo profundo, IoT y genómica.
Lorea Arrizabalaga es una arquitecta de soluciones alineada con el sector público del Reino Unido, donde ayuda a los clientes a diseñar soluciones de ML con Amazon SageMaker. También forma parte de la comunidad de campo técnico dedicada a la aceleración de hardware y ayuda con las pruebas y la evaluación comparativa de las cargas de trabajo de AWS Inferentia y AWS Trainium.
- Distribución de relaciones públicas y contenido potenciado por SEO. Consiga amplificado hoy.
- Platoblockchain. Inteligencia del Metaverso Web3. Conocimiento amplificado. Accede Aquí.
- Fuente: https://aws.amazon.com/blogs/machine-learning/scaling-distributed-training-with-aws-trainium-and-amazon-eks/
- 1
- 100
- 11
- 2022
- 2023
- 7
- a
- Poder
- Nuestra Empresa
- acelerador
- aceleradores
- de la máquina
- visitada
- alcanzado
- a través de
- activamente
- Adicionales
- avanzar
- avanzado
- Ventaja
- alineado
- Todos
- ya haya utilizado
- Aunque
- Amazon
- Amazon EC2
- Amazon SageMaker
- y
- Anunciar
- anunció
- Anuncio
- aplicada
- adecuado
- arquitectura
- argumentos
- aspectos
- asociado
- adjuntar
- atributos
- disponibilidad
- Hoy Disponibles
- AWS
- Formación en la nube de AWS
- Inferencia de AWS
- Ancho de banda
- basado
- básica
- porque
- antes
- evaluación comparativa
- beneficios
- mil millones
- Florecer (bloom)
- general
- build
- cache
- , que son
- Ubicación: Canadá
- Papas fritas
- Elige
- elegido
- Soluciones
- Médico
- código
- Colectivo
- viniendo
- Próximamente
- Algunos
- vibrante e inclusiva
- completar
- terminación
- componentes
- exhaustivo
- Calcular
- Configuración
- conectado
- Que consiste
- Envase
- Contenedores
- contiene
- contenido
- control
- Conveniente
- Core
- rentable
- Para crear
- creado
- Creamos
- creación
- CSI
- En la actualidad
- Clientes
- datos
- Ventas al por menor (Indica Si o No)
- a dedicados
- profundo
- deep learning
- Predeterminado
- desplegar
- desplegado
- descrito
- Diseño
- detalle
- detallado
- desarrollos
- dispositivo
- Dispositivos
- directamente
- descubrimiento
- distribuidos
- entrenamiento distribuido
- distribuido
- descargar
- conductor
- durante
- cada una
- Más temprano
- Temprano en la
- facilidad de uso
- pasan fácilmente
- ya sea
- habilitar
- de extremo a extremo
- Punto final
- asegura
- Empresa
- Incluso
- ejemplo
- excitado
- excluyendo
- existe
- explorado
- extraerlos
- material
- Familiaridad
- campo
- Archive
- Nombre
- Flexibilidad
- Focus
- seguir
- siguiendo
- Marco conceptual
- Desde
- ser completados
- a la fatiga
- General
- genómica
- obtener
- GitHub
- dado
- gráfica
- gráficos
- Grupo procesos
- Guías
- Manijas
- Materiales
- Corazón
- serviciales
- ayuda
- Alta
- Alto rendimiento
- Destacado
- altamente
- fortaleza
- Cómo
- Como Hacer
- Sin embargo
- HTML
- HTTPS
- Cientos
- ID
- no haber aun identificado una solucion para el problema
- imagen
- imágenes
- implícito
- importante
- in
- incluir
- incluido
- incluye
- aumente
- cada vez más
- EN LA MINA
- instalar
- instalado
- ejemplo
- integración
- intereses
- IOT
- IT
- Trabajos
- Empleo
- Clave
- Tipo
- idioma
- large
- Gran escala
- mayores
- Tarde
- lanzamiento
- lanzado
- lanzamiento
- .
- APRENDE:
- aprendizaje
- LED
- bibliotecas
- línea
- Linux
- carga
- por más tiempo
- Mira
- MIRADAS
- máquina
- máquina de aprendizaje
- Inicio
- gestionado
- Management
- macizamente
- Salud Cerebral
- metadatos
- Métrica
- ML
- modelos
- modificado
- Módulo
- Monitorear
- monitoreado
- monitoreo
- monitores
- meses
- más,
- MEJOR DE TU
- múltiples
- nombre
- ¿ Necesita ayuda
- del sistema,
- red
- red neural
- Next
- nodo
- nodos
- número
- Ofrecido
- que ofrece
- oficial
- ONE
- opera
- Operaciones
- Optimización
- optimizado
- orquestación
- solicite
- Otro
- esbozado
- contornos
- total
- visión de conjunto
- parámetros
- parte
- pasado
- camino
- pares
- actuación
- fase
- Colocar
- plataforma
- Platón
- Inteligencia de datos de Platón
- PlatónDatos
- plugin
- plugins
- puntos
- Publicación
- alimentado
- poderoso
- requisitos previos
- Progreso
- proporcionar
- previsto
- proporciona un
- proporcionando
- público
- DTP
- empujó
- piñón
- con rapidez
- azar
- mundo real
- referencias
- región
- regiones
- relacionado
- remove
- repositorio
- exigir
- Requisitos
- requiere
- Recursos
- una estrategia SEO para aparecer en las búsquedas de Google.
- Ejecutar
- correr
- sabio
- mismo
- Escalabilidad
- escalable
- escamas
- la ampliación
- Sdk
- sector
- de coches
- Servicios
- set
- Varios
- compartido
- Cáscara
- tienes
- mostrado
- Shows
- importante
- Del mismo modo
- tamaños
- menores
- So
- Software
- a medida
- Soluciones
- algo
- especificado
- montón
- independiente
- estándar
- fundó
- inicio
- paso
- pasos
- Sin embargo
- STORAGE
- tienda
- tal
- SOPORTE
- Soportado
- soportes
- sincronización
- te
- mesa
- toma
- equipo
- Técnico
- plantilla
- temporal
- Pruebas
- La
- el Reino Unido
- su
- 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.
- a lo largo de
- equipo
- a
- del IRS
- Formación
- verdadero
- tutoriales
- Uk
- único
- Universal
- utilizan el
- Usuario
- diversos
- versión
- vía
- volumen
- formas
- Semanas
- sean
- que
- mientras
- seguirá
- dentro de
- obrero
- los trabajadores.
- se
- yaml
- Usted
- tú
- zephyrnet
- zonas