Machine Learning in Production (CMU-Kurs)
(mlip-cmu.github.io)- Der CMU-Kurs 17-445/17-645/17-745 Machine Learning in Production / AI Engineering im Frühjahr 2025 behandelt, wie ML-Modelle zu Softwareprodukten werden, die sich real bereitstellen und betreiben lassen
- Im Mittelpunkt steht ein gemeinsames Verständnis, damit Data Scientists und Software Engineers zusammenarbeiten können; ausgehend von der Annahme möglicher Modellfehler verbindet der Kurs Anforderungen, Design, Deployment, Betrieb und Qualitätssicherung
- Die Vorlesung deckt breit ab: Vorbereitung auf falsche Vorhersagen, MLOps, A/B-Tests und Canary Releases, Erkennung von Datenqualitätsproblemen, Concept Drift und Feedback Loops, Testing und Debugging sowie Fairness, Privacy und Safety
- Studierende bauen, deployen, evaluieren und warten als Gruppenprojekt einen Filmempfehlungsdienst für 1 Million Nutzer und arbeiten praktisch unter anderem mit Kafka, Jenkins, Prometheus, Grafana und Docker
- Grundlegende ML-Erfahrung und Programmierkenntnisse werden erwartet, Software-Engineering-Erfahrung ist aber nicht erforderlich; Vorlesungsmaterialien, Aufgaben und Lehrbuch sind öffentlich verfügbar und können zum Selbststudium und als Lehrmaterial genutzt werden
Kursziele und Zielgruppe
- Machine Learning in Production / AI Engineering ist ein Kurs für die Phase nach dem Erzeugen von Vorhersagen mit ML-Modellen oder Prompts
- Modelle in Produkte überführen und in realen Umgebungen deployen
- Vertrauen in die Qualität schaffen
- Systeme in großem Maßstab betreiben und warten
- Der Kurs im Frühjahr 2025 ist für Studierende mit einem gewissen Maß an Data-Science-Erfahrung konzipiert
- Zum Beispiel: Besuch eines ML-Kurses, Erfahrung mit
sklearn - Grundlegende Python-Programmierung und Umgang mit der Unix-Shell werden erwartet
- Ein Software-Engineering-Hintergrund wie Testing, Anforderungen, Architektur, Prozesse oder Teamerfahrung wird nicht vorausgesetzt
- Zum Beispiel: Besuch eines ML-Kurses, Erfahrung mit
- Künftig soll dieser Kurs mindestens jedes Frühjahr angeboten werden, möglicherweise auch in einigen Herbstsemestern
- Ein Angebot im Sommersemester ist nicht geplant
Öffentliche Materialien und Referenzen
- Für Forschende, Lehrende und interessierte Leser werden alle Materialien einschließlich Folien und Aufgaben unter einer Creative-Commons-Lizenz veröffentlicht
- CMU MLIP GitHub
- Die öffentlichen Materialien für Frühjahr 2025 befinden sich im course GitHub repository
- Außerdem gibt es ein öffentliches Online-Lehrbuch mit Kapiteln, die nahezu die gesamte Vorlesung abdecken
- Machine Learning in Production textbook
- Dieses Lehrbuch soll bei MIT Press erscheinen und ist online unter einer Creative-Commons-Lizenz verfügbar
- Ein Paper zur Zielsetzung und zum frühen Design des Kurses wird ebenfalls bereitgestellt
- Aufzeichnungen der Vorlesung aus Summer 2020 gibt es auf der course page, sie sind aus heutiger Sicht jedoch etwas veraltet
- Eine annotated bibliography zur Suche nach verwandter Forschung wird ebenfalls bereitgestellt
Fragen, die in produktiven ML-Systemen behandelt werden
-
Design für falsche Vorhersagen
- Es wird behandelt, wie ein System funktionieren soll, auch wenn das Modell falsch liegen kann
- Es geht darum, wie Safety und Security auch bei möglichen Fehlern erhalten bleiben
- Benutzeroberflächen und das Gesamtsystemdesign für den Einsatz in realen Umgebungen werden gemeinsam betrachtet
-
Deployment und Updates in Production
- Es wird behandelt, wie Modelle zuverlässig deployt und aktualisiert werden
- Es geht darum, die gesamte ML-Pipeline zu testen
- MLOps-Tools automatisieren und skalieren den Deployment-Prozess
- Production-Experimente wie A/B-Tests und Canary Releases werden behandelt
- Datenqualitätsprobleme, Concept Drift und die Erkennung von Feedback Loops werden behandelt
-
Skalierbare ML-Systeme
- Es geht um das Design von Systemen, die große Trainingsdatenmengen, Telemetriedaten und Nutzeranfragen verarbeiten
- Optionen wie Stream Processing, Batch Processing, Lambda-Architektur und Data Lakes werden verglichen
-
Testing und Debugging
- Es wird behandelt, wie sich die Qualität von Modellvorhersagen in Production evaluieren lässt
- Nicht nur das Modell, sondern das gesamte ML-basierte System wird getestet
- Erkenntnisse aus Software Testing, automatischer Testfallgenerierung, Simulation und Continuous Integration werden auf Production-Testing für ML angewandt
-
Qualitätsattribute jenseits der Genauigkeit
- Behandelt werden Trainings- und Inferenzlatenz, Betriebskosten, Skalierbarkeit, Erklärbarkeit, Fairness, Privacy, Robustheit und Safety
- Auch die Notwendigkeit von Offline-Betrieb und die Häufigkeit von Modellupdates werden berücksichtigt
- Wichtige Qualitätsanforderungen in Business-Production-Umgebungen werden identifiziert, Konflikte und Trade-offs werden austariert
Fallstudien und Gruppenprojekt
- Die in der Vorlesung behandelten Fallstudien umfassen verschiedene ML-basierte Produkte
- Automatische Sprachtranskription
- Webcam-basierte verteilte Suche nach vermissten Kindern
- Sofortübersetzung in Augmented Reality
- Medizin- und Gesundheitsdienste wie Krebsdetektion, Sturzerkennung und COVID-Diagnose
- Automatisches Folienlayout in PowerPoint
- Teilautomatisierte Bewertung von Hochschulzulassungen
- Bestandsmanagement
- Smarte Playlists und Filmempfehlungen
- Erkennung von Werbebetrug
- Lieferroboter und smarte Fahrfunktionen
- Das umfangreiche Gruppenprojekt besteht darin, einen Filmempfehlungsdienst zu bauen, zu deployen, zu evaluieren und zu warten
- Es wird eine einigermaßen realistische „Production“-Umgebung angenommen
- Die Nutzerbasis beträgt 1 Million Personen
Lernergebnisse und Praxis-Tools
- Nach dem Kurs sollen Studierende in der Lage sein, beim Design von Production-Systemen mit ML-Komponenten die Trade-offs zwischen mehreren Qualitätsattributen zu analysieren
- Neben Genauigkeit geht es auch um Betriebskosten, Latenz, Aktualisierbarkeit und Erklärbarkeit
- Sie sollen robuste Systeme in Production-Qualität implementieren können, ausgehend von der Fehleranfälligkeit von ML-Komponenten
- Sie sollen eine fehlertolerante und skalierbare Dateninfrastruktur für Modelltraining, Serving, Versionierung und Experimente entwerfen können
- Durch Testautomatisierung und Qualitätssicherungsverfahren wird die Qualität der gesamten ML-Pipeline abgesichert
- Datenqualität
- Data Drift
- Feedback Loops
- Modellqualität
- Sie sollen test- und überwachbare Systeme in Production sowie robuste Deployment-Pipelines erstellen können
- Systemweite Anforderungen wie Safety, Security, Privacy, Fairness und Usability werden berücksichtigt
- Die Tools, mit denen man vertraut wird, sind Apache Kafka, Jenkins, Prometheus, Grafana, Docker und verschiedene MLOps-Tools
Kursorganisation und Zeitplan
- Die Kursnummern lauten 17-445/17-645/17-745; es handelt sich um einen Kurs mit 12 Units
- Die Kursinhalte sind unter allen Nummern gleich, aber auf PhD-Niveau ersetzt 17-745 zwei Hausaufgaben durch ein verpflichtendes research project
- Die Vorlesung im Frühjahr 2025 findet in Präsenz statt
- Vorlesung: Montag und Mittwoch 2:00–3:20pm, PH 100
- Labs: freitags zu verschiedenen Zeiten und an verschiedenen Orten; es gibt auch reine Remote-Labs
- Die Kursinhalte sind in den letzten Jahren weitgehend stabil geblieben, konkrete Themen und Tools werden jedoch laufend an neue Forschung und Werkzeuge angepasst
- Der vorläufige Zeitplan kann sich ändern und im Semesterverlauf an gewünschte Themen oder Lernunterstützung angepasst werden
- Der Themenfluss der Vorlesung reicht vom Übergang vom Modell zu KI-basierten Systemen über Anforderungserhebung, Vorbereitung auf Fehler, Modellqualität, Zusammenarbeit, verhaltensbasiertes Modelltesting, Architektur und Design, Model Deployment, Production-Experimente, Datenqualität, Pipeline-Automatisierung, Skalierung, Betriebsplanung, Versionierung, Provenienz und Reproduzierbarkeit, technische Schulden, Ethik und Fairness, Erklärbarkeit, Safety sowie Security und Privacy
Bewertung und Aufgabenregeln
- Für Abgabe, Bewertung, Diskussionen, Fragen, Ankündigungen und unterstützende Dokumente werden Canvas und Gradescope genutzt
- Folien werden auf der Kursseite veröffentlicht, Slack wird für Kommunikation zu Hausaufgaben und Projekten genutzt
- GitHub wird zur Koordination der Gruppenarbeit verwendet
- Die Notengewichtung ist wie folgt
- Einzelaufgaben 35 %
- Gruppenprojekt 30 %
- Zwischenprüfung 15 %
- Beteiligung 5 %
- Labs 10 %
- Lesequizze 5 %
- Es gibt keine Abschlussprüfung
- Die Bewertung erfolgt mit klaren Spezifikationen und Punkteskalen; jeder Teil wird als bestanden/nicht bestanden bewertet
- Es gibt keine Teilpunkte
- Einige Aufgaben enthalten eine kleine Zahl an Bonuspunkten
- Die Notengrenzen sind relativ hoch angesetzt
- A+ bei mehr als 99 %
- A bei mehr als 96 %
- A- bei mehr als 94 %
- B+ bei mehr als 91 %
- B bei mehr als 86 %
- B- bei mehr als 82 %
- C bei mehr als 75 %
- D bei mehr als 60 %
Vorkenntnisse und Kursvorbereitung
- Es gibt keine formalen Voraussetzungen, aber für eine erfolgreiche Teilnahme werden grundlegende ML-Erfahrung und grundlegende Programmierkenntnisse erwartet
- Als ML-Hintergrund wird ein Grundverständnis von Feature Extraction, Modellaufbau und -evaluation sowie davon empfohlen, wann und wie Lernverfahren funktionieren
- Erfahrung mit Python und Jupyter notebook ist hilfreich
- Praxisprojekte, Selbststudium oder Online-Kurse können ebenfalls ausreichen
- Mit einem anonymen, unbenoteten prerequisite knowledge check lässt sich das Hintergrundwissen prüfen
- Beim Programmieren ist grundlegende Routine erforderlich
- Grundlegende Gewandtheit in einer Sprache wie Python
- Fähigkeit, Bibliotheken für diese Sprache zu installieren und zu erlernen
- Fähigkeit, sich per
sshmit einer Unix-Maschine zu verbinden und grundlegende Kommandozeilenaufgaben auszuführen - Fähigkeit, neue Tools wie Docker zu installieren und zu erlernen
- Es wird keine bestimmte Programmiersprache vorgeschrieben, aber fast alle Teams verwenden hauptsächlich Python
- Für notwendige Tools wie Git, Docker, Grafana und Jenkins geben die Labs Einführungen und Beispiele; von den Studierenden wird erwartet, dass sie Dokumentation und Tutorials selbst lesen und sich einarbeiten
- Die grundlegende Nutzung von Bibliotheken wie Flask zum Schreiben von Webservices sollte selbstständig erlernt werden können
- Software-Engineering-Erfahrung ist keine Voraussetzung
- Themen wie Requirements Engineering, Softwaredesign, Software Testing, verteilte Systeme, Continuous Deployment und Teammanagement werden im Kurs behandelt
Teilnahme, Labs und Lektüre
- Die Vorlesung findet in Präsenz statt, und die Teilnahme ist ein wichtiger Teil der Lernerfahrung
- Aufzeichnungen der Vorlesung werden nach bestem Bemühen in Canvas bereitgestellt
- Es gibt keine Option für synchronen Remote-Unterricht
- Labs werden nicht aufgezeichnet
- Slack wird auch für Aktivitäten während der Vorlesung genutzt; daher sollte während des Unterrichts Zugriff über Laptop, Tablet oder Smartphone möglich sein
- Labs führen in der Regel Tools ein und verlangen ein oder mehrere klar definierte Ergebnisse
- Lab-Aufgaben sind auf etwa 1 Stunde ausgelegt
- Die Ergebnisse werden während der jeweiligen Lab-Zeit einem TA gezeigt und als bestanden/nicht bestanden bewertet
- Dazu können Code, eine laufende Demo und mündliche Antworten auf Fragen gehören
- Labs sind als erste praktische Übung mit niedriger Hürde konzipiert
- Wenn die Erwartungen nicht erfüllt sind, kann während der Lab-Zeit weiter daran gearbeitet werden
- Nach Ende des Labs werden ohne expliziten Grund oder Token-Nutzung keine Abgaben angenommen
- Als Lektüre wird häufig Goeff Hultens Building Intelligent Systems: A Guide to Machine Learning Engineering verwendet
- Das eigene Lehrbuch Machine Learning in Production ist eng mit jeder Vorlesung verknüpft, wird aber nicht als Pflichtkapitel, sondern als ergänzende Lektüre angegeben
- Für die meisten Unterrichtsstunden gibt es Leseaufgaben, und die Lesequizze in Canvas müssen vor der Stunde eingereicht werden
- Ein Quiz besteht aus einer offenen Frage zur Lektüre
- Bewertet wird ernsthafte Beteiligung als bestanden/nicht bestanden
Teamarbeit und flexible Abgaben
- Teamarbeit ist ein zentraler Bestandteil des Kurses
- Das Gruppenprojekt wird in Teams von 3–5 Personen durchgeführt
- Die Teams werden von der Lehrperson zugeteilt
- Jedem Team wird ein TA-Mentor zugeordnet
- Bei Teamaufgaben wird Peer Assessment nach Kriterien der team citizenship angewandt
- Bewertet wird eine aktive und kooperative Rolle als Teammitglied
- Der Teammentor führt nach jedem Meilenstein ein Debriefing mit dem Team durch und bespricht Strategien zur Verbesserung der Teamarbeit
- Jede Studentin und jeder Student erhält 8 persönliche Tokens für das Semester
- 1 Token ermöglicht die verspätete Abgabe einer individuellen Hausaufgabe um 1 Tag
- 3 Tokens ermöglichen die Verbesserung oder Überarbeitung einer individuellen Hausaufgabe und erneute Abgabe mit kurzer Reflexion
- 1 Token ermöglicht eine verspätete Abgabe oder erneute Abgabe eines Lesequiz
- 1 Token ermöglicht eine verspätete Fertigstellung oder Wiederholung eines Labs
- Verbleibende persönliche Tokens werden am Semesterende als jeweils 1 Tag Beteiligung angerechnet
- Jedes Team erhält zusätzlich 8 Team-Tokens
- Pro Tag Fristverlängerung für einen Meilenstein kann 1 Token eingesetzt werden
- Für eine erneute Abgabe eines Meilensteins mit Reflexion können 3 Tokens eingesetzt werden
- Persönliche Tokens und Team-Tokens sind nicht gegenseitig austauschbar
- Wenn keine Tokens vorhanden sind, werden bei verspäteter Abgabe individueller oder Teamaufgaben 15 % pro angefangenem Tag abgezogen
KI-Tools, Zusammenarbeit und Forschungsteilnahme
- Aufgrund der Art des Kurses gibt es keine Einschränkung für die Nutzung generativer KI-Tools
- Tools wie ChatGPT, Bard, Co-Pilot und Stable Diffusion dürfen verwendet werden
- Auch die Wiederverwendung externen Codes aus StackOverflow oder Tutorials ist möglich
- Für die Korrektheit der Abgaben sind ausschließlich die Studierenden verantwortlich
- Content-Generation-Tools können plausibel klingende, aber falsche Antworten erzeugen; solche Antworten erhalten keine Punkte
- Die Einhaltung geltender Lizenzen liegt ebenfalls in der Verantwortung der Studierenden
- Es gelten die üblichen Regeln akademischer Integrität
- Lösungen anderer Studierender dürfen nicht kopiert und gemeinsam erstellte Lösungen nicht übernommen werden
- Man darf Lösungen anderer Studierender nicht ansehen, die eigene Lösung nicht weitergeben und sie nicht an einem Ort ablegen, an dem andere Studierende sie sehen können
- Das Veröffentlichen von Lösungen auf GitHub ist ebenfalls nicht erlaubt
- In Labs darf mit anderen Studierenden zusammengearbeitet werden, nicht jedoch bei Lesequizzen, Hausaufgaben und Prüfungen
- Die Mindeststrafe für Betrug ist 0 Punkte für die gesamte betreffende Aufgabe; zusätzliche Sanktionen nach den Verfahren der Universität sind möglich
- Im Kurs wird auch akademische Forschung durchgeführt, bei der studentische Aufgaben analysiert werden
- Eine Nichtteilnahme hat keinen Einfluss auf die Note oder den akademischen Werdegang an der CMU
- Forschungsdaten enthalten keine Noten der Studierenden
- Die Analyse erfolgt nach Kursende und nach Einreichung der Endnoten in deidentifizierter und aggregierter Form
1 Kommentare
Meinungen auf Hacker News
Das Material ist eindeutig praxisnah. Kafka, Docker, Kubernetes, Jenkins sind allesamt Industriestandard-Tools, und der Fokus auf MLOps wirkt ebenfalls frisch.
Gut ist, dass der Kurs nicht einfach beim Erstellen von Modellen aufhört, sondern die Lücke zwischen Machine Learning und realen Betriebssystemen behandelt. Mir gefällt auch, dass Erklärbarkeit, Fairness und Monitoring vorkommen. Wenn man sich die Übungen ansieht, scheint allerdings vieles dabei zu sein, was auch Software Engineers auf mittlerem Niveau oder motivierte Anfänger per Tutorial lernen könnten. Git, Flask und Container-Orchestrierung sind nützlich, aber für Leute, die bereits Produktionsumgebungen erlebt haben, ziemlich grundlegend. Tiefere Themen wie Netzwerkoptimierung für verteiltes Training oder der Betrieb von Inferenz in großem Maßstab scheinen weniger behandelt zu werden; ich frage mich, ob sie in den Gruppenprojekten auftauchen. Jenkins ist weit verbreitet, aber für CI/CD wäre es vielleicht besser, auch modernere Tools wie GitHub Actions oder ArgoCD vorzustellen. Kubernetes ist ebenfalls Pflicht, doch wenn auch Alternativen und ergänzende Tools für Edge-Deployments oder Serverless-Systeme behandelt würden, wäre das zukunftsorientierter.
Wenn es konzeptionell keinen großen Unterschied zwischen Jenkins und anderen CI/CD-Frameworks gibt, kann man einfach eines der populären auswählen und verwenden, und genau das scheint hier passiert zu sein.
Vor 20 Jahren hat man gelernt, indem man mit Java Datenbanken gebaut hat, und auch damals nutzte man „Tools, die irgendwann wahrscheinlich ausgemustert werden“. Es ist einfach ein neuer Ausgangspunkt.
Ich habe die Übungen überflogen, und sie wirken interessant. Obwohl ich Full-Stack-Entwickler ohne viel LLM-Erfahrung bin, ist mir etwa die Hälfte wie Git, Flask, Kafka, Kubernetes bereits vertraut, und die andere Hälfte sieht einfach wie Code aus.
Von der komplexen Mathematik, an die ich bei Machine Learning gedacht hätte, ist kaum etwas zu sehen. Daher frage ich mich, ob MLOps ein Bereich ist, der auch für normale Entwickler ohne Doktortitel in der Praxis gar nicht so schwer zugänglich ist.
Wenn man zum Beispiel per Simulation große Mengen synthetischer Daten erzeugen muss, interessiert einen womöglich Batch-Verarbeitung, Encoding-Formate und Daten-Loading mehr als die Erzeugung eines unverzerrten Datensatzes an sich. Wenn Daten per Crowdsourcing gesammelt und gesampelt werden müssen, ist oft die Implementierung, die online schnell arbeitet und Kosten sowie Compute effizient nutzt, wichtiger als die Theorie des Reservoir Sampling.
In den meisten Unternehmen ist ein Machine Learning Engineer ein Engineer, der Software und einen Teil von Machine Learning versteht; im guten Fall kann er beides gut, im schlechten Fall nichts von beidem.
Dieser Kurs behandelt Datenqualität offenbar kaum und kommt erst in Kapitel 16 dazu. Ich frage mich, wie viel Industrieerfahrung die Autoren haben.
In der Praxis verbringt man 90 % der Zeit mit Datenqualität und Datenbereinigung.
Meine Machine-Learning-Arbeit findet zum Beispiel fast vollständig im Kontext von Regressions- und Surrogatmodell-Entwicklung für Engineering-Simulationen statt, sodass Datenqualität oder -bereinigung kaum ein Problem sind. Der Großteil der Arbeit liegt bei der Datensatzerzeugung sowie bei Modellauswahl, Training und Deployment. Es hängt vom Job ab.
Wenn man es einrichtet, bevor sich Datenpipelines bei Quellerzeugung, Transformation und Vorverarbeitung verfestigen, erspart man sich später viele Kopfschmerzen.
Ich frage mich, ob es einen Ort gibt, an dem auch Nicht-Studierende mitmachen können.
Ich frage mich, ob sich jeder einschreiben kann oder ob man erst in eines der besten Informatikprogramme des Landes aufgenommen werden muss.
Sieht gut aus. Beim LLM-Systems-Kurs ist es genauso.
Kennt jemand Literatur oder Vorlesungen zum Aufbau von Machine-Learning-Cluster-Infrastruktur? Mich interessieren besonders Skalierung der Storage-Infrastruktur, Networking und Scheduling-Ansätze.
Für Storage, wenn es um Modell- oder Datenspeicherung geht, kann man Object Storage wie S3 oder gemeinsam genutzte Netzwerkdateisysteme wie EFS oder Lustre verwenden. Zu Networking für große GPU-Setups kenne ich keine endgültigen Quellen. Scheduling ist inzwischen praktisch ein gelöstes Problem, sodass alles Mögliche funktioniert. Man kann auch einen eigenen Koordinator bauen, der regelmäßig Docker-Image-basierte Jobs ausführt, und mit einem Message-Queue-basierten Metadaten- und Trigger-System bekommt man das ziemlich schnell hin. Airflow oder AWS Batch für große Jobs gehen ebenfalls. Was hier möglicherweise fehlt, ist Model Serving. Gerade bei Empfehlungssystemen ist das schwierig und latenzkritisch sowie anfällig für Latenzspitzen und Traffic-Spitzen. Selbst gut geschriebener Python-Code kann recht schnell an Grenzen stoßen.
Schön, dass dieser Kurs online ist. Christian ist ein großartiger Mensch, und seine Arbeit ist gut. Ich kenne die frühen Versionen dieses Kurses und des Buchs einigermaßen und kann sie wärmstens empfehlen.
Ich habe 9,5 Jahre an Machine-Learning-Plattformen und -Systemen verschiedener Größenordnungen gearbeitet, und das Material sieht gut aus.
Vielleicht unterschätze ich die Schwierigkeit des Kurses, aber er klingt wie ein Einführungskurs. Bis zu den Tools für Modellerklärbarkeit wirkt das meiste ziemlich intuitiv.
Trotzdem finde ich gut, dass für die meisten Anwendungsfälle Industriestandard-Tools verwendet werden.