En el panorama de IA en rápida evolución actual, la demanda de conjuntos de datos anotados y modelos personalizados de alta calidad es mayor que nunca. Para abordar esta necesidad, nuestro proyecto tiene como objetivo desarrollar un módulo innovador que integre perfectamente la anotación de datos con el ajuste del modelo. Este módulo aprovechará modelos de lenguaje de vanguardia como Claude o ChatGPT-4 para etiquetar imágenes proporcionadas por el cliente, y posteriormente ajusta un modelo de difusión estable XL (SDXL) utilizando estas anotaciones.
El objetivo de este proyecto es crear un módulo robusto y eficiente que automatice el proceso de anotación de datos y mejore la capacitación del modelo. Al integrar las capacidades avanzadas de IA, nuestro objetivo es producir un modelo SDXL altamente adaptable y preciso ajustado con el conjunto de datos recientemente anotado.
Utilice la API Claude/ChatGPT-4 (o similar) para generar anotaciones de alta calidad para un conjunto de 5-20 imágenes de clientes.
Asegúrese de que las anotaciones sean precisas y consistentes para crear un conjunto de datos confiable para fines de capacitación.
Atrae un modelo SDXL utilizando el conjunto de datos anotado.
Implementar técnicas de adaptación de bajo rango (LORA) para optimizar el rendimiento del modelo en función de las características específicas de los datos anotados.
Este proyecto está diseñado para mejorar la eficiencia y la precisión del desarrollo del modelo de IA mediante la automatización e integración de procesos cruciales. La combinación de modelos de lenguaje avanzado para la anotación y los métodos sofisticados de ajuste fino dará como resultado una solución altamente efectiva que satisfaga las crecientes necesidades de varias aplicaciones de IA. Al reducir la mano de obra manual y mejorar el rendimiento del modelo, este proyecto proporcionará un valor significativo a las industrias que dependen de las tecnologías generativas de IA.

Hay diferentes tipos de ajuste fino. La elección de los métodos de ajuste fino depende de las especificaciones y el uso del sistema. Los modelos Lora (adaptación de bajo rango) ofrecen una mayor eficiencia y compacidad. Funcionan como adaptadores que se basan en los modelos de punto de control existentes. Específicamente, los modelos Lora actualizan solo un subconjunto de parámetros del modelo de punto de control, mejorando así sus capacidades. Este enfoque permite que los modelos de Lora mantengan un tamaño más pequeño, que generalmente varía de 2 MB a 500 MB, y permite ajustar frecuente para conceptos o estilos específicos.
Por ejemplo, al ajustar un modelo de difusión estable que usa DreamBooth, que modifica todo el modelo para adaptarse a un concepto o estilo específico, se requieren recursos computacionales significativos debido al tamaño del modelo grande resultante (aproximadamente 2 a 7 GB) y el uso intensivo de la GPU. Por el contrario, los modelos LORA logran resultados de inferencia comparables con requisitos de GPU significativamente más bajos.
Si bien Lora es un método ampliamente adoptado, existen enfoques alternativos para modificar la difusión estable. Uno de estos métodos involucra el módulo de atención cruzada, que procesa la entrada derivada de la conversión de texto rápido en embedidas de texto. Las inversiones textuales representan otro enfoque, incluso más compacto y más rápido que Lora. Sin embargo, las inversiones textuales se limitan a incrustaciones de texto ajustadas solo para conceptos o estilos específicos. La red subyacente responsable de la generación de imágenes sigue sin cambios, restringiendo las inversiones textuales a la generación de imágenes similares a las utilizadas durante el entrenamiento, sin la capacidad de producir salidas completamente nuevas.
En este proyecto, hay dos tipos de métodos de ajuste fino. La primera opción es usar la combinación de Dreambooth y Lora y la otra está usando solo Lora. Usar la primera opción es la mejor opción y es el método preferido en este proyecto. Las razones de esta elección son:
Adaptabilidad mejorada: Dreambooth es un método de ajuste fino que permite una adaptación integral de todo el modelo a conceptos o estilos específicos. Al ajustar con Dreambooth, el modelo SDXL puede aprender detalles y características matizadas que se alinean estrechamente con los resultados deseados.
Eficiencia y compacidad: Lora (adaptación de bajo rango) entra en juego después del ajuste de Dreambooth. Los modelos Lora están diseñados para optimizar la eficiencia actualizando solo un subconjunto de los parámetros del modelo de punto de control. Este enfoque reduce significativamente el tamaño del modelo (típicamente de 2 MB a 500 MB) en comparación con los modelos completamente ajustados, como los modificados únicamente por Dreambooth.
Recursos computacionales reducidos: combinar Dreambooth con Lora da como resultado modelos que requieren menos recursos de GPU durante la capacitación y la inferencia. Dreambooth inicialmente requiere recursos sustanciales debido a su proceso integral de ajuste fino, pero la reducción de parámetros posterior de Lora asegura que el modelo siga siendo manejable y eficiente.
Preservación del rendimiento: a pesar de sus ganancias de eficiencia, Lora mantiene el rendimiento de alta calidad logrado a través del ajuste de Dreambooth. Esta combinación asegura que el modelo conserve su capacidad para generar resultados impresionantes, comparables a las producidas por un modelo completamente sintonizado.
Flexibilidad para el refinamiento iterativo: el enfoque iterativo de Dreambooth seguido de Lora permite el refinamiento iterativo y el ajuste fino. Esta flexibilidad es crucial en escenarios en los que se requiere una adaptación continua a los conceptos o estilos evolucionadores sin comprometer la eficiencia o el rendimiento del modelo.
Como se mencionó anteriormente, la forma preferida de ajustar un modelo SDXL en este proyecto es la combinación de Dreambooth y Lora. La justificación detrás de la combinación de Dreambooth y Lora radica en optimizar la compensación entre la adaptabilidad del modelo y la eficiencia computacional. DreamBooth permite una adaptación exhaustiva de los parámetros del modelo a matices específicos en los datos o salidas deseadas. Sin embargo, esta adaptación integral puede conducir a tamaños de modelo más grandes y mayores demandas computacionales, especialmente durante el entrenamiento e inferencia. Por otro lado, Lora interviene después del-dreambooth para racionalizar el modelo, reduciendo su tamaño al tiempo que preserva su rendimiento. Esta combinación aprovecha las fortalezas de ambos enfoques: DreamBooth para una adaptación precisa y lora para una gestión eficiente de parámetros.
Los pasos principales de este enfoque de ajuste son:
Ajuste de parámetros: use DreamBooth para ajustar el conjunto completo de parámetros dentro del modelo SDXL para alinearse más estrechamente con los objetivos definidos. Este proceso implica actualizaciones iterativas basadas en el conjunto de datos de destino o las características de salida deseadas.
Fase de entrenamiento: ejecute el proceso de ajuste fino utilizando los objetivos definidos y los datos de entrenamiento. Esta fase asegura que el modelo SDXL se ajuste finamente a los matices y requisitos específicos de la tarea en cuestión.
Selección de parámetros: post-dreambooth, identifique subconjuntos de parámetros que son más cruciales para mantener o mejorar el rendimiento. Este paso implica analizar la importancia y el impacto de diferentes parámetros dentro del modelo SDXL sintonizado.
Factorización de bajo rango: aplique técnicas LORA, como la factorización de la matriz de bajo rango, a estos subconjuntos de parámetros seleccionados. Lora descompone las matrices de parámetros en componentes de bajo rango, lo que reduce la redundancia y enfoca los recursos computacionales en los parámetros más influyentes.
Actualización de parámetros selectivos: actualizar solo los componentes de bajo rango identificados, optimizando así la eficiencia del modelo al tiempo que preserva o mejora sus métricas de rendimiento.
(De vuelta a la cima)
Accelerate es una biblioteca versátil y fácil de usar diseñada al abrazar a Face para racionalizar y optimizar el proceso de capacitación e implementar modelos de aprendizaje automático en una variedad de configuraciones de hardware. Ofrece una interfaz unificada que abstrae las complejidades de configurar y administrar diferentes entornos de capacitación distribuidos, como las configuraciones de Multi-GPU y TPU. Accelerate facilita a los desarrolladores escalar su código Pytorch, centrándose en el desarrollo del modelo en lugar de la infraestructura subyacente.
Los beneficios de esta biblioteca son:
Simplifica la capacitación distribuida: elimina la necesidad de configurar y administrar manualmente configuraciones distribuidas complejas, lo que le permite concentrarse en desarrollar y ajustar sus modelos.
Mejora la utilización de recursos: maximiza el uso del hardware disponible, asegurando que sus GPU y las TPA se utilizan de manera efectiva para acelerar los procesos de entrenamiento e inferencias.
Admite modelos grandes: facilita el manejo de modelos grandes que requieren memoria significativa y potencia computacional, lo que hace que sea accesible para trabajar con redes neuronales de vanguardia.
Reduce la sobrecarga de desarrollo: optimiza la integración de la capacitación distribuida en sus proyectos, ahorrando tiempo y reduciendo la sobrecarga asociada con la gestión de diferentes entornos de hardware.
Bitsandbytes es una biblioteca eficiente e innovadora diseñada para optimizar el rendimiento de las redes neuronales a gran escala, particularmente en el contexto de capacitación e inferencia. Proporciona herramientas y técnicas para reducir significativamente el consumo de memoria y la sobrecarga computacional sin sacrificar la precisión. Una de las características destacadas de Bitsandbytes es su soporte para optimizadores de precisión de 8 bits.
En este proyecto, estamos utilizando la técnica de optimizador de 8 bits. El optimizador de 8 bits en Bitsandbytes es una técnica que cuantifica la precisión de pesos y gradientes de números de punto flotante de 32 bits a enteros de 8 bits durante el proceso de entrenamiento. Utilizar el optimizador de 8 bits de Bitsandbytes es especialmente ventajoso para proyectos que involucran redes neuronales a gran escala, como el ajuste fino de modelos generativos como la difusión estable XL (SDXL). Las razones principales para usar el optimizador de 8 bits incluyen:
Manejo de modelos más grandes: ajuste los modelos más grandes en la memoria de hardware disponible, lo que permite el entrenamiento de arquitecturas de última generación que de otro modo serían inviables.
Entrenamiento más rápido: acelere los tiempos de entrenamiento reduciendo la carga computacional, permitiendo una experimentación y iteración más rápidas.
Optimización de recursos: maximice el uso del hardware disponible, reduciendo la necesidad de actualizaciones costosas y haciendo un uso eficiente de los recursos existentes.
Rendimiento mejorado: lograr una precisión y rendimiento comparables a los métodos tradicionales de capacitación de 32 bits mientras se beneficia de la reducción de la memoria y las demandas computacionales.
La Biblioteca Transformers, desarrollada por Hugging Face, es una biblioteca de código abierto que proporciona una amplia gama de modelos previamente capacitados de última generación para el procesamiento del lenguaje natural (PNL) y otras tareas. Apoya una variedad de arquitecturas de transformadores, como Bert, GPT, T5, Roberta y muchos otros. La biblioteca está diseñada para facilitar el uso de estos potentes modelos para una variedad de aplicaciones, incluida la clasificación de texto, la traducción, la respuesta de preguntas y más.
Los beneficios de usar esta biblioteca son:
Acceso a modelos de vanguardia: acceder e implementar fácilmente algunos de los modelos más avanzados en PNL y más allá, asegurando que esté trabajando con arquitecturas de alto rendimiento.
Desarrollo rápido: la API directa de la biblioteca permite la prototipos y la experimentación rápidos, acelerando significativamente el proceso de desarrollo. Capacidades de aprendizaje de transferencia: ajuste los modelos previamente capacitados poderosos en sus tareas específicas, aprovechando el conocimiento previo y logrando un alto rendimiento con menos datos.
Aplicaciones versátiles: use la biblioteca para un amplio espectro de tareas, incluida la clasificación de texto, el análisis de sentimientos, el reconocimiento de entidades nombrado, la traducción automática y más.
Apoyo de la comunidad robusto: beneficiarse de una comunidad sólida y recursos extensos proporcionados por Hugging Face, asegurando que tenga el apoyo necesario para superar los desafíos e innovar en sus proyectos.
La biblioteca PEFT (ajuste fino de los parámetros) está diseñada para optimizar el proceso de ajuste de los modelos de aprendizaje automático a gran escala. Desarrollado para abordar los desafíos de los modelos masivos de ajuste con recursos computacionales limitados, PEFT se centra en técnicas que permiten una adaptación eficiente de modelos pretrados a nuevas tareas con cambios mínimos en los parámetros del modelo.
Beneficios del uso de PEFT:
Eficiencia: se centra en los métodos eficientes de los parámetros, reduciendo la sobrecarga computacional y de memoria asociada con los modelos grandes ajustados.
Accesibilidad: hace posible ajustar modelos de vanguardia en hardware estándar, democratizando el acceso a técnicas avanzadas de aprendizaje automático.
Velocidad: acelera el proceso de ajuste fino, permitiendo actualizaciones e implementación del modelo más rápidas.
Rendimiento: garantiza un alto rendimiento incluso con menos parámetros ajustados, gracias a las técnicas avanzadas de ajuste fino.
Versatilidad: se puede aplicar a una amplia gama de modelos y tareas, proporcionando una herramienta versátil para profesionales de aprendizaje automático.
(De vuelta a la cima)
La backpropagation, que calcula estos gradientes, requiere almacenar activaciones intermedias del modelo. Esto puede ser intensivo en la memoria, especialmente para modelos grandes como SDXL. El punto de control de gradiente aborda este desafío de memoria al intercambiar el uso de la memoria por un tiempo de cálculo adicional. En lugar de almacenar todas las activaciones intermedias en todo el modelo durante la propagación de la retroceso, el punto de control de gradiente recomputa periódicamente las activaciones que comienzan desde los puntos de control previamente guardados. Este enfoque reduce el uso de la memoria máxima al recomputar activaciones sobre la marcha durante el pase hacia atrás. Al usar el punto de control de gradiente, se reduce la sobrecarga de memoria de almacenar todas las activaciones intermedias. Esto es particularmente beneficioso cuando los modelos ajustados que se han sometido a ajustes de parámetros extensivos (Dreambooth) y actualizaciones selectivas (LORA). Si bien el punto de control de gradiente reduce el consumo de memoria, introduce gastos generales computacionales adicionales debido a la recomputación. La compensación entre la memoria y el cálculo debe equilibrarse en función de los recursos disponibles y los objetivos específicos de ajuste.
Adam (estimación de momento adaptativo) es un algoritmo de optimización popular ampliamente utilizado en el aprendizaje profundo. Combina tasas de aprendizaje adaptativo para cada parámetro con impulso para acelerar la convergencia. Normalmente, Adam usa números de punto flotante de 32 bits (precisión única) para almacenar gradientes y actualizar los parámetros. '8 bit Adam' modifica esto mediante el uso de números de punto fijo de 8 bits para estas operaciones. Al usar una precisión de 8 bits en lugar de 32 bits, '8 bit Adam' reduce significativamente la huella de memoria requerida para almacenar gradientes y parámetros durante el entrenamiento. Esto es particularmente ventajoso para modelos grandes como SDXL, que tienen numerosos parámetros. Las operaciones aritméticas de menor precisión pueden acelerar los cálculos debido a los requisitos reducidos de ancho de banda de memoria. Esto puede conducir a tiempos de entrenamiento más rápidos, especialmente en arquitecturas de hardware optimizadas para operaciones de menor precisión. Sin embargo, hay compensación. El uso de una precisión más baja puede afectar la precisión y estabilidad del modelo, particularmente si no se implementa cuidadosamente. Las técnicas como la escala de gradiente o el ajuste de precisión adaptativo pueden ser necesarias para mitigar cualquier posible pérdida de precisión.
Hay dos niveles de precisión en la precisión del punto flotante, el punto flotante de 32 bits y el punto flotante de 16 bits. El punto flotante de 32 bits es la precisión estándar utilizada en la mayoría de los marcos de aprendizaje profundo para almacenar parámetros del modelo y realizar cálculos. Proporciona una alta precisión numérica, pero requiere más memoria y recursos computacionales. El punto flotante de 16 bits es el formato de precisión reducido que utiliza la mitad de la memoria del punto flotante de 32 bits. Acelera los cálculos, especialmente en las GPU con núcleos de tensor, al tiempo que mantiene suficiente precisión numérica para muchas tareas de aprendizaje profundo. Utilizar la precisión de 16 bits puede acelerar significativamente los tiempos de entrenamiento, especialmente para modelos grandes como SDXL que involucran cálculos complejos. Además, la precisión reducida requiere menos ancho de banda de memoria, por lo que es posible entrenar modelos más grandes o tamaños de lotes dentro de los límites de hardware disponibles.
(De vuelta a la cima)
Instrucciones sobre cómo configurar su proyecto usando Colab. Siga el enlace a continuación para entrenarlo usted mismo. Puede encontrar el modelo de petróleo en la carpeta "statue_lora".
Para ejecutar la demostración de inferencia de línea de transmisión con el modelo de petróleo entrenado con el conjunto de datos de estatuas de mármol, use los siguientes comandos.
Para instalar los paquetes requeridos, en una terminal, escriba:
pip install -r requirements.txtEn una terminal, escriba:
streamlit run main.py(De vuelta a la cima)