ML-Team zusammenstellen

ML-Projekte erfordern Teams mit Mitgliedern, die über eine Reihe von Fähigkeiten, Expertise und Verantwortlichkeiten im Zusammenhang mit Machine Learning verfügen. Dies sind die häufigsten Rollen in typischen ML-Teams:

Rolle Wissen und Fähigkeiten Wichtigster Liefergegenstand
ML-Produktmanager ML-Produktmanager verfügen über umfassende Kenntnisse der ML-Stärken und -Schwächen sowie des ML-Entwicklungsprozesses. Sie koordinieren Geschäftsprobleme und ML-Lösungen, indem sie sich mit dem ML-Team, den Endnutzern und anderen Stakeholdern anleiten. Sie entwickeln die Produktvision, definieren Anwendungsfälle und Anforderungen und planen und priorisieren Projekte. Produktanforderungsdokument (Produktanforderungsdokument, PRD)
Ein Beispiel für einen PRD zur ML-Anomalieerkennung finden Sie unter Anomalieerkennung PRD.
Technischer Manager Engineering-Manager erreichen Geschäftsziele, indem sie Teamprioritäten festlegen, kommunizieren und erreichen. Wie ML-Produktmanager richten sie ML-Lösungen auf geschäftliche Probleme ab. Sie setzen klare Erwartungen an die Teammitglieder, führen Leistungsbewertungen durch und helfen bei der Karriere- und beruflichen Weiterentwicklung. Entwerfen Sie Dokumente, Projektpläne und Leistungsbewertungen.
Ein Beispiel für ein ML-Designdokument finden Sie unter go/ml-design-doc-example.
Data Scientist Data Scientists gewinnen mithilfe quantitativer und statistischer Analysen Erkenntnisse und gewinnen aus Daten einen Mehrwert. Sie helfen beim Identifizieren und Testen von Features, Prototypenmodellen und helfen bei der Interpretierbarkeit von Modellen. Berichte und Datenvisualisierungen, die Geschäftsfragen durch statistische Analysen beantworten
ML-Entwickler ML-Entwickler entwerfen, erstellen, fertigen und verwalten ML-Modelle. Sie sind ausgebildete Softwareentwickler mit umfassenden Kenntnissen der ML-Technologien und Best Practices. Bereitgestelltes Modell mit ausreichender Vorhersagequalität zum Erreichen der Geschäftsziele.
Data Engineer Data Engineers erstellen Datenpipelines zum Speichern, Aggregieren und Verarbeiten großer Datenmengen. Sie entwickeln die Infrastruktur und Systeme zum Erfassen und Transformieren von Rohdaten in nützliche Formate für das Training und die Bereitstellung von Modellen. Data Engineers sind während des gesamten ML-Entwicklungsprozesses für die Daten verantwortlich. Vollständig produktionsreife Datenpipelines mit den erforderlichen Monitoring- und Benachrichtigungsfunktionen
Developer Operations Engineer (DevOps) DevOps-Entwickler entwickeln, bereitstellen, skalieren und überwachen die Bereitstellungsinfrastruktur für ML-Modelle. Automatisierter Prozess für Bereitstellung, Monitoring, Tests und Benachrichtigungen zum Verhalten eines Modells.

Bei erfolgreichen ML-Projekten sind Teams mit den einzelnen Rollen gut vertreten. In kleineren Teams müssen Einzelpersonen die Verantwortlichkeiten für mehrere Rollen übernehmen. In diesen Fällen können AutoML-Tools wie Vertex AI bei der Automatisierung von ML-Aufgaben wie Modellentwicklung, Verständnis und Bereitstellung helfen.

Teampraktiken etablieren

Da sich die Rollen, Tools und Frameworks in der ML-Entwicklung stark unterscheiden, ist es wichtig, anhand einer hervorragenden Prozessdokumentation gängige Verfahren festzulegen. Ein Entwickler könnte beispielsweise denken, dass es ausreicht, nur die richtigen Daten zu erhalten, um mit dem Training eines Modells zu beginnen. Ein verantwortungsbewussterer Entwickler hingegen prüft, ob das Dataset korrekt anonymisiert ist, und dokumentiert seine Metadaten und Herkunft. Wenn Entwickler allgemeine Definitionen für Prozesse und Designmuster teilen, reduziert dies Verwirrung und erhöht die Arbeitsgeschwindigkeit des Teams.

Prozessdokumentation

In Prozessdokumenten sollten die Tools, die Infrastruktur und die Prozesse definiert werden, die das Team für die ML-Entwicklung verwendet. Gute Prozessdokumente helfen dabei, neue und aktuelle Teammitglieder besser abzustimmen. Sie sollten die folgenden Arten von Fragen beantworten:

  • Wie werden die Daten für das Modell generiert?
  • Wie untersuchen, validieren und visualisieren wir die Daten?
  • Wie ändern wir ein Eingabefeature oder ein Label in den Trainingsdaten?
  • Wie passen wir die Pipeline zur Datengenerierung, -training und -bewertung an?
  • Wie ändere ich die Modellarchitektur, um Änderungen an Eingabefeatures oder Labels zu berücksichtigen?
  • Wie erhalten wir Testbeispiele?
  • Anhand welcher Metriken werden wir die Modellqualität beurteilen?
  • Wie bringen wir unsere Modelle in der Produktion ein?
  • Woher wissen wir, ob mit unserem Modell etwas nicht in Ordnung ist?
  • Von welchen vorgelagerten Systemen hängen unsere Modelle ab?
  • Wie mache ich meinen SQL-Code verwaltbar und wiederverwendbar?

Ein Google-Dokument mit einer Liste dieser Fragen ist unter go/ml-list-of-questions verfügbar.

Weitere mögliche Fragen

Modell
  • Kann ich Modelle für verschiedene Datasets in derselben Pipeline trainieren, z. B. zur Feinabstimmung?

  • Wie füge ich meiner Pipeline ein neues Test-Dataset hinzu?

Schulungen
  • Wie überprüfe ich die Vorhersage des Modells an einem handgefertigten Beispiel?

  • Wie kann ich Beispiele finden, untersuchen und visualisieren, in denen das Modell Fehler gemacht hat?

  • Wie stelle ich fest, welches Feature für eine bestimmte Vorhersage am stärksten verantwortlich war?

  • Woher weiß ich, welche Features die größten Auswirkungen auf Vorhersagen in einer bestimmten Stichprobe haben?

  • Wie kann ich Modellvorhersagen für ein ausgewähltes Dataset oder eine ausgewählte Stichprobe berechnen oder darstellen?

  • Wie berechne ich Standardmesswerte für die Vorhersagen meines Modells für ein ausgewähltes Dataset?

  • Wie entwickle und berechne ich benutzerdefinierte Messwerte?

  • Wie kann ich mein Modell offline mit anderen Modellen vergleichen?

  • Kann ich eine Metaanalyse für mehrere Modellbewertungen in einer einzigen Entwicklungsumgebung durchführen?

  • Kann ich das aktuelle Modell mit dem Modell von vor zehn Monaten vergleichen?

Produktion, Monitoring und Wartung
  • Ich glaube, ich habe ein gutes Modell erstellt. Wie kann ich die Produktionsversion veröffentlichen?

  • Wie prüfe ich, ob mein neues Modell korrekt in der Produktion ausgeführt wird?

  • Kann ich den Verlauf der Modellbewertungen im Zeitverlauf abrufen?

  • Woher weiß ich, dass mit dem Modell etwas nicht stimmt?

  • Mir wurde eine Seite/ein Fehler zugewiesen, auf der etwas über das Modell erwähnt wurde. Was kann ich tun?

Pipelines
  • Wie kann ich die Pipeline zur Datengenerierung, -training und -auswertung anpassen?

  • Wann und wie sollte ich eine komplett neue Pipeline erstellen?

SQL
  • Ich benötige SQL, um Daten zu generieren. Wo sollte ich es hinlegen?

Infrastruktur
  • Wie funktioniert die Modellbereitstellung? Gibt es ein Diagramm?

  • Von welchen vorgelagerten Systemen hängt mein Modell ab, die ich kennen sollte?

Kommunikation
  • Ich verstehe irgendetwas nicht. An wen (und wie) kann ich mich wenden?

Wichtig

Was als „Best Practices für ML“ gilt, kann sich je nach Unternehmen, Teams und Einzelpersonen unterscheiden. Beispielsweise könnten einige Teammitglieder experimentelle Colabs als Hauptliefergegenstand betrachten, während andere in R arbeiten möchten. Manche sind vielleicht leidenschaftlich für Software Engineering, andere halten Monitoring für das Wichtigste. Andere sind sich der guten Praktiken für die Featureproduktion bewusst, möchten aber Scala verwenden. Jeder ist aus seiner eigenen Perspektive „richtig“ und wenn das Team richtig gesteuert wird, ist das ein Meisterwerk. Wenn nicht, ist das Chaos.

Die Festlegung der Tools, Prozesse und Infrastruktur, die das Team vor dem Schreiben einer Codezeile verwenden wird, kann den Unterschied ausmachen, ob das Projekt nach zwei Jahren fehlschlägt oder ein Quartal früher als geplant gestartet wird.

Leistungsbewertungen

Aufgrund der Ambiguität und Unsicherheit in ML müssen Personalverantwortliche frühzeitig klare Erwartungen definieren und Liefergegenstände definieren.

Überlegen Sie bei der Bestimmung von Erwartungen und Liefergegenständen, wie diese bewertet werden, wenn ein Projekt oder Ansatz nicht erfolgreich ist. Mit anderen Worten: Es ist wichtig, dass die Leistung eines Teammitglieds nicht direkt mit dem Erfolg des Projekts zusammenhängt. Teammitglieder verbringen beispielsweise oft Wochen damit, Lösungen zu finden, die letztlich erfolglos sind. Selbst in diesen Fällen sollten der hochwertige Code, die gründliche Dokumentation und die effektive Zusammenarbeit positiv zu ihrer Bewertung beitragen.