Presentamos OpenVINO 23.1: potenciando la IA generativa en el borde

Autor: Yury Gorbachev; Traductor: Wu Zhuo, Yang Yicheng

Durante el año pasado, hemos visto una explosión de casos y modelos de uso de IA generativa. Ahora se publican nuevos modelos generativos notables casi todas las semanas para diferentes dominios, entrenados en conjuntos de datos cada vez mayores y con diversas complejidades computacionales. Con enfoques como LoRA, se podrían ajustar modelos enormes en aceleradores de entrenamiento muy modestos y esto está desbloqueando más modificaciones de los modelos fundamentales. La implementación de esos modelos sigue siendo un desafío debido al consumo de recursos y depende en gran medida del servicio de los modelos en la nube.

Con la versión 23.2 de OpenVINO queremos llevar el poder de la IA generativa a computadoras de escritorio y portátiles normales, hacer posible ejecutar esos modelos localmente en entornos con recursos limitados y permitirle experimentar con ellos e integrarlos en sus aplicaciones. Trabajamos en todo nuestro producto para optimizar esos escenarios, implementamos algunas características críticas y establecimos las bases para el trabajo futuro que planeamos realizar.

Dicho esto, nuestros cambios no se limitaron a la IA generativa, hemos mejorado otras partes del producto y esperamos que facilite su trabajo y le brinde valor adicional.

Repasemos esos cambios y veamos cuáles son exactamente.

Durante el año pasado, hemos visto una explosión de casos y modelos de uso de IA generativa . Casi semanalmente se publican nuevos modelos generativos dignos de mención para diferentes dominios, entrenados en conjuntos de datos cada vez mayores y con diversas complejidades computacionales. Usando métodos como LoRA , se pueden ajustar modelos grandes en aceleradores de entrenamiento muy modestos, lo que desbloquea más modificaciones al modelo base. La implementación de estos modelos sigue siendo un desafío debido al consumo de recursos y depende en gran medida de la implementación de los modelos en la nube.

Con el lanzamiento de OpenVINO   2023.1 , esperamos llevar el poder de la IA generativa a computadoras de escritorio y portátiles normales, permitiendo que estos modelos se ejecuten en entornos locales con recursos limitados y se prueben e integren en su propia aplicación. Hemos optimizado todo el producto para estos escenarios, implementado algunas características clave y sentado las bases para nuestro próximo plan de trabajo.

Dicho esto, nuestros cambios no se limitan a la IA generativa , también hemos mejorado otras partes del producto y esperamos que facilite su trabajo y le brinde valor adicional. Echemos un vistazo a cuáles son estos cambios. .

Funciones de IA generativa

Capacidades de IA generativa

Optimizaciones generales de pila para modelos grandes. Los modelos de la familia de IA generativa tienen una cosa en común: necesitan muchos recursos. El tamaño del modelo es enorme, la cantidad de memoria necesaria para ejecutarlos es muy alta y la demanda de ancho de banda de memoria es enorme. Cosas simples como la copia innecesaria de pesos para la operación podrían provocar la imposibilidad de ejecutar el modelo debido a la falta de memoria.

Optimización general de la pila para modelos grandes. Los modelos de la familia de IA generativa tienen una cosa en común: necesitan muchos recursos. El tamaño de los modelos es enorme, la cantidad de memoria necesaria para ejecutarlos es muy alta y los requisitos de ancho de banda de la memoria también son muy altos. Algo tan simple como transferencias de peso innecesarias puede provocar que el modelo no pueda ejecutarse debido a una memoria insuficiente.

Para adaptarse mejor a eso, hemos trabajado en nuestra pila de inferencia, tanto para objetivos de CPU como de GPU (tanto integrados como discretos) para optimizar la forma en que trabajamos con esos modelos, incluida la optimización de la memoria que se requiere para leer y compilar el modelo, optimizaciones sobre cómo Manejar tensores de entrada y salida para modelos y otros componentes internos que mejoraron el tiempo de ejecución del modelo.

Para adaptarse mejor a esto , hemos trabajado en toda la pila de inferencia , incluidas CPU y GPU (tanto gráficos integrados como discretos), con el objetivo de optimizar la forma en que utilizamos estos modelos, incluida la optimización de la memoria necesaria para leer y compilar los modelos, optimizando Cómo manejar los tensores de entrada y salida del modelo y otras estructuras internas para reducir el tiempo de ejecución del modelo.

Cuantización de pesos para modelos de lenguaje grandes. Los LLM requieren un ancho de banda de memoria significativo cuando se ejecutan. Para optimizar esto, hemos implementado la función de cuantificación de pesos int8 LLM dentro de nuestro marco de optimización NNCF y para la inferencia de CPU.

"Cuantificación del peso para modelos de lenguaje grandes ". LLM requiere un ancho de banda de memoria significativo al ejecutarse. Para optimizar esto, implementamos la función de cuantificación de peso int8 LLM en el marco de optimización NNCF (Neural Network Compression Framework) y la inferencia de CPU.

Al utilizar esta función, NNCF generará un archivo IR optimizado que será dos veces más pequeño en comparación con el archivo de modelo normal que tiene una precisión fp16. El archivo IR permitirá optimizaciones adicionales dentro del complemento de la CPU, lo que resultará en mejoras de latencia y reducción en el consumo de memoria en tiempo de ejecución. Se está implementando una función similar para GPU y estará disponible en próximas versiones.

Al utilizar esta función, NNCF generará un archivo de modelo IR optimizado que tiene la mitad del tamaño en comparación con un archivo de modelo normal con una precisión de fp16. Los archivos IR estarán sujetos a optimizaciones adicionales en el complemento de la CPU, lo que mejorará la latencia y reducirá el consumo de memoria en tiempo de ejecución. Se están implementando capacidades similares para GPU y estarán disponibles en versiones posteriores.

Conversión de modelos más sencilla. La mayoría de los LLM provienen actualmente de un entorno basado en PyTorch. Para convertir esos modelos, ahora puede utilizar nuestra función de conversión directa de PyTorch. Para los LLM, esto acelera significativamente el tiempo de conversión y reduce las demandas de memoria en comparación con nuestra ruta anterior a través del formato ONNX.

Más fácil de convertir modelos. La mayoría de los LLM actualmente provienen de entornos basados ​​en PyTorch. Para convertir estos modelos, ahora puede utilizar nuestra función de conversión directa de PyTorch. Para LLM, esto acelera significativamente los tiempos de conversión y reduce los requisitos de memoria en comparación con nuestro camino anterior a través del formato ONNX.

En general, como resultado de nuestras optimizaciones, pudimos mejorar el rendimiento de LLM por un factor de TBD en la CPU y un factor de TBD en la GPU. Además, hemos reducido la cantidad de memoria necesaria para ejecutar esos modelos por un factor de xxx . En algunos casos, las optimizaciones que hemos realizado permitieron que el modelo se ejecutara ya que la inferencia anterior se estaba quedando sin memoria. Hemos estado validando nuestro trabajo en docenas de LLM de diferentes tamaños y para diferentes tareas para garantizar que nuestro enfoque se adapte bien a todas nuestras plataformas y sistemas operativos compatibles.

En general, gracias a nuestras optimizaciones, pudimos mejorar el rendimiento de LLM tanto en CPU como en GPU. [WZ1]  Además, hemos reducido exponencialmente la cantidad de memoria necesaria para ejecutar estos modelos. En algunos casos, las nuevas versiones de OpenVINO nos permiten ejecutar modelos que anteriormente fallaban por falta de memoria. Hemos estado validando nuestro trabajo en docenas de LLM de diferentes tamaños y diferentes tareas para garantizar que nuestro enfoque se adapte bien a todas nuestras plataformas y sistemas operativos compatibles.

Nuestra API de conversión y función de cuantificación de pesos también están integradas en la extensión de inteligencia óptima Hugging Face que le permite ejecutar modelos generativos utilizando OpenVINO como pila de inferencia o exportar modelos al formato OpenVINO de manera conveniente.

Nuestra API de transformación y capacidades de cuantificación de peso también están integradas en la extensión de inteligencia óptima de Hugging Face, lo que le permite ejecutar modelos generativos utilizando OpenVINO como pila de inferencia o exportar modelos al formato OpenVINO de una manera conveniente.

Simplificando su flujo de trabajo

Simplifique su flujo de trabajo

No más paquetes de desarrollo, disponibilidad de herramientas unificadas . A partir de la versión 23.2, ya no le pediremos que instale paquetes separados para el tiempo de ejecución y el desarrollo. Hemos trabajado para simplificar nuestras herramientas e integrar todos los componentes necesarios en un único paquete openvino. Esto también significa que la conversión e inferencia de modelos está disponible de manera uniforme, a través de todos los mecanismos de distribución de OpenVINO: pip, conda, brew y archives.

Además, a partir de esta versión, la API OpenVINO Python está disponible en todos los paquetes que admiten la versión mínima requerida de Python (3.7). Eso significa conda, brew y versiones aptas seleccionadas además del pip que estaba disponible anteriormente.

Ya no se necesitan kits de desarrollo y se proporcionan herramientas unificadas. A partir de la versión 2023.1, ya no requerimos que instale paquetes separados para los entornos de desarrollo y tiempo de ejecución. Hemos estado trabajando para simplificar nuestras herramientas e integrar todos los componentes necesarios en un único paquete OpenVINO. Esto también significa que la transformación e inferencia del modelo están disponibles de forma unificada a través de todos los mecanismos de distribución de OpenVINO: pip, conda, brew y archive.

Además, a partir de esta versión, la API OpenVINO Python está disponible en todos los paquetes que admiten la versión mínima requerida de Python (3.7). Esto significa que, además del pip disponible anteriormente, también hay versiones conda, brew y apt especificadas.

Conversión de modelos más eficiente y amigable. Estamos presentando la herramienta OpenVINO Model Conversion (OVC) que reemplaza nuestra conocida herramienta Model Optimizer (mo) en tareas de conversión de modelos fuera de línea. Esta herramienta está disponible en el paquete openvino, se basa en interfaces de modelos internos para leer los formatos del marco y no requiere el marco original para realizar la conversión del modelo. Por ejemplo, no necesita tener instalado TensorFlow si desea convertir el modelo TF a OpenVINO. De manera similar, no necesita tener TensorFlow si simplemente desea leer este modelo dentro del tiempo de ejecución de OpenVINO para realizar inferencias sin conversión.

Conversión de modelos más eficiente y fácil de usar. Presentamos la herramienta de conversión de modelos OpenVINO (OVC), que reemplaza nuestra conocida herramienta Model Optimizer (MO) en las tareas de conversión de modelos fuera de línea. La herramienta se proporciona como un paquete OpenVINO y se basa en una interfaz de modelo interna para leer el formato del marco y no requiere el marco original para realizar la conversión del modelo. Por ejemplo, si desea convertir un modelo TF a OpenVINO, no necesita instalar TensorFlow. Del mismo modo, si simplemente desea leer este modelo en el tiempo de ejecución de OpenVINO para realizar inferencias sin conversión, tampoco se requiere TensorFlow.

Para convertir modelos dentro del script Python, hemos mejorado aún más nuestra API convert_model. Por ejemplo, permite convertir el modelo de un objeto PyTorch al modelo OpenVINO y compilar el modelo para inferencia o guardarlo en IR; consulte el ejemplo a continuación:

Para convertir modelos en scripts de Python, hemos mejorado aún más la API convert_model. Por ejemplo, permite convertir modelos de objetos PyTorch a modelos OpenVINO y compilar el modelo para inferencia o guardarlo en formato IR, consulte el siguiente ejemplo:

Tenga en cuenta que también hemos optimizado nuestras API de Python, por lo que están disponibles directamente desde el espacio de nombres openvino, esto es mucho más sencillo ahora. Aún puede acceder a funciones desde espacios de nombres antiguos e instalar openvino-dev si necesita la herramienta mo. La herramienta en sí también está disponible, pero recomendamos migrar a la herramienta ovc.

Tenga en cuenta que también hemos simplificado nuestras API de Python, haciéndolas disponibles directamente desde el espacio de nombres OpenVINO, por lo que esto es aún más sencillo. Aún puede acceder a funciones desde el espacio de nombres anterior y, si necesita más herramientas, puede instalar openvino-dev. La herramienta en sí todavía está disponible, pero recomendamos migrar a la herramienta OVC.

Cambiando a fp16 IR de forma predeterminada. Con cambios en nuestras herramientas de conversión, ahora estamos cambiando al uso de precisión fp16 como tipo de datos en nuestro IR. Esto permite reducir el tamaño del modelo en un factor de 2 y no tiene ningún impacto en la precisión según las pruebas que hemos realizado. Es importante mencionar que la precisión de IR no afecta la precisión de ejecución dentro de los complementos, que siempre continúan ejecutándose con el mejor rendimiento de forma predeterminada.

Cambia a fp16 IR de forma predeterminada . Junto con los cambios en la herramienta de conversión, ahora pasamos a utilizar la precisión fp16 como tipo de datos en IR. Esto permite reducir el tamaño del modelo a la mitad (en relación con los modelos de precisión FP32) y no tiene ningún impacto en la precisión según las pruebas que realizamos. Vale la pena mencionar que la precisión de IR no afecta la precisión de ejecución del complemento de hardware y, de forma predeterminada, el complemento siempre continúa ejecutándose con un rendimiento óptimo.

Mejor compatibilidad con PyTorch

Mejor compatibilidad con PyTorch

Ya se mencionó que nuestra función de conversión directa de PyTorch ya está madura y la estamos usando nosotros mismos, por ejemplo, dentro de nuestra solución de inteligencia óptima HuggingFace para convertir modelos. Por lo tanto, ahora es más fácil convertir modelos ya que se omite el paso adicional del formato ONNX (que todavía admitimos sin limitaciones).

Como se mencionó anteriormente, la función de convertir directamente modelos PyTorch ya está madura y la solución se ha integrado en nuestra información óptima HuggingFace para la conversión de modelos. Por lo tanto, convertir su modelo ahora es más fácil porque omite el paso adicional del formato ONNX (que aún admitimos sin restricciones).

Para acercar aún más OpenVINO al ecosistema PyTorch, estamos introduciendo soporte para torch.compile y el backend correspondiente. ¡Ahora puede ejecutar su modelo a través de la pila OpenVINO compilándolo a través de torch.compile y especificando openvino como backend!

Para acercar OpenVINO al ecosistema PyTorch, introdujimos soporte para torch.compile y el backend correspondiente. ¡Ahora puede ejecutar su modelo a través de la pila OpenVINO compilándolo a través de torch.compile y especificando openvino como backend!

Vea a continuación, por ejemplo:

Como se muestra en el siguiente ejemplo:

Esta característica se está mejorando activamente, esperamos un mejor rendimiento y cobertura operativa, pero ya se utiliza en nuestras integraciones, por ejemplo con Stable Diffusion WebUI ( enlace ).

Esta característica se está mejorando activamente y esperamos un mejor rendimiento y cobertura operativa, pero ya se utiliza en nuestras integraciones, como Stable Diffusion WebUI (enlace).

Nuevos portátiles con interesantes casos de uso

Nuevos e interesantes casos de uso de portátiles

Para mostrar nuevas capacidades que puede probar directamente desde su computadora portátil, hemos creado algunas computadoras portátiles y hemos actualizado las existentes. A continuación se muestran los que más nos entusiasman:

Para mostrar las nuevas funciones que puede probar directamente desde su computadora portátil, creamos algunos ejemplos de computadoras portátiles Jupyter y actualizamos las computadoras portátiles existentes. Estos son los que más nos entusiasman:

Chatbot basado en modelo de lenguaje grande (LLM Chatbot):

https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/254-llm-chatbot

Diagrama Vincent modelo StableDiffusion XL:

https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/248-stable-diffusion-xl

Diagrama Vincent modelo Tiny SD:

https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/251-tiny-sd-image-generación

Generar modelo musical MusicGen:

https://github.com/openvinotoolkit/openvino_notebooks/blob/main/notebooks/250-music-generación

Generar modelo de video Texto a video:

https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/253-zeroscope-text2video

Darth Vader surfea sobre olas

​编辑icono-default.png?t=N7T8https://camo.githubusercontent.com/64eec6e52d060ca971c5a3be3f0d60e712907c98b4661b454d7e3e9575c2bc6b/68747470733a2f2f68756767696e67666163652e636f2f64617461736574732f68756767696e67666163652f646f63756d656e746174696f6e2d696d616765732f7265736f6c76652f6d61696e2f6469666675736572732f646172746876616465725f63657270656e73652e676966

Supongo que te gusta

Origin blog.csdn.net/gc5r8w07u/article/details/133075574
Recomendado
Clasificación