Explicación detallada de Modular: ¿Cómo crea el padre de LLVM el futuro lenguaje del motor de IA?

Estructura de este artículo

**1.¿Qué es un compilador? **

2. Acerca de Chris Lattner, el padre de LLVM

  • ¿Qué son XLA y MLIR? *¿Qué es LLVM?
  • ¿Qué es el sonido metálico? *La relación entre Clang y LLVM

3.Acerca de Modular

  • Modular——motor de inteligencia artificial
  • Acerca de la TPU de Google
  • Acerca del aprendizaje profundo y la programabilidad
  • ¿Cuáles son los desafíos técnicos en la construcción del motor?

4. Sobre emprendimiento, formación de equipos de ingeniería y el futuro de la IA

**1.¿Qué es un compilador? **

Un compilador es una herramienta de software que traduce lenguajes de programación de alto nivel en código ejecutable por computadora. El compilador convierte el código fuente escrito por el programador en instrucciones binarias que la computadora puede comprender y ejecutar. Estas instrucciones se empaquetan en un archivo o biblioteca ejecutable. para ejecutar programas en su computadora.

El flujo de trabajo principal del compilador es código fuente → preprocesador → compilador → código objeto → enlazador → programas ejecutables (utables)

Otro ejemplo vívido:

*Maestra: Niños, hoy vamos a aprender a sumar. *

bla bla bla ……

*Niños: Maestra, aprendimos. *

Maestro: ¿Ahora puedes entender 1+1=? El compilador

2. Chris Lattner, el padre de LLVM

Antes de hablar de Modular, hablemos primero de la experiencia de Chris Lattner, nació en California en 1978 y creció en el Área de la Bahía de San Francisco. Comenzó a programar cuando era muy joven, luego se licenció en Ciencias de la Computación de UC Berkeley y estudió un doctorado en la Universidad de Stanford, centrándose en la optimización del compilador y la paralelización automática.

Chris Lattner lideró el desarrollo de LLVM durante su doctorado. Gracias a LLVM, ganó el ACM Software Award 2012** (ACM Software Award)****. Después de eso, Lattne fue contratada por Apple y fue responsable de muchos proyectos importantes en Apple, incluido el diseño y desarrollo del front-end del compilador Clang, el lenguaje de programación Swift (el lenguaje que reemplazó a Objective-C) y la mejora del entorno de desarrollo Xcode. El lenguaje Swift es muy popular por su simplicidad y rendimiento y los desarrolladores lo utilizan para el desarrollo de aplicaciones en iOS, macOS y otras plataformas Apple.

Después de dejar Apple, Chris Lattner trabajó en empresas como Tesla y Google, y continuó publicando artículos de investigación y participando en proyectos de código abierto en el campo de los lenguajes de programación y tecnologías de compilación. Fue responsable de liderar el equipo de infraestructura de Tensorflow. en Google. , creó XLA y MLIR.

Aquí te explicamos qué son XLA y MLIR:

XLA (Álgebra lineal acelerada) es un compilador de álgebra lineal de dominio específico que puede acelerar los modelos de TensorFlow, potencialmente sin requerir ningún cambio en el código fuente. Puede mejorar la velocidad de carrera y mejorar el uso de la memoria. ***

***MLIR (Representación intermedia de niveles múltiples:Representación intermedia de niveles múltiples) es un marco de compilación. Su diseño optimiza el compilador y básicamente cubre todas las partes comunes del diseño del compilador. , lo que en gran medida facilita a los desarrolladores de compiladores. *

**Más importante aún, ¿qué es LLVM? **(Lo siguiente es un extracto del breve libro; consulte el enlace de referencia para ver el texto original)

**LLVM puede entenderse como una colección de tecnologías de cadena de herramientas y compiladores modulares y reutilizables. LLVM (en realidad el nombre completo de Low Level Virtue Machine, pero nunca se ha utilizado como máquina virtual) Por lo tanto, el siguiente LLVM no es un acrónimo; es el nombre completo del proyecto.

Luego continuamos, La arquitectura del compilador tradicional se ve así:

Desmontado, incluye:

  • Frontend: front-end (análisis léxico, análisis de sintaxis, análisis semántico, generación de código intermedio)
  • Optimizador: optimizador (optimización de código intermedio)
  • Backend: backend (genera código de máquina)

La arquitectura LLVM se ve así

**Para describirlo con precisión, LLVM ha realizado muchas innovaciones en el compilador, como: **

  • Diferentes front-end y back-end utilizan código intermedio unificado Representación intermedia LLVM (LLVM IR)
  • Si necesita admitir un nuevo lenguaje de programación, solo necesita implementar una nueva interfaz
  • Si necesita admitir un nuevo dispositivo de hardware, solo necesita implementar un nuevo backend
  • La fase de optimización es una fase universal. Está dirigida al LLVM IR unificado. Ya sea que admita nuevos lenguajes de programación o nuevos dispositivos de hardware, no es necesario modificar la fase de optimización.
  • Por el contrario, el front-end y el back-end de GCC no están demasiado separados, y el front-end y el back-end están acoplados. Por lo tanto, a GCC le resulta particularmente difícil admitir un nuevo idioma o una nueva plataforma de destino.
  • LLVM ahora se utiliza como una infraestructura común para implementar varios lenguajes compilados estáticos y en tiempo de ejecución (familia GCC, Java, .NET, Python, Ruby, Scheme, Haskell, D, etc.)

**¿Qué es el sonido metálico? **

Un subproyecto del proyecto LLVM, un compilador front-end C/C++/Objective-C basado en la arquitectura LLVM. En comparación con GCC, Clang tiene las siguientes ventajas

  • Velocidad de compilación rápida: En algunas plataformas, la velocidad de compilación de Clang es significativamente más rápida que la de GCC (la velocidad de compilación de OC en modo de depuración es 3 veces más rápida que la de GGC)
  • Pequeña huella de memoria: la memoria ocupada por el AST generado por Clang es aproximadamente una quinta parte de la de GCC
  • Diseño modular: Clang adopta un diseño modular basado en biblioteca, que es fácil de integrar con IDE y reutilizar para otros fines.
  • La información de diagnóstico es muy legible: durante el proceso de compilación, Clang crea y retiene una gran cantidad de metadatos detallados (metadatos), lo que resulta beneficioso para la depuración y los informes de errores.
  • El diseño es claro y simple, fácil de entender, fácil de ampliar y mejorar.

Relación entre Clang y LLVM

Para la arquitectura general de LLVM, clang se utiliza como interfaz. LLVM en un sentido amplio se refiere a toda la arquitectura LLVM, y LLVM en un sentido general restringido se refiere al backend de LLVM (incluida la optimización del código y la generación de código de destino).

El código fuente (c/c++) pasa por clang--> código intermedio (después de una serie de optimizaciones, Pass se usa para la optimización) --> código de máquina

Referencia: Jianshu-12 de agosto de 2018: una explicación sencilla para ayudarle a comprender qué es LLVM

3.Acerca de Modular

Modular——Motor de Inteligencia Artificial

  • **¿Qué piensa C****hris Lattner sobre los compiladores y el espíritu empresarial como Modular? **

C****hris Lattner:"Creé Modular no con un martillo buscando clavos, ni con la innovación por innovar. Actualmente, para empresas como OpenAI, un pequeño número de empleados necesita gastar mucho de tiempo escribiendo manualmente kernels CUDA. Sin embargo, las optimizaciones para los compiladores de IA se pueden utilizar para mejorar la colaboración del software y ampliar las capacidades de personas con diferentes habilidades y conocimientos"

**"La forma final del compilador es permitir a los usuarios usar código ensamblador muy simple para completar cualquier tarea y resolver problemas sin tener que saber mucho sobre el hardware. El verdadero papel del compilador es utilizar un nivel de abstracción más alto para expresar. **"

**"*El FasterTransformer lanzado por NVIDIA puede aportar enormes mejoras de rendimiento. Por lo tanto, muchas grandes empresas de modelos y desarrolladores están utilizando FasterTransformer. Sin embargo, si desea innovar en el campo de Transformer, FasterTransformer lo limitará".

  • ** En otras palabras, el papel del compilador radica en su generalización ¿Cómo entender la generalización aquí? **

C****hris Lattner: Si desea obtener los mismos o mejores resultados que FasterTransformer, pero utilizando otras arquitecturas generales (en este caso, arquitecturas que no son de Transformer), a través del compilador, puede obtener lo mejor de ambas. worlds Como resultado, se puede obtener el mismo rendimiento excelente durante la investigación, es decir, la optimización a nivel del compilador puede ser equivalente a un "motor de IA" y ayudar en la transformación de la arquitectura LLM en el futuro.

  • **Mojo es actualmente muy popular y es compatible con el ecosistema Python, pero el objetivo de Modular es construir un motor de inteligencia artificial unificado. Entonces, desde su perspectiva, ¿cuáles son los problemas actuales que deben resolverse en el campo de la investigación y el desarrollo de la inteligencia artificial? **

Chris Lattner: Si nos remontamos al período de 2015, 2016 y 2017, el rápido desarrollo de la inteligencia artificial, la tecnología de esa época fue liderada principalmente por TensorFlow y PyTorch. PyTorch apareció un poco más tarde que TensorFlow. pero ambos son diseños similares en algunos aspectos. ** Sin embargo, las personas que construyen y diseñan los sistemas TensorFlow y PyTorch tienen principalmente experiencia en inteligencia artificial, ecuaciones diferenciales y diferenciación automática, y no han resuelto el problema de los límites entre software y hardware. **

Por lo tanto, se necesita Keras* (Nota: Keras es una biblioteca de redes neuronales artificiales de código abierto escrita en Python. Puede usarse como una interfaz de programación de aplicaciones de alto nivel para Tensorflow, Microsoft-CNTK y Theano para llevar a cabo modelos de aprendizaje profundo. El diseño, depuración, evaluación, aplicación y visualización ) o nn.Module (Nota: nn.Module * es un concepto exclusivo de PyTorch y también es una clase que se usará con frecuencia usado*)*.

La capa inferior de estas cosas son en realidad operadores: ¿cómo implementar convolución, multiplicación de matrices, algoritmos de reducción y operaciones elemento por elemento? Debe utilizar CUDA e Intel MKL (Intel Math Kernel Library) y luego continuar construyendo sobre estas bases.

Este modelo está bien al principio, pero el problema también existe: hay muy pocos operadores al principio, sin embargo, a medida que se introduce un nuevo hardware, incluso si es solo una nueva variante de CPU introducida por Intel, la complejidad computacional aumentará. Continúa aumentando. Hoy en día, TensorFlow y PyTorch tienen miles de operadores, cada uno llamado kernel, y todos los kernels deben ser escritos manualmente por humanos.

(Nota: IP en la industria de los chips generalmente también se denomina núcleo IP. El núcleo IP se refiere al diseño maduro de módulos de circuito con funciones independientes en el chip. Este diseño de módulo de circuito se puede aplicar a otros diseños de chips que contienen este módulo de circuito. proyecto, reduciendo así la carga de trabajo de diseño, acortando el ciclo de diseño y mejorando la tasa de éxito del diseño de chips. El diseño maduro de este módulo de circuito encarna la sabiduría del diseñador y refleja los derechos de propiedad intelectual del diseñador. Por lo tanto, la industria de chips utiliza núcleos IP para Indica el diseño maduro de este módulo de circuito. El núcleo IP también puede entenderse como el componente intermedio del diseño del chip)

En otras palabras, una vez que se lanza nuevo hardware, hay que reescribir miles de Kernels, por lo que el umbral para ingresar al hardware será cada vez más alto. Además, esta situación también crea muchas dificultades para la investigación científica. Por ejemplo, un investigador, muy pocos saben cómo funcionan estos núcleos.

(Nota: debido a que el desarrollo del kernel suele ser específico de las plataformas de hardware, ni siquiera nvidia es universal, y mucho menos FPGA o DPU. Los operadores personalizados son el canal principal para expandir las capacidades informáticas del software de la plataforma de hardware)

También debe saber que muchas personas ahora están escribiendo CUDA Kernel* (Nota: Kernel: el nombre de la función ejecutada por CUDA en la GPU)*, pero el perfil de habilidades de los ingenieros aquí es completamente diferente de las habilidades que pueden innovar. arquitectura modelo. **Como resultado, muchos sistemas de inteligencia artificial enfrentan tal desafío: no pueden encontrar expertos técnicos que puedan escribir Kernel. **

*(Nota: *Cuando se utiliza GPU para el cálculo, todos los procesos de cálculo se pueden encapsular en un kernel de GPU y ejecutarse en la GPU de manera secuencial. En aras de la versatilidad, las bibliotecas de operadores tradicionales El diseño es muy básico, por lo que no son muchos)

Acerca de la TPU de Google

Participé en el proyecto TPU de Google cuando estaba en Google, en ese momento los desafíos que enfrentaba el equipo de TPU incluían: Hay miles de Kernels diferentes en el mercado, ¿cómo lanzar un hardware novedoso? En ese momento, muchos colegas también mencionaron si se podría utilizar un compilador para lograr esto. **Entonces, en lugar de escribir a mano miles de Kernels, reescribir todos estos operadores y crear completamente su propio ecosistema como Intel o NVIDIA, el compilador puede ser más flexible que el manual porque el compilador puede permitirnos hacerlo de diferentes maneras. y el Kernel correspondiente también puede optimizar mucho el rendimiento. **

**Los compiladores pueden lograr esto de manera generalizada, pero si usamos el Kernel tradicional escrito a mano, lo que resulta debe ser una disposición fija de Kernels que la gente piensa que es interesante, en lugar de algo nuevo que los investigadores quieran. ** Entonces nació XLA de Google (Explicado arriba: Álgebra lineal acelerada: Álgebra lineal acelerada). XLA puede soportar computadoras de nivel exaflop a gran escala, pero el problema vuelve a surgir: XLA surgió para soportar la TPU de Google.

** Es realmente difícil construir un compilador y todavía existen problemas de escalabilidad. Actualmente, se deben contratar ingenieros compiladores para completar muchos proyectos de ingeniería de aprendizaje automático, y los ingenieros compiladores que comprenden el aprendizaje automático y diversos conocimientos relacionados son aún más importantes. suficiente. Además, XLA no es escalable y sólo funciona con TPU. **

Acerca del aprendizaje profundo y la programabilidad

Si miramos hacia atrás en la historia del desarrollo de CUDA de NVIDIA y el aprendizaje profundo, como el nacimiento de AlexNet y el desarrollo del aprendizaje profundo, muchas personas creen que el nacimiento de AlexNet es el resultado de la combinación de datos, ImageNet + computación y El poder de la GPU. **

(Nota: En 2012, Alex Krizhevsky e ilya, estudiantes de Geoffrey Hinton, uno de los tres gigantes del aprendizaje profundo y ganador del Premio Turing, propusieron AlexNet y ganaron el campeonato con una ventaja significativa en el ILSVRC ese año, superando con creces el tercero Dos. Este resultado ha atraído gran atención de la academia y la industria, y la visión por computadora ha entrado gradualmente en una era dominada por el aprendizaje profundo)

**Pero mucha gente olvida la importancia de la "programabilidad". **

Porque fue CUDA lo que permitió a los investigadores inventar núcleos convolucionales que no existían antes, y TensorFlow no existía en ese momento. **De hecho, es la combinación de datos, computación y programabilidad lo que permite que investigaciones novedosas pongan en marcha toda una ola de sistemas de aprendizaje profundo. **

**Por lo tanto, es muy importante aprender de los acontecimientos y la historia del pasado. Entonces, ¿cómo se da el siguiente paso? ¿Cómo avanzamos hacia la próxima era de esta tecnología donde todos puedan beneficiarse de las increíbles ideas e innovaciones algorítmicas de la humanidad? **¿Cómo beneficiarse del compilador? ¿Cómo se puede aprovechar la escala y la versatilidad de los compiladores para resolver nuevos problemas? **Lo más importante es ¿cómo se beneficia la programabilidad? Este es el Modular en el que estamos trabajando: el motor de inteligencia artificial. **

Sobre el futuro de la inteligencia artificial

  • **¿Cómo ve el futuro del desarrollo de la inteligencia artificial? ¿Crees que habrá más colaboración entre equipos con diferentes perfiles o direcciones? ¿Uno de sus objetivos es facilitar el uso del compilador a los no expertos en compiladores? **

**Chris Lattner: **Los seres humanos son increíbles, pero nadie puede poner todo en su cabeza. **Personas de diferentes tipos y especialidades trabajando juntas pueden crear algo más grande que todos los demás. Por ejemplo, tengo alguna habilidad. , pero básicamente no recuerdo ninguna ecuación diferencial, ¿verdad? Así que el próximo inventor de la arquitectura LLM definitivamente no seré yo (risas).

**Pero si lo pienso desde una perspectiva de sistemas, si puedo lograr que estas personas contribuyan, colaboren y comprendan cómo funcionan estas cosas, habrá un gran avance. **¿Cómo promover la invención? ¿Cómo conseguir que más personas que entienden diferentes partes del problema colaboren realmente? **Por lo tanto, la exploración de Mojo y el motor es un esfuerzo por eliminar la complejidad del problema. Porque hay muchos sistemas ya construidos que simplemente se agregan. **

Las soluciones aquí generalmente se basan simplemente en resolver el problema en lugar de diseñarse de arriba hacia abajo. Y creo que Modular proporciona una pila más simple que puede ayudar a reducir la complejidad de toda la pila. Si no se refactoriza, seguirá la historia fragmentada y caótica* (fragmentación en el campo de la inteligencia artificial)* Una vez que quieras cámbielo un poco, fallará, el rendimiento será terrible o no funcionará, esta situación proviene de la fragmentación de la capa subyacente.

  • **Cómo entender a los compiladores: ¿Son los compiladores y los lenguajes un medio para la colaboración o el cruce entre humanos? **

Chris Lattner: Creé Modular no para buscar clavos con un martillo, ni para innovar por el bien de la innovación. Actualmente, para empresas como OpenAI, una pequeña cantidad de empleados necesitan dedicar mucho tiempo a escribir CUDA manualmente. granos. **Sin embargo, las optimizaciones para los compiladores de IA se pueden utilizar para mejorar la colaboración del software y ampliar las capacidades de personas con diferentes habilidades y conocimientos. **

La forma final del compilador es permitir a los usuarios completar cualquier tarea y resolver problemas usando un código ensamblador muy simple sin tener que saber mucho sobre el hardware. El verdadero papel del compilador es poder realizar tareas en un nivel más alto de abstracción. .Expreso. Los compiladores también son una forma de automatizar adecuadamente optimizaciones comunes que de otro modo podrían requerir programación manual.

El primer objetivo es agilizar el proceso lo más posible;

El segundo objetivo es que si eliminas mucha complejidad de tu mente, puedas dejar espacio para nueva complejidad. Además, a través de la abstracción, puedes aprovechar el compilador, porque el compilador tiene una atención infinita a los detalles, mientras que los humanos no;

**Los niveles más altos de abstracción también pueden brindarnos muchas otras habilidades. **Los sistemas de aprendizaje profundo y Modular han elevado los cálculos al nivel gráfico. ¿Cómo explicarlo? Aquí, significa que una vez que se libera de declaraciones de programación complejas como los bucles for y se vuelve más declarativo, significa cambiar el modelo de cálculo. Mucha gente aún no se da cuenta de esto, pero creo que es posible. Debido a que el sistema existente es fácil de causar dolores de cabeza, muchas funciones proporcionadas por la abstracción son para implementar Pmap y Vmap (Nota: estas dos funciones incluyen derivación automática y paralelización)

La mejora de la tecnología se ha beneficiado de una gran cantidad de sistemas bien estructurados y bien estructurados, una gran cantidad de hardware informático novedoso de alto rendimiento y una gran cantidad de avances que se han logrado. ** Por lo tanto, tengo muchas esperanzas Que Modular puede tener más aplicaciones y popularidad, rompiendo la complejidad de la serie, esto es maravilloso. **

(Nota: La mayor diferencia entre la programación declarativa y la programación ordinaria es que existe un concepto adicional de tiempo. Puede definir el pasado, el presente y el futuro, en lugar de mantener el tiempo unidireccional de todo el enlace de ejecución. Con el concepto tiempo, el contenido de la definición se puede simplificar y luego el gráfico de cálculo se puede obtener mediante "deducción", en lugar de escribir un operador aquí y un operador allá, y armar un gráfico estático)

  • **¿Puedes definir el motor de inteligencia artificial, el marco de inteligencia artificial y el compilador de inteligencia artificial de Modular? **

Chris Lattner: La mayoría de la gente utilizará herramientas como PyTorch al entrenar modelos grandes. En tal escenario, pronto se introducirán CUDA o Intel MKL. Llamo a estos tipos de motores colectivamente y menciono Al motor, principalmente Se refiere a la interfaz de hardware, y Modular proporciona un nuevo motor que puede introducir TensorFlow, PyTorch y otros. Luego, los usuarios pueden controlar las operaciones y realizar la programación de hardware de una manera nueva, basándose en la abstracción correcta, y pueden producir implementaciones geniales.

  • **Según tu definición, Modular se basa entre la capa de framework y la capa de hardware, entonces queremos saber los petaflops (número de operaciones de coma flotante que se pueden realizar por segundo) de Modular. en A100, pero descubrí que el sitio web es todo CPU y no veo la GPU. Entonces mi pregunta es, todos están trabajando duro para hacer que la GPU sea más rápida, entonces, ¿por qué quieres que la CPU funcione primero? **

Chris Lattner: Pensando desde los primeros principios, tenemos que empezar desde abajo. ¿Cómo se definen los sistemas de inteligencia artificial actuales? Mucha gente habla de GPU todos los días y discute sobre GPU, parece que todo está relacionado con GPU. Sin embargo, la inteligencia artificial es en realidad un problema informático paralelo, heterogéneo y a gran escala. Por lo tanto, la inteligencia artificial tradicional comienza con la carga de datos, y la GPU no carga datos, por lo que debe realizar una serie de tareas como carga de datos, preprocesamiento y conexión en red, así como una gran cantidad de cálculos matriciales.

Para controlar la GPU, definitivamente se necesita una CPU. Cuando desarrollamos software para Accelerator, encontraremos que existen varios problemas y lo que los desarrolladores consideran importante es una parte importante del problema que quieren resolver. Entonces, todos construyeron un sistema basado en el problema y tuvo que diseñarse completamente de acuerdo con los requisitos del chip. **

**Desde un punto de vista técnico, Modular quiere construir un compilador universal, porque es fácil pasar de universal a vertical, pero mi experiencia con XLA es que no es factible comenzar con algo especializado y luego generalizarlo. . **

Para la industria de la inteligencia artificial, la escala de capacitación es directamente proporcional al tamaño del equipo de investigación, mientras que la escala de inferencia es directamente proporcional a la escala del producto, la base de usuarios, etc. **Por lo tanto, todavía se hacen muchas inferencias en la CPU. Por lo tanto, decidimos comenzar con la CPU y mejorar la arquitectura primero. La CPU es más fácil de usar y no está disponible. Una vez completada la arquitectura general, podemos continuar expandiéndola. Actualmente también estamos trabajando en GPU, que se lanzarán pronto y se ampliarán a estos diferentes tipos de aceleradores con el tiempo. **

  • **¿Cuáles son los desafíos técnicos al construir el motor? **

Chris Lattner: Los miembros de nuestro equipo básicamente han estado expuestos a todos los compiladores y entidades relacionadas de la industria. Por ejemplo, he participado en investigaciones sobre XLA y TensorFlow, y también hay miembros de PyTorch, TVM, Intel OpenVINO. y Onyx Runtime. El desafío para todos es que muchos de los sistemas se diseñaron hace cinco a ocho años. La inteligencia artificial en ese momento era diferente a la actual: no existía un gran modelo de lenguaje.

**El problema es que cuando construyes un sistema, comienza como un montón de código y luego se hace más, más y más grande. Y cuanto más rápido evoluciona un sistema, más difícil resulta realizar cambios fundamentales. Así que decidimos hacerlo todo de nuevo desde cero. **

Si aún desea poder escribir el kernel a mano, primero crearemos un prototipo en C++ y luego introduciremos gradualmente mojo, lo que significa que puede crear un compilador de fusión automática muy complejo que aplique todas las tecnologías más avanzadas y también supere. los más avanzados Tecnología.

Sabemos que los usuarios odian las limitaciones de formas estáticas y la falta de programabilidad. Por ejemplo, no quieren estar vinculados únicamente a Tensor* (Nota: Tensor es en realidad una matriz multidimensional, con el propósito de crear matrices y vectores de dimensiones superiores. Muchos modelos grandes tienen tensores irregulares)*

  • **¿Existen objetivos de diseño para Modular? ¿O principio? **

Chris Lattner: No sé si tengo un conjunto sistemático de principios. Parece que tener un conjunto de principios es como sostener un martillo y ver que todo es un clavo. **Pero mucho de lo que tenemos que hacer es liberar el potencial del hardware y hacerlo de una manera que sea súper fácil de usar. Así que muchas de las condiciones iniciales tienen menos que ver con permitir cosas nuevas y más con resolver problemas complejos para hacer las cosas, por lo que se trata más de diseño e ingeniería. **

Si charla con una empresa de LLM, es fácil descubrir que han gastado más de 200 millones de dólares estadounidenses en GPU y GPU A100 de un tamaño de memoria específico. **Todos quieren aprovechar todas las posibilidades a través de GPU (potencia informática). Por un lado, hay muchas personas que quieren entrar en el chip y liberar su potencial, pero hay muchas otras que quieren más portabilidad, generalidad y abstracción. **

Por lo tanto, el desafío aquí es cómo habilitar y diseñar el sistema para lograr la abstracción de forma predeterminada sin renunciar a toda la funcionalidad. De manera similar, muchos compiladores, especialmente los compiladores de aprendizaje automático, básicamente solo intentan cubrir un punto específico en el espacio y sus funciones no son universales.

Otra cosa es que nos preocupamos por los usuarios, porque muchas personas están obsesionadas con la tecnología, pero olvidan que los retratos de las personas que aplican la tecnología y los que la crean son completamente diferentes. Necesitamos entender las ideas de los desarrolladores que usan las herramientas.

  • **Modular acaba de ser lanzado para su descarga y uso basado en Linux Mojo en los últimos días. Las versiones para MacOS y Windows se lanzarán pronto. Entonces, ¿qué otros kits de herramientas y componentes estarán disponibles en los próximos seis a nueve meses? **

**Chris Lattner:**Mojo es todavía un lenguaje joven y gradualmente trabajaremos con el ecosistema para hacerlo cada vez más maduro. Queremos tener una gran comunidad alrededor de Mojo para crear cosas interesantes juntos. Para lograr este objetivo, gradualmente abriremos Mojo de código abierto y todos deben trabajar juntos para resolver muchos detalles y construir un ecosistema que funcione bien, no solo un desastre.

Al igual que el desastre de Python 2-3 que todos han experimentado, nadie quiere recordarlo* (Nota: más del 80% de las dos sintaxis son incompatibles y, debido a problemas históricos, muchas distribuciones de Linux dependen de py2 en la parte inferior. pero el usuario usó accidentalmente py3 y pip install xxx bloqueó el sistema). *

**P: ¿Cuál es su relación con Guido (*****Nota: el ingeniero holandés Guido van Rossum, que inventó el lenguaje Python) y la Fundación Python? ¿Cómo es que están relacionados? **

Chris Lattner: Guido sabía que Mojo vendría, pasó mucho tiempo con nuestro equipo y nos sentimos muy afortunados. De vez en cuando aparece en la comunidad mojo de Discord y me hace preguntas difíciles, lo cual es increíble.

Creemos que mojo es un miembro de la familia Python. Por supuesto, hay muchos miembros de la familia Python, incluidos PyPy y Cython, etc. Esperamos que Python pueda continuar desarrollándose y agregando contenido nuevo. Mojo también continúa creciendo y agregando contenido nuevo.

Retroceda hace 30 o 40 años, cuando existía el lenguaje C, y luego apareció algo nuevo llamado C++ en 1983. C++ es en realidad el lenguaje C con clases (Nota: En 1979, Bjame Sgoustrup fue a Bell Labs y comenzó a transformar C en un lenguaje con clases. En 1983, el lenguaje se llamó oficialmente C++)

Lo que sucedió en ese momento fue que C y C++ comenzaron como dos comunidades diferentes, pero hubo mucha convergencia, intercambio de ideas entre ellos.

Por supuesto, todas las características del lenguaje C finalmente se integraron en C++. Así que espero que suceda lo mismo con Mojo y Python.

Acerca del espíritu empresarial y la formación de equipos de ingeniería

  • **Ha habido muchos fundadores como usted que han tenido carreras largas y sorprendentes como ingenieros. De repente, es el director ejecutivo. Entonces, ¿qué has aprendido sobre cómo formar equipos y entrenar a otros? Especialmente después de convertirte en ingeniero, ahora también tienes que ser líder de producto y responsable de la financiación, ¿qué opinas? **

Chris Lattner: En Modular, mi cofundador Tim y yo tenemos una relación muy estrecha y somos muy complementarios. En el proceso de iniciar un negocio, tener alguien con quien hablar es realmente importante. Lo que estoy experimentando ahora es algo que nunca había experimentado como líder de ingeniería en Google y Apple.

**Cuando iniciamos esta empresa, nuestra creencia era: comprender el dolor. Representar a una empresa grande es diferente a representar a una empresa de nueva creación. Cuando la empresa de nueva creación esté realmente establecida, yo seré el líder de ingeniería y comenzaré a formar un equipo de ingeniería, mientras que Tim será responsable del trabajo comercial y de productos, y Será responsable del trabajo en ausencia de una gran empresa.Comunicarse con diferentes empresas (clientes) bajo el aura de la fábrica. Por ejemplo, ¿cuáles son sus puntos débiles actuales? **

¿En que estas trabajando actualmente? ¿Cuáles son los retos? ¿Cómo podemos ayudar? ¿Qué opinas de lo que estamos haciendo? Como Modular, el desafío que enfrentamos es que lo que queremos construir es realmente un problema técnico súper difícil y muy abstracto.

**Para resolver estos difíciles problemas es necesario contratar expertos técnicos muy costosos de todas las grandes empresas de tecnología, por lo que debo recaudar muchos fondos, motivar bien a los empleados, pagarles salarios y hacer que los empleados se sientan cómodos. **

Nos enfrentamos directamente a los clientes y vemos el dolor de los clientes en el campo de la inteligencia artificial: construir e implementar muchas cosas es realmente un desastre y todos están atrapados en demasiadas cosas ineficaces. Por lo tanto, nuestra visión es unificar todas estas cosas con Modular.

Pero el problema vuelve a surgir: mientras se desarrollan productos, estos también cambian constantemente y las necesidades seguirán cambiando con el tiempo. Entonces, los equipos con los que trabajamos terminaron con un nivel muy alto de complejidad, con muchos sistemas desordenados diferentes desarrollados para diferentes casos especiales.

  • **Experiencia como Líder de Ingeniería: Amplia experiencia formando equipos y reclutando ingenieros. ¿Tiene alguna experiencia o sugerencia sobre la gestión de proyectos? **

Chris Lattner: Mi trabajo es ayudar al equipo a ganar. Tienes que definir qué es ganar, darle a la gente una visión clara, un objetivo claro y mantener a todos alineados. **Cuando tienes un grupo grande de personas muy buenas personas que te rodean Cuando todo el mundo quiere ser un héroe, un objetivo claro es muy importante. Cuando se superpone energía potencial, se lograrán grandes avances rápidamente, pero cuando se revierte, el impulso se compensará. **

Internamente, a menudo participo personalmente en ayudar a construir la infraestructura inicial, y es importante mostrarle al equipo cómo va a funcionar, y eso es parte de nuestra cultura. Lo más importante para mí en el equipo de ingeniería es la velocidad de implementación; si esperas 24 horas o tres semanas para ejecutar CI, todo se ralentizará.

Al contratar y a medida que continúa desarrollando a sus empleados, también desea determinar en qué son buenos, ¿verdad? Realmente creo que si tienes un equipo de personas realmente bueno y apasionado y los combinas con algo que realmente quieren hacer, tienen superpoderes.

Por eso, muchas veces queremos asegurarnos de que las personas resuelvan los problemas correctos. De esta manera, pueden crecer, hacer cosas, impulsar y tomar decisiones de forma independiente. Pero muchas veces, las personas estarán muy concentradas en el producto, o algunas serán particularmente buenas haciendo negocios, centrándose en los clientes y los problemas que estos encuentran. Pero no se puede resolver y crear un producto sin un equipo.

**Me gusta mucho Tim porque es muy bueno en áreas en las que yo no soy muy bueno y todos aprenden unos de otros. **

Acerca de ChatGPT y la Inteligencia Artificial

El surgimiento de ChatGPT es muy interesante. Para personas como nosotros que han estado prestando atención a la inteligencia artificial durante mucho tiempo, ChatGPT significa una especie de innovación en la interfaz de usuario y hace que las personas se den cuenta del poder de la inteligencia artificial. Mirando hacia atrás, creo que esto elevó el perfil de la IA en la conciencia pública durante varios años.

**¿Cuál es el misterio sin resolver más interesante en el campo de la inteligencia artificial? **

Chris Lattner: Creo que la inteligencia artificial está en su adolescencia en este momento. Hay mucha gente inteligente con ideas diferentes sobre qué es la IA, ¿verdad? Algunas personas piensan que todo deberían ser redes neuronales de extremo a extremo y que el software debería desaparecer. Creo que la pregunta que hay que responder es: ¿cuál es el equilibrio entre algoritmos de entrenamiento y algoritmos de diseño inteligente? Personalmente, no creo que sea todo lo uno o lo otro, si quieres construir un detector de gatos, entonces CNN es una buena manera de hacerlo. Si desea escribir un gestor de arranque o un sistema operativo, implementarlo con un bucle for funciona bien. **Pero ¿dónde se eliminarán estas cosas con el tiempo? ¿Cómo podemos lograr que los desarrolladores de aplicaciones piensen de manera más coherente en estas presentaciones? **

**Nuestra apuesta para el futuro es que la IA como metodología de desarrollo de software eventualmente se convertirá en parte del conjunto de herramientas que utiliza la gente sobre cómo crear aplicaciones. No sólo las aplicaciones para iPhone o formas similares, sino también todo el servicio en la nube, el flujo de datos y, en última instancia, la construcción iterativa de todo el producto de usuario: por supuesto, todavía estamos en el camino de la exploración. **

*GraciasEvolution of Technology Life** a todos mis amigos por su continuo apoyo al autor a lo largo de los años, y gracias a ChaosAI**

*Gracias a Dakai, AsyncGreed, Zhang Bo, Mao Li, Ethan y Mew por su ayuda profesional

referencias:

1.

2.Referencia: ¿A qué se refiere la propiedad intelectual en la industria de los chips? -Xin Analects-El cielo está alto y las nubes oscuras Andi863

3.Página de inicio de Chris Lattner (nondot.org)

4.nn.funcional y nn.Módulo- Liang Yun 1991 Algoritmo Food House 2020-07-10 21:47

    1. Referencia: Jianshu-12 de agosto de 2018: una explicación sencilla para ayudarle a comprender qué es LLVM*
Ver originales
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
  • Recompensa
  • Comentar
  • Republicar
  • Compartir
Comentar
0/400
Sin comentarios
  • Anclado
Opera con criptomonedas en cualquier momento y lugar
qrCode
Escanee para descargar la aplicación Gate
Comunidad
Español
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)