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

Tim Davis, Co-Fundador y Presidente de Modular - Entrevistas

Tim Davis es el co-fundador y presidente de Modular, una suite integrada y componible de herramientas que simplifica tu infraestructura de IA para que tu equipo pueda desarrollar, implementar e innovar más rápido. Modular es conocido 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 productos. 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 y MLIR) y entornos de ejecución para servidores (CPU/GPU/TPU) y TF Lite (Móvil/Micro/Web), Android ML y 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 descubriste por primera vez la programación y qué te atrajo de ella?

Cuando era niño y crecía en Australia, mi papá trajo a casa un Commodore 64C y los videojuegos fueron lo que me enganchó: Boulder Dash, Maniac Mansion, Double Dragon, qué época para estar vivo. Esa computadora me introdujo a BASIC y experimentar con eso fue mi primera introducción real a la programación. Las cosas se intensificaron durante la escuela secundaria y la universidad, donde usé lenguajes estáticos más tradicionales para cursos de ingeniería, y con el tiempo incluso experimenté hasta llegar a Javascript y VBA, antes de decidirme por Python para la gran mayoría de la programación, como el lenguaje de la ciencia de datos e IA. Escribí mucho código en mis primeras startups, pero hoy en día, por supuesto, utilizo Mojo y la cadena de herramientas que hemos creado a su alrededor.

Durante más de 5 años trabajaste en Google como Gerente de Producto Senior y Líder de Producto del Grupo, donde ayudaste a escalar grandes partes de la infraestructura de IA de Google en Google Brain. ¿Qué aprendiste de esta experiencia?

Las personas son las que construyen tecnologías y productos que cambian el mundo, y es un grupo dedicado de personas unidas por una visión más amplia lo que los lleva 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 uní al equipo de Brain. Las lecciones más importantes que aprendí fueron siempre enfocarme en el usuario y revelar progresivamente la complejidad, para permitir que los usuarios cuenten sus historias únicas al mundo, como arreglar la Gran Barrera de Coral o ayudar a personas como Jason el Baterista, y atraer y reunir a una mezcla diversa de personas para avanzar hacia un objetivo común. En una empresa enorme con personas muy inteligentes y talentosas, esto es mucho más difícil de lo que puedes imaginar. Reflexionando sobre mi tiempo allí, siempre son las personas con las que trabajaste las que realmente son memorables. Siempre miraré hacia atrás con cariño y apreciaré que muchas personas tomaron riesgos 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 profundizar y comprender realmente los sistemas de IA. Realmente me hizo darme cuenta del poder profundo que tiene la IA para impactar en el mundo, y esta fue la razón principal por la que tuve la inspiración y el coraje de salir y co-fundar Modular.

¿Puedes compartir la historia de origen detrás de Modular?

Chris y yo nos conocimos en Google y lanzamos muchas tecnologías influyentes que han tenido un impacto significativo en el mundo de la IA hoy en día. Sin embargo, sentimos que la IA estaba siendo frenada por una infraestructura demasiado compleja y fragmentada que presenciamos de primera mano al implementar cargas de trabajo grandes para miles de millones de usuarios. Nos motivó el deseo de acelerar el impacto de la IA en el mundo al elevar a la industria hacia un software de IA de calidad de producción, para que nosotros, como sociedad global, podamos tener un mayor impacto en cómo vivimos. Uno no puede evitar preguntarse cuántos problemas puede ayudar a resolver la IA, cuántas enfermedades se pueden curar, cuánto más productivos podemos ser como especie, para avanzar en nuestra existencia en las generaciones futuras, aumentando la penetración de esta increíble tecnología.

Habiendo trabajado juntos durante años en infraestructura crítica a gran escala de IA, vimos el enorme dolor para los desarrolladores de “¿por qué las cosas no pueden simplemente funcionar”? Para que el mundo adopte y descubra la naturaleza transformadora de la IA, necesitamos un software e infraestructura de desarrollo que se pueda escalar desde la investigación hasta la producción, y que sea altamente accesible. Esto nos permitirá desbloquear la próxima ola de descubrimientos científicos, en los cuales la IA será fundamental, y es un gran desafío de ingeniería. Con este trasfondo motivador, desarrollamos una creencia intrínseca de que podríamos emprender la construcción de un nuevo enfoque para la infraestructura de IA y capacitar a los desarrolladores de todo el mundo para que utilicen la IA y ayuden a mejorar el mundo. También tenemos la gran suerte de que muchas personas se unan a nosotros en este viaje, y tenemos el mejor equipo de infraestructura de IA del mundo como resultado.

¿Puedes hablar sobre cómo se construyó inicialmente el lenguaje de programación Mojo para tu 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 enfoca en ese objetivo, y avanzamos hacia atrás en la forma en que construimos nuestros productos y nuestra tecnología. En esta perspectiva, nuestra propia velocidad de desarrollo es lo que más nos importa, y al haber construido gran parte de la infraestructura de IA existente para el mundo, necesitábamos considerar cuidadosamente qué nos permitiría avanzar más rápido. Hemos vivido el problema de los dos lenguajes en la IA, donde los investigadores usan Python y los ingenieros de producción y hardware usan C++. No tuvimos más opción que seguir ese camino o replantear completamente el enfoque. Elegimos lo último. Había una clara necesidad de resolver este problema, pero había muchas formas diferentes de hacerlo. Nos acercamos a él con la firme creencia de encontrarnos con el ecosistema tal como está hoy en día y facilitar la transición hacia el futuro. Nuestro equipo ha sufrido las cicatrices de la migración de software a gran escala y no queríamos repetir eso. También nos dimos cuenta de que no existe un lenguaje hoy en día, en nuestra opinión, que pueda resolver todos los desafíos que intentamos resolver para la IA, por lo que adoptamos un enfoque de principios fundamentales, y nació Mojo.

¿Cómo permite Mojo escalar y ser portátil en diferentes tipos de hardware?

Chris, yo mismo y nuestro equipo en Google (muchos en Modular) ayudamos a darle vida a MLIR hace años, con el objetivo de ayudar a la comunidad global a resolver desafíos reales al permitir que los modelos de IA se representen y ejecuten de manera consistente en cualquier tipo de hardware. MLIR es un nuevo tipo de infraestructura de compilador de código abierto que ha sido adoptada a gran escala y está convirtiéndose 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 ampliamente en Modular y esto sustenta nuestro enfoque de vanguardia en el desarrollo de nueva infraestructura de IA para el mundo. Es importante destacar que, si bien MLIR ahora se está adoptando 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 adapta tanto a los desarrolladores de Python que escriben aplicaciones, como a los ingenieros de rendimiento que implementan código de alto rendimiento y a los ingenieros de hardware que escriben código de sistema de muy bajo nivel para su hardware único.

En referencias a Mojo se afirma que es básicamente Python++, con la accesibilidad de Python y el alto rendimiento de C. ¿Es una simplificación exagerada? ¿Cómo lo describirías?

Mojo debería resultar muy familiar para cualquier programador de Python, ya que comparte la sintaxis de Python. Pero hay algunas diferencias importantes que se pueden observar al migrar un programa simple de Python a Mojo, incluido el hecho de que simplemente funcionará sin problemas. Uno de nuestros objetivos principales para Mojo es proporcionar un superconjunto de Python, es decir, hacer que Mojo sea compatible con los programas de Python existentes y aprovechar la implementación de CPython para brindar soporte al ecosistema de larga cola. Luego te permite mejorar gradualmente tu código y reemplazar las partes que no tienen buen rendimiento con las características de nivel inferior de Mojo para gestionar explícitamente la memoria, agregar tipos, utilizar la autotuning y muchos otros aspectos para obtener el rendimiento de C o incluso mejor. Creemos que Mojo te ofrece lo mejor de ambos mundos y no tienes que escribir y reescribir tus algoritmos en múltiples lenguajes. Apreciamos que Python++ es una meta enorme y será un esfuerzo de varios años, pero estamos comprometidos en hacerlo realidad y permitir que nuestra legendaria comunidad de más de 140,000 desarrolladores nos ayude a construir el futuro juntos.

En una presentación reciente se mostró que Mojo es 35,000 veces más rápido que Python, ¿cómo se calculó esta velocidad?

¡En realidad, ahora es 68,000 veces más rápido! Pero reconozcamos que es solo un programa único en Mandelbrot. Puedes leer una serie de tres publicaciones de 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 impulsa la adopción de un lenguaje (a pesar de que son divertidos), lo que realmente importa es la velocidad de desarrollo de los programadores, la usabilidad del lenguaje, las herramientas y la documentación de alta calidad, y una comunidad que utilice la infraestructura para inventar y construir de formas que ni siquiera podemos imaginar. Somos constructores de herramientas y nuestro objetivo es capacitar al mundo para que use nuestras herramientas, crear productos increíbles y resolver problemas importantes. Si nos enfocamos en nuestro objetivo mayor, en realidad es crear un lenguaje que te encuentre donde estás hoy y luego te lleve fácilmente a un mundo mejor. Mojo te permite tener un lenguaje altamente eficiente, utilizable, de tipo estático y portátil que se integra perfectamente con tu código de Python existente, dándote lo mejor de ambos mundos. Te permite aprovechar el verdadero poder del hardware con multithreading y paralelización de formas que el Python puro de hoy no puede, desbloqueando la capacidad de la comunidad global de desarrolladores de tener un solo lenguaje que se adapte a todo.

La magia de Mojo radica en su capacidad para unificar lenguajes de programación con un conjunto de herramientas, ¿por qué es esto tan importante?

Los lenguajes siempre tienen éxito gracias al 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 extremadamente cuidadosos al participar de la manera correcta y asegurarnos de hacer lo correcto por la comunidad. Estamos trabajando arduamente para implementar nuestra infraestructura, pero necesitamos tiempo para ampliar nuestro equipo, por lo que no tendremos todas las respuestas de inmediato, pero llegaremos allí. En resumen, nuestro objetivo es elevar el ecosistema de Python al abrazar todo el ecosistema existente y no buscamos dividirlo como tantos otros proyectos. La interoperabilidad simplemente facilita que la comunidad pruebe nuestra infraestructura sin tener que reescribir todo su código, y eso es muy importante para la IA.

También hemos aprendido mucho del desarrollo de la infraestructura y las herramientas de IA en los últimos diez años. Los sistemas monolíticos existentes no son fácilmente extensibles o generalizables fuera de su dominio objetivo inicial y como consecuencia tenemos una industria de implementación de IA enormemente fragmentada con docenas de cadenas de herramientas que tienen diferentes compensaciones y limitaciones. Estos patrones de diseño han frenado el ritmo de innovación al ser menos utilizables, menos portátiles y más difíciles de escalar.

El sistema de IA de próxima generación debe tener calidad de producción y satisfacer a los desarrolladores donde se encuentren. No debe requerir una reescritura costosa, una reestructuración o un cambio de base del código del usuario. Debe ser nativamente multiplataforma, multinube y multihardware. Necesita combinar el mejor rendimiento y eficiencia con la mejor usabilidad. Esta es la única forma de reducir la fragmentación y desbloquear la próxima generación de hardware, datos e innovaciones algorítmicas.

Modular anunció recientemente una inversión de $100 millones en financiamiento nuevo, liderada por General Catalyst y respaldada por inversionistas existentes como GV (Google Ventures), SV Angel, Greylock y Factory. ¿Qué podemos esperar a continuación?

Este nuevo capital se utilizará principalmente para hacer crecer nuestro equipo, contratando a las mejores personas en infraestructura de IA y continuando satisfaciendo la enorme demanda comercial que estamos viendo por nuestra plataforma. Modverse, nuestra comunidad compuesta por más de 130,000+ desarrolladores y miles de empresas, todos buscan nuestra infraestructura, por lo que queremos asegurarnos de seguir creciendo y trabajando arduamente para desarrollarla y entregársela. Nos exigimos un estándar increíblemente alto y los productos que lanzamos son un reflejo de quiénes somos como equipo y quiénes nos convertimos como empresa. Si conoces a alguien motivado, que ama los límites entre el software y el hardware, y que desea ayudar a que la IA penetre en el mundo de una manera significativa y positiva, envíalos en nuestra dirección.

¿Cuál es tu 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 la imagen de un desarrollador escribiendo código complejo de bajo nivel que requiere matemáticas y lógica intensas, pero no tiene que ser percibido de esa manera. La tecnología siempre ha sido un gran facilitador de productividad para la sociedad, y al hacer que la programación sea más accesible y utilizable, podemos capacitar a más personas para que la abracen. Capacitar a las personas para automatizar procesos repetitivos y simplificar sus vidas es una forma poderosa de devolverles más tiempo.

Y en Python, ya tenemos un maravilloso lenguaje 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 de hacerlo aún más poderoso y alentar a más personas en el mundo a adoptar su belleza y simplicidad. Como dije antes, se trata de construir productos que tengan una revelación progresiva de complejidad, permitiendo abstracciones de alto nivel pero escalando también a niveles muy bajos. Ya estamos presenciando un avance significativo con modelos de IA que permiten traducciones progresivas de texto a código, y con el tiempo estos se volverán aún más personalizados, pero detrás de esta innovación mágica todavía hay un desarrollador que crea e implementa el código para impulsarlo. 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á aún más el apertura del ecosistema, permitiendo una mayor accesibilidad, escalabilidad y portabilidad de hardware para muchos más desarrolladores en todo el mundo.

Para concluir, la IA penetrará en nuestras vidas de formas inimaginables y estará presente en todas partes, por lo que espero que Mojo impulse a los desarrolladores a resolver los problemas más importantes para la humanidad de manera más rápida, sin importar dónde vivan en nuestro mundo. Creo que ese es un futuro por el que vale la pena luchar.

Gracias por la excelente entrevista, los lectores que deseen obtener más información deben visitar Modular.