Modelli e piattaforme di IA
Tim Davis, Co-Fondatore e Presidente di Modular – Serie di Interviste

Tim Davis è il Co-Fondatore e Presidente di Modular, un’integrazione di strumenti componibili 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 seriale e Leader di Prodotto. Tim ha aiutato a costruire, fondare e scalare grandi parti dell’infrastruttura di intelligenza artificiale di Google (GOOGL ) 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 di 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 programmazione e cosa ti ha attirato?
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 durante le scuole superiori e l’università, dove ho utilizzato linguaggi statici tradizionali per corsi di ingegneria, e nel tempo ho anche provato fino a Javascript e VBA, prima di stabilirmi su Python per la maggior parte della programmazione come linguaggio della scienza dei dati e dell’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 sono 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’intelligenza artificiale anni fa quando mi sono trasferito per unirmi al team Brain. Le lezioni più grandi che ho imparato sono state sempre quelle di concentrarsi sull’utente e di svelare progressivamente la complessità, per consentire agli utenti di raccontare le loro storie uniche al mondo come risolvere il Greater Barrier Reef o aiutare le persone come Jason the Drummer, e per attirare e riunire un mix diversificato di persone per raggiungere 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 indietro con affetto e apprezzo 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 e veramente capire i sistemi di intelligenza artificiale. Questo mi ha fatto rendere conto del potere profondo che l’intelligenza artificiale 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 come è nata Modular?
Chris e io ci siamo incontrati a Google e abbiamo spedito molte tecnologie influenti che hanno avuto un impatto significativo sul mondo dell’intelligenza artificiale oggi. Tuttavia, abbiamo sentito che l’intelligenza artificiale era stata ostacolata da un’infrastruttura troppo complessa e frammentata che abbiamo visto da vicino distribuendo grandi carichi di lavoro a miliardi di utenti. Eravamo motivati dal desiderio di accelerare l’impatto dell’intelligenza artificiale sul mondo sollevando l’industria verso software di intelligenza artificiale di qualità produttiva 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’intelligenza artificiale possa aiutare a risolvere, quante malattie curare, quanto più produttivi possiamo diventare come specie, per migliorare la nostra esistenza per le generazioni future, aumentando la penetrazione di questa tecnologia incredibile.
Avendo lavorato insieme per anni su infrastrutture di intelligenza artificiale su larga scala – abbiamo visto il grande dolore dei sviluppatori per primo – “perché le cose non funzionano semplicemente?” Perché il mondo possa adottare e scoprire la natura trasformativa incredibile dell’intelligenza artificiale, abbiamo bisogno di software e infrastrutture per sviluppatori che si estendono dalla ricerca alla produzione e sono altamente accessibili. Ciò ci consentirà di sbloccare la prossima via per le scoperte scientifiche – delle quali l’intelligenza artificiale sarà critica – e questo è una grande sfida di ingegneria. Con questo sfondo motivante, abbiamo sviluppato una convinzione intrinseca che potremmo intraprendere un nuovo approccio per l’infrastruttura di intelligenza artificiale e potenziare gli sviluppatori ovunque per utilizzare l’intelligenza artificiale 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 al mondo come risultato.
Puoi discutere come il linguaggio di programmazione Mojo è stato inizialmente costruito per il tuo team?
La visione di Modular è quella di consentire all’intelligenza artificiale 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 ci importa di più, e avendo costruito così tanto dell’infrastruttura di intelligenza artificiale esistente per il mondo – abbiamo dovuto considerare attentamente cosa avrebbe consentito al nostro team di muoversi più velocemente. Abbiamo vissuto il problema del linguaggio a due mondi nell’intelligenza artificiale – dove i ricercatori vivono in Python, e la produzione e gli ingegneri del software vivono in C++ – e non abbiamo avuto 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 molti modi diversi per risolverlo – ci siamo avvicinati 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 realizzato che non c’è linguaggio oggi, a nostro parere, che possa risolvere tutte le sfide che stiamo cercando di risolvere per l’intelligenza artificiale, quindi abbiamo intrapreso un approccio di prima istanza, 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 consentendo ai modelli di intelligenza artificiale di 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 passato del nostro team nella creazione di questa infrastruttura, è naturale che la utilizziamo ampiamente a Modular e questo sostiene il nostro approccio all’avanguardia nello sviluppo di nuova infrastruttura di intelligenza artificiale per il mondo. Criticamente, mentre MLIR sta essere adottato rapidamente, Mojo è il primo linguaggio che realmente sfrutta il potere di MLIR e lo espone agli sviluppatori in un modo unico e accessibile. Ciò significa che si estende da sviluppatori Python che scrivono applicazioni a ingegneri delle prestazioni che distribuiscono codice ad alte prestazioni, a ingegneri del software 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 prestazioni elevate di C. È una semplificazione eccessiva? 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 noterai mentre si porta un semplice programma Python a Mojo, tra cui il fatto che funzionerà direttamente. Uno dei nostri obiettivi principali per Mojo è fornire un superset di Python – cioè, rendere Mojo compatibile con i programmi Python esistenti – e abbracciare l’implementazione CPython per il supporto dell’ecosistema a lungo termine. Quindi consentire di aumentare gradualmente il 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-ottimizzazione 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 gli algoritmi in più lingue. 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.
Nel recente keynote è stato mostrato che Mojo è 35.000 volte più veloce di Python, come è stata calcolata questa velocità?
In realtà è 68.000 volte più veloce ora! Ma riconosciamo che si tratta solo di un singolo programma in Mandelbrot – puoi andare a 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à degli sviluppatori, 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 ti 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. Ti consente di realizzare il vero potere del hardware con multithreading e parallelizzazione in modi che il Python grezzo di oggi non può – sbloccando la comunità globale degli sviluppatori per avere un singolo linguaggio che si estende 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 grazie al 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 a fare ciò che è giusto per la comunità. Stiamo lavorando duramente per spedire la nostra infrastruttura e 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 cerchiamo di dividerlo 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’intelligenza artificiale.
Inoltre, abbiamo imparato molto dallo sviluppo dell’infrastruttura e degli strumenti di intelligenza artificiale negli ultimi dieci anni. I sistemi monolitici esistenti non sono facilmente estensibili o generalizzabili al di fuori del loro dominio di destinazione iniziale e la conseguenza è un’industria di distribuzione di intelligenza artificiale altamente frammentata con decine di catene di strumenti che portano diversi compromessi e limitazioni. Questi modelli di progettazione hanno rallentato il ritmo dell’innovazione rendendoli meno utilizzabili, meno portatili e più difficili da scalare.
Il sistema di intelligenza artificiale di prossima generazione deve essere di qualità produttiva e deve incontrare gli sviluppatori dove si trovano. Non deve richiedere una costosa riscrittura, una riarchitettura o una riorganizzazione del codice dell’utente. Deve essere nativamente multi-framework, multi-cloud e multi-hardware. Deve combinare le migliori prestazioni e l’efficienza con l’usabilità migliore. Questo è l’unico modo per ridurre la frammentazione e sbloccare la prossima generazione di innovazioni hardware, dati e algoritmi.
Modular ha recentemente annunciato di aver raccolto 100 milioni di dollari in nuovo finanziamento, guidato da General Catalyst e completato 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 la grande domanda commerciale che stiamo vedendo per la nostra piattaforma. Modverse, la nostra comunità di oltre 130K+ sviluppatori e 10K imprese, stanno tutti cercando la nostra infrastruttura – quindi vogliamo assicurarci di continuare a scalare e lavorare duramente per svilupparla per loro e consegnarla loro. Ci teniamo a uno standard incredibilmente alto e i prodotti che spediamo sono un riflesso di chi siamo come team e di chi diventiamo come azienda. Se conosci qualcuno che è motivato, che ama il confine tra software e hardware e che vuole aiutare a far penetrare l’intelligenza artificiale nel 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 nella società possa sviluppare e utilizzare. Per molti, l’“idea” di programmazione evoca immediatamente un’immagine di uno sviluppatore che scrive codice a basso livello complesso che richiede matematica pesante 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 per abbracciarla. Potenziare le persone per automatizzare processi ripetitivi e rendere le loro vite più semplici è un modo potente per dare loro più tempo.
E in Python, abbiamo già un linguaggio meraviglioso che ha superato la prova del tempo – è il linguaggio più popolare del mondo, con una comunità incredibile – ma ha anche limitazioni. Credo che abbiamo una grande opportunità per renderlo ancora più potente e per incoraggiare più persone nel mondo a abbracciare la sua bellezza e semplicità. Come ho detto prima, si tratta di costruire prodotti che hanno una progressiva esposizione della complessità – consentendo astrazioni ad alto livello, ma scalando anche a quelle a basso livello. Stiamo già assistendo a un grande balzo in avanti con i modelli di intelligenza artificiale che consentono traduzioni testo-codice progressive – 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’intelligenza artificiale 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 per molti più sviluppatori in tutto il mondo.
Per concludere, l’intelligenza artificiale penetrerà le nostre vite in modi inimmaginabili e sarà ovunque – quindi spero che Mojo catalizzi gli sviluppatori per 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ù possono visitare Modular.












