Optimizar las cargas de trabajo de IA generativa para la sostenibilidad ambiental
Optimizar IA generativa para sostenibilidad ambiental
La adopción de la IA generativa está expandiéndose rápidamente, llegando a un número cada vez mayor de industrias y usuarios en todo el mundo. Con la creciente complejidad y escala de los modelos de IA generativa, es crucial trabajar para minimizar su impacto ambiental. Esto implica un esfuerzo continuo centrado en la reducción y eficiencia energética, aprovechando al máximo los recursos asignados y minimizando los recursos totales requeridos.
Para complementar nuestra guía para optimizar las cargas de trabajo de aprendizaje profundo para la sostenibilidad en AWS, esta publicación proporciona recomendaciones específicas para cargas de trabajo de IA generativa. En particular, ofrecemos mejores prácticas prácticas para diferentes escenarios de personalización, que incluyen el entrenamiento de modelos desde cero, el ajuste fino con datos adicionales utilizando técnicas completas o de eficiencia de parámetros, la Generación con Recuperación Aumentada (RAG) y la ingeniería de instrucciones. Aunque esta publicación se centra principalmente en los grandes modelos de lenguaje (LLM), creemos que la mayoría de las recomendaciones se pueden extender a otros modelos fundamentales.
Enfoque del problema de la IA generativa
Al plantear su problema de IA generativa, considere lo siguiente:
- Alinee el uso de la IA generativa con sus objetivos de sostenibilidad – Al delinear su proyecto, asegúrese de tener en cuenta la sostenibilidad:
- ¿Cuáles son los compromisos entre una solución de IA generativa y un enfoque tradicional menos intensivo en recursos?
- ¿Cómo puede su proyecto de IA generativa apoyar la innovación sostenible?
- Utilice energía con baja intensidad de carbono – Cuando las regulaciones y aspectos legales lo permitan, entrene e implemente su modelo en una de las 19 regiones de AWS donde la electricidad consumida en 2022 se atribuye al 100% de energía renovable y regiones donde la intensidad de carbono de la red es más baja que en otras ubicaciones (o regiones). Para obtener más detalles, consulte Cómo seleccionar una región para su carga de trabajo según los objetivos de sostenibilidad. Al seleccionar una región, trate de minimizar el movimiento de datos a través de redes: entrene sus modelos cerca de sus datos e implemente sus modelos cerca de sus usuarios.
- Utilice servicios administrados – Dependiendo de su experiencia y caso de uso específico, evalúe las opciones entre optar por Amazon Bedrock, un servicio sin servidor y completamente administrado que proporciona acceso a una amplia gama de modelos fundamentales a través de una API, o implementar sus modelos en una infraestructura completamente administrada utilizando Amazon SageMaker. El uso de un servicio administrado le ayuda a operar de manera más eficiente al transferir la responsabilidad de mantener una alta utilización y optimización de sostenibilidad del hardware implementado a AWS.
- Defina la estrategia de personalización adecuada – Hay varias estrategias para mejorar las capacidades de su modelo, que van desde la ingeniería de instrucciones hasta el ajuste fino completo. Elija la estrategia más adecuada en función de sus necesidades específicas y también considere las diferencias en los recursos requeridos para cada una. Por ejemplo, el ajuste fino puede lograr una mayor precisión que la ingeniería de instrucciones, pero consume más recursos y energía en la fase de entrenamiento. Haga compromisos: al optar por un enfoque de personalización que priorice un rendimiento aceptable antes que un rendimiento óptimo, se pueden lograr reducciones en los recursos utilizados por sus modelos. La siguiente figura resume el impacto ambiental de las estrategias de personalización de LLMs.
Personalización del modelo
En esta sección, compartimos las mejores prácticas para la personalización del modelo.
- Cómo United Airlines construyó un canal de aprendizaje activo de re...
- El CEO de NVIDIA, Jensen Huang, será el protagonista de la Cumbre d...
- La línea NVIDIA Studio añade el Microsoft Surface Laptop Studio 2 c...
Selección del modelo base
Seleccionar el modelo base adecuado es un paso crítico en la personalización de las cargas de trabajo de IA generativa y puede ayudar a reducir la necesidad de un ajuste fino extenso y el uso de recursos asociados. Considere los siguientes factores:
- Evalue capacidades y limitaciones – Utilice los entornos de prueba de Amazon SageMaker JumpStart o Amazon Bedrock para probar fácilmente la capacidad de los LLM y evaluar sus limitaciones principales.
- Reduzca la necesidad de personalización – Asegúrese de recopilar información utilizando recursos públicos como tablas de clasificación de LLM abiertos, referencias de evaluación holísticas o tarjetas de modelo para comparar diferentes LLM y comprender los dominios, tareas e idiomas específicos para los que se han preentrenado. Según su caso de uso, considere modelos específicos de dominio o multilingües para reducir la necesidad de personalización adicional.
- Comience con un tamaño de modelo pequeño y una ventana de contexto pequeña – Los tamaños grandes de modelos y las ventanas de contexto (el número de tokens que pueden caber en una sola instrucción) pueden ofrecer un rendimiento y capacidades más altos, pero también requieren más energía y recursos para la inferencia. Considere las versiones disponibles de modelos con tamaños y ventanas de contexto más pequeños antes de escalar a modelos más grandes. Los modelos más pequeños especializados concentran su capacidad en una tarea objetivo específica. En estas tareas, los modelos especializados pueden comportarse cualitativamente de manera similar a los modelos más grandes (por ejemplo, GPT3.5, que tiene 175 mil millones de parámetros) mientras requieren menos recursos para el entrenamiento y la inferencia. Ejemplos de tales modelos incluyen Alpaca (7 mil millones de parámetros) o la utilización de variantes de T5 para el razonamiento matemático de múltiples pasos (11 mil millones de parámetros o más).
Ingeniería de indicaciones
La ingeniería de indicaciones efectiva puede mejorar el rendimiento y la eficiencia de los modelos de IA generativos. Al crear indicaciones cuidadosamente, puedes guiar el comportamiento del modelo, reduciendo iteraciones innecesarias y requisitos de recursos. Considera las siguientes pautas:
- Mantén las indicaciones concisas y evita detalles innecesarios – Las indicaciones más largas conducen a un mayor número de tokens. A medida que aumentan los tokens, el modelo consume más memoria y recursos computacionales. Considera la incorporación de aprendizaje de cero disparo o de pocos disparos para permitir que el modelo se adapte rápidamente aprendiendo solo a partir de unos pocos ejemplos.
- Experimenta gradualmente con diferentes indicaciones – Refina las indicaciones en función de los resultados deseados hasta lograr los resultados deseados. Dependiendo de tu tarea, explora técnicas avanzadas como la autoconsistencia, la generación de conocimiento generada, la generación de reacción o la ingeniería automática de indicaciones para mejorar aún más las capacidades del modelo.
- Utiliza indicaciones reproducibles – Con plantillas como las plantillas de indicaciones de LangChain, puedes guardar o cargar tu historial de indicaciones como archivos. Esto mejora el seguimiento de la experimentación de indicaciones, la versión y la reutilización. Cuando conoces las indicaciones que producen las mejores respuestas para cada modelo, puedes reducir los recursos computacionales utilizados para las iteraciones de indicaciones y los experimentos redundantes en diferentes proyectos.
Generación con recuperación aumentada
La generación con recuperación aumentada (RAG) es un enfoque altamente efectivo para mejorar las capacidades del modelo mediante la recuperación e integración de información externa pertinente de un conjunto de datos predefinido. Debido a que los LLM existentes se utilizan tal cual, esta estrategia evita la energía y los recursos necesarios para entrenar el modelo con nuevos datos o construir un nuevo modelo desde cero. Utiliza herramientas como Amazon Kendra o Amazon OpenSearch Service y LangChain para construir soluciones basadas en RAG con Amazon Bedrock o SageMaker JumpStart.
Ajuste fino eficiente de parámetros
El ajuste fino eficiente de parámetros (PEFT) es un aspecto fundamental de la sostenibilidad en la IA generativa. Su objetivo es lograr un rendimiento comparable al del ajuste fino, utilizando menos parámetros entrenables. Al ajustar finamente solo un pequeño número de parámetros del modelo mientras se congela la mayoría de los parámetros de los LLM preentrenados, podemos reducir los recursos computacionales y el consumo de energía.
Utiliza bibliotecas públicas como la biblioteca de ajuste fino eficiente de parámetros para implementar técnicas comunes de PEFT como la adaptación de rango bajo (LoRa), el ajuste de prefijo, el ajuste de indicaciones o el ajuste de P-Tuning. Como ejemplo, los estudios muestran que la utilización de LoRa puede reducir el número de parámetros entrenables hasta 10,000 veces y los requisitos de memoria de la GPU hasta 3 veces, dependiendo del tamaño de tu modelo, con un rendimiento similar o mejor.
Ajuste fino
Ajusta finamente el modelo preentrenado completo con los datos adicionales. Este enfoque puede lograr un rendimiento más alto pero requiere más recursos que el PEFT. Utiliza esta estrategia cuando los datos disponibles difieran significativamente de los datos de preentrenamiento.
Al seleccionar el enfoque de ajuste fino correcto, puedes maximizar la reutilización de tu modelo y evitar el uso de recursos asociados con el ajuste fino de múltiples modelos para cada caso de uso. Por ejemplo, si anticipas reutilizar el modelo dentro de un dominio específico o unidad de negocio en tu organización, es posible que prefieras la adaptación de dominio. Por otro lado, el ajuste fino basado en instrucciones es más adecuado para uso general en múltiples tareas.
Entrenamiento del modelo desde cero
En algunos casos, puede ser necesario entrenar un modelo de LLM desde cero. Sin embargo, este enfoque puede ser computacionalmente costoso y consumir mucha energía. Para garantizar un entrenamiento óptimo, considera las siguientes mejores prácticas:
- Utiliza silicio eficiente – Las instancias EC2 Trn1 basadas en AWS Trainium están diseñadas específicamente para entrenamiento de modelos de aprendizaje profundo de alto rendimiento y optimizadas para la eficiencia energética. En 2022, observamos que el entrenamiento de modelos en Trainium te ayuda a reducir el consumo de energía hasta en un 29% en comparación con instancias similares.
- Utiliza datos de alta calidad y curación de datos escalable – Utiliza SageMaker Training para mejorar la calidad del conjunto de datos de entrenamiento y minimizar la dependencia de datos masivos. Al entrenar con un conjunto de datos diverso, completo y curado, los LLM pueden producir respuestas más precisas y lograr una optimización de costos y energía al reducir los requisitos de almacenamiento y computación.
- Utiliza entrenamiento distribuido – Utiliza bibliotecas distribuidas de SageMaker como paralelismo de datos, paralelismo de canalización o paralelismo de tensores para realizar cómputo paralelo en varias GPU o instancias. Estos enfoques ayudan a maximizar la utilización de la GPU dividiendo tus lotes de entrenamiento en micro lotes más pequeños. Los micro lotes más pequeños se alimentan a las GPU en una canalización eficiente para mantener todos los dispositivos GPU activos simultáneamente, lo que lleva a una optimización de recursos.
Inferencia y despliegue del modelo
Tenga en cuenta las siguientes mejores prácticas para la inferencia y el despliegue del modelo:
- Utilice contenedores de aprendizaje profundo para inferencias de modelos grandes – Puede utilizar contenedores de aprendizaje profundo para inferencias de modelos grandes en SageMaker y marcos de código abierto como DeepSpeed, Hugging Face Accelerate y FasterTransformer para implementar técnicas como la poda de pesos, destilación, compresión, cuantización o compilación. Estas técnicas reducen el tamaño del modelo y optimizan el uso de memoria.
- Establezca parámetros de modelo de inferencia apropiados – Durante la inferencia, tiene la flexibilidad de ajustar ciertos parámetros que influyen en la salida del modelo. Comprender y establecer adecuadamente estos parámetros le permite obtener las respuestas más relevantes de sus modelos y minimizar el número de iteraciones de ajuste de la consulta. Esto resulta en una reducción del uso de memoria y un menor consumo de energía. Los parámetros clave a considerar son
temperature
,top_p
,top_k
ymax_length
. - Adopte una infraestructura de inferencia eficiente – Puede implementar sus modelos en un acelerador AWS Inferentia2. Las instancias Inf2 ofrecen un rendimiento/energía un 50% mejor que las instancias comparables de Amazon Elastic Compute Cloud (Amazon EC2) porque los aceleradores AWS Inferentia2 subyacentes están diseñados específicamente para ejecutar modelos de aprendizaje profundo a gran escala. Como la opción más eficiente en términos de energía en Amazon EC2 para implementar modelos ultra grandes, las instancias Inf2 le ayudan a cumplir sus objetivos de sostenibilidad al implementar las últimas innovaciones en IA generativa.
- Alinie el Acuerdo de Nivel de Servicio (SLA) de inferencia con los objetivos de sostenibilidad – Defina SLAs que respalden sus objetivos de sostenibilidad y al mismo tiempo cumplan con los requisitos de su negocio. Defina SLAs para cumplir con los requisitos de su negocio, no superarlos. Realice compensaciones que reduzcan significativamente el uso de sus recursos a cambio de disminuciones aceptables en los niveles de servicio:
- Ponga en cola las solicitudes entrantes y procéselas de forma asíncrona – Si sus usuarios pueden tolerar cierta latencia, implemente su modelo en puntos finales asíncronos para reducir los recursos inactivos entre tareas y minimizar el impacto de las ráfagas de carga. Esto escalará automáticamente el recuento de instancias a cero cuando no haya solicitudes que procesar, de modo que solo mantendrá una infraestructura de inferencia cuando su punto final esté procesando solicitudes.
- Ajuste la disponibilidad – Si sus usuarios pueden tolerar cierta latencia en el caso poco frecuente de un conmutador por error, no provisione capacidad adicional. Si se produce una interrupción o una instancia falla, SageMaker intenta distribuir automáticamente sus instancias en zonas de disponibilidad.
- Ajuste el tiempo de respuesta – Cuando no necesite inferencia en tiempo real, utilice la transformación por lotes de SageMaker. A diferencia de un punto final persistente, los clústeres se descomisionan cuando finalizan los trabajos de transformación por lotes, por lo que no mantendrá continuamente una infraestructura de inferencia.
Monitoreo y optimización del uso de recursos
Implemente un proceso de mejora para rastrear el impacto de sus optimizaciones a lo largo del tiempo. El objetivo de sus mejoras es utilizar todos los recursos que provisiona y completar el mismo trabajo con los recursos mínimos posibles. Para operacionalizar este proceso, recopile métricas sobre la utilización de sus recursos en la nube. Estas métricas, combinadas con las métricas comerciales, se pueden utilizar como métricas de proxy para sus emisiones de carbono.
Para monitorear de manera constante su entorno, puede utilizar Amazon CloudWatch para monitorear métricas del sistema como la utilización de CPU, GPU o memoria. Si está utilizando GPU NVIDIA, considere NVIDIA System Management Interface (nvidia-smi
) para monitorear la utilización y el estado de rendimiento de la GPU. Para Trainium y el acelerador AWS Inferentia, puede utilizar AWS Neuron Monitor para monitorear métricas del sistema. Considere también SageMaker Profiler, que proporciona una vista detallada de los recursos informáticos de AWS provisionados durante el entrenamiento de modelos de aprendizaje profundo en SageMaker. A continuación, se presentan algunas métricas clave que vale la pena monitorear:
CPUUtilization
,GPUUtilization
,GPUMemoryUtilization
,MemoryUtilization
yDiskUtilization
en CloudWatchnvidia_smi.gpu_utilization
,nvidia_smi.gpu_memory_utilization
ynvidia_smi.gpu_performance_state
en los registros de nvidia-smi.vcpu_usage
,memory_info
yneuroncore_utilization
en Neuron Monitor.
Conclusión
A medida que los modelos de IA generativa se vuelven más grandes, es esencial considerar el impacto ambiental de nuestras cargas de trabajo.
En esta publicación, proporcionamos orientación para optimizar los recursos de cómputo, almacenamiento y redes necesarios para ejecutar sus cargas de trabajo de IA generativa en AWS, al mismo tiempo que se minimiza su impacto ambiental. Debido a que el campo de la IA generativa avanza continuamente, mantenerse actualizado con los últimos cursos, investigaciones y herramientas puede ayudarlo a encontrar nuevas formas de optimizar sus cargas de trabajo para la sostenibilidad.