Intelligenza artificiale
Tim Davis, Co-Fondatore & Presidente di Modular – Serie di Interviste

Tim Davis, è il Co-Fondatore & Presidente di Modular, un’integrazione, una suite componibile di strumenti che semplifica la tua infrastruttura di intelligenza artificiale in modo che il tuo team possa sviluppare, distribuire e innovare più velocemente. Modular è noto per aver sviluppato Mojo, un nuovo linguaggio di programmazione che colma il divario tra ricerca e produzione combinando il meglio di Python con sistemi e metaprogrammazione.
Imprenditore ripetuto e Leader di Prodotto. Tim ha aiutato a costruire, fondare e scalare grandi parti dell’infrastruttura di intelligenza artificiale di Google presso Google Brain e Core Systems da API (TensorFlow), Compilatori (XLA & MLIR) e runtime per server (CPU/GPU/TPU) e TF Lite (Mobile/Micro/Web), Android ML & NNAPI, infrastruttura per modelli di grandi dimensioni 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 codifica, e cosa ti ha attirato verso di essa?
Da bambino cresciuto in Australia, mio padre mi ha portato a casa un Commodore 64C e i giochi erano ciò che mi ha fatto innamorare – Boulder Dash, Maniac Mansion, Double Dragon – che momento per essere vivo. Quel computer mi ha introdotto al BASIC e giocare con esso è stata la mia prima vera introduzione alla programmazione. Le cose sono diventate più intense attraverso la scuola superiore e l’università dove ho utilizzato linguaggi statici tradizionali per corsi di ingegneria, e nel tempo ho anche provato tutto il way fino a Javascript e VBA, prima di stabilirmi su Python per la maggior parte della programmazione come linguaggio di scienza dei dati e intelligenza artificiale. Ho scritto un sacco di codice nelle mie prime startup, ma questi giorni, naturalmente, utilizzo Mojo e la catena di strumenti che abbiamo creato intorno ad esso.
Per oltre 5 anni hai lavorato a Google come Senior Product Manager e Group Product Leader, dove hai aiutato a scalare grandi parti dell’infrastruttura di intelligenza artificiale di Google presso Google Brain. Cosa hai imparato da questa esperienza?
Le persone sono ciò che costruiscono tecnologie e prodotti che cambiano il mondo, e è un gruppo di persone devoto legato da una visione più ampia che li porta al mondo. Google è un’azienda incredibile, con persone incredibili, e sono stato fortunato a incontrare e lavorare con molte delle menti più brillanti nell’IA anni fa quando mi sono trasferito per unirmi al team Brain. Le lezioni più grandi che ho imparato sono state quelle di concentrarsi sempre sull’utente e di svelare progressivamente la complessità, per potenziare gli utenti a raccontare le loro storie uniche al mondo come risolvere il Greater Barrier Reef o aiutare le persone come Jason the Drummer, e di attirare e radunare un mix diversificato di persone per spingere verso un obiettivo comune. In una grande azienda di persone molto intelligenti e talentuose, questo è 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. Guarderò sempre con affetto e apprezzerò che molte persone abbiano corso rischi su di 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, per immergermi profondamente e capire veramente i sistemi di intelligenza artificiale. Mi ha fatto veramente capire il potere profondo che l’IA ha per impattare il mondo, e questo è stato il motivo per cui ho avuto l’ispirazione e il coraggio di lasciare e co-fondare Modular.
Puoi condividere la storia di genesi di Modular?
Chris e io ci siamo incontrati a Google e abbiamo spedito molte tecnologie influenti che hanno avuto un impatto significativo sul mondo dell’IA oggi. Tuttavia, abbiamo sentito che l’IA era stata bloccata da un’infrastruttura troppo complessa e frammentata che abbiamo visto di persona deployando grandi carichi di lavoro per miliardi di utenti. Eravamo motivati dal desiderio di accelerare l’impatto dell’IA sul mondo sollevando l’industria verso software di intelligenza artificiale di produzione di qualità in modo che, come società globale, possiamo avere un impatto maggiore su come viviamo. Non si può fare a meno di chiedersi quanti problemi l’IA possa aiutare a risolvere, quante malattie curare, quanto più produttivi possiamo diventare come specie, per ulteriori generazioni, aumentando la penetrazione di questa tecnologia incredibile.
Avendo lavorato insieme per anni su grandi infrastrutture di intelligenza artificiale critiche – abbiamo visto il enorme dolore dello sviluppatore in prima persona – “perché le cose non funzionano semplicemente”? Perché il mondo possa adottare e scoprire la natura trasformativa incredibile dell’IA, abbiamo bisogno di software e infrastrutture per gli sviluppatori che si scalano dalla ricerca alla produzione e sono altamente accessibili. Ciò ci consentirà di sbloccare la prossima via di scoperte scientifiche – delle quali l’IA sarà critica – e è una grande sfida di ingegneria. Con questo sfondo motivante, abbiamo sviluppato una convinzione intrinseca che potremmo partire per costruire un nuovo approccio per l’infrastruttura di intelligenza artificiale e potenziare gli sviluppatori ovunque per utilizzare l’IA per aiutare 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 infrastrutture di intelligenza artificiale del mondo come risultato.
Puoi discutere come il linguaggio di programmazione Mojo sia stato inizialmente costruito per il tuo team?
La visione di Modular è quella di consentire all’IA di essere utilizzata da chiunque, ovunque. Tutto ciò che facciamo a Modular è focalizzato su quell’obiettivo, e camminiamo all’indietro da esso nel modo in cui costruiamo i nostri prodotti e la nostra tecnologia. In questa luce, la nostra velocità di sviluppo è ciò che conta per noi in primo luogo, e avendo costruito così tanto dell’infrastruttura di intelligenza artificiale esistente per il mondo – abbiamo bisogno di considerare attentamente cosa avrebbe consentito al nostro team di muoversi più velocemente. Abbiamo vissuto attraverso il problema del linguaggio a due mondi in IA – dove i ricercatori vivono in Python, e gli ingegneri di produzione e hardware vivono in C++ – e non avevamo altra scelta che seguire quella strada o rivedere l’approccio interamente. Abbiamo scelto quest’ultimo. C’era un chiaro bisogno di risolvere questo problema, ma molte diverse modalità per risolverlo – l’abbiamo affrontato con la nostra forte convinzione di incontrare l’ecosistema dove si trova oggi e di consentire un sollevamento più semplice nel futuro. Il nostro team porta le cicatrici della migrazione del software su larga scala, e non volevamo una ripetizione di ciò. Abbiamo anche capito che non c’è linguaggio oggi, a nostro parere, che possa risolvere tutte le sfide che stiamo cercando di risolvere per l’IA e quindi abbiamo intrapreso un approccio di prima principio, e Mojo è nato.
Come fa Mojo a consentire una scalabilità e una portabilità senza soluzione di continuità su molti tipi di hardware?
Chris, io stesso e il nostro team a Google (molti a Modular) hanno aiutato a portare MLIR nel mondo anni fa – con l’obiettivo di aiutare la comunità globale a risolvere sfide reali aiutando i modelli di intelligenza artificiale a essere rappresentati e eseguiti in modo coerente su qualsiasi tipo di hardware. MLIR è una nuova infrastruttura di compilatore open-source che è stata adottata su larga scala e sta diventando rapidamente lo standard per la costruzione di compilatori attraverso LLVM. Dato il nostro team di storia nella creazione di questa infrastruttura, è naturale che la utilizziamo ampiamente a Modular e questo sostiene il nostro approccio di stato dell’arte nello sviluppare una nuova infrastruttura di intelligenza artificiale per il mondo. Criticamente, mentre MLIR sta essere adottato rapidamente, Mojo è il primo linguaggio che veramente prende il potere di MLIR e lo espone agli sviluppatori in un modo unico e accessibile. Ciò significa che si scala da sviluppatori Python che scrivono applicazioni, a ingegneri delle prestazioni che distribuiscono codice ad alte prestazioni, a ingegneri hardware che scrivono codice di sistema a basso livello per il loro hardware unico.
Riferimenti a Mojo affermano che è fondamentalmente Python++, con l’accessibilità di Python e le alte prestazioni di C. È una grossolana semplificazione? Come lo descriveresti?
Mojo dovrebbe sembrare molto familiare a qualsiasi programmatore Python, poiché condivide la sintassi di Python. Ma ci sono alcune differenze importanti che vedrai mentre si porta un semplice programma Python a Mojo, inclusi che funzionerà semplicemente fuori dalla scatola. Uno dei nostri obiettivi principali per Mojo è fornire un superset di Python – ovvero, rendere Mojo compatibile con programmi Python esistenti – e abbracciare l’implementazione di CPython per il supporto dell’ecosistema a lunga coda. Quindi consentire di aumentare 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’autotuning e molti altri aspetti per ottenere le prestazioni di C o migliori! Sentiamo che Mojo ti dà 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 sarà un’impresa pluriennale, ma siamo impegnati a renderlo realtà e a consentire alla nostra leggendaria comunità di oltre 140K+ sviluppatori di aiutarci a costruire il futuro insieme.
Nella recente keynote è stato mostrato che Mojo è 35.000 volte più veloce di Python, come è stato calcolato questo aumento di velocità?
In realtà è 68.000 volte più veloce ora! Ma riconosciamo che è solo un singolo programma in Mandelbrot – puoi andare e leggere una serie di tre post del blog su come abbiamo raggiunto questo – qui, qui e qui. Naturalmente, abbiamo fatto questo per molto tempo e sappiamo che i giochi di prestazioni non sono ciò che guidano l’adozione del linguaggio (nonostante siano divertenti!) – è la velocità dello sviluppatore, l’usabilità del linguaggio, gli strumenti di alta qualità e la documentazione, e una comunità che utilizza l’infrastruttura per inventare e costruire in modi che non possiamo nemmeno immaginare. Siamo costruttori di strumenti, e il nostro obiettivo è potenziare il mondo per utilizzare i nostri strumenti, per creare prodotti incredibili e risolvere problemi importanti. Se ci concentriamo sul nostro obiettivo più ampio, è in realtà creare un linguaggio che ti incontra dove sei oggi e poi ti solleva facilmente in un mondo migliore. Mojo consente di avere un linguaggio altamente performante, usabile, staticamente tipizzato e portabile che si integra perfettamente con il tuo codice Python esistente – dando il meglio di entrambi i mondi. Consente di realizzare il vero potere del hardware con multithreading e parallelizzazione in modi che il raw Python di oggi non può – sbloccando la comunità globale degli sviluppatori per avere un singolo linguaggio che si scala dall’alto in basso.
La magia di Mojo è la sua capacità di unificare i linguaggi di programmazione con un set di strumenti, perché è così importante?
I linguaggi hanno sempre successo per il potere dei loro ecosistemi e delle comunità che si formano intorno ad essi. Abbiamo lavorato con comunità open-source per molto tempo, e siamo incredibilmente attenti a impegnarci nel modo giusto e assicurarci di fare ciò che è giusto per la comunità. Stiamo lavorando incredibilmente sodo per spedire la nostra infrastruttura, ma abbiamo bisogno di tempo per scalare il nostro team – quindi non avremo tutte le risposte immediatamente, ma ci arriveremo. Facendo un passo indietro, il nostro obiettivo è sollevare l’ecosistema Python abbracciando l’ intero ecosistema esistente, e non stiamo cercando di frantumarlo come molti altri progetti. L’interoperabilità rende solo più facile per la comunità provare la nostra infrastruttura, senza dover riscrivere tutto il loro codice, e questo conta molto per l’IA.
Inoltre, abbiamo imparato così tanto dallo sviluppo di infrastrutture e strumenti di intelligenza artificiale negli ultimi dieci anni. I sistemi monolitici esistenti non sono facilmente estensibili o generalizzabili al di fuori del loro obiettivo di dominio iniziale e la conseguenza è un’industria di distribuzione di IA altamente frammentata con dozzine di catene di strumenti che portano diversi compromessi e limitazioni. Questi modelli di progettazione hanno rallentato il ritmo dell’innovazione rendendoli meno usabili, meno portatili e più difficili da scalare.
Il prossimo sistema di intelligenza artificiale di generazione deve essere di produzione di qualità e deve incontrare gli sviluppatori dove si trovano. Non deve richiedere una costosa riscrittura, una riarchitettura o una ri-basi del codice dell’utente. Deve essere nativamente multi-framework, multi-cloud e multi-hardware. Deve combinare le migliori prestazioni e l’efficienza con la migliore usabilità. Questo è l’unico modo per ridurre la frammentazione e sbloccare la prossima generazione di innovazioni di hardware, dati e algoritmi.
Modular ha recentemente annunciato di aver raccolto 100 milioni di dollari in nuove entrate, guidato da General Catalyst e riempito da investitori esistenti GV (Google Ventures), SV Angel, Greylock e Factory. Cosa dovremmo aspettarci dopo?
Questo nuovo capitale sarà utilizzato principalmente per crescere il nostro team, assumendo le migliori persone nell’infrastruttura di intelligenza artificiale e continuando a soddisfare l’enorme domanda commerciale che stiamo vedendo per la nostra piattaforma. Modverse, la nostra comunità di oltre 130K+ sviluppatori e 10K di imprese, stanno cercando la nostra infrastruttura – quindi vogliamo assicurarci di continuare a scalare e lavorare sodo per svilupparla per loro e consegnarla loro. Ci teniamo a uno standard incredibilmente alto e i prodotti che spediscono sono un riflesso di chi siamo come team e di chi diventiamo come azienda. Se conosci qualcuno che è guidato, che ama il confine tra software e hardware e che vuole aiutare a vedere l’IA penetrare il mondo in un modo significativo e positivo – mandalo da noi.
Qual è la tua visione per il futuro della programmazione?
La programmazione dovrebbe essere una competenza che chiunque in società possa sviluppare e utilizzare. Per molti, l’“idea” di programmazione istantaneamente evoca un’immagine di uno sviluppatore che scrive codice a basso livello complesso che richiede pesante matematica e logica – ma non deve essere percepito in questo modo. La tecnologia è sempre stata un grande abilitatore di produttività per la società e rendendo la programmazione più accessibile e usabile, possiamo potenziare più persone ad abbracciarla. Potenziare le persone ad automatizzare processi ripetitivi e a rendere le loro vite più semplici è un modo potente per dare alle persone più tempo.
E in Python, abbiamo già un linguaggio meraviglioso che ha resistito alla prova del tempo – è il linguaggio più popolare del mondo, con una comunità incredibile – ma ha anche limitazioni. Credo che abbiamo una grande opportunità di renderlo ancora più potente e di incoraggiare più del mondo ad abbracciare la sua bellezza e semplicità. Come ho detto prima, si tratta di costruire prodotti che hanno una progressiva esposizione della complessità – abilitando astrazioni ad alto livello, ma scalando a quelle incredibilmente basse anche – noi stiamo già assistendo a un salto significativo con i modelli di intelligenza artificiale che abilitano la traduzione progressiva del testo in codice – e questi diventeranno solo più personalizzati nel tempo – ma dietro questa innovazione magica c’è ancora uno sviluppatore che autore e distribuisce codice per alimentarlo. Abbiamo scritto su questo nel passato – l’IA continuerà a sbloccare la creatività e la produttività attraverso molti linguaggi di programmazione, ma credo anche che Mojo aprirà l’apertura dell’ecosistema ancora di più, potenziando l’accessibilità, la scalabilità e la portabilità hardware a molti più sviluppatori in tutto il mondo.
Per finire, l’IA penetrerà le nostre vite in modi inimmaginabili e esisterà ovunque – quindi spero che Mojo catalizzi gli sviluppatori ad andare e risolvere i problemi più importanti per l’umanità più velocemente – non importa dove vivono nel nostro mondo. Credo che questo sia un futuro per cui vale la pena lottare.
Grazie per la grande intervista, i lettori che desiderano saperne di più dovrebbero visitare Modular.
