Analizzando prodotti di machine learning open-source
Uno studio sulla situazione attuale dello sviluppo di prodotti di ML open-source.
― 7 leggere min
Indice
Il machine learning (ML) sta diventando una parte comune di molti prodotti software. Questo include funzionalità come il riconoscimento facciale nelle app o raccomandazioni sui social media. Tuttavia, rendere il ML parte di un prodotto non significa solo costruire il modello; ci sono molti altri aspetti da considerare, come la progettazione del sistema, l'esperienza utente, la sicurezza e i test. Questo rende difficile per gli sviluppatori trasformare i progetti di ML in prodotti finiti. Hanno bisogno di supporto per affrontare queste sfide.
Sfortunatamente, i ricercatori spesso trovano difficile studiare prodotti ML nel mondo reale poiché di solito non hanno accesso al codice reale dell'industria. Invece, si affidano a interviste o sondaggi con persone che lavorano nel settore. Alcuni ricercatori possono lavorare all'interno di un'azienda e avere un accesso migliore, ma sono per lo più limitati a quella specifica azienda e alle sue pratiche. Questa mancanza di accesso ai veri prodotti ML rallenta la ricerca e porta a molti studi che identificano problemi senza offrire soluzioni concrete.
Il campo dell'ingegneria del software ha guadagnato molto dai software open-source. I progetti open-source permettono ai ricercatori di analizzare e imparare da esempi reali, il che può portare a nuove innovazioni che potrebbero essere adottate nel settore. Proprio come nel settore dell'ingegneria software, avere prodotti ML open-source disponibili potrebbe creare nuove opportunità per la ricerca e l'educazione.
In questo studio, puntiamo a identificare una raccolta di prodotti ML open-source per aiutare a far progredire la comprensione e lo Sviluppo di software che integra il ML.
Sfide nello Studio dei Prodotti ML
Alcuni tentativi passati di studiare progetti ML open-source spesso si concentrano solo su uno o due esempi specifici o usano dati che non sono rappresentativi dei prodotti ML reali. Molti studi menzionano FaceSwap come prodotto ML open-source, ma è spesso l'unico analizzato. C'è anche un dataset con migliaia di progetti etichettati come "ML applicato", ma la maggior parte di questi non sono veri prodotti; includono librerie, tutorial e altri esempi di minor valore.
Il nostro studio ha due obiettivi principali: prima di tutto, definire e trovare prodotti ML che vadano oltre FaceSwap e, in secondo luogo, analizzare la nostra raccolta di prodotti per ottenere informazioni utili. Il primo obiettivo si è rivelato più difficile del previsto a causa del numero di progetti non correlati esistenti, rendendo difficile identificare i veri prodotti ML.
Per raccogliere prodotti ML open-source di qualità, abbiamo adottato un approccio più strategico rispetto agli studi precedenti. Abbiamo compilato una raccolta di 262 repository da GitHub. Anche se questo numero è inferiore rispetto ai dataset precedenti, include un numero significativo di prodotti ML con vere storie di sviluppo che possono fornire informazioni non raggiungibili tramite interviste o sondaggi.
Analizzando il Dataset
Una volta avuto il nostro dataset, abbiamo puntato a rispondere a diverse domande di ricerca chiave riguardanti lo sviluppo di prodotti ML. Invece di condurre un'analisi superficiale, ci siamo concentrati su un esame dettagliato di un campione di 30 prodotti dal nostro dataset. Le nostre domande di ricerca esploravano vari aspetti come Collaborazione, Architettura, ordine di sviluppo, test, operazioni e pratiche di IA responsabile.
Collaborazione nei Prodotti ML
Per capire come i team collaborano sui prodotti ML open-source, abbiamo esaminato aspetti come i background dei collaboratori e come sono suddivisi i compiti. Abbiamo scoperto che molti prodotti sono sviluppati da un numero ridotto di collaboratori, spesso con un solo collaboratore principale. La maggior parte dei collaboratori proviene da un background di ingegneria del software, con meno partecipanti provenienti dalla scienza dei dati.
Interessantemente, non c'era una chiara separazione dei compiti; molti collaboratori lavoravano sia su codice ML che non ML, indipendentemente dalla loro esperienza. Questa mancanza di confini può portare a problemi comunemente visti in contesti industriali, come il disallineamento delle competenze e delle responsabilità.
Architettura dei Prodotti ML
Per quanto riguarda come vengono costruiti i prodotti ML, abbiamo scoperto che circa la metà dei prodotti campionati dipende da modelli preesistenti di fonti terze. Tuttavia, l'importanza del componente ML varia notevolmente tra i prodotti. Per alcuni, il modello ML è essenziale, mentre per altri aggiunge solo funzionalità opzionali.
Inoltre, abbiamo scoperto che l'automazione delle attività utilizzando le previsioni del modello non è comune. Molti prodotti richiedono intervento umano per prendere decisioni basate sui risultati del modello. I risultati dei modelli vengono spesso forniti direttamente agli utenti senza molta elaborazione o verifica di accuratezza.
Traiettoria di Sviluppo dei Prodotti ML
Il percorso di sviluppo di questi prodotti rivela un'altra tendenza interessante. La maggior parte dei prodotti segue un approccio "product-first", il che significa che vengono creati senza un componente ML ben definito in mente e poi successivamente adattati per includere funzionalità ML. Abbiamo notato che quando il ML è fondamentale per lo scopo del prodotto, il modello viene tipicamente sviluppato per primo.
Test e Valutazione dei Modelli
I nostri risultati hanno anche evidenziato un significativo divario nelle pratiche di test. Anche se molti prodotti hanno test per la funzionalità generale del software, il test dei modelli è molto meno comune. Solo pochi prodotti implementano meccanismi per valutare e addestrare nuovamente i modelli basati su nuovi dati o feedback degli utenti.
Pratiche di IA Responsabile
Abbiamo esaminato l'adozione di pratiche di IA responsabile, come garantire equità e documentare i modelli ML. Sfortunatamente, le prove di queste pratiche erano minime. Pochi prodotti hanno incorporato alcuna forma di documentazione riguardo ai modelli o ai dati utilizzati.
Riepilogo dei Risultati
In sintesi, la nostra ricerca ha trovato una varietà di pratiche nello sviluppo di prodotti ML open-source. Le osservazioni chiave includono:
- Molti prodotti hanno un solo collaboratore principale, principalmente con background di ingegneria del software.
- C'è poca separazione delle responsabilità in termini di lavoro ML e non ML.
- Circa la metà dei prodotti si basa su modelli ML di terze parti, con gradi variabili di importanza.
- L'automazione delle attività basate sulle previsioni del modello è rara, e molti prodotti presentano risultati grezzi delle previsioni agli utenti.
- L'approccio di sviluppo "product-first" è più comune, specialmente quando il ML non è centrale per lo scopo del prodotto.
- Il test dei modelli non è ampiamente praticato, e la documentazione riguardante i modelli è per lo più assente.
- Le pratiche di IA responsabile non sono evidenti nei prodotti analizzati.
Opportunità Educative e di Ricerca
Questo dataset di prodotti ML open-source ha un grande potenziale per servire come strumento educativo per studenti e professionisti. Sia i grandi che i piccoli prodotti nel dataset possono illustrare le migliori pratiche nello sviluppo di ML, con esempi che possono aiutare nell'apprendimento.
Inoltre, i nostri risultati aprono numerose strade per future ricerche. Comprendere le dinamiche di team e le sfide all'interno della collaborazione può portare a pratiche migliorate. Indagare su tattiche architettoniche efficaci per integrare modelli ML può aiutare a identificare modi migliori per gestire e sviluppare questi prodotti.
In aggiunta, valutare nuovi strumenti in ambienti reali può guidare miglioramenti nella documentazione e nelle pratiche di test dei modelli. Le intuizioni ottenute da questo dataset possono aiutare a colmare il divario tra ricerca accademica e applicazione pratica nello sviluppo software.
Conclusione
La raccolta di prodotti ML open-source fornisce una risorsa preziosa sia per i ricercatori che per i professionisti. I risultati della nostra analisi fanno luce sulla situazione attuale dello sviluppo di prodotti ML e evidenziano aree in cui sono necessari miglioramenti. Condividendo questo dataset e le intuizioni ottenute, speriamo di contribuire alla conversazione in corso sulle pratiche efficaci di ML e sul futuro dell'ingegneria del software in questo campo in rapida evoluzione.
Titolo: The Product Beyond the Model -- An Empirical Study of Repositories of Open-Source ML Products
Estratto: Machine learning (ML) components are increasingly incorporated into software products for end-users, but developers face challenges in transitioning from ML prototypes to products. Academics have limited access to the source of commercial ML products, hindering research progress to address these challenges. In this study, first and foremost, we contribute a dataset of 262 open-source ML products for end users (not just models), identified among more than half a million ML-related projects on GitHub. Then, we qualitatively and quantitatively analyze 30 open-source ML products to answer six broad research questions about development practices and system architecture. We find that the majority of the ML products in our sample represent more startup-style development than reported in past interview studies. We report 21 findings, including limited involvement of data scientists in many open-source ML products, unusually low modularity between ML and non-ML code, diverse architectural choices on incorporating models into products, and limited prevalence of industry best practices such as model testing, pipeline automation, and monitoring. Additionally, we discuss seven implications of this study on research, development, and education, including the need for tools to assist teams without data scientists, education opportunities, and open-source-specific research for privacy-preserving telemetry.
Autori: Nadia Nahar, Haoran Zhang, Grace Lewis, Shurui Zhou, Christian Kästner
Ultimo aggiornamento: 2024-08-15 00:00:00
Lingua: English
URL di origine: https://arxiv.org/abs/2308.04328
Fonte PDF: https://arxiv.org/pdf/2308.04328
Licenza: https://creativecommons.org/licenses/by/4.0/
Modifiche: Questa sintesi è stata creata con l'assistenza di AI e potrebbe presentare delle imprecisioni. Per informazioni accurate, consultare i documenti originali collegati qui.
Si ringrazia arxiv per l'utilizzo della sua interoperabilità ad accesso aperto.
Link di riferimento
- https://github.com/renard314/textfairy
- https://github.com/inaturalist/SeekReactNative
- https://github.com/Catrobat/Catroid
- https://github.com/longpth/ESP32CamAI
- https://github.com/elblogbruno/NotionAI-MyMind
- https://github.com/organicmaps/organicmaps
- https://github.com/prabhakar267/vertikin
- https://github.com/florisboard/florisboard
- https://github.com/samuelclay/NewsBlur
- https://github.com/nex3z/tflite-mnist-android
- https://github.com/Unidata/awips2
- https://github.com/Audiveris/audiveris
- https://github.com/ICIJ/datashare
- https://github.com/Capnode/Algoloop
- https://github.com/SubtitleEdit/subtitleedit
- https://github.com/iperov/DeepFaceLab
- https://github.com/deepfakes/faceswap
- https://github.com/akasolace/HO
- https://github.com/bigbluebutton/bigbluebutton
- https://github.com/LingDong-/PoseOSC
- https://github.com/OpenBB-finance/OpenBBTerminal
- https://github.com/jgagneastro/coffeegrindsize
- https://github.com/ritwik12/Celestial-bodies-detection
- https://github.com/electricitymap/electricitymap-contrib
- https://github.com/galaxyproject/galaxy
- https://github.com/SanPen/GridCal
- https://github.com/castorini/honkling
- https://github.com/jitsi/jitsi-meet
- https://github.com/code-dot-org/code-dot-org
- https://github.com/chonyy/AI-basketball-analysis
- https://play.google.com/store/apps/details?id=org.inaturalist.seek
- https://apps.apple.com/app/apple-store/id1353224144
- https://play.google.com/store/apps/details?id=com.elblogbruno.notion
- https://faceswap.dev/
- https://www.perspectiveapi.com/
- https://osf.io/gqyex/
- https://www.dotnetlanguages.net/web-languages-what-language-are-most-commonly-used-for-web-development/