True ML Talks #3 - Plattform für maschinelles Lernen auf Facebook

Auf Geschwindigkeit ausgelegt: ~ 10 ms Latenz, auch unter Last
Unglaublich schnelle Methode zum Erstellen, Verfolgen und Bereitstellen Ihrer Modelle!
- Verarbeitet mehr als 350 RPS auf nur 1 vCPU — kein Tuning erforderlich
- Produktionsbereit mit vollem Unternehmenssupport
Wir sind zurück mit einer weiteren Folge von True ML Talks. Darin tauchen wir tief in die von Facebook ein FBLearner Flow, Facebooks KI-Backbone und wir sprechen mit Aditya Kalro.
Aditya ist derzeit Senior Engineering Manager bei Google im Identity-Team. Davor war Aditya bei Facebook tätig, wo er den Aufbau der gesamten ML-Workflow-Management-Plattform von Facebook namens FBlearner Flow leitete. Und wir werden in der heutigen Telefonkonferenz ausführlicher darauf eingehen.
📌
Unsere Gespräche mit Aditya werden die folgenden Aspekte behandeln:
- Überblick über FBlearner Flow.
- A/B-Tests und Shadow-Tests in großen Systemen.
- Überbrückung der Lücke zwischen Forschung und Produktion.
- Optimierung von Kosten und Latenz bei KI-Inferenz.
- Architektur von FBlearner Flow.
- Überbrückung der Lücke zwischen Software und ML-Bereitstellungsplattformen.
- Bedeutung von Überwachung und verteiltem Training.
- Kernprinzipien für den Aufbau eines skalierbaren ML-Systems.
Sehen Sie sich die ganze Folge unten an:
Skalierung von KI-Workflows
FBlearner Flow ist eine Workflow-Management-Plattform für maschinelles Lernen, die von Facebook zur Verwaltung seiner ML-Infrastruktur entwickelt wurde. Aditya leitete die Entwicklung der Plattform und überwachte deren Wachstum, sodass Tausende von Schulungen pro Tag in 700-800 Teams unterstützt wurden.
- FBLearner Flow wurde ursprünglich als Workflow-Mechanismus für ML entwickelt, entwickelte sich jedoch zu einem generischen Workflow-Mechanismus, der eine Vielzahl von Aufgaben bewältigen konnte, einschließlich der Erstellung mobiler Apps.
- Die Plattform unterstützte Tausende von Schulungen pro Tag und stellte Hunderttausende von Modellen gleichzeitig bereit.
- FBlearner flow war mit einer Inferenzplattform verbunden und skalierte im Laufe der Zeit auf Hunderte und Tausende von Maschinen.
- Die Plattform wurde so konzipiert, dass sie generisch genug ist, um auf jede Domain angewendet zu werden, was sie zu einem vielseitigen Tool für die Verwaltung von ML-Workflows macht.
Die Entwicklung von FBlearner Flow: Eine Reise, um ML-Ingenieure produktiver zu machen
Im Folgenden sind drei einzigartige und relevante Aspekte der Entwicklung von FBlearner Flow aufgeführt:
- Philosophie: Das Hauptziel von FB Learner war es, ML-Ingenieure produktiver zu machen. Um dies zu erreichen, wurde die Plattform in Python entwickelt, obwohl die Sprache zu diesem Zeitpunkt auf Facebook nicht gut unterstützt wurde. Die Unantastbarkeit des Experiments wurde ebenfalls betont, was bedeutete, dass das Experiment vollständig vorhersagbar sein musste. Um dies zu erreichen, wies die Plattform jedem Workflow oder Operator dieselbe Menge an Arbeitsspeicher und CPU zu.
- Arbeitsablauf und Operatoren | FBlearner Flow begann mit dem Konzept eines Workflows, mit dem ein ML-Ingenieur alles ausdrücken würde, was passieren muss. Der Workflow ist ein einzigartiges Konzept, das mehrere Operatoren kombiniert. Jede Komponente des Workflows wurde in Operatoren unterteilt, die auf verschiedene Maschinen verteilt werden konnten, sodass Benutzer sie leichter miteinander verbinden und Daten von einer Maschine auf eine andere übertragen konnten.
- Versuchsmanagement: Die Plattform bietet auch Tools zur Experimentverwaltung, mit denen Benutzer ihre Experimente verwalten und etwaige Fehler debuggen können. Die Benutzeroberfläche von FBlearner Flow machte es den Benutzern leicht, zu erkennen, wo der Fehler aufgetreten ist, und die erforderlichen Protokolle bereitzustellen, um herauszufinden, warum der Fehler aufgetreten ist. Dieser Ansatz half den Benutzern auch dabei, eine große Anzahl von Experimenten zu verwalten.

Bewertungssystem
Modelle für maschinelles Lernen müssen evaluiert werden, um festzustellen, ob sie sich anhand unsichtbarer Daten gut verallgemeinern lassen. An dieser Stelle kommt das Bewertungssystem ins Spiel. Das Bewertungssystem besteht aus zwei Teilen: Chargenbewertung und Online-Bewertung.
- Chargenauswertung: Die Batch-Auswertung wird auch als Offline-Auswertung bezeichnet. Dabei werden Daten gelesen, verarbeitet und dann wieder in eine andere Entität übertragen. Dieser Ansatz ist allgemein bekannt und eignet sich ideal für Modelle mit wenigen Parametern. Es ist jedoch möglicherweise nicht effektiv, wenn es um Tausende von Parametern und Merkmalen geht.
- Online-Bewertung: Das Online-Bewertungssystem ist dagegen etwas komplexer und ermöglicht es Benutzern, den Einsatz eines bestimmten ML-Modells zu verfolgen und ein Beispiel an das Modell zu senden, um sofortige Ergebnisse zu erhalten. Dies macht es zu einem großartigen Tool für ML-Praktiker, um ihre Modelle, auch experimentelle Modelle, schnell zu testen. Das Ads-Team von Facebook hatte ein Inferenzsystem, das sehr spezifisch für sie war. Um es für den Rest von Facebook verfügbar zu machen, erstellten sie die erste Version der Inferenzplattform, die eng mit FBlearner Flow verknüpft war.
Aufbau eines effektiven A/B-Test-Frameworks für Machine-Learning-Modelle
Der Einsatz von Modellen für maschinelles Lernen in realen Szenarien kann eine Herausforderung sein, insbesondere wenn es sich um große Systeme wie Facebook handelt, bei denen selbst ein kleiner Fehler erhebliche Folgen haben kann. In diesem Zusammenhang ist der Aufbau eines effektiven A/B-Test-Frameworks von entscheidender Bedeutung, um die optimale Leistung von Modellen für maschinelles Lernen sicherzustellen.
Zwei wesentliche Komponenten der FB Learner-Plattform, die dazu beigetragen haben, dieses Ziel zu erreichen, waren A/B-Tests und Shadow-Tests.. A/B-Tests ermöglichten den Vergleich zweier Versionen des Systems oder Modells, um festzustellen, welche Version besser abschneidet. Bei Shadow-Tests konnte das neue Modell parallel zum bestehenden Modell eingesetzt werden, um dessen Leistung zu bewerten, ohne die Benutzererfahrung zu beeinträchtigen. Dies trug dazu bei, das Risiko zu minimieren, ein fehlerhaftes Modell in der Produktion einzusetzen.
Ein weiteres einzigartiges Merkmal der FBlearner-Plattform war seine Fähigkeit, den Austausch von Modellen zwischen ML-Praktikern und Entwicklern zu erleichtern. Es ermöglichte Entwicklern, die Modelle einfach in der Produktion einzusetzen und sie mithilfe der vorhandenen Infrastruktur für schnelle Experimente zu testen. Auf diese Weise konnten sie die Leistung ihres vorhandenen Systems schnell mit dem neu bereitgestellten ML-Modell vergleichen und so eine optimale Leistung des Systems sicherstellen.
Wie Facebook mit FBlearner Flow die Lücke zwischen Forschung und Produktion überbrückte
Das KI-Forschungsteam von Facebook stand vor der großen Herausforderung, die Lücke zwischen den Bedürfnissen der Forscher und des Produktionsteams zu schließen. Die Forscher benötigten zwar ein System, das schnell war und es ihnen ermöglichte, neue Modelle schnell einzusetzen, aber das Produktionsteam benötigte Stabilität, Zuverlässigkeit und Vorhersagbarkeit.
👉
Um dieser Herausforderung zu begegnen, Facebook hat zusätzlich zu seiner Plattform für maschinelles Lernen eine Slurm-ähnliche Oberfläche entwickelt.
Slurm ist eine Befehlszeilenschnittstelle, die in der Wissenschaft häufig für das Experimentmanagement verwendet wird. Durch die Schaffung einer ähnlichen Befehlszeilenschnittstelle für die Plattform erleichterte Facebook Forschern die Nutzung der Plattform.
Trotz der grundlegenden Unterschiede in den Anforderungen beider Teams erleichterte es den Forschern eine gemeinsame Schnittstelle, ihre Modelle für die Produktion auf FBLerner Flow zu migrieren. Das System verschaffte ihnen Zugriff auf eine große Anzahl von Maschinen, im Gegensatz zu Slurm, das für den Betrieb auf einer kleinen Anzahl von Maschinen konzipiert war.
Die SLURM-ähnliche Oberfläche auf der Plattform ermöglichte es Forschern, schnell mit verschiedenen Modellen zu experimentieren und sie in die Produktionsumgebung zu migrieren, wenn sie mit den Ergebnissen zufrieden waren.
Optimierung von Kosten und Latenz bei KI-Inferenz: Die Rolle von Containerisierung und Microservices
Im Bereich der KI ist es eine ständige Herausforderung, Kostenoptimierung zu erreichen, ohne Kompromisse bei der Latenz einzugehen. Mit dem Aufkommen neuer Technologien und architektonischer Designs wurden jedoch Lösungen entwickelt, um dieses Problem zu lösen.
👉
Containerisierung und Microservices haben sich bei der Kostenoptimierung und der Reduzierung der Latenz bei KI-Inferenzen als wirksam erwiesen.
Containerisierung ist eine Methode, um Softwarecode zusammen mit seinen Abhängigkeiten in eine einzige Einheit, einen sogenannten Container, zu packen. Dieser Container kann problemlos von einer Computerumgebung in eine andere verschoben werden, wodurch er hochgradig skalierbar und flexibel ist. Mithilfe der Containerisierung können Unternehmen mehrere KI-Modelle in einen einzigen Container packen, sodass sie schnell und effizient bereitgestellt und skaliert werden können.
Darüber hinaus ermöglicht die Containerisierung auch das Packen von Behältern, wodurch die Ressourcenzuweisung optimiert wird, indem mehrere Behälter auf einer einzigen physischen Maschine platziert werden. Auf diese Weise können Unternehmen ihre verfügbaren Ressourcen optimal nutzen und die Kosten senken. Darüber hinaus können Unternehmen mit der automatischen Skalierung je nach Bedarf schnell nach oben oder unten skalieren und so die Kosten weiter optimieren.
Darüber hinaus Mikrodienste, bei denen es sich um kleine, unabhängige Komponenten einer Anwendung handelt, können verwendet werden, um eine effiziente und agile Inferenzplattform zu erstellen. Durch die Aufteilung komplexer Anwendungen in kleinere, modulare Dienste kann jeder Dienst unabhängig skaliert, verwaltet und aktualisiert werden. Dies macht die Plattform nicht nur widerstandsfähiger, sondern trägt auch zur Verringerung der Latenz bei.
Die Architektur von FBlearner Flow verstehen: Ein genauerer Blick
Der Aufbau eines robusten und skalierbaren KI-Systems erfordert eine solide Infrastruktur. In dieser Hinsicht stand FBlearner Flow von Facebook an der Spitze der KI-Innovation und bot eine einzigartige Lösung für das Training und den Einsatz von KI-Modellen in großem Maßstab.
Die Architektur von FBlearner Flow wurde größtenteils intern entwickelt und nutzte die bestehende Infrastruktur von Facebook. Sie begannen mit Kronos, einem internen Planer, mussten jedoch zur Containerisierung übergehen, um die Probleme mit der heranstürmenden Herde und lauten Nachbarn zu lösen. Das System basierte dann auf der Idee von Operatoren und Workflows, wobei Hive-Tabellen zunächst als Kanäle für strukturierte Daten verwendet wurden, aber Dateicluster und Blob-Speicher schließlich für unstrukturierte Daten wie Bilder verwendet wurden.
Der Ausführungsmechanismus des Systems war eigenständig und versioniert, sodass Vergleiche zwischen verschiedenen Versionen des Modells möglich waren. Die Versuchsverwaltung wurde durch die Fähigkeit des Systems erleichtert, Funktionen, Modellversionen oder Trainingsparadigmen zu ändern, während die Ausgabemetriken und Evaluationssätze unverändert blieben.
Wenn der FBlearner Flow heute neu erstellt werden würde, wären Kubernetes und Kubeflow die bevorzugten Lösungen. Kubeflow bietet ein eigenständigeres Paradigma, das die Bereitstellung erleichtert, und es kann andere Konnektoren verwenden, um eine Verbindung zu verschiedenen Teilen der Infrastruktur herzustellen.
Die Inferenzplattform wurde auf Tupperware, der Dienstinfrastruktur von Facebook, aufgebaut, wobei jedes Modell ein eigener Container war. Die Auto-Scaling-Funktion wurde von Kubernetes übernommen, um sicherzustellen, dass die Plattform nach Bedarf hoch- und herunterskaliert werden kann.
Insgesamt bietet die Architektur von FBlearner Flow eine einzigartige Lösung für den Aufbau von KI-Systemen in großem Maßstab. Dies ist ein Beweis für die Bedeutung der Infrastruktur für den Aufbau robuster und skalierbarer KI-Systeme.
Überbrückung der Lücke zwischen Softwareentwicklung und Bereitstellungsplattformen für maschinelles Lernen
Da der Bereich des maschinellen Lernens weiter wächst und sich weiterentwickelt, besteht ein wachsender Bedarf an der Entwicklung von Plattformen und Prozessen für den Einsatz von Modellen für maschinelles Lernen in Produktionsumgebungen. Viele Unternehmen betrachten Plattformen für maschinelles Lernen jedoch getrennt von Plattformen für die Softwareentwicklung, was zu Verwirrung und Ineffizienzen führen kann.
👉
Es gibt zwar einige Unterschiede in den verwendeten Tools, aber die Prozesse für die Entwicklung und Bereitstellung von ML-Modellen können denen in der Softwareentwicklung sehr ähnlich sein.
Einer der wichtigsten Aspekte ist, wie wichtig es ist, eine Meinung darüber zu haben, wie ML-Modelle entwickelt und eingesetzt werden. Durch die Einführung von Konzepten wie Testen und erforderlichen Schritten, wie dem Train Test Split, können Unternehmen den ML-Entwicklungsprozess rationalisieren und sicherstellen, dass Modelle auf konsistente und effektive Weise eingesetzt werden.
Eine weitere Ähnlichkeit ist der Bedarf an Überwachung und Telemetrie sowohl in der Softwareentwicklung als auch in ML-Bereitstellungsplattformen. So wie Entwickler die Leistung ihrer Anwendungen und Microservices überwachen, müssen ML-Entwickler und MLOps-Ingenieure die Leistung ihrer Modelle und Infrastruktur überwachen.
Indem Unternehmen die Gemeinsamkeiten zwischen den beiden erkennen und Prozesse und Tools entwickeln, die für beide konsistent sind, können sie ihre Entwicklungs- und Bereitstellungsprozesse optimieren, Fehler und Ineffizienzen reduzieren und sicherstellen, dass ihre ML-Modelle konsistent und effektiv eingesetzt werden.
Die Bedeutung der Überwachung beim Einsatz von ML
Die Überwachung ist ein wichtiger Aspekt jedes ML-Bereitstellungsprozesses. Es hilft sicherzustellen, dass die Modelle wie erwartet funktionieren und die gewünschten Ergebnisse liefern. Die Überwachung der Infrastruktur und der Ergebnisse der Prognosen ist entscheidend, um sicherzustellen, dass das System ordnungsgemäß funktioniert. Der Teil des FBLearner-Systems, der automatisch Metriken zur Überwachung der Leistung der Modelle generiert.
Es besteht Bedarf an anpassbaren Metriken, mit denen Entwickler die Leistung ihrer Modelle effektiv überwachen können. Dank der Überwachung können Entwickler alle Probleme, die während des Bereitstellungsprozesses auftreten können, schnell identifizieren und beheben, was zu einer besseren Leistung und genaueren Prognosen führt.
Zusammenfassend lässt sich sagen, dass die Überwachung ein wesentlicher Bestandteil der ML-Bereitstellung ist, und es ist wichtig, über ein System zu verfügen, das es Entwicklern ermöglicht, ihre Modelle effektiv zu überwachen. Anpassbare Metriken und eine genaue Überwachung der Infrastruktur und der Ergebnisse von Prognosen können dazu beitragen, dass ML-Modelle wie erwartet funktionieren, was zu einer besseren Leistung und genaueren Vorhersagen führt.
Verteilte Schulungen und ihre Auswirkungen auf die Workflow-Architektur
Verteiltes Training und distributive Inferenz waren wichtige Paradigmenwechsel für das FBlearners Flow-System. Ursprünglich war das System so konzipiert, dass es auf einem einzigen Computer funktioniert, und das Training sollte auf derselben Maschine stattfinden. Da dem System jedoch mehr Daten hinzugefügt wurden, wurde es notwendig, das System neu zu gestalten, um verteiltes Training zu unterstützen.
Die größte Herausforderung in dieser Hinsicht bestand in der Betaversion von Structure. Das Team musste sowohl modellparalleles als auch datenparalleles Training für strukturierte bzw. unstrukturierte Daten anwenden. Außerdem mussten sie spezielle Regeln für Parameterserver hinzufügen, die anders behandelt wurden als das Training selbst. Die Parameterserver sammelten die gesamte Ausgabe der einzelnen Trainingseinheiten und fügten sie wieder zusammen. Das Team experimentierte mit verschiedenen Paradigmen und entschied sich schließlich für ein Parameter-Server-Paradigma, das Checkpointing ermöglichte.
Zuverlässigkeit wurde bei verteilten Schulungen zu einem wichtigen Thema, denn selbst wenn eine Maschine ausfiel, versagte der gesamte Arbeitsablauf. Das Team musste APIs erstellen, um Checkpoints zu ermöglichen, da dies nicht vollständig automatisiert war. Außerdem mussten sie einen Neustartmechanismus schreiben, um sicherzustellen, dass der Workflow im Falle eines Fehlers vom entsprechenden Checkpoint aus neu gestartet werden konnte.
Das verteilte Training ermöglichte zwar das Training komplexerer Modelle, machte es aber auch schwieriger für das Team, da das Training jetzt 5-6 mal länger dauerte als in der Vergangenheit. Dennoch war das Team in der Lage, sich an diese Änderungen anzupassen und sicherzustellen, dass das System weiterhin zuverlässig funktionierte.
Aufbau eines skalierbaren ML-Systems: Kernprinzipien für den Erfolg
- Kontinuierliches Feedback und Störungen: Um ein erfolgreiches ML-System aufzubauen, ist kontinuierliches Feedback von Benutzern unerlässlich. Das Team von Aditya hatte einen Vorteil, da die Kunden im selben Unternehmen waren, sodass sie Feedback erhalten und sich selbst stören konnten. Daher erfordert der Aufbau eines skalierbaren ML-Systems eine kontinuierliche Interaktion mit den Benutzern, sodass sie Feedback geben und sich entsprechend anpassen können.
- Kundenservice-Orientierung: Ein wesentlicher Bestandteil des Aufbaus eines skalierbaren ML-Systems besteht darin, sicherzustellen, dass die Fragen der Benutzer umgehend beantwortet werden, um sie zu entsperren. Das Team von Aditya orientierte sich am Kundenservice, was es ihnen ermöglichte, alle Probleme zu lösen und schnell Feedback zu erhalten. Dieser Ansatz ist von entscheidender Bedeutung, da er das Vertrauen der Nutzer fördert und deren Nutzererlebnis verbessert.
- Evolution und Anpassung: Schließlich erfordert der Aufbau eines skalierbaren ML-Systems die Bereitschaft, sich weiterzuentwickeln und anzupassen, da ML ein Bereich ist, der sich schnell verändert. Das Team von Aditya erkannte, dass sie nicht alles an einem Tag entwerfen konnten und dass sich das System kontinuierlich weiterentwickeln würde. Daher müssen Unternehmen offen für Veränderungen sein und neue Technologien nutzen, sobald sie entstehen.
Im Folgenden finden Sie einige interessante Lektüre zu Facebooks maschinellem Lernen:
- Wir stellen vor: FBlearner Flow: Facebooks KI-Backbone
- TWIML-Podcast mit Aditya Kalro
- Vortrag von Aditya & Pierre über angewandtes maschinelles Lernen im großen Maßstab
Lesen Sie unseren vorherigen Beitrag in der Serie.
Schaue weiter TrueML YouTube-Serie und lese das ganze TrueML Blog-Serie.
Wahre Gießerei ist ein ML Deployment PaaS über Kubernetes, um die Workflows von Entwicklern zu beschleunigen und ihnen gleichzeitig volle Flexibilität beim Testen und Bereitstellen von Modellen zu bieten und gleichzeitig die volle Sicherheit und Kontrolle für das Infra-Team zu gewährleisten. Über unsere Plattform ermöglichen wir Teams für maschinelles Lernen bereitstellen und überwachen Modelle innerhalb von 15 Minuten mit 100% iger Zuverlässigkeit, Skalierbarkeit und der Möglichkeit, innerhalb von Sekunden rückgängig zu machen. So können sie Kosten sparen und Modelle schneller für die Produktion freigeben, wodurch ein echter Geschäftswert erzielt wird.
Themen: FBLearner Flow, ML-Plattform auf Facebook
TrueFoundry AI Gateway bietet eine Latenz von ~3—4 ms, verarbeitet mehr als 350 RPS auf einer vCPU, skaliert problemlos horizontal und ist produktionsbereit, während LiteLM unter einer hohen Latenz leidet, mit moderaten RPS zu kämpfen hat, keine integrierte Skalierung hat und sich am besten für leichte Workloads oder Prototyp-Workloads eignet.
Der schnellste Weg, deine KI zu entwickeln, zu steuern und zu skalieren













.png)




.png)






.webp)

.webp)



