Inteligencia artificial
Tim Davis, Co-Fundador y Presidente de Modular – Serie de Entrevistas

Tim Davis, es el Co-Fundador y Presidente de Modular, una suite integrada y componible de herramientas que simplifica su infraestructura de IA para que su equipo pueda desarrollar, implementar y innovar más rápido. Modular es más conocida por desarrollar Mojo, un nuevo lenguaje de programación que combina lo mejor de Python con sistemas y metaprogramación para cerrar la brecha entre la investigación y la producción.
Emprendedor repetido y Líder de Producto. Tim ayudó a construir, fundar y escalar grandes partes de la infraestructura de IA de Google en Google Brain y Core Systems desde APIs (TensorFlow), Compiladores (XLA & MLIR) y tiempos de ejecución para servidor (CPU/GPU/TPU) y TF Lite (Móvil/Micro/Web), Android ML & NNAPI, infraestructura de modelos grandes y OSS para miles de millones de usuarios y dispositivos. Le encanta correr, construir y escalar productos para ayudar a las personas, y al mundo.
¿Cuándo descubrió inicialmente la codificación, y qué lo atrajo a ella?
Como un niño que crecía en Australia, mi padre trajo a casa un Commodore 64C y los juegos fueron lo que me enganchó – Boulder Dash, Maniac Mansion, Double Dragon – qué época para estar vivo. Esa computadora me introdujo a BASIC y jugar con eso fue mi primera introducción real a la programación. Las cosas se volvieron más intensas a través de la escuela secundaria y la universidad, donde utilicé lenguajes estáticos tradicionales para cursos de ingeniería, y con el tiempo incluso me metí en Javascript y VBA, antes de establecerme en Python para la mayoría de la programación como el lenguaje de la ciencia de datos y la IA. Escribí un montón de código en mis primeras startups, pero estos días, por supuesto, utilizo Mojo y la cadena de herramientas que hemos creado alrededor de ella.
Durante más de 5 años, trabajó en Google como Gerente de Producto Senior y Líder de Producto de Grupo, donde ayudó a escalar grandes partes de la infraestructura de IA de Google en Google Brain. ¿Qué aprendió de esta experiencia?
Las personas son las que construyen tecnologías y productos que cambian el mundo, y es un grupo de personas dedicadas unidas por una visión más grande lo que los trae al mundo. Google es una empresa increíble, con personas increíbles, y tuve la suerte de conocer y trabajar con muchas de las mentes más brillantes en IA hace años cuando me mudé para unirme al equipo de Brain. Las lecciones más grandes que aprendí fueron siempre centrarme en el usuario y progresivamente descubrir la complejidad, para empoderar a los usuarios para que cuenten sus historias únicas al mundo, como arreglar el Gran Barrera de Coral o ayudar a personas como Jason el Baterista, y atraer y reunir a un grupo diverso de personas para impulsar hacia un objetivo común. En una empresa masiva de personas muy inteligentes y talentosas, esto es mucho más difícil de lo que puedes imaginar. Al reflexionar sobre mi tiempo allí, siempre son las personas con las que trabajaste las que son verdaderamente memorables. Siempre miraré hacia atrás con cariño y apreciaré que muchas personas se arriesgaron conmigo, y estoy enormemente agradecido de que lo hicieran, ya que muchos de esos riesgos me animaron a ser un mejor líder y persona, a sumergirme profundamente y comprender realmente los sistemas de IA. Esto me hizo darme cuenta del poder profundo que tiene la IA para impactar el mundo, y esta fue la razón por la que tuve la inspiración y el coraje para dejar y co-fundar Modular.
¿Puede compartir la historia de génesis detrás de Modular?
Chris y yo nos conocimos en Google y enviamos muchas tecnologías influyentes que han impactado significativamente el mundo de la IA hoy en día. Sin embargo, sentimos que la IA se estaba viendo frenada por infraestructuras complejas y fragmentadas que presenciábamos de primera mano al implementar grandes cargas de trabajo para miles de millones de usuarios. Estábamos motivados por el deseo de acelerar el impacto de la IA en el mundo al levantar a la industria hacia software de IA de calidad de producción, para que podamos, como sociedad global, tener un impacto mayor en cómo vivimos. Uno no puede evitar preguntarse cuántos problemas puede ayudar a resolver la IA, cuántas enfermedades curar, cuánto más productivos podemos ser como especie, para avanzar nuestra existencia para las generaciones futuras, al aumentar la penetración de esta tecnología increíble.
Habiendo trabajado juntos durante años en infraestructura de IA a gran escala – vimos el enorme dolor del desarrollador de primera mano – “¿por qué las cosas no pueden simplemente funcionar”? Para que el mundo adopte y descubra la naturaleza transformadora de la IA, necesitamos software y infraestructura de desarrollador que se escalen desde la investigación hasta la producción, y sean altamente accesibles. Esto nos permitirá desbloquear la próxima forma de descubrimientos científicos – de los cuales la IA será crítica – y es un gran desafío de ingeniería. Con esta motivación de fondo, desarrollamos una creencia intrínseca de que podríamos emprender una nueva aproximación para la infraestructura de IA, y empoderar a los desarrolladores en todas partes para utilizar la IA para ayudar a hacer del mundo un lugar mejor. También somos muy afortunados de tener a muchas personas que se unan a nosotros en este viaje, y tenemos el mejor equipo de infraestructura de IA del mundo como resultado.
¿Puede discutir cómo el lenguaje de programación Mojo se construyó inicialmente para su propio equipo?
La visión de Modular es permitir que la IA sea utilizada por cualquier persona, en cualquier lugar. Todo lo que hacemos en Modular se centra en ese objetivo, y caminamos hacia atrás desde allí en la forma en que construimos nuestros productos y nuestra tecnología. A la luz de esto, nuestra propia velocidad de desarrollador es lo que nos importa primero, y habiendo construido gran parte de la infraestructura de IA existente para el mundo – necesitábamos considerar cuidadosamente qué permitiría que nuestro equipo se moviera más rápido. Hemos vivido a través del problema de lenguaje de dos mundos en IA – donde los investigadores viven en Python, y los ingenieros de producción y hardware viven en C++ – y no tuvimos más remedio que o seguir por ese camino, o replantearnos el enfoque por completo. Elegimos lo último. Había una necesidad clara de resolver este problema, pero diferentes maneras de resolverlo – nos acercamos a ello con nuestra fuerte creencia de reunirnos con el ecosistema donde está hoy en día, y permitir una transición más sencilla hacia el futuro. Nuestro equipo lleva las cicatrices de la migración de software a gran escala, y no queríamos una repetición de eso. También nos dimos cuenta de que no hay lenguaje hoy en día, en nuestra opinión, que pueda resolver todos los desafíos que estamos intentando resolver para la IA, así que emprendimos un enfoque de principios fundamentales, y Mojo nació.
¿Cómo permite Mojo una escalabilidad y portabilidad perfectas en muchos tipos de hardware?
Chris, yo mismo y nuestro equipo en Google (muchos en Modular) ayudamos a traer MLIR al mundo hace años – con el objetivo de ayudar a la comunidad global a resolver desafíos reales al habilitar que los modelos de IA sean consistentemente representados y ejecutados en cualquier tipo de hardware. MLIR es una nueva infraestructura de compilador de código abierto que ha sido adoptada a gran escala, y se está convirtiendo rápidamente en el nuevo estándar para construir compiladores a través de LLVM. Dado el historial de nuestro equipo en la creación de esta infraestructura, es natural que la utilicemos mucho en Modular y esto subyace a nuestro enfoque de vanguardia en el desarrollo de nueva infraestructura de IA para el mundo. Críticamente, mientras que MLIR ahora está siendo adoptado rápidamente, Mojo es el primer lenguaje que realmente aprovecha el poder de MLIR y lo expone a los desarrolladores de una manera única y accesible. Esto significa que se escala desde los desarrolladores de Python que escriben aplicaciones, hasta los ingenieros de rendimiento que implementan código de alto rendimiento, hasta los ingenieros de hardware que escriben código de sistema de muy bajo nivel para su hardware único.
Las referencias a Mojo afirman que es básicamente Python++, con la accesibilidad de Python y el alto rendimiento de C. ¿Es esta una simplificación excesiva? ¿Cómo describiría usted?
Mojo debería sentirse muy familiar para cualquier programador de Python, ya que comparte la sintaxis de Python. Pero hay algunas diferencias importantes que verás a medida que ports un programa de Python simple a Mojo, incluyendo que simplemente funcionará fuera de la caja. Uno de nuestros objetivos principales para Mojo es proporcionar un superconjunto de Python – es decir, hacer que Mojo sea compatible con programas de Python existentes – y abrazar la implementación de CPython para el soporte del ecosistema de cola larga. Luego, permite que aumentes lentamente tu código y reemplaces las partes que no funcionan con las características de bajo nivel de Mojo para gestionar explícitamente la memoria, agregar tipos, utilizar autotuning y muchos otros aspectos para obtener el rendimiento de C o mejor. Sentimos que Mojo te da lo mejor de ambos mundos y no tienes que escribir y reescribir tus algoritmos en múltiples lenguajes. Apreciamos que Python++ es un objetivo enorme, y será un esfuerzo de varios años, pero estamos comprometidos a hacer que sea una realidad y a permitir que nuestra legendaria comunidad de más de 140K+ desarrolladores nos ayude a construir el futuro juntos.
En una conferencia reciente se presentó que Mojo es 35,000 veces más rápido que Python, ¿cómo se calculó esta velocidad?
Es actualmente 68,000 veces más rápido. Pero reconoce que es solo un programa en Mandelbrot – puedes ir y leer una serie de tres publicaciones en el blog sobre cómo logramos esto – aquí, aquí y aquí. Por supuesto, hemos estado haciendo esto durante mucho tiempo y sabemos que los juegos de rendimiento no son lo que impulsan la adopción de lenguajes (a pesar de que son divertidos) – es la velocidad del desarrollador, la usabilidad del lenguaje, las herramientas y la documentación de alta calidad, y una comunidad que utiliza la infraestructura para inventar y construir de maneras que no podemos siquiera imaginar. Somos constructores de herramientas, y nuestro objetivo es empoderar al mundo para que utilice nuestras herramientas, para crear productos increíbles y resolver problemas importantes. Si nos centramos en nuestro objetivo más grande, es crear un lenguaje que te encuentre donde estás hoy en día y luego te eleve a un mundo mejor. Mojo te permite tener un lenguaje altamente performante, usable, estáticamente tipado y portable que se integra perfectamente con tu código de Python existente – dándote lo mejor de ambos mundos. Te permite realizar el verdadero poder de la hardware con multithreading y paralelización de maneras que el Python crudo de hoy en día no puede – desbloqueando la comunidad de desarrolladores globales para tener un lenguaje que se escala de arriba a abajo.
La magia de Mojo es su capacidad para unificar lenguajes de programación con un conjunto de herramientas, ¿por qué es esto tan importante?
Los lenguajes siempre tienen éxito por el poder de sus ecosistemas y las comunidades que se forman alrededor de ellos. Hemos estado trabajando con comunidades de código abierto durante mucho tiempo, y somos increíblemente considerados con respecto a involucrarnos de la manera correcta y asegurarnos de que hacemos lo correcto por la comunidad. Estamos trabajando increíblemente duro para enviar nuestra infraestructura, pero necesitamos tiempo para escalar nuestro equipo – así que no tendremos todas las respuestas de inmediato, pero llegaremos allí. Retrocediendo, nuestro objetivo es levantar el ecosistema de Python al abrazar el todo ecosistema existente, y no estamos buscando fracturarlo como tantos otros proyectos. La interoperabilidad simplemente hace que sea más fácil para la comunidad probar nuestra infraestructura, sin tener que reescribir todo su código, y eso importa mucho para la IA.
También hemos aprendido mucho del desarrollo de infraestructura y herramientas de IA en los últimos diez años. Los sistemas monolíticos existentes no son fáciles de extender o generalizar fuera de su objetivo de dominio inicial, y la consecuencia es una industria de implementación de IA altamente fragmentada con docenas de cadenas de herramientas que llevan diferentes compensaciones y limitaciones. Estos patrones de diseño han frenado el ritmo de la innovación al ser menos utilizables, menos portátiles y más difíciles de escalar.
El próximo sistema de IA necesita ser de calidad de producción y reunir a los desarrolladores donde están. No debe requerir una reescritura costosa, una re-arquitectura o una re-base del código del usuario. Debe ser nativamente multi-marco, multi-nube y multi-hardware. Debe combinar el mejor rendimiento y eficiencia con la mejor usabilidad. Esta es la única manera de reducir la fragmentación y desbloquear la próxima generación de innovaciones de hardware, datos y algoritmos.
Modular recientemente anunció recaudar $100 millones en nueva financiación, liderada por General Catalyst y llenada por inversores existentes GV (Google Ventures), SV Angel, Greylock y Factory. ¿Qué debemos esperar a continuación?
Esta nueva capital se utilizará principalmente para crecer nuestro equipo, contratar a las mejores personas en infraestructura de IA, y seguir cumpliendo con la enorme demanda comercial que estamos viendo para nuestra plataforma. Modverse, nuestra comunidad de más de 130K+ desarrolladores y 10K empresas, están buscando nuestra infraestructura – así que queremos asegurarnos de que sigamos escalando y trabajando duro para desarrollarla para ellos, y entregarla a ellos. Nosotros mismos nos mantenemos a un estándar increíblemente alto, y los productos que enviamos son un reflejo de quiénes somos como equipo, y quiénes nos convertimos como empresa. Si conoces a alguien que esté impulsado, que ame la frontera de software y hardware, y que quiera ayudar a ver la IA penetrar el mundo de una manera significativa y positiva – envíalos en nuestra dirección.
¿Cuál es su visión para el futuro de la programación?
La programación debería ser una habilidad que todos en la sociedad puedan desarrollar y utilizar. Para muchos, la “idea” de programación instantáneamente evoca una imagen de un desarrollador escribiendo código de bajo nivel complejo que requiere matemáticas y lógica pesadas – pero no tiene que ser percibido de esa manera. La tecnología siempre ha sido un gran habilitador de productividad para la sociedad, y al hacer que la programación sea más accesible y utilizable, podemos empoderar a más personas para que la abracen. Empoderar a las personas para automatizar procesos repetitivos y hacer que sus vidas sean más simples es una manera poderosa de darles más tiempo.
Y en Python, ya tenemos un lenguaje maravilloso que ha resistido la prueba del tiempo – es el lenguaje más popular del mundo, con una comunidad increíble – pero también tiene limitaciones. Creo que tenemos una gran oportunidad para hacer que sea aún más poderoso, y para animar a más del mundo a abrazar su belleza y simplicidad. Como dije anteriormente, se trata de construir productos que tengan una divulgación progresiva de la complejidad – permitiendo abstracciones de alto nivel, pero escalando a abstracciones de muy bajo nivel también. Ya estamos presenciando un salto significativo con los modelos de IA que permiten traducciones progresivas de texto a código – y estas solo se volverán más personalizadas con el tiempo – pero detrás de esta innovación mágica todavía hay un desarrollador que autoriza y despliega código para alimentarla. Hemos escrito sobre esto en el pasado – la IA continuará desbloqueando la creatividad y la productividad en muchos lenguajes de programación, pero también creo que Mojo abrirá el aperturó del ecosistema aún más, empoderando una mayor accesibilidad, escalabilidad y portabilidad de hardware para muchos más desarrolladores en todo el mundo.
Para terminar, la IA penetrará nuestras vidas de maneras inimaginables, y existirá en todas partes – así que espero que Mojo catalice a los desarrolladores para ir y resolver los problemas más importantes para la humanidad más rápido – sin importar dónde vivan en nuestro mundo. Creo que ese es un futuro por el que vale la pena luchar.
Gracias por la gran entrevista, los lectores que deseen aprender más deben visitar Modular.
