Maschinelles Lernen (ML) ist eine bestimmte Untergruppe (Zweig) der künstlichen Intelligenz (KI). Die Hauptidee von ML besteht darin, Systeme in die Lage zu versetzen, aus historischen Daten zu lernen, um neue Ausgabewerte für Eingabeereignisse vorherzusagen. ML erfordert nicht, dass Systeme explizit programmiert werden, um das Ziel zu erreichen. Angesichts der wachsenden Datenmengen in der heutigen Welt hat ML eine beispiellose Popularität erlangt. Wir erreichen heute, was gestern noch unvorstellbar war: von der Vorhersage des Krebsrisikos über Mammogrammbilder und Patientenrisikodaten bis hin zu polyglotten KI-Übersetzern zum Beispiel. Infolgedessen ist ML für viele Unternehmen zum wichtigsten Unterscheidungsmerkmal im Wettbewerb geworden, was dazu geführt hat, dass ML-gestützte Software in unserem Leben schnell allgegenwärtig wird. Der zentrale Schlüssel von ML ist die Datenabhängigkeit; mehr verfügbare Daten ermöglichen eine viel bessere Genauigkeit der von ML erstellten Prognosemodelle.
Das Erscheinen von Distributed ML
ML ist zwar zu einer ziemlich leistungsstarken Technologie geworden, aber aufgrund seines Hungers nach Trainingsdaten ist es schwierig, ML-Modelle mit einer einzigen Maschine zu erstellen. Es ist nicht ungewöhnlich, dass Trainingsdaten in der Größenordnung von Hunderten von Gigabyte bis Terabyte liegen, wie zum Beispiel im Bereich der Erdbeobachtung. Dies hat die Notwendigkeit geschaffen, ML-Modelle auf der Grundlage verteilter Daten zu erstellen, die auf mehreren Speicherknoten auf der ganzen Welt gespeichert sind.
Distributed ML zielt darauf ab, sich selbst zu trainieren, indem es mehrere Rechenknoten verwendet, um größere Eingabe-Trainingsdatengrößen zu bewältigen sowie die Leistung und die Genauigkeit der Modelle zu verbessern [1]. Somit ermöglicht verteiltes ML Organisationen und Einzelpersonen, aus riesigen Mengen verteilter Trainingsdaten aussagekräftige Schlüsse zu ziehen. Gesundheitswesen, Unternehmensdatenanalyse und Werbung sind Beispiele für die häufigsten Sektoren, die stark von verteiltem ML profitieren.
Es gibt zwei grundlegende Möglichkeiten, verteiltes ML durchzuführen: Datenparallelität und Modellparallelität.
Beim Ansatz der Datenparallelität partitioniert das System die eingegebenen Trainingsdaten horizontal; in der Regel erstellt es so viele Partitionen, wie Rechenknoten (Worker) verfügbar sind, und verteilt jede Datenpartition an einen anderen Worker. Anschließend sendet es dieselben Modellmerkmale an jeden Worker, der wiederum anhand seiner Datenpartition als Eingabe ein lokales Modell erlernt. Die Arbeiter senden ihr lokales Modell an eine zentrale Stelle, wo das System die mehreren kleineren Eingaben zu einem einzigen globalen Modell zusammenführt.
Der Ansatz der Modellparallelität partitioniert im Gegensatz zur Datenparallelität die Modellmerkmale und sendet jede Modellpartition an einen anderen Worker, der wiederum ein lokales Modell mit denselben Eingabedaten erstellt. Das heißt, die gesamten Eingabe-Trainingsdaten werden von allen Workern repliziert. Anschließend bringt das System diese lokalen Modelle an einen zentralen Ort, um sie zu einem einzigen globalen Modell zusammenzufassen.
Obwohl verteiltes ML leistungsstark ist, basiert es auf einer Kernannahme, die seine Anwendbarkeit einschränkt: dass man die Kontrolle über und den Zugriff auf die gesamten Trainingsdaten haben kann.
In immer mehr Fällen kann jedoch kein direkter Zugriff auf Rohdaten gewährt werden. Daher kann verteiltes ML in solchen Fällen, beispielsweise im Gesundheitswesen, nicht angewendet werden.
Die Entstehung des föderierten Lernens
Das Konzept von FL wurde erstmals 2017 von Google eingeführt [3]. Das Konzept der föderierten Analysen und Datenbanken stammt jedoch aus den 1980er Jahren [4]. Ähnlich wie bei föderierten Datenbanken zielt FL darauf ab, Berechnungen dorthin zu bringen, wo sich die Daten befinden.
Federated Learning (FL) ist im Grunde ein verteilter ML-Ansatz. Im Gegensatz zu herkömmlichem verteiltem ML werden Rohdaten von verschiedenen Mitarbeitern nie aus dem Worker-Team übertragen. Die Mitarbeiter sind Eigentümer der Daten, und nur sie haben die Kontrolle darüber und direkten Zugriff darauf. Im Allgemeinen ermöglicht FL, an verschiedenen unabhängigen oder autonomen Standorten Erfahrungen mit einer breiteren Palette von Datensätzen zu sammeln.
Die Gewährleistung des Datenschutzes ist in der heutigen Welt von entscheidender Bedeutung. Das gesellschaftliche Bewusstsein für den Datenschutz als eines der Hauptanliegen unserer zunehmend datengesteuerten Welt nimmt zu. Viele Regierungsorganisationen verfügen beispielsweise über Gesetze wie die DSGVO [5] und den CCPA [6], um die Art und Weise zu kontrollieren, wie Daten gespeichert und verarbeitet werden. FL ermöglicht es Organisationen und Einzelpersonen, ML-Modelle für mehrere autonome Parteien zu trainieren, ohne den Datenschutz zu gefährden, da der alleinige Eigentümer der Daten der Knoten ist, auf dem die Daten gespeichert werden. Während der Schulung teilen Organisationen und Einzelpersonen ihre lokalen Modelle, um voneinander zu lernen. So können Organisationen und Einzelpersonen die Daten anderer nutzen, um robustere ML-Modelle zu erlernen, als wenn sie nur ihre eigenen Daten verwenden würden. Mehrere Teilnehmer arbeiten zusammen, um ein Modell mit ihren sensiblen Daten zu trainieren und nur das gelernte lokale Modell untereinander zu kommunizieren.
Das Schöne an FL ist, dass es Organisationen und Einzelpersonen ermöglicht, auf ein gemeinsames Ziel hinzuarbeiten, ohne den Datenschutz zu opfern.
FL nutzt auch die beiden grundlegenden Ausführungsmodi, um Modelle für mehrere Teilnehmer zu erstellen: horizontales Lernen (Datenparallelität) und vertikales Lernen (Modellparallelität).
Was sind die Probleme heute?
Die Forschungs- und Industriegemeinschaften haben bereits damit begonnen, mehrere Systeme im Bereich des föderierten Lernens bereitzustellen. TensorFlow Federated [7], Flower [8] und OpenFL [9] sind nur einige Beispiele für solche Systeme. All diese Systeme ermöglichen es Organisationen und Einzelpersonen (Benutzern), ihre ML-Aufgaben auf einfache und föderierte Weise über eine einzige Systemschnittstelle bereitzustellen.
Es gibt jedoch immer noch mehrere offene Probleme, die mit diesen Lösungen nicht angegangen wurden, wie z. B. die Wahrung des Datenschutzes, das Debuggen von Modellen, die Verkürzung der Trainingszeiten an der Uhr und die Reduzierung der Größe des trainierten Modells. Alle sind gleich wichtig. Unter all diesen offenen Problemen gibt es eines von entscheidender Bedeutung: die Unterstützung durchgängiger Pipelines.
Derzeit müssen Benutzer über gute Kenntnisse mehrerer Big-Data-Systeme verfügen, um ihre durchgängigen Pipelines erstellen zu können. Sie müssen über angemessene technische Kenntnisse verfügen, angefangen bei den Techniken der Datenaufbereitung bis hin zu ML-Algorithmen. Darüber hinaus müssen die Benutzer über gute Programmierkenntnisse verfügen, um alle Teile (Systeme) zu einer durchgängigen Pipeline zusammenzusetzen. Und Federated Learning verschärft das Problem.
Wie löst Blossom Sky diese Probleme?
Wir haben Blossom Sky gebaut, ein föderierte KI- und Datenanalyseplattform, um Benutzern beim Aufbau ihrer durchgängigen föderierten Pipelines zu helfen. Blossom deckt das gesamte Analysespektrum in durchgängigen Pipelines ab und führt sie auf föderierte Weise aus. Insbesondere Blossom ermöglicht es Benutzern, sich ausschließlich auf die Logik ihrer Anwendungen zu konzentrieren, anstatt sich Gedanken über System-, Ausführungs- und Bereitstellungsdetails machen zu müssen.
Insgesamt bietet Blossom zwei einfache Benutzeroberflächen, mit denen Benutzer ihre Pipelines entwickeln können: Python (FedPy) für Datenwissenschaftler und ein grafisches Dashboard (Fedux) für Benutzer im Allgemeinen.
Blossom bietet Benutzern die Möglichkeit, ihre föderierten Datenanalysen auf einfache Weise für eine schnelle Ausführung zu entwickeln.
Genauer gesagt spezifizieren Benutzer ihre Pipelines mithilfe einer dieser beiden Schnittstellen. Blossom wiederum führt die erstellten Pipelines auf föderierte Weise aus und verwendet dabei jede Datenverarbeitungsplattform, die dem Benutzer zur Verfügung steht, sei es in einer beliebigen Cloud- oder Hybridkonstellation. Genauer gesagt spezifizieren Benutzer ihre Pipelines mithilfe einer dieser beiden Schnittstellen. Blossom wiederum führt die erstellten Pipelines auf föderierte Weise aus und verwendet dabei jede Datenverarbeitungsplattform, die dem Benutzer zur Verfügung steht, sei es in einer beliebigen Cloud- oder Hybridkonstellation.
Das obige Beispiel zeigt die einfache WordCount-Anwendung in Wayang. Die Intelligenz von Blossom Sky, die Wayang als Kern verwendet, ermöglicht es dem Benutzer, sich auf die Datenaufgabe zu konzentrieren und nicht auf die technische Entscheidung, auf welcher Datenverarbeitungsplattform jeder einzelne Schritt ausgeführt werden soll (in unserem Fall Java Streams oder Spark). Blossom entscheidet auf der Grundlage der Eingabedatensätze und der Eigenschaften der Verarbeitungsplattform (wie der Größe des Eingabedatensatzes und der Größe des Spark-Clusters) über die tatsächliche Ausführung. Dies kann über einen KI-gestützten plattformübergreifenden Optimierer und Executor geschehen.
Blossom Sky ist ein KI-gestützter Datenverarbeitungs- und Abfrageoptimierer
Im Kern von Blossom Sky verwenden wir Apache Wayang [10], das erste plattformübergreifende Datenverarbeitungssystem. Blossom nutzt und stattet Apache Wayang mit KI aus, um heterogene (föderierte) Datenpipelines zu vereinheitlichen und zu optimieren. Darüber hinaus ist das System in der Lage, den richtigen Cloud-Anbieter und die richtige Datenverarbeitungsplattform auszuwählen, um die resultierenden föderierten Datenpipelines auszuführen. Dadurch können Benutzer allgemeine Datenanalysen und KI auf jeder Datenverarbeitungsplattform nahtlos zusammen ausführen.
Der Optimierer von Blossom Sky bietet hauptsächlich eine Zwischendarstellung zwischen Anwendungen und Verarbeitungsplattformen, was es ihm ermöglicht, die Pipelines der Benutzer mithilfe mehrerer Verarbeitungsplattformen flexibel zusammenzustellen. Neben der Übersetzung der Benutzer-Pipelines auf die zugrunde liegenden Verarbeitungsplattformen entscheidet der Optimierer auch darüber, wie eine Pipeline am besten ausgeführt werden kann, sodass die Laufzeit verbessert wird, sowie darüber, wie Daten von einer Verarbeitungsplattform (oder einem Cloud-Anbieter) auf eine andere verschoben werden.
Der plattformübergreifende Executor von Blossom Sky
Blossom Sky verfügt außerdem über einen Cloud-nativen plattformübergreifenden Executor, mit dem Benutzer ihre föderierten Datenanalysen auf jedem verfügbaren Cloud-Anbieter und jeder verfügbaren Datenverarbeitungsplattform bereitstellen können. Sie können ihren bevorzugten Cloud-Anbieter und ihre bevorzugte Datenverarbeitungsplattform wählen oder Blossom anhand ihres Zeit- und Geldbudgets den besten Cloud-Anbieter und die beste Datenverarbeitungsplattform auswählen lassen. In beiden Fällen stellt Blossom die föderierten Pipelines der Benutzer in ihrem Namen bereit und führt sie aus.
Noch wichtiger ist, dass sich der Testamentsvollstrecker um alle Datenübertragungen kümmert, die zwischen Cloud-Anbietern und Datenverarbeitungsplattformen stattfinden müssen. Während der Optimierer entscheidet, welche Daten verschoben werden müssen, sorgt der Executor für die effiziente Übertragung der Daten zwischen verschiedenen Anbietern und Datenverarbeitungsplattformen.
Fazit
Dank seines Designs, Optimierers und Executors kann Blossom von Anfang an ein echtes föderiertes Data Lakehouse-Analytics-Framework bereitstellen:
- Heterogene Datenquellen Blossom verarbeitet Daten aus (oder über) mehreren Datenquellen auf nahtlose Weise.
- Multi-Plattform- und Hybrid-Cloud-Ausführung Blossom stellt automatisch jeden Unterabschnitt einer Pipeline nahtlos für den relevantesten Cloud-Anbieter und die wichtigste Verarbeitungsplattform bereit, um die Kosten zu senken und die Leistung zu verbessern.
- Federated Machine Learning und AI Blossom verfügen über ein eigenes Framework (einschließlich eines Parameterservers), um Pipelines auf föderierte Weise auszuführen.
- Benutzerfreundlichkeit Blossom ermöglicht es Benutzern, sich auf die Logik ihrer Anwendungen zu konzentrieren, indem sie sich darum kümmern, wie ihre Pipelines optimiert, bereitgestellt und ausgeführt werden.
Referenzen
[1] Alon Y. Halevy, Peter Norvig, Fernando Pereira: Die unangemessene Effektivität von Daten. IEEE Intel. System 24 (2): 8-12 (2009).
[2] Diego Peteiro-Barral, Bertha Guijarro-Berdiñas: Eine Übersicht über Methoden für verteiltes maschinelles Lernen. Prog. Künstler. Intell. 2 (1): 1-11 (2013).
[3] Brendan McMahan, Daniel Ramage: Föderiertes Lernen: Kollaboratives maschinelles Lernen ohne zentralisierte Trainingsdaten. KI-Blog von Google. 6. April 2017.
[4] Dennis Heimbigner, Dennis McLeod: Eine föderierte Architektur für das Informationsmanagement. ACM Trans. Inf. System 3 (3): 253-278 (1985).
[5] Allgemeine Datenschutzverordnung (DSGVO): https://gdpr-info.eu/
[6] California Consumer Privacy Act (CCPA): https://oag.ca.gov/privacy/ccpa
[7] TensorFlow Föderiert: https://www.tensorflow.org/federated
[8] Blume: https://flower.dev/
[9] OpenFL: https://www.openfl.org/
[10] Apache Art: https://wayang.apache.org/
Über Scalytics
Apache Wayang: Das führende Java-basierte Federated Learning-Framework
Scalytics nutzt Apache Wayang als Basis, und wir sind stolz darauf, dieses Projekt zu fördern. Sie können das öffentliches GitHub-Repository hier einsehen. Wenn Ihnen unsere Software gefällt, zeigen Sie Ihre Wertschätzung und Unterstützung – ein Stern ⭐ würde uns viel bedeuten!
Wenn Sie professionelle Unterstützung von unserem Team von branchenführenden Experten benötigen, können Sie sich jederzeit an uns über Slack oder E-Mail wenden.