Serie API – OctoML: le API ML devono trarre insegnamento dai loro antenati

Questo è un guest post per Computer Weekly Developer Network scritto da Jason Knight nel suo ruolo di chief product officer di OctoML — l’azienda è nota per il suo lavoro bsquillante agilità DevOps per l’implementazione di ML per consentire agli sviluppatori e alle operazioni IT di creare app basate sull’intelligenza artificiale.

Knight scrive quanto segue…

Tutti abbiamo visto il Stupefacente prodezze Quello l’apprendimento automatico moderno è in grado di farlo. Ma queste sono solo la punta dell’iceberg. Gli eroi sconosciuti dei modelli di apprendimento automatico sono i modelli più piccoli che fanno funzionare meglio il software esistente, spesso molto meglio, e consentono nuove piccole esperienze che prima non erano possibili.

Ma la difficoltà di creare applicazioni intelligenti con la combinazione di apprendimento automatico e ingegneria del software tradizionale si basa ancora su una grande quantità di dolore, sudore e lacrime.

Gran parte di ciò è dovuto alla mancanza di API stabili e robuste per l’apprendimento automatico.

Colli di bottiglia e debito tecnico

I primi framework di machine learning di deep learning tradizionali come Theano e Caffe sono stati originariamente creati per fornire ai data scientist API per definire e quindi addestrare modelli su set di dati di esempio. La distribuzione spesso non è stata nemmeno presa in considerazione o lasciata come un ripensamento poiché questi framework sono stati scritti da e per la comunità accademica di apprendimento automatico.

Successivamente, TensorFlow e poi PyTorch hanno aumentato la flessibilità e le capacità disponibili per i data scientist e la stretta adozione da parte di PyTorch dell’interprete e del linguaggio Python come API ML primaria ha consentito ampi progressi in termini di ergonomia e flessibilità per i data scientist.

Ma questi vantaggi hanno un costo. L’approccio Python-language-as-model-definition di PyTorch rende difficile la spedizione di modelli ad altri stack o dispositivi di produzione.

Ciò contribuisce alle difficoltà di spostare i modelli di apprendimento automatico dallo sviluppo alla produzione. Vedere questo post sul blog raccontando una breve storia dei compromessi di PyTorch dal creatore Soumith Chintala, o il famigerato e ancora altamente applicabile carta di Google“Apprendimento automatico: la carta di credito ad alto interesse del debito tecnico” per un’ulteriore immersione in questi compromessi e sfide.

Per far fronte alle complessità risultanti dall’accoppiamento del codice Python con la definizione del modello ML, il codice PyTorch viene spesso “buttato oltre il muro” dai team di sviluppo delle organizzazioni ai team operativi o di produzione che sono responsabili del porting, del mantenimento o della distribuzione di questo codice su API e sistemi di produzione.

Questo suona familiare a chiunque abbia sviluppato software nei giorni prima che avessimo le API per testare, fornire e monitorare automaticamente il software distribuito?

Abilitazione sviluppatori ML

Per accelerare l’avanzamento del ML per potenziare le applicazioni intelligenti di domani, dobbiamo rendere più facile per i data scientist l’implementazione del proprio codice fornendo loro strumenti affinché le loro API di sviluppo corrispondano alle API di produzione, sia nel cloud che nell’edge .

L’unico modo per farlo è creare migliori astrazioni (API) e piattaforme che conservano ancora la flessibilità di cui godono gli sviluppatori oggi, ma consentono anche la portabilità e le prestazioni dell’hardware senza sforzo di porting/integrazione manuale.

Stiamo iniziando a vedere i primi segni di ciò con librerie e strumenti che astraggono meglio la complessità per consentire agli utenti di fare di più con meno. Esempi di questo includono la libreria di trasformatori di HuggingFace e BentoML.

Stiamo anche assistendo a piattaforme di machine learning end-to-end (offerte API ML ospitate da AKA). Queste piattaforme possono essere utili per le persone che hanno appena iniziato nel settore poiché consentono alle API di sviluppo ML e alle API ospitate ML di essere più armoniose per la costruzione, ma resta da vedere se queste diventeranno il modo predominante per eseguire l’apprendimento automatico. Un dato storico interessante da utilizzare per il confronto è il mondo dell’ingegneria SW classica in cui abbiamo riscontrato un discreto successo per piattaforme di sviluppo end-to-end come Heroku, ma in generale, lo sviluppo del software oggi è ancora in gran parte eseguito su un misto di hosting e non soluzioni ospitate che vengono combinate insieme dai team in modi diversi.

Un’altra possibilità per il modo in cui le API degli sviluppatori ML verranno avvicinate maggiormente alle API di produzione è attraverso l’aumento dei modelli di base: un insieme più piccolo di modelli grandi e flessibili creati dalla comunità. Questi modelli fondamentali sono distribuiti liberamente da un piccolo insieme di sofisticati hub ML e vengono quindi messi a punto o prontamente progettati per un determinato scopo.

Ciò potrebbe restringere i flussi di lavoro di ingegneria ML in modo tale da semplificare il problema dell’allineamento delle API di sviluppo e delle API di produzione. La distribuzione di blocchi costitutivi di modelli fondamentali flessibili ha anche analogie con l’aumento dei playbook e delle API open source come lo stack LAMP nella prima programmazione Web, SQLite nell’archiviazione dei dati incorporata o MPI e poi le API Kubernetes per la programmazione distribuita.

Ma solo il tempo dirà se il consolidamento attorno a un insieme più piccolo di modelli fondamentali (da cui i flussi di lavoro e le API) supererà la diversificazione man mano che il ML continua a svilupparsi e specializzarsi.

Cosa possono fare gli sviluppatori ML oggi?

Per quelli di voi che oggi creano applicazioni intelligenti, il nome del gioco è cercare di evitare la complessità accidentale, al contrario complessità essenziale – ove possibile. Questo è vero per l’ingegneria del software in generale, ma diventa ancora più importante quando si aggiunge il ML al software perché la complessità essenziale del ML stesso significa che hai ancora meno budget da sperperare.

In pratica, questo significa adottare (e costruire) il numero minimo di nuovi strumenti di ML, piattaforme e servizi di API. E per quelli che adotti, assicurati che abbiano un ambito limitato, come quello che ci insegna la filosofia Unix degli strumenti che servono a scopi singoli e API semplici.

Nel corso del tempo, le nostre API di sviluppo e distribuzione del software continueranno a integrarsi e ad espandersi a sufficienza per comprendere il ML proprio come sono cresciute per gestire le innovazioni passate nello sviluppo del software prima di loro.

Leave a Comment

Your email address will not be published. Required fields are marked *