I progetti di ML richiedono team con membri che dispongono di una serie di competenze, conoscenze e responsabilità correlate al machine learning. Di seguito sono riportati i ruoli più comuni presenti nei team di ML tipici:
Ruolo | Conoscenze e competenze | Risultato principale |
---|---|---|
Product Manager di ML | I product manager di ML hanno una conoscenza approfondita dei punti di forza e di debolezza del machine learning e del processo di sviluppo del machine learning. Allineano i problemi aziendali alle soluzioni di ML lavorando direttamente con il team di ML, gli utenti finali e altri stakeholder. Essi creano la visione del prodotto, definiscono i casi d'uso e i requisiti, nonché pianificano e danno la priorità ai progetti. |
Documento dei requisiti del prodotto (PRD). |
Engineering Manager | I gestori dell'ingegneria raggiungono gli obiettivi commerciali impostando, comunicando e raggiungendo le priorità del team. Come i product manager di ML, allineano le soluzioni di ML ai problemi aziendali. Stabiliscono aspettative chiare per i membri del team, conducono valutazioni del rendimento e aiutano con la carriera e lo sviluppo professionale. |
Documenti di progettazione, piani di progetto e valutazioni del rendimento. |
Data scientist | I data scientist utilizzano l'analisi quantitativa e statistica per estrarre informazioni e valore dai dati. Aiutano a identificare e testare le funzionalità, a creare modelli di prototipi e a migliorare l'interpretabilità dei modelli. | Report e visualizzazioni dei dati che rispondono alle domande sull'attività tramite l'analisi statistica. |
ML engineer | Gli ML engineer progettano, creano, implementano e gestiscono i modelli di ML. Si tratta di esperti software engineer con una conoscenza approfondita delle tecnologie e delle best practice di ML. | Modello di cui è stato eseguito il deployment con una qualità di previsione sufficiente per raggiungere gli obiettivi commerciali. |
Data engineer | I data engineer creano pipeline di dati per archiviare, aggregare ed elaborare grandi quantità di dati. Sviluppano l'infrastruttura e i sistemi per raccogliere e trasformare i dati non elaborati in formati utili per l'addestramento e la pubblicazione dei modelli. I data engineer sono responsabili dei dati nell'intero processo di sviluppo dell'IA. | Pipeline di dati completamente in produzione con il monitoraggio e gli avvisi necessari. |
Ingegnere di operazioni di sviluppo (DevOps) | Gli ingegneri DevOps sviluppano, eseguono il deployment, scalano e monitorano l'infrastruttura di pubblicazione per i modelli ML. | Un processo automatizzato per la pubblicazione, il monitoraggio, il test e l'invio di avvisi sul comportamento di un modello. |
I progetti di ML di successo hanno team con ogni ruolo ben rappresentato. Nei team più piccoli, gli individui dovranno gestire le responsabilità di più ruoli.
Stabilire le pratiche di gruppo
Poiché i ruoli, gli strumenti e i framework variano notevolmente nello sviluppo di ML, è fondamentale stabilire pratiche comuni tramite una documentazione del processo eccellente. Ad esempio, un ingegnere potrebbe pensare che sia sufficiente ottenere i dati giusti per iniziare ad addestrare un modello, mentre un ingegnere più responsabile convaliderà che il set di dati sia anonimizzato correttamente e ne documenterà i metadati e la provenienza. Assicurarsi che gli ingegneri condividano definizioni comuni per i processi e i pattern di progettazione riduce la confusione e aumenta la velocità del team.
Documentazione della procedura
La documentazione del processo deve definire gli strumenti, l'infrastruttura e i processi che il team utilizzerà per lo sviluppo di ML. Documenti di procedure efficaci aiutano ad allineare i membri del team nuovi e attuali. Dovrebbero rispondere ai seguenti tipi di domande:
- Come vengono generati i dati per il modello?
- Come esaminiamo, convalidiamo e visualizziamo i dati?
- Come si modifica una funzionalità di input o un'etichetta nei dati di addestramento?
- Come personalizziamo la pipeline di generazione, addestramento e valutazione dei dati?
- Come faccio a modificare l'architettura del modello per adattarla alle modifiche delle funzionalità o delle etichette di input?
- Come otteniamo esempi di test?
- Quali metriche utilizzeremo per valutare la qualità del modello?
- Come lanciamo i nostri modelli in produzione?
- Come faccio a sapere se c'è qualcosa di sbagliato nel nostro modello?
- Su quali sistemi a monte dipendono i nostri modelli?
- Come faccio a rendere il mio codice SQL manutenibile e riutilizzabile?
Altre potenziali domande
ModelloPosso addestrare modelli su set di dati diversi nella stessa pipeline, ad esempio per la messa a punto fine?
Come faccio ad aggiungere un nuovo set di dati di test alla mia pipeline?
Come faccio a controllare la previsione del modello su un esempio creato manualmente?
Come faccio a trovare, esaminare e visualizzare esempi in cui il modello ha commesso errori?
Come faccio a determinare quale caratteristica ha contribuito maggiormente a una determinata previsione?
Come faccio a capire quali caratteristiche hanno il maggiore impatto sulle previsioni all'interno di un determinato campione?
Come faccio a calcolare o tracciare le previsioni del modello su un set di dati o su un campione scelto?
Come faccio a calcolare le metriche standard per le previsioni del mio modello su un set di dati scelto?
Come faccio a sviluppare e calcolare le metriche personalizzate?
Come faccio a confrontare il mio modello con altri modelli offline?
Posso eseguire una meta-analisi per più valutazioni del modello in un singolo ambiente di sviluppo?
Posso confrontare il modello attuale con quello di 10 mesi fa?
Penso di aver creato un buon modello. Come faccio a lanciarlo in produzione?
Come faccio a verificare che il mio nuovo modello funzioni correttamente in produzione?
Posso ottenere la cronologia delle valutazioni del modello nel tempo?
Come faccio a sapere quando c'è un problema con il modello?
Mi è stata assegnata una pagina/un bug che menziona qualcosa sul modello. Che cosa devo fare?
Come faccio a personalizzare la pipeline di generazione/addestramento/valutazione dei dati?
Quando e come devo creare una pipeline completamente nuova?
Ho bisogno di SQL per generare alcuni dati. Dove devo metterlo?
Come funziona la pubblicazione del nostro modello? C'è un diagramma?
Quali sistemi a monte di cui devo essere consapevole dipendono dal mio modello?
Non riesco a capire. Chi (e come) devo contattare?
Aspetti da considerare
La definizione di "best practice di ML" può variare in base a società, team e persone. Ad esempio, alcuni membri del team potrebbero considerare Colabs sperimentale come il prodotto principale, mentre altri vorranno lavorare in R. Alcuni potrebbero avere una passione per la progettazione di software, altri pensano che il monitoraggio sia la cosa più importante, mentre altri ancora sono a conoscenza di buone pratiche di produzione di funzionalità, ma vogliono utilizzare Scala. Ognuno ha ragione dal proprio punto di vista e, se gestito correttamente, il mix sarà una risorsa straordinaria. In caso contrario, può essere un disastro.
Stabilire gli strumenti, le procedure e l'infrastruttura che il team utilizzerà prima di scrivere una riga di codice può fare la differenza tra il fallimento del progetto dopo due anni o il lancio riuscito un trimestre prima del previsto.
Valutazioni del rendimento
A causa dell'ambiguità e dell'incertezza insite nell'IA, i responsabili delle risorse umane devono stabilire aspettative chiare e definire in anticipo i risultati.
Quando stabilisci le aspettative e gli elementi da consegnare, considera come verranno valutati se un progetto o un approccio non va a buon fine. In altre parole, è importante che il rendimento di un membro del team non sia direttamente collegato al successo del progetto. Ad esempio, non è raro che i membri del team impieghino settimane per esaminare soluzioni che alla fine non hanno successo. Anche in questi casi, il codice di alta qualità, la documentazione completa e la collaborazione efficace dovrebbero contribuire positivamente alla valutazione.