Tim Davis, Co-Fondatore e Presidente di Modular – Serie di interviste

Tim Davis, Co-Fondatore e Presidente di Modular - Interviste

Tim Davis, è il Co-Fondatore e Presidente di Modular, una suite integrata e componibile di strumenti che semplifica l’infrastruttura AI in modo che il tuo team possa sviluppare, implementare e innovare più velocemente. Modular è famosa per lo sviluppo di Mojo, un nuovo linguaggio di programmazione che colma il divario tra ricerca e produzione combinando il meglio di Python con sistemi e metaprogrammazione.

Ripetuto imprenditore e leader di prodotto. Tim ha contribuito a costruire, fondare e scalare gran parte dell’infrastruttura AI di Google presso Google Brain e Core Systems, dalle API (TensorFlow), ai compilatori (XLA e MLIR) e ai runtime per server (CPU/GPU/TPU) e TF Lite (Mobile/Micro/Web), Android ML & NNAPI, infrastruttura di grandi modelli e OSS per miliardi di utenti e dispositivi. Ama correre, costruire e scalare prodotti per aiutare le persone e il mondo.

Quando hai scoperto per la prima volta la programmazione e cosa ti ha attratto?

Crescendo in Australia, mio padre ha portato a casa un Commodore 64C e i videogiochi mi hanno appassionato: Boulder Dash, Maniac Mansion, Double Dragon – che tempo fantastico per essere vivi. Quel computer mi ha introdotto al BASIC e smanettare con esso è stata la mia prima vera introduzione alla programmazione. Le cose sono diventate più intense durante il liceo e l’università, dove ho utilizzato linguaggi statici più tradizionali per i corsi di ingegneria, e nel tempo ho persino sperimentato con Javascript e VBA, prima di optare per Python come linguaggio principale per la maggior parte della programmazione, come linguaggio per la scienza dei dati e l’AI. Ho scritto molto codice nelle mie prime startup, ma ovviamente oggi utilizzo Mojo e la toolchain che abbiamo creato intorno ad esso.

Per oltre 5 anni hai lavorato presso Google come Senior Product Manager e Group Product Leader, dove hai contribuito a scalare gran parte dell’infrastruttura AI di Google presso Google Brain. Cosa hai imparato da questa esperienza?

Le persone sono ciò che costruisce tecnologie e prodotti che cambiano il mondo, ed è un gruppo devoto di persone unite da una visione più ampia che le porta al mondo. Google è un’azienda incredibile, con persone straordinarie, e ho avuto la fortuna di incontrare e lavorare con molte delle menti più brillanti dell’AI anni fa quando mi sono trasferito per unirmi al team Brain. Le lezioni più importanti che ho imparato sono state di concentrarmi sempre sull’utente e di rivelare progressivamente la complessità, di permettere agli utenti di raccontare storie uniche al mondo, come risolvere la Grande Barriera Corallina o aiutare persone come Jason il batterista, e di attrarre e assemblare un mix diversificato di persone per perseguire un obiettivo comune. In una grande azienda di persone molto intelligenti e talentuose, ciò è molto più difficile di quanto si possa immaginare. Riflettendo sul mio tempo lì, sono sempre le persone con cui hai lavorato che sono veramente memorabili. Guardo sempre con affetto e apprezzamento a molte persone che hanno assunto rischi con me, e sono enormemente grato che l’abbiano fatto, poiché molti di quei rischi mi hanno incoraggiato a essere un leader e una persona migliore, ad approfondire e comprendere veramente i sistemi AI. Mi ha fatto davvero capire il potere profondo che l’AI ha per influenzare il mondo, ed è stata proprio questa la ragione che mi ha ispirato e mi ha dato il coraggio di lasciare e co-fondare Modular.

Puoi condividere la storia di origine di Modular?

Chris ed io ci siamo conosciuti a Google e abbiamo rilasciato molte tecnologie influenti che hanno avuto un impatto significativo sul mondo dell’AI oggi. Tuttavia, abbiamo sentito che l’AI era ostacolata da un’infrastruttura eccessivamente complessa e frammentata che abbiamo visto di persona durante l’implementazione di grandi carichi di lavoro per miliardi di utenti. Siamo stati motivati ​​dal desiderio di accelerare l’impatto dell’AI nel mondo, spingendo l’industria verso software AI di qualità di produzione in modo che noi, come società globale, possiamo avere un impatto maggiore sul nostro modo di vivere. Non si può fare a meno di chiedersi quanti problemi l’AI possa aiutare a risolvere, quante malattie possa curare, quanto possiamo diventare più produttivi come specie, per promuovere la nostra esistenza per le generazioni future, aumentando la penetrazione di questa incredibile tecnologia.

Aver lavorato insieme per anni su infrastrutture critiche di AI su larga scala, abbiamo visto il grande dolore degli sviluppatori: “perché le cose non possono semplicemente funzionare?” Perché il mondo adotti e scopra l’enorme natura trasformativa dell’AI, abbiamo bisogno di software e infrastrutture per sviluppatori che si adattino dalla ricerca alla produzione e siano altamente accessibili. Questo ci permetterà di sbloccare il prossimo modo di fare scoperte scientifiche, di cui l’AI sarà fondamentale, ed è una grande sfida ingegneristica. Con questo background motivante, abbiamo sviluppato la convinzione intrinseca che potessimo metterci in moto per costruire un nuovo approccio all’infrastruttura AI e dare potere agli sviluppatori di tutto il mondo per utilizzare l’AI per contribuire a rendere il mondo un posto migliore. Siamo anche molto fortunati ad avere molte persone che si uniscono a noi in questo viaggio, e abbiamo il miglior team di infrastruttura AI al mondo come risultato.

Puoi discutere come il linguaggio di programmazione Mojo è stato inizialmente sviluppato per il tuo team?

La visione di Modular è quella di consentire a chiunque, ovunque, di utilizzare l’AI. Tutto ciò che facciamo in Modular è focalizzato su questo obiettivo e lavoriamo in modo inverso per costruire i nostri prodotti e la nostra tecnologia. In questa prospettiva, la velocità dei nostri sviluppatori è ciò che conta per noi in primo luogo e, avendo costruito gran parte dell’infrastruttura esistente per l’AI nel mondo, abbiamo dovuto considerare attentamente ciò che avrebbe permesso al nostro team di muoversi più velocemente. Abbiamo vissuto il problema delle due lingue nel campo dell’AI – dove i ricercatori lavorano in Python e gli ingegneri di produzione e hardware lavorano in C++ – e non avevamo altra scelta se non imboccare quella strada o ripensare completamente l’approccio. Abbiamo scelto quest’ultimo. C’era una chiara necessità di risolvere questo problema, ma molte diverse strade per farlo; l’abbiamo affrontato con la nostra forte convinzione di incontrare l’ecosistema nel punto in cui si trova oggi e consentire una transizione più semplice verso il futuro. Il nostro team porta le cicatrici delle migrazioni software su larga scala e non volevamo ripetere la stessa esperienza. Abbiamo anche realizzato che, secondo noi, non esiste una lingua oggi in grado di risolvere tutte le sfide che stiamo cercando di affrontare per l’AI, quindi abbiamo intrapreso un approccio basato sui principi fondamentali e così è nato Mojo.

Come permette a Mojo la scalabilità e portabilità senza soluzione di continuità su molti tipi di hardware?

Chris, io stesso e il nostro team di Google (molti di noi a Modular) abbiamo contribuito a portare MLIR nel mondo anni fa, con l’obiettivo di aiutare la comunità globale a risolvere sfide reali abilitando modelli di AI a essere rappresentati ed eseguiti in modo coerente su qualsiasi tipo di hardware. MLIR è un nuovo tipo di infrastruttura compiler open-source che è stata adottata su larga scala ed è rapidamente diventata lo standard per la costruzione di compilatori attraverso LLVM. Data la nostra esperienza nella creazione di questa infrastruttura, è naturale che la utilizziamo ampiamente in Modular e questo sottolinea il nostro approccio all’avanguardia nello sviluppo di nuove infrastrutture di AI per il mondo. In modo critico, mentre MLIR è ora rapidamente adottato, Mojo è il primo linguaggio che sfrutta davvero il potere di MLIR e lo rende accessibile agli sviluppatori in modo unico. Ciò significa che si scalda dai programmatori Python che scrivono applicazioni, agli ingegneri delle performance che distribuiscono codice ad alte prestazioni, agli ingegneri hardware che scrivono codice di sistema a basso livello per il loro hardware unico.

Le referenze a Mojo affermano che è fondamentalmente Python++, con l’accessibilità di Python e le alte prestazioni di C. È una semplificazione eccessiva? Come lo descriveresti?

Mojo dovrebbe risultare molto familiare a qualsiasi programmatore Python, in quanto condivide la sintassi di Python. Ma ci sono alcune importanti differenze che si notano nel momento in cui si converte un semplice programma Python in Mojo, tra cui il fatto che funzionerà semplicemente “out of the box”. Uno dei nostri obiettivi principali per Mojo è quello di fornire un sovrainsieme di Python, cioè rendere Mojo compatibile con i programmi Python esistenti e adottare l’implementazione CPython per supportare l’ecosistema a coda lunga. Quindi ti consente di migliorare gradualmente il tuo codice e sostituire le parti non performanti con le funzionalità a basso livello di Mojo per gestire esplicitamente la memoria, aggiungere tipi, utilizzare l’auto-tuning e molti altri aspetti per ottenere le prestazioni di C o meglio! Riteniamo che Mojo ti dia il meglio di entrambi i mondi e non devi scrivere e riscrivere i tuoi algoritmi in più linguaggi. Apprezziamo che Python++ sia un obiettivo enorme e richiederà diversi anni di impegno, ma siamo determinati a renderlo realtà e ad abilitare la nostra leggendaria comunità di oltre 140K+ sviluppatori ad aiutarci a costruire il futuro insieme.

In una recente presentazione è stato dimostrato che Mojo è 35.000 volte più veloce di Python, come è stata calcolata questa velocità?

In realtà, ora è 68.000 volte più veloce! Ma riconosciamo che si tratta solo di un singolo programma in Mandelbrot – è possibile leggere una serie di tre articoli sul nostro blog su come abbiamo raggiunto questo risultato – qui, qui e qui. Naturalmente, facciamo questo da molto tempo e sappiamo che i miglioramenti delle prestazioni non sono ciò che determina l’adozione di un linguaggio (nonostante siano divertenti!); è la velocità degli sviluppatori, l’usabilità del linguaggio, gli strumenti e la documentazione di alta qualità e una comunità che utilizza l’infrastruttura per inventare e costruire in modi che nemmeno possiamo immaginare. Siamo costruttori di strumenti e il nostro obiettivo è quello di permettere al mondo di utilizzare i nostri strumenti per creare prodotti straordinari e risolvere problemi importanti. Se ci concentriamo sul nostro obiettivo più ampio, in realtà stiamo creando un linguaggio che si adatta a te dove ti trovi oggi e ti solleva facilmente verso un mondo migliore. Mojo ti consente di avere un linguaggio altamente performante, utilizzabile, staticamente tipizzato e portabile che si integra senza soluzione di continuità con il tuo codice Python esistente, offrendoti il meglio di entrambi i mondi. Ti consente di sfruttare la vera potenza dell’hardware con multithreading e parallelizzazione in modi che il puro Python oggi non può fare, sbloccando la comunità globale di sviluppatori per avere un linguaggio unico che scala dall’alto verso il basso.

La magia di Mojo sta nella sua capacità di unificare i linguaggi di programmazione con un unico set di strumenti, perché è così importante?

I linguaggi hanno sempre successo grazie al potere dei loro ecosistemi e delle comunità che si formano attorno a essi. Abbiamo lavorato a lungo con le comunità open source e siamo estremamente attenti nell’interagire nel modo giusto e nel fare del bene alla comunità. Stiamo lavorando duramente per fornire la nostra infrastruttura, ma abbiamo bisogno di tempo per far crescere il nostro team, quindi non avremo tutte le risposte immediatamente, ma ci arriveremo. Nel complesso, il nostro obiettivo è quello di valorizzare l’ecosistema Python abbracciando l’intero ecosistema esistente e non cerchiamo di frammentarlo come tanti altri progetti. L’interoperabilità rende più facile per la comunità provare la nostra infrastruttura senza dover riscrivere tutto il loro codice, e questo conta molto per l’AI.

Inoltre, abbiamo imparato molto dallo sviluppo dell’infrastruttura e degli strumenti per l’AI negli ultimi dieci anni. I sistemi monolitici esistenti non sono facilmente estensibili o generalizzabili al di fuori del loro dominio iniziale e ciò ha portato a un’industria di implementazione dell’AI enormemente frammentata, con decine di catene di strumenti che presentano scambi e limitazioni diverse. Questi modelli di progettazione hanno rallentato il ritmo dell’innovazione perché sono meno usabili, meno portabili e più difficili da scalare.

Il sistema AI di prossima generazione deve essere di qualità produttiva e incontrare gli sviluppatori dove si trovano. Non deve richiedere una riscrittura costosa, una rielaborazione o un ricondizionamento del codice dell’utente. Deve essere nativamente multi-framework, multi-cloud e multi-hardware. Deve combinare le migliori prestazioni e efficienza con la miglior usabilità. Questo è l’unico modo per ridurre la frammentazione e sbloccare la prossima generazione di innovazioni hardware, dati e algoritmiche.

Modular ha recentemente annunciato di aver raccolto 100 milioni di dollari in nuovi finanziamenti, guidati da General Catalyst e sostenuti dagli investitori esistenti GV (Google Ventures), SV Angel, Greylock e Factory. Cosa dobbiamo aspettarci in futuro?

Questo nuovo capitale sarà utilizzato principalmente per far crescere il nostro team, assumendo le migliori persone nell’infrastruttura AI e continuando a soddisfare l’enorme domanda commerciale che stiamo riscontrando per la nostra piattaforma. Modverse, la nostra comunità di oltre 130K+ sviluppatori e di migliaia di aziende, sta cercando la nostra infrastruttura, quindi vogliamo assicurarci di continuare a scalare e lavorare duramente per svilupparla per loro e consegnarla a loro. Ci poniamo uno standard incredibilmente alto e i prodotti che consegniamo sono il riflesso di chi siamo come team e di chi diventiamo come azienda. Se conoscete qualcuno che è motivato, che ama il confine tra software e hardware e che vuole contribuire a far penetrare l’AI nel mondo in modo significativo e positivo, indirizzatelo da noi.

Qual è la tua visione per il futuro della programmazione?

La programmazione dovrebbe essere una competenza che tutti nella società possono sviluppare e utilizzare. Per molti, l’idea di programmazione evoca immediatamente l’immagine di uno sviluppatore che scrive codice complesso a basso livello che richiede molta matematica e logica, ma non deve essere percepita in questo modo. La tecnologia è sempre stata un grande facilitatore di produttività per la società e rendendo la programmazione più accessibile e utilizzabile, possiamo permettere a più persone di abbracciarla. Dare alle persone il potere di automatizzare processi ripetitivi e semplificare le loro vite è un modo potente per restituire più tempo alle persone.

E in Python, abbiamo già un linguaggio meraviglioso che ha resistito alla prova del tempo: è il linguaggio più popolare al mondo, con una comunità incredibile, ma ha anche delle limitazioni. Credo che abbiamo un’enorme opportunità di renderlo ancora più potente e di incoraggiare più persone nel mondo ad abbracciarne la bellezza e la semplicità. Come ho detto prima, si tratta di costruire prodotti che hanno una progressiva rivelazione della complessità: consentendo astrazioni ad alto livello, ma scalando fino a livelli incredibilmente bassi. Stiamo già assistendo a un significativo balzo in avanti con i modelli di AI che consentono traduzioni progressive da testo a codice, e nel tempo diventeranno sempre più personalizzati, ma dietro questa magica innovazione c’è ancora uno sviluppatore che scrive e distribuisce il codice per alimentarla. Abbiamo già scritto al riguardo in passato: l’AI continuerà a sbloccare creatività e produttività in molti linguaggi di programmazione, ma credo anche che Mojo aprirà l’apertura dell’ecosistema ancora di più, consentendo un maggiore accesso, scalabilità e portabilità dell’hardware a molti altri sviluppatori in tutto il mondo.

Per concludere, l’AI penetrerà le nostre vite in modi inimmaginabili e sarà ovunque, quindi spero che Mojo catalizzi gli sviluppatori a risolvere i problemi più importanti per l’umanità più velocemente, ovunque vivano nel nostro mondo. Credo che sia un futuro degno di essere combattuto.

Grazie per l’intervista, i lettori che desiderano saperne di più possono visitare Modular.