El primer número del evento de donación de libros Go de Wang Zhongyang: "Principios y prácticas del compilador TVM"

Prefacio

Con el desarrollo de la inteligencia artificial, la demanda en campos como la visión por computadora, el procesamiento del lenguaje natural y el reconocimiento de voz sigue aumentando. Para satisfacer mejor estas necesidades, se han desarrollado muchos marcos de aprendizaje profundo, entre los cuales TVM (TVirtual Machine) es un excelente compilador que puede compilar modelos de aprendizaje profundo en código de máquina eficiente. Además, la idea central del compilador TVM es convertir el modelo de aprendizaje profundo en un gráfico informático eficiente y optimizar los nodos informáticos en el gráfico. De esta manera, el tiempo de cálculo al ejecutar el modelo se reducirá considerablemente y también se puede mejorar la eficiencia del consumo de energía del modelo. El proceso de implementación del compilador TVM se puede dividir en tres partes principales: front-end, capa intermedia y back-end.

Proceso de implementación del compilador TVM.

El proceso de implementación del compilador TVM se divide en tres contenidos principales. La primera es la parte frontal, que es responsable de convertir el modelo en el marco de aprendizaje profundo en un gráfico computacional abstracto. Durante este proceso, la interfaz puede realizar algunas operaciones de preprocesamiento basadas en la estructura y características del modelo, como la optimización y poda de gráficos. A continuación, la capa intermedia recibirá el gráfico de cálculo pasado desde el front-end y realizará una serie de operaciones de optimización. Estas operaciones incluyen transformación de gráficos, poda de gráficos, diseño de datos, optimización de memoria, etc. Finalmente, el gráfico de cálculo optimizado se pasará a la parte de back-end, y el back-end generará un código de máquina eficiente en función de las características del hardware de destino.

El proceso práctico del compilador TVM debe combinarse con un marco de aprendizaje profundo y una plataforma de hardware específicos. Por ejemplo, debemos elegir un marco de aprendizaje profundo adecuado y desarrollar y entrenar modelos en este marco. Para otro ejemplo, podemos usar la interfaz de usuario proporcionada por TVM para convertir el modelo en un gráfico de cálculo y realizar una serie de operaciones de optimización. Otro ejemplo es la necesidad de elegir un backend adecuado: TVM admite una variedad de plataformas de hardware, incluidas CPU, GPU y FPGA. De acuerdo con las características de la plataforma de destino, podemos utilizar la interfaz de backend proporcionada por TVM para generar código de máquina eficiente y realizar pruebas y optimización de rendimiento.

En la práctica, los compiladores TVM tienen muchas ventajas. Por ejemplo, TVM se puede optimizar para plataformas de hardware específicas y puede utilizar plenamente la potencia informática del hardware. Otro ejemplo es que TVM proporciona funciones de optimización ricas y puede realizar operaciones de optimización flexibles en gráficos de cálculo. Mejore efectivamente la eficiencia operativa del modelo; por ejemplo, TVM también admite una variedad de marcos de aprendizaje profundo y lenguajes de programación, lo cual es conveniente para los desarrolladores, y TVM tiene una curva de aprendizaje baja, por lo que los desarrolladores pueden comenzar a compilar y compilar rápidamente. optimizar el modelo.

Acerca de los "Principios y prácticas del compilador TVM"

A continuación, me gustaría recomendar un libro esencial sobre aprendizaje profundo, que es un libro sobre los principios y prácticas prácticas del compilador TVM, cuya información específica es la siguiente.

Insertar descripción de la imagen aquí

Selección del editor

Público objetivo: personal técnico y de ingeniería dedicado al desarrollo de algoritmos, software, chips de IA y compiladores de IA.

La Inteligencia Artificial (IA) se ha utilizado ampliamente en la industria de la información en todo el mundo. Los modelos de aprendizaje profundo han impulsado la revolución de la tecnología de IA, como TensorFlow, PyTorch, MXNet, Caffe, etc. La mayoría de los marcos de sistemas existentes solo están optimizados para una pequeña gama de GPU de clase servidor y, por lo tanto, requieren muchos esfuerzos de optimización para implementarse en otras plataformas, como automóviles, teléfonos móviles, dispositivos IoT y aceleradores especializados (FPGA, ASIC). A medida que aumenta la cantidad de modelos de aprendizaje profundo y backends de hardware, TVM crea una solución unificada basada en representación intermedia (IR). TVM no solo optimiza automáticamente los modelos de aprendizaje profundo, sino que también proporciona un marco de implementación de código abierto eficiente en todas las plataformas. La popularidad de los modelos grandes está aumentando gradualmente y TVM es un buen puente para transformar la teoría de la inteligencia artificial y el marco de algoritmos en la implementación práctica de proyectos. Por lo tanto, este libro agradará a un gran número de lectores.

breve introducción

TVM (Tensor Virtual Machine, Tensor Virtual Machine) es un marco de compilación de modelos de código abierto que tiene como objetivo compilar automáticamente modelos de aprendizaje automático en lenguaje de máquina que pueda ser ejecutado por el hardware subyacente, utilizando así varios tipos de potencia informática. Su principio de funcionamiento es optimizar primero la inferencia, la gestión de la memoria y la programación de subprocesos del modelo de aprendizaje profundo, y luego utilizar el marco LLVM para implementar el modelo en dispositivos de hardware como CPU, GPU, FPGA y ARM.

Este libro analiza exhaustivamente las funciones principales de TVM, ayuda a los lectores a comprender el principio de funcionamiento de TVM y utiliza TVM para optimizar e implementar el aprendizaje profundo y el aprendizaje automático.

Este libro combina los muchos años de experiencia laboral y de estudio del autor y se esfuerza por integrar la teoría básica de TVM y la práctica de casos para explicar en detalle. El libro tiene 9 capítulos en total, que incluyen conocimientos básicos de TVM, desarrollo utilizando TVM, fusión de operadores y optimización de gráficos, tecnología de cuantificación de TVM, programación de optimización de TVM, Relay IR, generación de código, implementación de back-end y OpenCL (Open Computing Language, Open Lenguaje Informático) Programación automática, búsqueda automática y modelo de costos. Además de contener importantes puntos de conocimiento y habilidades prácticas, cada capítulo también está equipado con casos típicos cuidadosamente seleccionados.

Este libro es adecuado para que lo lean técnicos de ingeniería, personal de investigación científica y gerentes técnicos involucrados en algoritmos de IA, software, desarrollo de compiladores y desarrollo de hardware. También puede usarse como libro de referencia para profesores y estudiantes en colegios y universidades relacionados con compiladores.

Sobre el Autor

Wu Jianming, graduado de la Universidad Jiao Tong de Shanghai con un doctorado en reconocimiento de patrones y sistemas inteligentes. Ha estado involucrado en el diseño de chips de inteligencia artificial durante mucho tiempo y es especialmente bueno en investigación teórica e innovación tecnológica en compiladores TVM/LLVM, marcos de IA, conducción autónoma, fabricación de chips, sistemas integrados y otros campos. Ha trabajado en primera línea durante mucho tiempo, incluido el diseño de productos y la implementación de códigos, y ha presidido y participado en la investigación y el desarrollo de más de 30 productos. También ha participado en proyectos de la Fundación Nacional de Ciencias Naturales y la Comisión Municipal de Ciencia y Tecnología de Shanghai, y ha publicado 8 artículos en revistas principales, 6 de las cuales es primer autor.

catalogo de libros

Capítulo 1 Conocimientos básicos de TVM/

1.1 Principios básicos de TVM/

1.1.1Descripción general de TVM/

1.1.2 Descripción general de la implementación de la optimización del modelo TVM/

1.2Proceso de compilación de TVM/

1.2.1 Proceso de compilación/

1.2.2Estructura de datos compilados TVM/

1.2.3Procesamiento de datos compilados TVM/

1.2.4Proceso de pase TVM/

1.3Arquitectura lógica de ingeniería de código abierto TVM/

1.3.1 Estructura del código base del código/

1.3.2 Código automático del kernel/

Soporte de aplicaciones 1.4TVM/

1.4.1Flujo de trabajo TVM/

1.4.2 Soporte multilenguaje y multiplataforma/

1.4.3Escenarios de aplicación TVM/

1.4.4Inferencia del modelo de optimización TVM/

1.4.5Compilador TVM y componentes de tiempo de ejecución/

1.4.6Módulos principales de tiempo de ejecución de TVM/

1.4.7Ejemplo de compilación y generación de código simple de TVM/

1.4.8 Relación entre módulos TVM/

1.5Características y desafíos de TVM/

1.5.1Características de TVM/

1.5.2 Admite múltiples dispositivos back-end/

1.5.3 Desafíos que enfrenta TVM/

Capítulo 2 Desarrollo utilizando TVM/

2.1 Configurar el entorno TVM/

2.1.1descarga del código fuente de Apache TVM/

2.1.2 Configurar el entorno de desarrollo TVM/

2.1.3 Cómo utilizar el entorno TVM conda/

2.1.4 Compilación e implementación/

2.1.5 Método de importación del modelo/

2.2 Compilar y optimizar el ejemplo de TVM yolov3 en el entorno conda/

2.3 Relación de llamada entre Python y C++/

2.3.1 La estructura de datos subyacente de C++ en TVM/

2.3.2 Registro de funciones/

2.3.3 Llamada Python de capa superior/

Ejemplo de código personalizado 2.4TVM/

2.4.1Cómo agregar código a TVM/

2.4.2Ejemplo de implementación de generación de código TVM/

2.5 Utilice TVM para implementar todo el proceso del algoritmo/

2.5.1 Configurar tensores y crear horarios/

2.5.2 Optimizar el operador de degradación/

2.5.3 Construir el programa de destino del host/

2.5.4 Implementar la generación de código back-end/

Capítulo 3 Fusión de operadores y optimización de gráficos/

3.1 Resumen de operadores/

3.1.1 Ejemplo de componente TVM Fusion/

3.1.2 Gráfico de cálculo de optimización/

3.2 Fusión del gráfico GCN/

3.2.1 Concepto de gráfico/

3.2.2 Nuevas características del aprendizaje profundo/

3.3 Ejemplo de GCN de fusión de gráficos /

3.3.1 Implementación PyTorch de GCN/

3.3.2 Fusión de capas BN y Conv/

3.4Optimización de gráficos TVM y fusión de operadores/

3.4.1 Optimización de gráficos y operadores/

3.4.2 Operador personalizado/

3.4.3 Pasos de fusión del operador/

3.4.4 Agregar operador/a Retransmisión

3.5 Optimización de un extremo a otro/

3.5.1 Descripción general del marco de IA/

3.5.2 Capa de optimización de gráficos computacionales/

3.5.3 Cuatro métodos de fusión de operadores TVM/

3.5.4 Conversión de diseño de datos/

3.5.5 Lenguaje de expresión tensorial/

3.5.6 Análisis del espacio de programación/

3.6 Análisis de soluciones de optimización de gráficos TVM y fusión de operadores/

3.6.1 Análisis del marco de optimización de gráficos /

3.6.2 Análisis básico de optimización TVM/

3.6.3Parámetros de optimización TVM/

3.6.4 Diagrama de optimización del operador/

3.6.5 Optimización personalizada a nivel de gráfico/

3.7 Tecnología del árbol de dominancia/

3.7.1 Descripción general del árbol de dominancia/

3.7.2 Esquema de fusión de operadores y ejemplos/

3.8 Flujo de control y optimizador/

3.8.1 Flujo de control/

3.8.2 Optimizador/

3.9Almacenamiento y programación de TVM/

3.9.1Optimización del compilador TVM/

3.9.2 Optimización básica de la estructura del gráfico/

3.9.3 Cálculo del tensor/

3.10 Acelerador tensorial multifuncional VTA/

3.10.1 Pila de hardware-software VTA-TVM/

3.10.2 Funciones principales del VTA/

3.10.3Ejemplo de VTA/

3.10.4Módulo de cálculo VTA/

3.10.5Control VTA/

3.10.6modelo microTVM/

3.11Estructura base del código TVM y ejemplos/

3.11.1 Estructura base del código/

3.11.2 Ejemplo de suma de tensor/

3.12 Ejecución del controlador del host/

3.12.1 binarios de firmware/

3.12.2 Declaración de cálculo/

3.12.3 Mosaico de datos/

3.12.4 Operación de convolución/

3.12.5 Llenado de espacios/

Capítulo 4 Tecnología de cuantificación TVM/

4.1Resumen cuantitativo de TVM/

4.1.1Estado de cuantificación TVM/

4.1.2Principio de cuantificación TVM/

4.2int8 cuantización y ejecución TVM/

4.2.1 Dos esquemas de cuantificación principales/

4.2.2int8 análisis de principios cuantitativos/

4.2.3 Cálculo de divergencia KL/

4.2.4 Implementar la cuantificación int8/

4.3 Entrenamiento e inferencia de baja precisión/

Cuantización 4.4NN/

4.4.1 Descripción general de la cuantificación de redes neuronales/

4.4.2 Optimizar datos y red/

4.4.3 Inferencia hacia adelante y propagación hacia atrás/

4.5 Ejemplo de calibración de entropía/

4.6Proceso de cuantificación de TVM/

4.6.1Dos cuantificaciones paralelas de Relay/

4.6.2 Optimización del relé Método Pass/

4.6.3 Descripción del hardware de procesamiento de cuantificación/

4.6.4 Esquema de estimación de umbrales/

4.6.5 Error de cuantificación analógica/

4.6.6 Cálculo de escala/

4.6.7 Asignación de tipos de datos/

4.6.8 Registro de asignación de tipos de datos/

4.6.9 Cuantificación de baja precisión de redes neuronales/

4.7Análisis Cuantitativo de Programas TVM/

Capítulo 5 Programación de optimización de TVM/

5.1Sistema de tiempo de ejecución TVM/

5.1.1Marco del sistema de ejecución TVM/

5.1.2 Compilación e implementación de PackedFunc/

5.1.3 Construir módulo PackedFunc/

5.1.4 Método de implementación remota/

5.1.5 Análisis del compilador y objetos TVM/

5.2 Gráficos estáticos diferenciales automáticos y gráficos dinámicos/

5.2.1 Clasificación de gráficos computacionales/

5.2.2 Ejemplo de implementación de gráfico dinámico/

5.3 Diferenciación automática del aprendizaje automático/

5.3.1 Método diferencial/

5.3.2 Diferenciación manual/

5.3.3 Diferenciación numérica/

5.3.4 Diferencial simbólico/

5.3.5 Diferenciación automática/

5.3.6 Ejemplo de implementación de diferenciación automática/

5.4 Análisis de matriz dispersa/

5.4.1 Concepto de matriz dispersa/

5.4.2 Optimización de matriz dispersa/

5.4.3 Almacenamiento de compresión de matriz específica/

5.4.4 Ejemplo de implementación de matriz dispersa/

5.5Análisis de cálculo del tensor TVM/

5.5.1 Generando operaciones tensoriales/

5.5.2 Paralelismo anidado y colaboración/

5.5.3 Cálculo cuantitativo/

5.5.4 Ocultación explícita de latencia de memoria/

Capítulo 6 Relé IR/

6.1Introducción de datos TVM/

6.1.1 Introducción al marco del módulo TVM/

6.1.2 Introducción al principio de IR del relé/

6.1.3 Construir gráfico de cálculo/

6.1.4 enlace y alcance de let /

6.2Generación de código IR/

6.2.1 Optimización del front-end/

6.2.2 Optimización de nodos/

6.2.3 Optimización algebraica/

6.2.4 Optimización del nivel de flujo de datos/

6.3 Registrar operadores en Relay/

6.3.1 Agregar nodos y definir parámetros de compilación/

6.3.2 Análisis de relación de tipo de operación/

6.3.3 Registro de macro RELAY_REGISTER_OP en C++/

6.3.4 Registro y programación de operadores/

6.3.5 Análisis API de la función de registro/

6.3.6 Paquete API de Python/

6.3.7 Análisis de pruebas unitarias/

6.4 Ejemplo de IR en TVM/

6.4.1Análisis técnico del módulo IR/

6.4.2Análisis de tiempo de ejecución de TVM/

6.4.3 Implementación de implementación predictiva/

6.4.4 Implementación de gráficos dinámicos/

Prólogo/prefacio del libro

La Inteligencia Artificial (IA) se ha utilizado ampliamente en la industria de la información en todo el mundo. Los modelos de aprendizaje profundo han impulsado la revolución de la tecnología de IA, como TensorFlow, PyTorch, MXNet, Caffe, etc. La mayoría de los marcos de sistemas existentes solo están optimizados para una pequeña gama de GPU de clase servidor y, por lo tanto, requieren muchos esfuerzos de optimización para implementarse en otras plataformas, como automóviles, teléfonos móviles, dispositivos IoT y aceleradores especializados (FPGA, ASIC). A medida que aumenta la cantidad de modelos de aprendizaje profundo y backends de hardware, TVM crea una solución unificada basada en representación intermedia (IR). TVM no solo optimiza automáticamente los modelos de aprendizaje profundo, sino que también proporciona un marco de implementación de código abierto eficiente en todas las plataformas.

Con la ayuda de TVM, los modelos de aprendizaje profundo se pueden ejecutar fácilmente en teléfonos móviles, dispositivos integrados e incluso navegadores con muy poco trabajo de personalización. TVM también proporciona un marco de optimización unificado para la informática de aprendizaje profundo en múltiples plataformas de hardware, incluidos algunos aceleradores dedicados con primitivas informáticas desarrolladas de forma independiente. TVM es un compilador de aprendizaje profundo que permite a todos utilizar el marco de código abierto para aprender y desarrollarse en cualquier momento y lugar. Se ha formado una comunidad diversa en torno a TVM, cuyos miembros incluyen proveedores de hardware, ingenieros compiladores e investigadores de aprendizaje automático que trabajan juntos para construir una pila de software programable unificada que enriquezca todo el ecosistema de tecnología de aprendizaje automático.

TVM es un nuevo tipo de compilador de IA que se utiliza ampliamente en el desarrollo de diversos productos y tiene una gran influencia en la investigación corporativa y académica. Sin embargo, actualmente hay muy pocos libros sobre TVM en el mercado y este libro intenta llenar este vacío. Las características del libro se resumen a continuación:

Primero, partiendo del concepto de TVM, se analizan los principios básicos y las tecnologías clave de soporte de TVM.

En segundo lugar, se desarrolla gradualmente desde la construcción del entorno TVM hasta la práctica de casos y analiza cómo utilizar TVM para el desarrollo práctico.

En tercer lugar, presenta las tecnologías clave importantes de TVM, como la fusión de operadores y gráficos, la tecnología de cuantificación, Relay IR (representación intermedia), programación optimizada, compilación e implementación, etc., y analiza la teoría y la práctica de casos de estos módulos.

Cuarto, TVM analiza y practica tecnologías relacionadas con el back-end, incluida la generación de código, la programación automática, la búsqueda automática y los modelos de costos, etc.

Durante el proceso de escritura de este libro, recibí todo el apoyo de mi familia y me gustaría expresarles mi profundo agradecimiento. También me gustaría agradecer a los editores de Machinery Industry Press, debido a su arduo trabajo y dedicación, este libro se publicó con éxito. Debido a la capacidad técnica limitada del editor, es probable que haya errores en el libro y esperamos que los lectores nos den sus consejos.

Una descripción general rápida del libro "Principios y práctica del compilador TVM"

Insertar descripción de la imagen aquí

Inicie el portal de "Principios y práctica del compilador TVM":

https://item.jd.com/13978563.html , Personalmente creo que este libro es muy bueno, especialmente para los desarrolladores en el campo de la inteligencia artificial. Es un libro bueno y poco común que vale la pena tener y estudiar.

Conclusión

A través de la introducción de este artículo, en general, el compilador TVM es una excelente herramienta de compilación de modelos de aprendizaje profundo que puede optimizar el modelo en código de máquina eficiente. Sus principios y prácticas pueden ayudarnos a desarrollar y optimizar rápidamente modelos de aprendizaje profundo. Mejorar la eficiencia operativa y eficiencia del consumo de energía del modelo. En el desarrollo futuro, se espera que TVM se convierta en una herramienta importante en el campo del aprendizaje profundo y haga mayores contribuciones al desarrollo de la inteligencia artificial. Por lo tanto, los amigos que están en el campo de la inteligencia artificial o que se dedicarán a la inteligencia artificial. El trabajo debe aprovechar el tiempo para aprender y comprender el compilador TVM y mantenerse al día con el ritmo del desarrollo tecnológico para evitar ser "eliminado".

Participa en la lotería

Agrégueme en WeChat: wangzhongyang1993, nota: lotería CSDN, lo invito a unirse al grupo de lotería para participar en la lotería.

Supongo que te gusta

Origin blog.csdn.net/w425772719/article/details/135452225
Recomendado
Clasificación