Sie haben einen Optimierungsprozess, bei dem jeder Versuch viel Zeit oder Geld kostet. Vielleicht geht es um Machine-Learning-Training (ML), bei dem ein einzelner Lauf Stunden dauert und zweistellige Dollarbeträge verschlingt. Oder um A/B-Tests, bei denen jede Iteration einen Tag in Anspruch nimmt und potenziell Tausende Dollar an entgangenem Umsatz bedeutet. Oder um Supply-Chain-Management in einer Fabrik, wo die täglichen Inputs für minimale Kosten und maximalen Output zu wählen ein Glücksspiel ist: Eine Fehleinschätzung kostet einen Tag und viel Geld.
Fällt ein Versuch nicht gut genug aus, probieren Sie es erneut. Doch raten wollen Sie bei den Parametern nicht – schließlich ist jeder Versuch teuer. Stattdessen wollen Sie in möglichst wenigen Durchläufen zu den bestmöglichen Parametern gelangen.
Diese dreiteilige Blogserie zeigt einen neuen Ansatz, mit dem sich die Kosten für ML-Training und andere Optimierungsprozesse senken lassen: den Black-Box-Optimierungs-Workflow mit Google Vertex AI Vizier.
Wichtig zu wissen: Vizier ist nicht ausschließlich für Machine Learning gedacht. Vizier weiß nicht einmal, dass Sie ML betreiben; an den Versuchen selbst ist es überhaupt nicht beteiligt. Vizier kennt nur das, was Sie ihm mitteilen: die Parameter und die Zielmessung (also wie gut die Versuche ausgefallen sind). Sie sind die Expertin oder der Experte und führen das ML-Training oder den jeweiligen Prozess durch, während Vizier von außen als Berater agiert und Vorschläge für die nächste Runde liefert.
Beim ML-Training nutzen Sie Vertex AI Vizier, um die bestmöglichen Hyperparameter zu finden – also jene, die den Trainingslauf insgesamt konfigurieren, etwa Regularisierung, Learning Rates oder Anzahl bzw. Größe der Layer. Auch der Modelltyp für den nächsten Trainingslauf ist selbst ein Parameter, den es zu erkunden gilt: zum Beispiel die Frage, ob ein binäres Klassifikationsproblem mit Naive Bayes, Logistic Regression oder XGBoost gelöst werden soll.
Da Vertex AI Vizier das Training nur von außen begleitet, lässt es sich mit jeder Art von ML kombinieren. Sie können das Google Vertex SDK einsetzen, um Custom Training Jobs zu starten, oder Ihr eigenes TensorFlow- bzw. PyTorch-Modell in einem Custom Container trainieren.
So setzen Sie Vizier ein
Möglicherweise kennen Sie bereits Bibliotheken für Hyperparameter-Tuning wie die von Scikit oder Hyperopt. Sie führen ML-Versuche in Schleife durch, justieren jedes Mal die Hyperparameter und versuchen, sich an das beste Ergebnis heranzutasten.
Ein Hyperparameter-Tuning-Service wie der von Google oder AWS vereinfacht den Prozess erheblich, da das Aufsetzen der Bibliotheken und der Compute-Infrastruktur entfällt.
Vertex AI Vizier geht mit dem Black-Box-Verfahren, das ich in dieser Serie beschreibe, noch einen Schritt weiter. Der entscheidende Unterschied liegt im Nutzungsmuster: Mit Vizier führen Sie interaktive Versuche durch und holen sich in jeder Runde Rat bei Vertex AI Vizier. Der Dienst antwortet mit Vorschlägen – ausschließlich auf Basis der Ergebnisse vorheriger Versuche.
Der Ablauf
So sieht der Workflow mit Vertex AI Vizier auf hoher Ebene aus:
- Legen Sie zunächst eine Vertex AI Vizier Study an, in der mehrere Trials durchgeführt werden. Die Study wird über eine Study-Konfiguration definiert, die die Ziele (Messwerte/Metriken) und Eingabewerte (Hyperparameter) Ihrer Experimente – der Trials – festlegt.
- Führen Sie einen Trial durch: Trainieren Sie ein Machine-Learning-Modell oder lassen Sie einen anderen zu optimierenden Prozess laufen.
- Rufen Sie Vertex AI Vizier auf und übermitteln Sie die Parameter zusammen mit der Optimierungsmessung aus diesem Trial. Beim Training eines ML-Modells wäre das beispielsweise Cross-Entropy-Loss oder Balanced Accuracy auf Ihren Validierungsdaten, nach dem üblichen Train-/Validation-/Test-Split.
- Die Antwort auf diese Anfrage sind Vorschläge für den nächsten Trial. Sie umfasst einen oder mehrere Parametersätze, mit denen Sie einen kommenden Trial definieren können.
- Führen Sie den nächsten Trial durch, in der Regel mit den vorgeschlagenen Parametern. Es sind aber nur Vorschläge – Sie können auch eigene Parameter wählen. So oder so lernt Vertex AI Vizier weiter.
- Machen Sie mit dem nächsten Trial weiter.
- Beenden Sie die Iterationen, sobald genügend Trials durchgeführt wurden (Details dazu folgen).
Flussdiagramm der Interaktion mit Vizier
Vertex AI Vizier ist Software-as-a-Service. Sie rufen einfach einen REST-Dienst über eine komfortable Python-API auf, auf die ich später noch eingehe.
So sieht ein API-Aufruf aus
Hier ein Beispiel für Eingabe und Ausgabe. Es ist etwas vereinfacht, vermittelt aber das Wesentliche des REST-Aufrufs. (In der Praxis verwenden Sie einen Python-Client, den wir später besprechen.)
Eingabe:
{
"Params": {"flour": 0.21, "recipe": "Pam's chocolate chip", "eggs": 2 },
"rating": 8.1
}
Ausgabe:
{"flour": 0.32, "recipe": "Chocoflake", "eggs": 1}
Dieses JSON zeigt ein Beispiel zur Optimierung eines Cookie-Rezepts, das vom Forschungsteam tatsächlich durchgeführt wurde: Cookies zu backen ist so teuer und zeitaufwendig, dass man es nicht hundertfach wiederholen möchte.
Zu den Parametern gehören die Mengen pro Zutat: Wir haben einen Float- und einen Integer-Parameter. Ein weiterer Parameter ist die Wahl des Rezepts – ein kategorialer Parameter (mit wenigen Optionen, die untereinander keine Reihenfolge haben).
Die Eingabe enthält außerdem die Erfolgsmessung, also die Bewertung der Cookies durch die Verkostenden.
Die Ausgabe – die Antwort des REST-Aufrufs – ist ein Vorschlag (in der Praxis können es auch mehrere sein) für die Parameter der nächsten Backrunde.
Trials innerhalb einer Study durchführen
Sie können die Trials iterativ durchführen oder auch mehrere parallel laufen lassen. Sie holen sich von Vertex AI Vizier mehrere Vorschläge, etwa fünf, und starten anschließend fünf Trials gleichzeitig. Parallelität bringt einen Trade-off mit sich: Einerseits beschleunigt sie den Prozess, andererseits hat das iterative Vorgehen den Vorteil, dass Vizier seine Empfehlungen für jeden Trial auf Basis aller vorherigen verfeinern kann.
Die Anzahl der Trials lässt sich vorab festlegen, beispielsweise auf zwanzig. Empfohlen wird die zehnfache Anzahl der Parameter. Alternativ kann Vizier den richtigen Zeitpunkt zum Stoppen vorschlagen – je nachdem, ob die Ergebnisse konvergieren. Dieser sparsame Umgang mit Trials ist entscheidend, denn jeder einzelne kostet Geld.
Wie es weitergeht
Im Februar 2023 wurde Vizier zusätzlich als Open-Source-Variante veröffentlicht. Ich empfehle Ihnen, einen Blick in die Implementierung zu werfen. Allerdings enthält die Open-Source-Version nicht den zentralen Bayesian-Optimization-Algorithmus, während der Vertex AI Vizier Service mit Benutzerfreundlichkeit, Skalierbarkeit und Robustheit punktet. In dieser Blogserie konzentrieren wir uns daher ausschließlich auf Vertex AI Vizier.
In diesem ersten Beitrag haben wir zusammengefasst, wie sich Vertex AI Vizier einsetzen lässt. Der zweite Beitrag erklärt die Vorteile dieses "Black Box"-Ansatzes: Da die Verantwortung für die rechenintensiven Optimierungsprozesse bei Ihnen bleibt, können Sie sich auf das konzentrieren, was Sie am besten können – etwa Ihr ML-Training oder andere aufwendige Prozesse zu strukturieren. Vertex AI Vizier wiederum tut, was es am besten kann: Sie mit möglichst wenigen Trials zum bestmöglichen Ergebnis führen.