Machine Learning Frameworks Auto-sklearn und FLAML im Vergleich

Von Thomas Joos 6 min Lesedauer

Anbieter zum Thema

Automated Machine Learning (AutoML) verspricht, den Aufwand für Modellwahl und Hyperparameter-Tuning drastisch zu reduzieren. Mit AutoML-Frameworks können Data Scientists und Entwickler schneller zu leistungsfähigen Modellen gelangen, ohne jeden Schritt manuell optimieren zu müssen. In diesem Artikel schauen wir uns Auto-sklearn und FLAML genauer an.

Microsoft Research hat FLAML initiert und auch in Azure zur Verfügung gestellt.(Bild:  Microsoft)
Microsoft Research hat FLAML initiert und auch in Azure zur Verfügung gestellt.
(Bild: Microsoft)

Auto-sklearn ist ein AutoML-Framework, das auf der weitverbreiteten Scikit-learn-Bibliothek aufbaut. Das Framework ist als Drop-in-Ersatz für einen Scikit-learn-Estimator konzipiert, das heißt, man kann einen AutoSklearnClassifier oder AutoSklearnRegressor ähnlich wie einen normalen Klassifikator instanziieren, trainieren und verwenden. Intern verfolgt Auto-sklearn den CASH-Ansatz (Combined Algorithm Selection and Hyperparameter optimization). Das bedeutet, es sucht automatisch sowohl den besten Lernalgorithmus als auch die besten Hyperparameter für einen gegebenen Datensatz.

Auto-sklearn nutzt verschiedene Lernverfahren

Auto-sklearn bringt standardmäßig eine breite Palette von Lernverfahren und Vorverarbeitungsschritten mit. Darunter befinden sich Ensemble-Methoden wie AdaBoost und Random Forest, lineare Modelle (LDA, QDA, logistische Regression), SVM (linear und mit Kernel), k-Nearest-Neighbors, Naive Bayes (Bernoulli, Gaussian, Multinomial) und Gradient Boosting. Für Regression stehen entsprechende Gegenstücke zur Verfügung.

Auto-sklearn baut aus diesen Bausteinen ML-Pipelines auf, bestehend aus optionaler Datenvorverarbeitung und Feature-Transformation, gefolgt vom eigentlichen Lernalgorithmus. Die Kombination aus Preprocessing-Techniken und Algorithmen wird als konfigurierbare Pipeline betrachtet, und Auto-sklearn versucht, die optimale Pipeline-Konfiguration für den Datensatz zu finden.

Wichtig ist, dass Auto-sklearn diese Vorverarbeitungsschritte automatisch durchführt, sodass die Eingabedaten am Ende in einer Form vorliegen, die alle Scikit-learn-Algorithmen verarbeiten können. Falls gewünscht, lässt sich die Vorverarbeitung aber auch abschalten oder gezielt einschränken. Für die eigentliche Suche im Hyperraum der Pipeline-Konfigurationen setzt Auto-sklearn auf einen Bayesopt-Ansatz mit sequenzieller Modelloptimierung. Genauer gesagt, kommt im Hintergrund das Tool SMAC (Sequential Model-based Algorithm Configuration) zum Einsatz. SMAC baut ein Surrogat-Modell auf, das die Leistung in Abhängigkeit von Hyperparametern vorhersagt, und wählt basierend darauf vielversprechende neue Konfigurationen aus. Auto-sklearn verbessert diesen Prozess durch Meta-Learning. Beim Start versucht es mittels Datensatz-Metaeigenschaften, ähnliche Datensätze in seinem Erfahrungsschatz zu finden und leitet daraus gute Startpunkte für die Optimierung ab.

In der neueren Auto-sklearn-2.0-Generation wurde die Meta-Learning-Strategie weiter vereinfacht. Statt komplexer Metafeatures wird ein statisches Portfolio an Top-Pipelines genutzt, das verschiedene typische Datensatz-Szenarien abdeckt. Diese Portfolio-Pipelines dienen als initiale Kandidaten, ohne erst Ähnlichkeiten im Metafeature-Raum berechnen zu müssen.

Auto-sklearn 2.0 experimentiert intern mit verschiedenen Evaluationsstrategien gleichzeitig, zum Beispiel einfache Holdout-Schätzung sowie Cross-Validation und mit Ansätzen aus dem Multi-Fidelity-Optimierungskonzept (Successive Halving/Hyperband). Für Big Data-Szenarien (millionenfache Datenpunkte, verteilte Systeme) kann Auto-sklearn zudem im Parallel- und Distributed-Modus betrieben werden. Hierbei setzt es auf Dask als Backend, um eine parallele Ausführung über mehrere Kerne oder sogar Cluster-Knoten zu ermöglichen.

Architektur und Vorgehen von FLAML

FLAML ist in kürzester Zeit einsatzbereit.(Bild:  Microsoft)
FLAML ist in kürzester Zeit einsatzbereit.
(Bild: Microsoft)

FLAML (Fast and Lightweight AutoML) verfolgt einen etwas anderen Ansatz als Auto-sklearn, mit starkem Fokus auf Effizienz und geringem Ressourcenverbrauch. Das Framework wurde von Microsoft Research initiiert und ist ebenfalls in Python implementiert. Im Gegensatz zu Auto-sklearn, das eine breite Palette an Algorithmen ausprobiert, konzentriert sich FLAML auf einen Kern von hochperformanten Lernern und wählt Hyperparameter besonders kosteneffizient aus. FLAML kann man sich als eine Mischung aus AutoML-Tool und generischem Hyperparameter-Tuning-Tool vorstellen. Es kann sowohl komplette Modelle automatisch auswählen als auch zur reinen Parameteroptimierung eingesetzt werden

FLAML bringt standardmäßig eine Reihe bewährter Algorithmen für tabulare Daten mit, hauptsächlich aus dem Bereich der Gradient Boosting Machines und Random Forests. Im eingebauten Repertoire finden sich etwa LightGBM, XGBoost, CatBoost, Random Forest, Extra Trees sowie das Histogram Gradient Boosting von Scikit-learn. Ergänzt wird dies durch einfache Modelle wie k-NN und lineare Modelle. Für Forecasting-Aufgaben sind zudem Zeitreihen-Modelle wie ARIMA, SARIMAX, Holt-Winters und ein komplexeres Deep-Learning-Modell (Temporal Fusion Transformer) integriert.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Big Data, Analytics & AI

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Der Standardmodus bei FLAML beschränkt den Suchraum bewusst auf Modelle, die ein gutes Leistung-vs.-Kosten-Verhältnis haben. Ressourcenhungrige Verfahren (komplexes SVM mit RBF-Kernel oder ein großes neuronales Netz) sucht man hier vergebens. Stattdessen setzt FLAML auf Algorithmen, die schon mit Standardeinstellungen gut performen und durch Hyperparameter-Tuning weiter verbessert werden können. Für diese Modelle sind im Code feste Hyperparameter-Suchräume hinterlegt, die praxisbewährte Grenzen und Skalen nutzen (log-uniforme Verteilungen für Lernraten, sinnvolle Maximalwerte abhängig von der Datensatzgröße).

FLAML verfolgt einen pragmatischen Ansatz zur Modellwahl. Default ist estimator_list="auto", was bedeutet, dass FLAML, je nach Task, eine interne Liste von geeigneten Algorithmen nutzt. Bei Klassifikation/Regression auf Tabellendaten sind dies LightGBM, XGBoost oder RF. Ein bemerkenswerter Unterschied zu Auto-sklearn: FLAML erstellt standardmäßig kein Ensemble, sondern liefert das beste Einzelmodell als Resultat. Das hat Vor- und Nachteile. Das Endmodell ist leicht interpretierbar und einzusetzen. Es schöpft aber nicht die mögliche zusätzliche Genauigkeit aus, die ensemblierte Modelle bieten könnten. Allerdings bietet FLAML die Möglichkeit, optional ein Stacking-Ensemble über die gefundenen Modelle zu bauen

Im Gegensatz zu Auto-sklearn, das Dask nutzt und Worker mit je einem Kern startet, geht FLAMLs Standardvorgehen eher in Richtung Thread parallelism pro Trial plus Trial parallelism optional. Beide Tools erreichen letztlich ähnliches. Sie können auf vielen Rechnerkernen beschleunigt suchen. FLAML punktet dabei mit der bereits genannten Strategie, nicht zu viele Modelle speichern zu müssen. Dadurch bleibt der Speicher- und Festplattenverbrauch niedrig. Auto-sklearn hingegen speichert per Design die Predictions vieler Modelle auf Platte, um das Ensemble später bauen zu können, was bei langen Läufen im verteilten Setting einiges an Speicherplatz beanspruchen kann.

Auch muss man bei Auto-sklearn an ein Shared Filesystem denken, während FLAML mit Ray typischerweise die Objekte im Arbeitsspeicher verteilt (Ray’s Distributed Shared Memory). Für sehr große Daten bietet allerdings keines der beiden Tools von sich aus eine vollständige Lösung wie Out-of-Core-Learning. In solchen Fällen müsste man selbst für Vorab-Sampling oder Streaming-Solutions sorgen. FLAMLs Spark-Anbindung erlaubt es aber, datenparallel zu tunen. So könnten die Modelltrainings selbst mit Spark MLlib oder XGBoost-Spark verteilt laufen, was jedoch manueller Setups bedarf.

Damit geht FLAML über Auto-sklearn hinaus, das hauptsächlich tabulare Daten bearbeitet. Anwender können FLAML also nutzen, um Hyperparameter von Transformern für Textklassifikation zu optimieren oder um in einem Data-Science-Projekt mit zeitlich aufgelösten Daten ein Holt-Winters-Modell automatisch fitten zu lassen. Auto-sklearn liefert darüber hinaus standardmäßig ein Ensemble, FLAML ein Single Model. Das Ensemble gibt Auto-sklearn oft den letzten Leistungs-Schub, gerade wenn mehrere Modelle unterschiedliche Stärken haben.

Skalierbarkeit und Umgang mit großen Daten

In Big-Data-Szenarien stoßen klassische AutoML-Tools schnell an Grenzen. Beide hier betrachteten Bibliotheken haben jedoch Mechanismen, um mit wachsenden Datenmengen umzugehen. Durch die Einführung von iterativen Algorithmen only und Multi-Fidelity-HPO kann Auto-sklearn 2.0 auch mit größeren Daten arbeiten, ohne zu unterbrechen. Wenn man Auto-sklearn zum Beispiel zwei Stunden Zeit gibt auf einer Million Datenpunkten, wird es vermutlich initial alle einfachen Modelle mit kleinem Teil der Daten testen und nach und nach weiterverfolgen. So kommt zumindest eine vernünftige Lösung heraus, anstatt die Zeit in wenigen volle Trainings zu investieren, die dann vielleicht nicht optimal sind. Allerdings ist Auto-sklearn aufgrund seiner vielen Pipeline-Varianten und Ensemble-Bildung speicherintensiv.

Von vornherein auf schnelle Abbrüche und Kostenbegrenzung getrimmt, hat FLAML hier einen Vorteil. Es wird bei Big Data zunächst mit kleinen Subsets und sehr wenigen Bäumen/Epochen starten (dank CFO) und so in kurzer Zeit einen Eindruck gewinnen. Sollte das Zeitbudget knapp sein, liefert FLAML dann eben ein einfaches Modell, während Auto-sklearn eventuell noch gar keinen vollständigen Fit hinbekommen hätte. Beide Frameworks stehen unter BSD/MIT-Lizenzen offen zur Verfügung und sind via pip (pip install flaml) oder Conda installierbar. Sie spielen gut mit Jupyter zusammen, daher haben beide durchaus ihre passenden Einsatzszenarien.

(ID:50644222)