8. Konfigurationsreferenz
Karthikeyan Nagalingam, NetApp
Die Konfigurationsreferenz beschreibt die Laufzeitparameter, die die Datenerfassung, Datenaufbereitung, XCP Datenmobilität, das Training, Checkpointing und die Archivierung steuern. Der ONTAP NAS Bucket wird in erster Linie als Staging-Schicht für aufbereitete Daten und XCP verwendet, um Supportfähigkeit und Portabilität zu gewährleisten. Im Echtzeit-Produktionsbetrieb können dieselben aufbereiteten Daten auch über direkte RDMA-fähige Zugriffspfade genutzt werden, wenn dies besser den Anforderungen an Workload und Latenz entspricht.
Das gesamte Laufzeitverhalten wird über dag_run.conf bereitgestellt, sodass derselbe DAG verschiedene Quellsysteme, Transformations-Engines, Speicherziele, Wiederherstellungsrichtlinien und Archivierungsbereiche bedienen kann. Es sollten nur die für den ausgewählten Workflow erforderlichen Parametergruppen konfiguriert, Anmeldeinformationen in Airflow Connections oder einem Secrets-Backend gespeichert und die Beispiele als Vorlagen für Nicht-Produktionsumgebungen statt als Anmeldeinformationswerte verwendet werden.
[[8-1-ingestion-parameters]]
== 8.1 Aufnahmeparameter
Diese Einstellungen dienen zur Auswahl und Konfiguration des vorgelagerten Datenerfassungsmechanismus. s3_direct Dabei werden die in der Datenaufbereitungsgruppe konfigurierten StorageGRID Rohdatenobjekte verwendet; Airbyte und NiFi Einstellungen sind nur erforderlich, wenn die jeweiligen Erfassungstools ausgewählt sind.
| Parameter | Standard | Erforderlich | Beschreibung | Beispiel |
|---|---|---|---|---|
|
|
Nein |
Auswahl des Aufnahmemodus |
|
|
Keine |
Nur Airbyte |
Airbyte API Endpunkt |
|
|
Keine |
Nur Airbyte |
Airbyte Verbindungs-ID |
|
|
Keine |
Optional |
Bearer Token |
|
|
|
Nein |
Airbyte Zeitüberschreitung |
|
|
Keine |
NiFi nur |
NiFi API-Endpunkt |
|
|
Keine |
NiFi nur |
NiFi Prozessgruppe |
|
|
|
Nein |
NiFi Zeitüberschreitung |
|
[[8-2-data-preparation-parameters]]
== 8.2 Parameter zur Datenaufbereitung
Diese Einstellungen steuern den Zugriff auf Rohdaten, die Ausgabe aufbereiteter Daten, die Eingabeerkennung und das Transformationsverhalten. Die s3_raw_* Parameter beziehen sich auf StorageGRID, während die code-compatible s3_formatted_* Parameter den ONTAP NAS Bucket identifizieren, in den aufbereitete, mit einem Laufzeitstempel versehene Daten und Manifeste geschrieben werden.
Unformatierter StorageGRID / Prepared-Data ONTAP NAS-Bucket:
Separate Endpunkte und Anmeldeinformationen werden konfiguriert, wenn StorageGRID und der ONTAP NAS Bucket unterschiedliche S3-kompatible Dienste oder Zugriffsrichtlinien verwenden. Die generischen Fallback-Schlüssel gelten nur, wenn keine spezifischere Einstellung für Rohdaten oder aufbereitete Daten vorhanden ist.
| Parameter | Standard | Beschreibung | Beispiel |
|---|---|---|---|
|
|
StorageGRID Rohdaten-Eingabe-Bucket |
|
|
|
StorageGRID Rohdatenpräfix |
|
|
Fallback-Kette |
StorageGRID S3 Endpunkt |
|
|
Fallback-Kette |
Unformatierter Zugriffsschlüssel |
|
|
Fallback-Kette |
Rohschlüssel |
|
|
|
Rohregion |
|
|
|
ONTAP NAS Ausgabebucket für vorbereitete Daten |
|
|
|
ONTAP NAS Prepared-Data-Präfix |
|
|
Fallback-Kette |
ONTAP NAS Bucket S3 Endpunkt |
|
|
Fallback-Kette |
ONTAP NAS Bucket-Zugriffsschlüssel |
|
|
Fallback-Kette |
ONTAP NAS Bucket Geheimschlüssel |
|
Allgemeiner Ausweichweg: s3_endpoint_url, s3_access_key_id, s3_secret_access_key, s3_session_token, s3_verify, aws_region, aws_access_key_id, aws_secret_access_key, aws_session_token.
Eingabeauswahl:
Für die Verarbeitung bekannter CSV-Eingaben werden explizite Objektschlüsseleinstellungen verwendet, andernfalls ermittelt die Aufgabe geeignete tabellarische Objekte unter dem konfigurierten StorageGRID Rohpräfix.
| Parameter | Standard | Beschreibung | Beispiel |
|---|---|---|---|
|
Automatische Erkennung |
Explizite Liste der CSV-Schlüssel |
|
|
Keine |
Einzelner expliziter CSV-Schlüssel |
|
Transformation:
Wählen Sie den Python-Pfad für eine ressourcenschonende lokale Vorbereitung oder Spark für eine verteilte Vorbereitung. Sampling und der Seed gelten reproduzierbar für die generierten Trainings-, Validierungs- und Inferenzaufteilungen.
| Parameter | Standard | Beschreibung | Beispiel |
|---|---|---|---|
|
|
|
|
|
|
Ausfall statt Fallback |
|
|
|
|
|
|
|
Fehler, wenn das Format nicht verfügbar ist |
|
|
alle Zeilen |
Zeilenlimit (≤0 = alle) |
|
|
|
Reproduzierbarer Shuffle Seed |
|
Spark:
Diese Einstellungen gelten nur für transformation_engine=spark. Sie steuern die Platzierung von Spark-Prozessen, die Ressourcenzuweisung, Zeitlimits und optionale Laufzeitabhängigkeiten von Delta Lake oder Iceberg.
| Parameter | Standard | Beschreibung | Beispiel |
|---|---|---|---|
|
|
Spark Binärdatei |
|
|
|
Spark Master |
|
|
|
Treiberspeicher |
|
|
|
Executor Speicher |
|
|
|
Zeitüberschreitung (0 = deaktiviert) |
|
|
Delta 3.2.0 |
Delta Runtime-Paket |
|
|
Iceberg 1.5.2 |
Iceberg Laufzeitpaket |
|
|
|
Name des Iceberg Katalogs |
|
[[8-3-xcp-and-training-destination-parameters]]
== 8.3 XCP und Trainingszielparameter
Diese Gruppe dient, `enable_xcp=true`wenn die ONTAP NAS NFS-Quelle validiert, der XCP Host aufgerufen und die aktive Trainingsebene ausgewählt werden sollen. `xcp_copy_destination`Sie ist der steuernde Schalter: Er wählt entweder die ONTAP S3-spezifischen oder die LustreFS-spezifischen Einstellungen aus, und nachgelagerte Modellstufen verwenden dieselbe ausgewählte Ebene.
| Parameter | Standard | Erforderlich | Beschreibung | Beispiel |
|---|---|---|---|---|
|
|
Ja für XCP |
Aktiviert den XCP-Zweig |
|
|
|
Nein |
|
|
|
|
XCP Vorabprüfung |
NFS-Server-IP |
|
|
|
XCP Vorabprüfung |
NFS Exportpfad |
|
|
|
Nein |
XCP host SSH Benutzer |
|
|
|
Nein |
XCP Hostadresse |
|
S3 Ziel (erforderlich, wenn xcp_copy_destination=s3):
Diese Einstellungen sind nur für den ONTAP S3 Trainingspfad erforderlich. Die Profil- oder direkten Anmeldeinformationen ermöglichen XCP und der Modellartefakt-Synchronisierungslogik den Zugriff auf den ausgewählten ONTAP S3 Bucket und das Präfix.
| Parameter | Standard | Beschreibung | Beispiel |
|---|---|---|---|
|
Standard |
XCP S3-Endpunkt |
|
|
Keine |
XCP Ziel Bucket |
|
|
|
Zielpräfix |
|
|
|
Präfix für die Trainingserkennung |
|
|
|
Benanntes Anmeldeinformationsprofil |
|
|
Keine |
Profilübersicht |
|
|
Keine |
Direkter Schlüsselfallback |
|
|
Keine |
Direkter geheimer Fallback |
|
|
|
XCP S3 Region |
|
LustreFS Ziel (erforderlich, wenn xcp_copy_destination=lustrefs):
Diese Einstellungen gelten nur für den LustreFS Trainingspfad. Quelle und Ziel müssen auf dem XCP Host eingebunden und erreichbar sein; das Ziel muss außerdem für den Airflow Worker erreichbar sein, der die Modellphasen ausführt.
| Parameter | Standard | Beschreibung | Beispiel |
|---|---|---|---|
|
|
XCP Kopierquelle |
|
|
|
LustreFS Mount-Ziel |
|
|
|
Unterverzeichnis „Training“ unter Mount |
|
|
|
XCP Jobkennung |
|
Verhalten der Textquelle:
Diese Optionen steuern, wie die drei Textdatensätze nach der XCP Mobilität gefunden werden. Explizite Schlüssel überschreiben die Erkennung; der lokale Fallback kann deaktiviert werden, damit die Texteingaben vom ausgewählten XCP-Ziel stammen.
| Parameter | Standard | Beschreibung | Beispiel |
|---|---|---|---|
|
|
Lokalen Text-Fallback zulassen |
|
|
Automatisch |
Explizite Basistextposition |
|
|
Automatisch |
Explizite Position des Feinabstimmungstextes |
|
|
Automatisch |
Explizite Schlussfolgerung-Textposition |
|
[[8-4-model-training-parameters]]
== 8.4 Parameter für das Modelltraining
Diese Einstellungen wählen die lokale oder über XCP bereitgestellte Quelle aus, begrenzen das Trainingsvolumen und bewahren eine reproduzierbare Datenreihenfolge. Wenn XCP aktiviert ist, liest das Training die ausgewählte ONTAP S3 oder LustreFS Ebene und veröffentlicht die Basisartefakte wieder an demselben Zielort.
| Parameter | Standard | Beschreibung | Beispiel |
|---|---|---|---|
|
|
Auswahl von XCP oder lokaler Quelle |
|
|
|
Die Quell-Tier wird ausgewählt |
|
|
alle Zeilen |
Limit für Trainingsstichproben |
|
|
|
Reproduzierbares Mischen |
|
Produziert: regression_model.bin, text_vectorizer.bin, text_classifier.bin, train_metrics.json.
[[8-5-fine-tuning-parameters]]
== 8.5 Feinabstimmungsparameter
Die Feinabstimmung materialisiert die Basistextartefakte aus dem ausgewählten XCP-Ziel, wendet inkrementelles Lernen auf den Feinabstimmungsdatensatz an und veröffentlicht den optimierten Klassifikator und seine Metriken erneut. Die XCP-Einstellungen sollten mit dem Modelltraining konsistent bleiben, um die Herkunft der Artefakte zu gewährleisten.
| Parameter | Standard | Beschreibung | Beispiel |
|---|---|---|---|
|
|
Ermöglicht das Materialisieren/Veröffentlichen von Artefakten |
|
|
|
Auswahl der Artefaktquelle/des Artefaktziels |
|
Verbraucht: text_vectorizer.bin, text_classifier.bin, text_finetune.json. Produziert: text_classifier_tuned.bin, fine_tune_metrics.json.
[[8-6-inference-parameters]]
== 8.6 Inferenzparameter
Diese Flags steuern den Umfang der Bewertung, nachdem das optimierte Modell aus der ausgewählten Trainingsstufe generiert wurde. Eine der Optionen ist zu aktivieren, wenn Validierungs- oder Geschäftsanforderungen Ausgaben erfordern, die über die standardmäßige Inferenzaufteilung und die Inferenztexteingabe hinausgehen.
| Parameter | Standard | Beschreibung | Beispiel |
|---|---|---|---|
|
|
Bewerten von Train/Val/Infer-Aufteilungen |
|
|
|
Base-/Feinabstimmungs-/Inferenztext bewerten |
|
Verbraucht: regression_model.bin, text_vectorizer.bin, text_classifier_tuned.bin. Erzeugt: tabular_predictions.csv, text_predictions.json.
[[8-7-checkpoint-parameters]]
== 8.7 Checkpoint-Parameter
Checkpointing ist auf model_training beschränkt. Diese Einstellungen legen fest, ob ein Datensatz zum Trainingsabschluss erstellt wird, wo dieser gespeichert wird, wie mit Upload-Fehlern umgegangen wird und ob ein späterer Durchlauf ein gültiges abgeschlossenes Trainingsergebnis überprüft oder wiederverwendet.
| Parameter | Standard | Beschreibung | Beispiel |
|---|---|---|---|
|
|
Ermöglicht die Erstellung von Prüfpunktdateien |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Abwärtskompatibler Alias |
|
[[8-8-manual-archive-parameters]]
== 8.8 Manuelle Archivparameter
Diese Gruppe dient zum Aktivieren der StorageGRID Archivierung, zum Angeben des Ziel-Bucket und der Zugangsdaten sowie zum Auswählen des Archivierungspunkts. Der ausgewählte manual_archive_stage steuert sowohl den Zeitpunkt der Archivierung als auch, ob das Archiv nur Trainingsartefakte der Baseline oder den vollständigen Ergebnissatz der Inferenz enthält.
| Parameter | Standard | Erforderlich | Beschreibung | Beispiel |
|---|---|---|---|---|
|
|
Nein |
Ermöglicht die Archivierung |
|
|
|
Nein |
Archivpunkt und Artefaktsatz: |
|
|
|
Ja, wenn aktiviert |
Archive Bucket |
|
|
|
Nein |
Archivpräfix |
|
|
Standard |
Nur benutzerdefiniert |
Archive S3 Endpunkt |
|
|
|
Empfohlen |
Anmeldeinformationsprofil |
|
|
Keine |
Optional |
Profilübersicht |
|
|
|
Nein |
XCP-Eingaben in Archiv einbinden |
|
|
|
Nein |
Entfernen des lokalen Rohdatenordners nach dem Upload |
|
Aliase: fabricpool_archive_* für alle manual_archive_* Parameter.
[[8-8-1-manual-archive-stage-decision]]
=== 8.8.1 Entscheidung über die manuelle Archivstufe
Die route_manual_archive_stage Branch Task liest manual_archive_stage einmal pro DAG Lauf. Der ausgewählte Wert bestimmt sowohl, wann die Archivierung ausgeführt wird, als auch, welche Artefakte in den StorageGRID Archivierungs Bucket hochgeladen werden. Archivobjekte werden unter s3://<manual_archive_bucket>/<manual_archive_prefix>/<stage>/<run_stamp>/ gespeichert.
| `manual_archive_stage`Wert | Archivierungszeitpunkte | Artefakte archiviert | Empfohlene Verwendung |
|---|---|---|---|
|
Unmittelbar danach |
|
Ein reproduzierbares Basismodell beibehalten, das Archivvolumen minimieren oder einen Kontrollpunkt vor späteren Phasen aufbewahren |
|
Nach |
Alle |
Vollständige Geschäftsergebnisse und Prognosenachweise für einen Modelllauf beibehalten |
Für beide Auswahlmöglichkeiten wird manual_archive_include_xcp_inputs=true festgelegt, dass lokal materialisierte XCP-Trainingseingaben hinzugefügt werden, sofern vorhanden. manual_archive_enabled=false wird so festgelegt, dass die Archivierungsaufgabe übersprungen wird, ohne den Trainings- und Inferenz-Workflow zu ändern.
[[8-9-complete-sample-configuration]]
== 8.9 Vollständige Beispielkonfiguration
Dieser Katalog enthält Startkonfigurationen für die wichtigsten Bereitstellungs- und Testpfade. Allen Beispielen liegt zugrunde, dass sich Rohdaten in StorageGRID befinden und aufbereitete Daten in den ONTAP NAS Bucket geschrieben werden. Bucket-Namen, Endpunktadressen, Dateisystempfade und Profilnamen sind durch Werte aus der Zielumgebung zu ersetzen. Produktionszugriffsschlüssel oder Geheimnisse dürfen nicht in CONF_JSON abgelegt werden; die Konfiguration erfolgt stattdessen über Airflow Connections, Variables oder ein Secrets Backend.
[[8-9-1-xcp-to-lustrefs-with-spark-and-delta-lake]]
=== 8.9.1 XCP zu LustreFS mit Spark und Delta Lake
Dieses Beispiel mit vollem Durchsatz wird für die verteilte Vorbereitung und die Hochleistungsmodell-E/A von LustreFS verwendet. Es verarbeitet alle geeigneten tabellarischen Dateien unter s3_raw_prefix, schreibt Delta-Tabellen während der Vorbereitung, speichert den Trainings-Checkpoint im ONTAP NAS prepared-data bucket und archiviert die vollständige Inferenz-Ergebnismenge.
{
"ingestion_tool": "s3_direct",
"s3_raw_bucket": "bucket1",
"s3_raw_prefix": "example_ai_pipeline/raw",
"s3_formatted_bucket": "prepnasbucket",
"s3_formatted_prefix": "example_ai_pipeline/formatted",
"enable_xcp": true,
"xcp_copy_destination": "lustrefs",
"xcp_nfs_source_ip": "10.63.150.159",
"xcp_nfs_source_path": "/prepnasbucket/example_ai_pipeline",
"xcp_lustrefs_source_path": "/prepnasbucket/example_ai_pipeline",
"xcp_lustrefs_dest_path": "/mnt/lustre/client",
"xcp_lustrefs_training_subpath": "example_ai_pipeline",
"xcp_text_allow_local_fallback": false,
"transformation_engine": "spark",
"spark_required": true,
"table_format": "delta",
"table_format_required": true,
"spark_driver_memory": "8g",
"spark_executor_memory": "8g",
"spark_timeout_secs": 0,
"sample_count": 14400,
"seed": 11,
"infer_all_splits": true,
"infer_all_text": true,
"checkpoint_enabled": true,
"checkpoint_store": "formatted_s3",
"training_checkpoint_reuse_mode": "off",
"manual_archive_enabled": true,
"manual_archive_stage": "inferencing",
"manual_archive_bucket": "archivalbucket",
"manual_archive_prefix": "ai-models",
"manual_archive_profile": "sgdlocal",
"manual_archive_cleanup_raw": true
}
[[8-9-2-no-xcp-with-python-preparation]]
=== 8.9.2 Keine XCP Vorbereitung mit Python
Diese Basiskonfiguration wird für einen ressourcenschonenden Funktionslauf verwendet. Die Vorbereitung nutzt die lokale Python Engine, und die nachfolgenden Phasen verwenden die lokalen Pfade der Pipeline für vorbereitete Daten und Artefakte; XCP, Spark, Tabellenformate, Checkpoint-Wiederverwendung und Archivierung sind deaktiviert.
{
"ingestion_tool": "s3_direct",
"s3_raw_bucket": "bucket1",
"s3_raw_prefix": "example_ai_pipeline/raw",
"s3_formatted_bucket": "prepnasbucket",
"s3_formatted_prefix": "example_ai_pipeline/formatted",
"enable_xcp": false,
"transformation_engine": "python",
"table_format": "none",
"sample_count": 200,
"seed": 11,
"checkpoint_enabled": false,
"manual_archive_enabled": false
}
[[8-9-3-python-preparation-with-two-explicit-input-files]]
=== 8.9.3 Python Vorbereitung mit zwei expliziten Eingabedateien
Dieser gezielte Test dient zur Validierung der Pipeline anhand von zwei bekannten StorageGRID CSV-Objekten. s3_tabular_object_keys Die automatische Erkennung tabellarischer Dateien wird deaktiviert; die Texteingaben verwenden weiterhin ihre erwarteten Speicherorte unter dem Rohdaten-Präfix.
{
"ingestion_tool": "s3_direct",
"s3_raw_bucket": "bucket1",
"s3_raw_prefix": "example_ai_pipeline/raw",
"s3_tabular_object_keys": [
"example_ai_pipeline/raw/tabular_part_01.csv",
"example_ai_pipeline/raw/tabular_part_02.csv"
],
"s3_formatted_bucket": "prepnasbucket",
"s3_formatted_prefix": "example_ai_pipeline/formatted",
"enable_xcp": false,
"transformation_engine": "python",
"table_format": "none",
"sample_count": 200,
"seed": 11,
"manual_archive_enabled": false
}
[[8-9-4-python-preparation-with-automatic-all-file-discovery]]
=== 8.9.4 Python Vorbereitung mit automatischer Erkennung aller Dateien
Wenn s3_tabular_object_keys und s3_tabular_object_key weggelassen werden, werden alle geeigneten tabellarischen Objekte unter dem StorageGRID Rohdaten-Präfix verarbeitet. Dieses Beispiel eignet sich für einen Funktions- oder Skalierungstest für alle Dateien mithilfe der Python Vorbereitung Engine.
{
"s3_raw_bucket": "bucket1",
"s3_raw_prefix": "example_ai_pipeline/raw",
"s3_formatted_bucket": "prepnasbucket",
"s3_formatted_prefix": "example_ai_pipeline/formatted",
"enable_xcp": false,
"transformation_engine": "python",
"table_format": "none",
"sample_count": 0,
"seed": 11,
"manual_archive_enabled": false
}
sample_count: 0 bedeutet, dass bei der Datenaufbereitung alle verfügbaren Zeilen verwendet werden. Für einen begrenzten Testlauf ist ein positiver Wert festzulegen.
[[8-9-5-xcp-to-ontap-s3-with-python-preparation]]
=== 8.9.5 XCP zu ONTAP S3 mit Python Vorbereitung
Diese Konfiguration wird verwendet, wenn vorbereitete Daten vom ONTAP NAS NFS-Export in einen ONTAP S3 Training Bucket kopiert werden müssen. Modelltraining, Feinabstimmung und Inferenz erzeugen und veröffentlichen Artefakte über dasselbe ONTAP S3-Ziel.
{
"s3_raw_bucket": "bucket1",
"s3_raw_prefix": "example_ai_pipeline/raw",
"s3_formatted_bucket": "prepnasbucket",
"s3_formatted_prefix": "example_ai_pipeline/formatted",
"enable_xcp": true,
"xcp_copy_destination": "s3",
"xcp_nfs_source_ip": "10.63.150.159",
"xcp_nfs_source_path": "/prepnasbucket/example_ai_pipeline",
"xcp_s3_endpoint": "https://ontap-s3.example.com",
"xcp_s3_bucket": "trainingbucket",
"xcp_s3_dest_prefix": "example_ai_pipeline",
"xcp_s3_training_prefix": "example_ai_pipeline",
"xcp_s3_profile": "ontaps3",
"transformation_engine": "python",
"table_format": "none",
"sample_count": 14400,
"seed": 11,
"checkpoint_enabled": true,
"checkpoint_store": "formatted_s3",
"manual_archive_enabled": true,
"manual_archive_stage": "model_training",
"manual_archive_bucket": "archivalbucket",
"manual_archive_profile": "storagegrid-archive"
}
[[8-9-6-xcp-to-ontap-s3-with-spark-and-iceberg]]
=== 8.9.6 XCP zu ONTAP S3 mit Spark und Iceberg
Diese Konfiguration wird für die verteilte Vorbereitung mit Iceberg-Tabellenausgabe und ONTAP S3 als aktivem Trainingsziel verwendet. Dabei werden spark_required und table_format_required auf true gesetzt, wenn ein Lauf fehlschlagen muss, anstatt auf eine Alternative zurückzugreifen, falls Spark oder Iceberg nicht verfügbar sind.
{
"s3_raw_bucket": "bucket1",
"s3_raw_prefix": "example_ai_pipeline/raw",
"s3_formatted_bucket": "prepnasbucket",
"s3_formatted_prefix": "example_ai_pipeline/formatted",
"enable_xcp": true,
"xcp_copy_destination": "s3",
"xcp_nfs_source_ip": "10.63.150.159",
"xcp_nfs_source_path": "/prepnasbucket/example_ai_pipeline",
"xcp_s3_bucket": "trainingbucket",
"xcp_s3_dest_prefix": "example_ai_pipeline",
"xcp_s3_profile": "ontaps3",
"transformation_engine": "spark",
"spark_required": true,
"table_format": "iceberg",
"table_format_required": true,
"spark_driver_memory": "8g",
"spark_executor_memory": "8g",
"spark_timeout_secs": 0,
"sample_count": 0,
"seed": 11,
"manual_archive_enabled": true,
"manual_archive_stage": "inferencing",
"manual_archive_bucket": "archivalbucket",
"manual_archive_profile": "storagegrid-archive"
}
[[8-9-7-scenario-selection-summary]]
=== 8.9.7 Zusammenfassung der Szenarioauswahl
| Szenario | XCP Ziel | Vorbereitungsmodul | Tabellenformat | Eingabebereich | Archivierungsphase |
|---|---|---|---|---|---|
8.9.1 |
LustreFS |
Funke |
Delta |
Alle gefundenen Dateien |
|
8.9.2 |
Keine |
Python |
Keine |
Alle gefundenen Dateien |
Deaktiviert |
8.9.3 |
Keine |
Python |
Keine |
Zwei explizite Dateien |
Deaktiviert |
8.9.4 |
Keine |
Python |
Keine |
Alle gefundenen Dateien |
Deaktiviert |
8.9.5 |
ONTAP S3 |
Python |
Keine |
Alle gefundenen Dateien |
|
8.9.6 |
ONTAP S3 |
Funke |
Iceberg |
Alle gefundenen Dateien |
|
[[8-9-8-execution-walkthroughs]]
=== 8.9.8 Walkthroughs zur Ausführung
Die Beispiele werden aus dem Airflow workspace ausgeführt. Das trigger script generiert eine eindeutige manual__<UTC timestamp> run ID, wartet auf den Abschluss und gibt bei einem fehlgeschlagenen oder mit Zeitüberschreitung beendeten Lauf einen Exit-Code ungleich null zurück. Die folgenden vollständigen Konfigurationen verwenden dasselbe CONF_JSON="$(python3 - <<'PY' …)" Muster wie die Betriebsbeispiele. Die referenzierten Airflow-managed connections, XCP profiles und archive profiles werden vor der Ausführung in Ihrem secrets backend konfiguriert, und CONF_JSON dies bleibt auf Bucket-, Endpunkt-, Pfad- und Profilkennungen ohne Secrets beschränkt.
Der gültige Tabellenformatname lautet iceberg. icerberg ist kein unterstützter Wert.
Alle Dateien, Spark, Iceberg, XCP zu ONTAP S3, Checkpoint zu prepared-data S3, Archiv nach der Inferenz:
CONF_JSON="$(python3 - <<'PY'
import json
print(json.dumps({
"ingestion_tool": "s3_direct",
"enable_xcp": True,
"xcp_copy_destination": "s3",
"xcp_text_allow_local_fallback": True,
"s3_raw_bucket": "bucket1",
"s3_raw_prefix": "example_ai_pipeline/raw",
"s3_raw_endpoint_url": "https://storagegrid.example.com",
"s3_raw_region": "us-east-1",
"s3_formatted_bucket": "prepnasbucket",
"s3_formatted_prefix": "example_ai_pipeline/formatted",
"s3_formatted_endpoint_url": "https://ontap-nas.example.com",
"s3_formatted_region": "us-east-1",
"xcp_nfs_source_ip": "10.63.150.159",
"xcp_nfs_source_path": "/prepnasbucket/example_ai_pipeline",
"xcp_s3_endpoint": "https://ontap-s3.example.com",
"xcp_s3_bucket": "trainingbucket",
"xcp_s3_dest_prefix": "example_ai_pipeline",
"xcp_s3_training_prefix": "example_ai_pipeline",
"xcp_s3_profile": "ontaps3",
"transformation_engine": "spark",
"spark_required": True,
"table_format": "iceberg",
"table_format_required": True,
"sample_count": 0,
"seed": 11,
"spark_driver_memory": "8g",
"spark_executor_memory": "8g",
"spark_timeout_secs": 0,
"infer_all_splits": True,
"infer_all_text": True,
"checkpoint_enabled": True,
"checkpoint_store": "formatted_s3",
"manual_archive_enabled": True,
"manual_archive_stage": "inferencing",
"manual_archive_bucket": "archivalbucket",
"manual_archive_prefix": "ai-models",
"manual_archive_profile": "sgdlocal",
"manual_archive_endpoint": "https://storagegrid.example.com",
"manual_archive_cleanup_raw": True,
"manual_archive_include_xcp_inputs": True,
}, separators=(",", ":")))
PY
)"
CONF_JSON="$CONF_JSON" AIRFLOW_BIN=./.venv/bin/airflow INGESTION_TOOL=s3_direct \
./trigger_and_wait_ai_pipeline_sklearn.sh
Alle Dateien, Spark, Iceberg, XCP nach LustreFS, Checkpoint in prepared-data S3, Archiv nach Inferenz:
CONF_JSON="$(python3 - <<'PY'
import json
print(json.dumps({
"ingestion_tool": "s3_direct",
"enable_xcp": True,
"xcp_copy_destination": "lustrefs",
"ssh_user": "root",
"ssh_host": "10.63.150.178",
"xcp_text_allow_local_fallback": True,
"s3_raw_bucket": "bucket1",
"s3_raw_prefix": "example_ai_pipeline/raw",
"s3_raw_endpoint_url": "https://storagegrid.example.com",
"s3_raw_region": "us-east-1",
"s3_formatted_bucket": "prepnasbucket",
"s3_formatted_prefix": "example_ai_pipeline/formatted",
"s3_formatted_endpoint_url": "https://ontap-nas.example.com",
"s3_formatted_region": "us-east-1",
"xcp_nfs_source_ip": "10.63.150.159",
"xcp_nfs_source_path": "/prepnasbucket/example_ai_pipeline",
"xcp_lustrefs_source_path": "/prepnasbucket/example_ai_pipeline",
"xcp_lustrefs_dest_path": "/mnt/lustre/client",
"xcp_lustrefs_training_subpath": "example_ai_pipeline",
"transformation_engine": "spark",
"spark_required": True,
"table_format": "iceberg",
"table_format_required": True,
"sample_count": 0,
"seed": 11,
"spark_driver_memory": "8g",
"spark_executor_memory": "8g",
"spark_timeout_secs": 0,
"infer_all_splits": True,
"infer_all_text": True,
"checkpoint_enabled": True,
"checkpoint_store": "formatted_s3",
"manual_archive_enabled": True,
"manual_archive_stage": "inferencing",
"manual_archive_bucket": "archivalbucket",
"manual_archive_prefix": "ai-models",
"manual_archive_profile": "sgdlocal",
"manual_archive_endpoint": "https://storagegrid.example.com",
"manual_archive_cleanup_raw": True,
"manual_archive_include_xcp_inputs": True,
}, separators=(",", ":")))
PY
)"
AIRFLOW_BIN=./.venv/bin/airflow INGESTION_TOOL=s3_direct \
./trigger_and_wait_ai_pipeline_sklearn.sh
Für den ONTAP S3 Modus wird nur der nicht geheime xcp_s3_profile`Name in `CONF_JSON übergeben, und die entsprechenden Anmeldeinformationen werden vor dem Lauf auf dem XCP Host oder über den von Airflow verwalteten Secret Storage definiert. Für den LustreFS Modus wird die xcp_s3_profiles Zuordnung absichtlich ausgelassen, da die Trainingsroute ONTAP S3 Anmeldeinformationen nicht auflöst. In beiden Beispielen werden die Anmeldeinformationen für StorageGRID Rohdaten, ONTAP NAS vorbereitete Daten und das Archiv über den von Airflow verwalteten Secret Storage und nicht als Inline JSON definiert. Das Weglassen von s3_tabular_object_keys und das Festlegen von sample_count auf 0 fordert die automatische Erkennung aller geeigneten Tabellendateien sowie die Verwendung aller verfügbaren Zeilen an.
Python, kein XCP, Test mit zwei Dateien:
CONF_JSON='{"s3_raw_bucket":"bucket1","s3_raw_prefix":"example_ai_pipeline/raw","s3_tabular_object_keys":["example_ai_pipeline/raw/tabular_part_01.csv","example_ai_pipeline/raw/tabular_part_02.csv"],"s3_formatted_bucket":"prepnasbucket","s3_formatted_prefix":"example_ai_pipeline/formatted","enable_xcp":false,"transformation_engine":"python","table_format":"none","sample_count":200,"manual_archive_enabled":false}' \
./trigger_and_wait_ai_pipeline_sklearn.sh
Spark, Delta Lake, XCP zu LustreFS:
CONF_JSON='{"enable_xcp":true,"xcp_copy_destination":"lustrefs","xcp_nfs_source_ip":"10.63.150.159","xcp_nfs_source_path":"/prepnasbucket/example_ai_pipeline","xcp_lustrefs_source_path":"/prepnasbucket/example_ai_pipeline","xcp_lustrefs_dest_path":"/mnt/lustre/client","xcp_lustrefs_training_subpath":"example_ai_pipeline","transformation_engine":"spark","spark_required":true,"table_format":"delta","table_format_required":true,"sample_count":14400,"manual_archive_enabled":true,"manual_archive_stage":"inferencing"}' \
./trigger_and_wait_ai_pipeline_sklearn.sh
Spark, Iceberg, XCP zu ONTAP S3:
CONF_JSON='{"enable_xcp":true,"xcp_copy_destination":"s3","xcp_nfs_source_ip":"10.63.150.159","xcp_nfs_source_path":"/prepnasbucket/example_ai_pipeline","xcp_s3_bucket":"trainingbucket","xcp_s3_dest_prefix":"example_ai_pipeline","xcp_s3_profile":"ontaps3","transformation_engine":"spark","spark_required":true,"table_format":"iceberg","table_format_required":true,"sample_count":0,"manual_archive_enabled":true,"manual_archive_stage":"inferencing"}' \
./trigger_and_wait_ai_pipeline_sklearn.sh
Vor einem XCP Lauf ist zu prüfen, ob der konfigurierte ONTAP NAS NFS Pfad und die Erreichbarkeit des Ziels vom XCP Host aus gegeben sind. Nach einem erfolgreichen Lauf sind die Aufgabenprotokolle für [data_prep] effective_config, [xcp_copy] effective_config, [model_training] effective_config und [manual_archive] zu prüfen, um die ausgewählte Engine, den Eingabebereich, das Ziel und die Archivierungsphase zu bestätigen.