36 Punkte von xguru 2024-06-10 | 4 Kommentare | Auf WhatsApp teilen
  • Zusammenfassung der Antworten auf die Frage

schmookeeg

  • Der Teil meiner Arbeit als Machine-Learning-Ingenieur, den ich derzeit am meisten mag, ist die Zusammenarbeit mit Menschen ohne technischen Hintergrund
    • Selbst Menschen, die MS Outlook in drei von fünf Fällen nicht öffnen können, haben erstaunliche Tiefe und Einsichten in ihrem Fachgebiet
    • Das macht sehr demütig
  • Menschen ohne technischen Hintergrund sehen mich als Zauberer, und ich sehe sie als Voodoo-Priester
    • Wenn wir das trainieren und vorhersagen, was wir wollen, ist das für beide Seiten sehr lohnend
  • Der Großteil des Modellings hat mit dem Gesundheitswesen zu tun
    • Aus riesigen Data Lakes mit Abrechnungen, Rezepten, ärztlichen Einschätzungen, Vitalwerten, diagnostischen Bildern usw. werden Erkenntnisse gewonnen
    • Dass auf diese Informationen so leicht zugegriffen werden kann, ist ebenfalls enorm (HIPAA einmal beiseitegelassen)
  • Zeitliche Realität
    • Pro Woche gehen etwa 3 Stunden für Meetings drauf
    • Etwa 3 Stunden gehen für die Vorbereitung der Arbeit, das Lösen von ETL-Problemen und einmalige Queries für das Business drauf
    • Die restliche Zeit wird damit verbracht, Daten zu explorieren, um einen kleinen Vorteil bei der Vorhersage von Umsätzen in Millionenhöhe zu finden
      • Das ist ein bisschen so, als würde man mit Mathematik Walter suchen
      • Diese Walter-Szene ist ungefähr 50 TB groß :D

burnedout_dc4e3

  • Ich arbeite seit Mitte der 2000er mit Machine Learning
  • Die Hälfte der Zeit geht dafür drauf, Daten so aufzubereiten, dass Modelle trainiert und genutzt werden können, also die „Datenpipeline am Laufen zu halten“
  • Die andere Hälfte der Zeit geht für technischen Support für „AI-Wissenschaftler“ drauf, die kaum programmieren können
    • Sie verbringen ihre Zeit damit, Inhalte in verschiedene Chatbot-Dienste zu kopieren und einzufügen
      • Meine Hauptaufgabe ist es, ihnen Dinge wie die Installation von Python-Paketen und die Nutzung von Git beizubringen
    • Es gibt keinen Plan, wie ihre Arbeit auf die Projekte angewendet werden soll, an denen wir arbeiten
      • Trotzdem behaupten sie, Transformer-Modelle würden all unsere Probleme bei der Datenverarbeitung lösen
  • Ich überlege, ob ich aufhören und erst dann wieder etwas Neues anfangen soll, wenn dieser Hype-Zyklus vorbei ist

tambourineman88

  • Die Realität ist das Gegenteil dessen, was man erwartet, wenn man Machine Learning studiert
    • 95 % dieser Arbeit sind Datenbereinigung, das Zusammenführen von Datensätzen und Feature Engineering
    • Das Anpassen und Testen von Modellen macht nur 5 % aus
  • Antwort #1 auf diesen Beitrag
    • So war es von Anfang an, so ist es jetzt und so wird es bleiben, Amen
    • Wichtig auf Staff-/Principal-Ebene
      • Es ist wichtig, die „Datenimpedanz“ zwischen Produktfunktionen, die von Inferenzmodellen abhängen, und der Datenerfassung zu kontrollieren
      • So wird sichergestellt, dass bei Änderungen am Produkt oder an der Funktion weder die Instrumentierung noch die Datengranularität kaputtgehen, die das Data Warehouse und den Trainingskorpus speisen
    • Wichtig bei Reinforcement-Learning-(RL)-Problemen
      • Es ist wichtig sicherzustellen, dass für Tupel aus Zustands- und Aktionsraum die richtigen Variablen erfasst werden
      • Danach geht es darum, Wege zu finden, das Interface oder das Umgebungsmodell für Reward-Feedback anzupassen

davedx

  • pip install pytorch ausführen
  • Umgebung kaputt
  • 4 Stunden damit verbringen, die Python-Umgebung zu reparieren
  • pip install Pillow ausführen
  • Fehlermeldung, dass es nicht zur CPU-Architektur des MacBook passt
  • Weitere 4 Stunden damit verbringen, alles rund um Python zu entfernen und von vorn zu installieren
  • Wollte pip install ... ausführen, aber dann war Feierabend!

Xenoamorphous

  • Ich bin ein gewöhnlicher Softwareentwickler und musste aus der Not heraus ML-Arbeit machen
  • Mich interessiert, wie „echte“ ML-Experten mit probabilistischen/Gradientenabstiegs-Ergebnissen und den Erwartungen der Menschen umgehen
  • In normaler Softwareentwicklung funktioniert etwas oder eben nicht, und wenn nicht, kann man erklären warum und es hoffentlich beheben
  • Bei ML bekommt man aber Fragen wie: „Warum hat dieser Textklassifikator diesen Text nicht richtig klassifiziert?“
    • Darauf kann man nur sagen: „Es fehlten 0,004 Punkte zum Erreichen des Schwellenwerts“ oder „Wegen der Wortwahl oder Reihenfolge hat es nicht gereicht“
    • Das scheint alle unzufrieden zu machen

angarg12

  • Mein Titel ist ML Engineer, aber die tatsächliche Arbeit ist fast reine Softwareentwicklung
  • Die Hauptaufgabe ist der Aufbau von Systemen, die ML-Systeme in Produktionsumgebungen unterstützen
    • Wie andere schon erwähnt haben, geht es dabei vor allem um Datentransformation, Modelltraining, Model Serving usw.
  • Zur Arbeit gehört auch, Tools zu bauen oder bestehende Systeme zu ändern, damit Wissenschaftler ihre Arbeit erledigen können
  • Von außen betrachtet scheint mein Unternehmen allerdings eher eine Ausnahme zu sein
  • In der Branche scheinen die Erwartungen an ML Engineers stärker zu dem zu passen, was Daten-/Anwendungswissenschaftler tun, etwa Modelle bauen und testen
    • Das führt zu viel Unklarheit bei den Erwartungen an jede Rolle in jedem Unternehmen

runban

  • Hochbezahlte Reinigungskraft
    • Aus schmutzigen Daten bekommt man keine ordentlichen Ergebnisse
    • Nebenbei: Für diese Arbeit ist Perl viel besser als Python
  • Hochbezahlter Troubleshooter für Motherboards
    • H100s werden selbst mit Wasserkühlung wirklich heiß
    • Weil wir keinen dedizierten Hardware-Verantwortlichen haben
  • Kampf mit launischen Abhängigkeiten von Drittanbietern, wie alle anderen auch

primaprashant

  • Ich arbeite seit fünf Jahren als MLE, und wie andere Kommentare schon erwähnt haben, ähnelt der Großteil der Arbeit SWE
  • Je nach Projektphase variieren die täglichen Aufgaben, aber sie gehören zu einem der folgenden Bereiche:
    • Zusammenarbeit mit Stakeholdern und TPMs sowie Entwicklung von Hypothesen, um mittels Datenanalyse geschäftlich wichtige Probleme mit hoher Priorität zu lösen
    • Ein Business-Problem als ML-Problem formulieren und Metriken erstellen, die sowohl zum ML-Modell als auch zum Business-Problem passen
    • Aufbau von PoCs und Prototypen, um die technische Machbarkeit neuer Funktionen und Ideen zu validieren
    • Schreiben von Design-Dokumenten für Architektur und technische Entscheidungen
    • Zusammenarbeit mit Plattform-Teams, um Datenpipelines entsprechend den Anforderungen neuer und bestehender ML-Projekte einzurichten und zu warten
    • Aufbau, Deployment und Wartung von ML-Microservices für Inferenz
    • Durchführung von A/B-Tests und Schreiben von Design-Dokumenten für die Analyse nach dem Test
    • Einrichten von Pipelines zum erneuten Training von ML-Modellen

jackspawn

  • Mehr als 50 % meiner Zeit gehen in Backend-Engineering
    • Weil ML in einer größeren API verwendet wird
  • Ich trage die Verantwortung für die End-to-End-Erfahrung dieser API
    • Deshalb mache ich alles, was pro Zeiteinheit den größten Wert liefert
    • Das hat oft gar nichts mit dem ML-Modell zu tun

mardifoufs

  • Ich arbeite an der Optimierung von Inferenzcode und daran, trainierte Modelle zu „produktisieren“
  • Aktuell arbeite ich an lokalem Training und lokaler Inferenz, weil ich in einer Branche arbeite, in der Cloud-Dienste noch nicht allgemein genutzt werden
    • Weil es nicht um LLMs geht, gibt es nicht viele fertige Tools, was es interessant macht
    • Man muss vieles selbst bauen
  • Ich mache alles Mögliche, von der Bewertung der Datenqualität (der lokale Teil ist anspruchsvoll) bis hin zur direkten Nutzung von CUDA
    • Denn es gibt Signalverarbeitungsbibliotheken, die bereits auf CUDA aufbauen und die man nutzen kann
  • Manchmal gehört auch der Bau interner Tools für das Team dazu (gemischtes Team aus Forschern und MLEs)
    • Weil es ein sehr spezieller Bereich ist, muss man Dinge selbst bauen, um Daten und Inferenz zu visualisieren
  • Ich habe vollständige Freiheit bei Tools und beim Design interner Software, wodurch ich in der Organisation großen Einfluss ausüben konnte
  • Eines der improvisiert gebauten Tools soll jetzt sogar in das Hauptprodukt aufgenommen werden

hirako2000

  • Es ist nicht meine Hauptaufgabe, aber ich verbringe den Großteil meiner Zeit damit, „dies und das zusammenzukleben“
    • Vorhandenes Open Source anpassen
    • Herausfinden, wie sich Ressourcen optimieren lassen
    • Modelle auf anderen Datensätzen neu trainieren
    • Versuchen, schlampig geschriebenen Python-Code auszuführen
    • Fehlende Requirements-Dateien ergänzen
    • Daten bereinigen
  • Ich denke darüber nach, was sich mit ML tatsächlich sinnvoll lösen lässt, das nicht schon vor Jahren gemacht wurde
  • Ich prüfe aktuelle GPU-Preise und rechne durch, ob es sich eher lohnt, GPUs zu kaufen, statt teure Zeit bei Hosting-Anbietern zu mieten
  • Ich lese Papers, bis mir der Kopf wehtut
    • Dabei geht Zeit dafür drauf, das Abstract zu lesen und ein paar Diagramme in der Mitte zu überfliegen

tenache

  • Ich habe Machine Learning studiert und wurde ursprünglich für diese Rolle eingestellt, aber das Unternehmen hat die Richtung geändert, sodass ich jetzt mit LLMs arbeite
  • Die meiste Zeit verbringe ich mit Dingen wie:
    • Herausfinden, wie verschiedene LLMs funktionieren
    • Die besten Parameter finden
    • Wie man RAG (Retrieval-Augmented Generation) umsetzt
    • Wie man es mit anderen Bots integriert

trybackprop

  • In einer typischen Woche mache ich im Allgemeinen Folgendes:
  • 15 %: Meetings für technische Diskussionen oder 1:1s
    • Normalerweise sprechen wir über Ideen, Planung oder Unterstützung für Modelle oder ML-Produkte
  • 40 %: ML-Entwicklung
    • In frühen Projektphasen verstehe ich die Produktanforderungen
    • Ich bespreche mit dem Team ML-Modelle oder Algorithmen, die beim Erreichen von Produkt-/Business-Zielen helfen könnten
    • Ich sammle bestehende Datensätze von Analysten und Data Scientists
    • Mit diesen Datensätzen baue ich Pipelines, die Trainings- und Validierungsdatensätze erzeugen
    • Während ich darauf warte, dass diese Trainings-/Validierungsdatensätze gefüllt werden (das kann bis zu zwei Wochen dauern), arbeite ich parallel an anderen Projekten, die in der Entwicklung weiter vorne oder weiter hinten sind
    • Ich arbeite auch an neuen Modellen (in PyTorch geschrieben), teste sie mit kleinen Datenmengen, bewerte die Offline-Performance und prüfe, ob sie wie erwartet funktionieren
    • Ich führe einige manuelle Tests durch, bei denen ich Produktinformationen mit dem Modell ausfülle, um die Plausibilität des Modells zu prüfen (ohne groß angelegte Experimente kann ich mich nur auf mein Bauchgefühl und das meiner Teamkollegen verlassen)
    • Sobald die Trainings-/Validierungsdatensätze gefüllt sind, trainiere ich das Modell auf großen Datenmengen, prüfe die Offline-Ergebnisse und passe das Modell an oder ändere die Architektur, wenn es Probleme gibt
    • Wenn die Offline-Ergebnisse gut sind oder vielversprechend aussehen, deploye ich das Modell für Experimente in die Produktion
    • Gleichzeitig ändere ich möglicherweise Produkt-/Infrastrukturcode, um das neue Modell, das ich gebaut habe, zu testen
    • Ich führe Experimente durch und erhöhe den Traffic langsam, bis 1–5 % zugewiesen sind, und lasse sie dann mehrere Wochen oder einen Monat laufen
    • In der Zwischenzeit beobachte ich die Ergebnisse und überwache alle relevanten Pipelines, damit das Modell korrekt trainiert wird und die Versuchsergebnisse nicht durch unerwartete Infrastruktur-/Bug-/Produktfaktoren verfälscht werden
    • Wenn die Ergebnisse wie erwartet aussehen und mit der ursprünglichen Hypothese übereinstimmen, bespreche ich mit dem Team, ob wir releasen, und wenn wir uns dafür entscheiden, dann releasen wir!
      • (Hinweis: Zur Modellentwicklung gehören Feature-Entwicklung, Vorbereitung von Datensätzen, Analysen, die Erstellung des eigentlichen ML-Modells sowie Änderungen an Produkt-/Infrastrukturcode)
  • 20 %: Wartung
    • Nur weil ich neue Modelle entwickle, ignoriere ich die bestehenden nicht
    • Ich prüfe sie jeden Tag, um sicherzustellen, dass die Performance nicht abfällt oder sich nicht auf unerwartete Weise verändert
    • Außerdem behebe ich Probleme in Pipelines und mache sie effizienter
  • 15 %: Forschungsarbeiten und neue Technik lernen
    • Die AI/ML-Welt verändert sich schnell, daher lese ich ständig neue Forschungsarbeiten und teste zu Hause neue Techniken, um auf dem Laufenden zu bleiben
    • Weil es Spaß macht, fühlt es sich nicht belastend an
    • Ich empfinde es nicht als Pflicht, nur um aktuell zu bleiben
  • 10 %: interne Forschung
    • Ich nutze diese Zeit, um mehr über andere Produkte im Team oder Unternehmen zu lernen und herauszufinden, wie unser Team helfen kann oder welche Technologien/Techniken wir von ihnen übernehmen können
    • Ich nutze diese Zeit auch, um Einsichten aus den letzten 6 Monaten bzw. dem letzten Jahr aufzuschreiben

4 Kommentare

 
ohyecloudy 2024-06-17

Die Formulierung „Menschen ohne technischen Hintergrund sehen mich als Zauberer, und ich sehe sie als Voodoo-Priester“ ist witzig.

 
nutella 2024-06-12

Daten ... Daten ... Das kann ich gut nachvollziehen.

 
halfenif 2024-06-10

Genau so, wie ich es mir vage vorgestellt hatte.

 
tttttaa 2024-06-10

Interessanter Inhalt!