Modell mit End-to-End-AutoML trainieren

Auf dieser Seite erfahren Sie, wie Sie ein Klassifizierungs- oder Regressionsmodell aus einem tabellarischen Dataset mit tabellarischem Workflow für End-to-End-AutoML trainieren.

Hinweis

Bevor Sie ein Modell trainieren können, müssen Sie die folgenden Schritte ausführen:

Wenn Sie beim Ausführen eines tabellarischen Workflows für End-to-End AutoML einen Fehler im Zusammenhang mit Kontingenten erhalten, müssen Sie möglicherweise ein höheres Kontingent anfordern. Weitere Informationen finden Sie unter Kontingente für tabellarische Workflows verwalten.

URI des vorherigen Hyperparameter-Feinabstimmungsergebnisses abrufen

Wenn Sie bereits einen End-to-End-AutoML-Workflow ausgeführt haben, können Sie das Ergebnis der Hyperparameter-Abstimmung aus einer vorherigen Ausführung verwenden, um Trainingszeit und Ressourcen zu sparen. Sie können das Ergebnis der vorherigen Hyperparameter-Abstimmung über die Google Cloud Console abrufen oder es programmatisch mit der API laden.

Google Cloud Console

Führen Sie die folgenden Schritte aus, um den URI des Ergebnisses der Hyperparameter-Abstimmung mit der Google Cloud Console zu finden:

  1. Rufen Sie in der Google Cloud Console im Abschnitt „Vertex AI“ die Seite Pipelines auf.

    Zur Seite „Pipelines“

  2. Wählen Sie den Tab Ausführungen aus.

  3. Wählen Sie die Pipelineausführung aus, die Sie verwenden möchten.

  4. Wählen Sie Artefakte maximieren aus.

  5. Klicken Sie auf die Komponente exit-handler-1.

  6. Klicken Sie auf die Komponente stage_1_tuning_result_artifact_uri_empty.

  7. Suchen Sie die Komponente automl-tabular-cv-trainer-2.

  8. Klicken Sie auf das zugehörige Artefakt tuning_result_output.

  9. Wählen Sie den Tab Knoteninformationen aus.

  10. Kopieren Sie den URI zur Verwendung im Schritt Modell trainieren.

Suchergebnis für Architektur

API: Python

Der folgende Beispielcode zeigt, wie Sie das Ergebnis der Hyperparameter-Abstimmung mit der API laden. Die Variable job bezieht sich auf die vorherige Ausführung der Modelltrainings-Pipeline.


def get_task_detail(
  task_details: List[Dict[str, Any]], task_name: str
) -> List[Dict[str, Any]]:
  for task_detail in task_details:
      if task_detail.task_name == task_name:
          return task_detail

pipeline_task_details = job.gca_resource.job_detail.task_details

stage_1_tuner_task = get_task_detail(
    pipeline_task_details, "automl-tabular-stage-1-tuner"
)
stage_1_tuning_result_artifact_uri = (
    stage_1_tuner_task.outputs["tuning_result_output"].artifacts[0].uri
)

Modell trainieren

Google Cloud Console

Führen Sie die folgenden Schritte aus, um ein Modell mithilfe der Google Cloud Console zu trainieren:

  1. Rufen Sie in der Google Cloud Console im Abschnitt „Vertex AI“ die Seite Pipelines auf.

    Zur Seite „Pipelines“

  2. Wählen Sie den Tab Vorlagengalerie aus.

  3. Klicken Sie auf der Karte AutoML für Tabellarische Klassifizierung / Regression auf Ausführung erstellen.

  4. Konfigurieren Sie auf der Seite Ausführungsdetails Folgendes:

    1. Geben Sie einen Namen für die Pipelineausführung ein.
    2. Optional: Wenn Sie das Vertex AI Pipelines-Dienstkonto oder das Dataflow-Worker-Dienstkonto festlegen möchten, öffnen Sie die Erweiterten Optionen: Weitere Informationen zu Dienstkonten.
    3. Klicken Sie auf Weiter.

  5. Konfigurieren Sie auf der Seite Laufzeitkonfiguration Folgendes:

    1. Geben Sie einen Cloud Storage-Bucket oder einen Ordner innerhalb des Buckets ein, der als Stammverzeichnis für die Ausgabe verwendet werden soll. Dieses Verzeichnis wird zum Speichern von Zwischendateien verwendet, wie z. B. dem materialisierten Dataset und dem Modell. Denken Sie daran, das Verzeichnis nach Abschluss des Trainings zu bereinigen und das Modell und andere wichtige Artefakte in einen anderen Cloud Storage-Bucket zu kopieren. Alternativ können Sie eine Gültigkeitsdauer (TTL) für den Cloud Storage-Bucket festlegen.

      Die Buckets für Ihr Projekt sind im Bereich „Cloud Storage“ der Google Cloud Console aufgeführt.

      Rufen Sie die Seite Buckets auf.

    2. Klicken Sie auf Weiter.

  6. Konfigurieren Sie auf der Seite Trainingsmethode Folgendes:

    1. Wählen Sie den Namen des Datasets aus, das Sie zum Trainieren Ihres Modells verwenden möchten.
    2. Wählen Sie die Zielspalte aus. Die Zielspalte ist der Wert, den das Modell vorhersagt. Weitere Informationen zu den Anforderungen an Zielspalten.
    3. Geben Sie den Anzeigenamen für das neue Modell ein.
    4. Optional: Wenn Sie festlegen möchten, wie die Daten auf Trainings-, Test- und Validierungs-Datasets aufgeteilt werden, öffnen Sie die Erweiterten Optionen. Sie können zwischen den folgenden Datenaufteilungsoptionen wählen:
      • Zufällig (Standard): Vertex AI wählt nach dem Zufallsprinzip die Zeilen aus, die mit den einzelnen Datasets verknüpft sind. Standardmäßig wählt Vertex AI 80 % Ihrer Datenzeilen für das Trainings-Dataset, 10 % für das Validierungs-Dataset und 10 % für das Test-Dataset aus. Legen Sie den Prozentsatz der Datenzeilen fest, die mit jedem Dataset verknüpft sein sollen.
      • Manuell: Vertex AI wählt Datenzeilen für jedes Dataset anhand der Werte in einer Spalte für die Datenaufteilung aus. Geben Sie den Namen der Spalte für die Datenaufteilung an.
      • Chronologisch: Vertex AI teilt Daten basierend auf dem Zeitstempel in einer Zeitspalte auf. Geben Sie den Namen der Zeitspalte an. Sie können auch den Prozentsatz der Datenzeilen festlegen, die dem Trainings-, Validierungs- und Test-Dataset zugeordnet werden sollen.
      • Geschichtet: Vertex AI wählt nach dem Zufallsprinzip die Zeilen aus, die mit jedem Dataset verknüpft sind. Die Verteilung der Zielspaltenwerte wird dabei beibehalten. Geben Sie den Namen der Zielspalte an. Sie können auch den Prozentsatz der Datenzeilen festlegen, die dem Trainings-, Validierungs- und Test-Dataset zugeordnet werden sollen.
      Weitere Informationen zur Datenaufteilung.
    5. Optional: Sie können die Pipeline auch ohne Architektursuche ausführen. Wenn Sie Architektursuche überspringen auswählen, werden Sie auf der Seite Trainingsoptionen aufgefordert, eine Reihe von Hyperparametern aus einer vorherigen Pipelineausführung anzugeben.
    6. Klicken Sie auf Weiter.

  7. Konfigurieren Sie auf der Seite Trainingsoptionen Folgendes:

    1. Optional: Klicken Sie auf Statistiken generieren. Durch das Generieren von Statistiken werden die Transformation-Drop-down-Menüs ausgefüllt.
    2. Prüfen Sie die Spaltenliste und schließen Sie Spalten aus dem Training aus, die nicht zum Trainieren des Modells verwendet werden sollen.
    3. Prüfen Sie die für Ihre eingeschlossenen Features ausgewählten Transformationen und ob ungültige Daten zulässig sind, und nehmen Sie ggf. Aktualisierungen vor. Weitere Informationen zu Transformationen und ungültigen Daten.
    4. Wenn Sie die Architektursuche auf der Seite Trainingsmethode übersprungen haben, geben Sie den Pfad zum Ergebnis der Hyperparameter-Feinabstimmung aus einer vorherigen Pipelineausführung an.
    5. Optional: Wenn Sie die Gewichtungsspalte angeben möchten, öffnen Sie die Erweiterten Optionen und treffen Sie Ihre Auswahl. Weitere Informationen zu Gewichtungsspalten.
    6. Optional: Wenn Sie das Optimierungsziel von der Standardeinstellung abweichend ändern möchten, öffnen Sie die Erweiterten Optionen und legen Sie Ihre Auswahl fest. Weitere Informationen zu Optimierungszielen.
    7. Optional: Wenn Sie die Architektursuche auf der Seite Trainingsmethode durchführen möchten, können Sie die Anzahl der parallelen Tests angeben. Öffnen Sie die Erweiterten Optionen und geben Sie den Wert ein.
    8. Optional: Sie können feste Werte für eine Teilmenge der Hyperparameter angeben. Vertex AI sucht nach den optimalen Werten der verbleibenden nicht festen Hyperparametern. Diese Option ist eine gute Wahl, wenn Sie eine starke Präferenz für den Modelltyp haben. Sie können als Modelltyp neuronale Netzwerke oder „Boosted Tree“ auswählen. Öffnen Sie die Erweiterten Optionen und geben Sie eine Testspezifikation im JSON-Format an.

      Wenn Sie den Modelltyp beispielsweise auf „Neural Networks“ (NN) festlegen möchten, geben Sie Folgendes ein:

      [
        {
          "parameter_id": "model_type",
          "categorical_value_spec": {
            "values": ["nn"]
          }
        }
      ]
      

    9. Klicken Sie auf Weiter.

  8. Konfigurieren Sie auf der Seite Computing und Preise Folgendes:

    1. Geben Sie an, wie viele Stunden das Modell maximal trainiert werden soll. Weitere Informationen zu Preisen.
    2. Optional: Im Bereich Compute-Einstellungen können Sie die Maschinentypen und die Anzahl der Maschinen für jede Phase des Workflows konfigurieren. Diese Option ist eine gute Wahl, wenn Sie ein großes Dataset haben und die Hardware der Maschine entsprechend optimieren möchten.

  9. Klicken Sie auf Senden.

API: Python

Der folgende Beispielcode zeigt, wie eine Modelltrainings-Pipeline ausgeführt werden kann:

job = aiplatform.PipelineJob(
    ...
    template_path=template_path,
    parameter_values=parameter_values,
    ...
)
job.run(service_account=SERVICE_ACCOUNT)

Mit dem optionalen Parameter service_account in job.run() können Sie das Vertex AI Pipelines-Dienstkonto auf ein Konto Ihrer Wahl festlegen.

Die Pipeline und die Parameterwerte werden durch die folgende Funktion definiert. Die Trainingsdaten können entweder eine CSV-Datei in Cloud Storage oder eine Tabelle in BigQuery sein.

template_path, parameter_values = automl_tabular_utils.get_automl_tabular_pipeline_and_parameters(...)

Im Folgenden finden Sie einen Teil der get_automl_tabular_pipeline_and_parameters-Parameter:

Parametername Typ Definition
data_source_csv_filenames String Ein URI für eine in Cloud Storage gespeicherte CSV-Datei.
data_source_bigquery_table_path String Ein URI für eine BigQuery-Tabelle.
dataflow_service_account String (Optional) Benutzerdefiniertes Dienstkonto zum Ausführen von Dataflow-Jobs. Der Dataflow-Job kann so konfiguriert werden, dass private IP-Adressen und ein bestimmtes VPC-Subnetz verwendet werden. Dieser Parameter dient als Überschreibung für das Standarddienstkonto des Dataflow-Workers.
prediction_type String Wählen Sie classification aus, um ein Klassifizierungsmodell zu trainieren, oder regression, um ein Regressionsmodell zu trainieren.
optimization_objective String Wenn Sie ein binäres Klassifizierungsmodell trainieren, ist das Standardziel die AUC ROC. Wenn Sie ein Regressionsmodell trainieren, ist RMSE das Standardziel. Wenn Sie ein anderes Optimierungsziel für Ihr Modell benötigen, wählen Sie eine der Optionen unter Optimierungsziele für Klassifizierungs- oder Regressionsmodelle aus.
enable_probabilistic_inference Boolesch Wenn Sie ein Regressionsmodell trainieren und diesen Wert auf true setzen, modelliert Vertex AI die Wahrscheinlichkeitsverteilung der Vorhersage. Die probabilistische Inferenz kann die Modellqualität verbessern, indem ungenaue Daten verarbeitet und Unsicherheiten quantifiziert werden. Wenn quantiles angegeben sind, gibt Vertex AI auch die Quantile der Wahrscheinlichkeitsverteilung zurück.
quantiles List[float] Quantile für die probabilistische Inferenz. Ein Quantil gibt die Wahrscheinlichkeit an, dass ein Ziel unter einem bestimmten Wert liegt. Geben Sie eine Liste mit bis zu fünf eindeutigen Zahlen zwischen 0 und 1 an.

Optionen zur Workflow-Anpassung

Sie können den End-to-End-AutoML-Workflow anpassen, indem Sie Argumentwerte definieren, die während der Pipelinedefinition übergeben werden. Sie können Ihren Workflow so anpassen:

  • Suchbereich überschreiben
  • Hardware konfigurieren
  • Modell verkleinern
  • Architektursuche überspringen

Suchbereich überschreiben

Mit dem folgenden get_automl_tabular_pipeline_and_parameters-Parameter können Sie feste Werte für eine Teilmenge der Hyperparameter angeben. Vertex AI sucht nach den optimalen Werten der verbleibenden nicht festen Hyperparametern. Verwenden Sie diesen Parameter, wenn Sie zwischen neuronalen Netzwerken und „Boosted Trees“ für Ihren Modelltyp wählen möchten.

Parametername Typ Definition
study_spec_parameters_override List[Dict[String, Any]] (Optional) Benutzerdefinierte Teilmenge von Hyperparametern. Mit diesem Parameter wird die automl-tabular-stage-1-tuner-Komponente der Pipeline konfiguriert.

Der folgende Code zeigt, wie Sie den Modelltyp auf neuronale Netzwerke (NN) festlegen:

study_spec_parameters_override = [
  {
    "parameter_id": "model_type",
    "categorical_value_spec": {
      "values": ["nn"] # The default value is ["nn", "boosted_trees"], this reduces the search space
    }
  }
]

Hardware konfigurieren

Mit den folgenden get_automl_tabular_pipeline_and_parameters-Parametern können Sie die Maschinentypen und die Anzahl der Maschinen für das Training konfigurieren. Diese Option ist eine gute Wahl, wenn Sie ein großes Dataset haben und die Hardware der Maschine entsprechend optimieren möchten.

Parametername Typ Definition
stage_1_tuner_worker_pool_specs_override Dict[String, Any] (Optional) Benutzerdefinierte Konfiguration der Maschinentypen und der Anzahl der Maschinen für das Training. Mit diesem Parameter wird die automl-tabular-stage-1-tuner-Komponente der Pipeline konfiguriert.
cv_trainer_worker_pool_specs_override Dict[String, Any] (Optional) Benutzerdefinierte Konfiguration der Maschinentypen und der Anzahl der Maschinen für das Training. Mit diesem Parameter wird die automl-tabular-stage-1-tuner-Komponente der Pipeline konfiguriert.

Der folgende Code zeigt, wie Sie den Maschinentyp n1-standard-8 für den TensorFlow-Hauptknoten und den Maschinentyp n1-standard-4 für den TensorFlow-Bewertungsknoten festlegen:

worker_pool_specs_override = [
  {"machine_spec": {"machine_type": "n1-standard-8"}}, # override for TF chief node
  {},  # override for TF worker node, since it's not used, leave it empty
  {},  # override for TF ps node, since it's not used, leave it empty
  {
    "machine_spec": {
        "machine_type": "n1-standard-4" # override for TF evaluator node
    }
  }
]

Modell verkleinern

Mit dem folgenden get_automl_tabular_pipeline_and_parameters-Parameter können Sie eine kleinere Version des Ensemble-Modells erstellen. Ein kleineres Modell reduziert die Latenz und die Kosten für Vorhersagen.

Parametername Typ Definition
run_distillation Boolesch Wenn TRUE, wird eine kleinere Version des Ensemble-Modells erstellt.

Architektursuche überspringen

Mit dem folgenden get_automl_tabular_pipeline_and_parameters-parameter können Sie die Pipeline ohne die Architektursuche ausführen und stattdessen eine Reihe von Hyperparametern aus einer vorherigen Pipelineausführung bereitstellen.

Parametername Typ Definition
stage_1_tuning_result_artifact_uri String (Optional) URI des Ergebnisses der Hyperparameter-Abstimmung aus einer vorherigen Pipelineausführung.

Optimierungsziele für Klassifizierungs- oder Regressionsmodelle

Wenn Sie ein Modell trainieren, wählt Vertex AI ein Standardoptimierungsziel basierend auf Ihrem Modelltyp und dem für die Zielspalte verwendeten Datentyp aus.

Klassifikationsmodelle eignen sich am besten für:
Optimierungsziel API-Wert Zweck
AUC ROC maximize-au-roc Den Bereich unter der Grenzwertoptimierungskurve (Receiver Operating Curve, ROC) maximieren. Sie können zwischen Klassen unterscheiden. Standardwert für die binäre Klassifizierung.
Logarithmischer Verlust minimize-log-loss Möglichst genaue Vorhersagewahrscheinlichkeiten erzielen. Nur unterstütztes Ziel für die Klassifizierung mehrerer Klassen.
AUC PR maximize-au-prc Den Bereich unter der Genauigkeits-/Trefferquotenkurve maximieren. Optimiert die Ergebnisse für Vorhersagen für die weniger gängige Klasse.
Präzision von Trefferquote maximize-precision-at-recall Optimieren Sie die Präzision bei einem bestimmten Trefferquotenwert.
Trefferquote von Präzision maximize-recall-at-precision Optimieren Sie die Trefferquote bei einem bestimmten Präzisionswert.
Regressionsmodelle eignen sich am besten für:
Optimierungsziel API-Wert Zweck
RMSE minimize-rmse Wurzel des mittleren quadratischen Fehlers (RMSE) minimieren. Mehr Extremwerte genau erfassen. Standardwert.
MAE minimize-mae Mittleren absoluten Fehler (MAE) minimieren. Extremwerte als Ausreißer mit geringerem Einfluss auf das Modell ansehen.
RMSLE minimize-rmsle Wurzel des mittleren quadratischen Logfehlers (RMSLE) minimieren. Abzüge für Fehler nach der relativen Größe statt des absoluten Werts vornehmen. Dies ist hilfreich, wenn sowohl die vorhergesagten als auch die tatsächlichen Werte sehr groß werden können.

Nächste Schritte