Skip to main content
NetApp artificial intelligence solutions
La version française est une traduction automatique. La version anglaise prévaut sur la française en cas de divergence.

8. Référence de configuration

Contributeurs nkarthik

Karthikeyan Nagalingam, NetApp

Le guide de configuration décrit les paramètres d'exécution qui contrôlent l'ingestion des données, la préparation des données, la mobilité des données XCP, l'apprentissage, la création de points de contrôle et l'archivage. Le bucket NAS ONTAP est utilisé principalement comme couche de staging des données préparées et de XCP pour la prise en charge et la portabilité. Dans un environnement de production en temps réel, ces mêmes données préparées peuvent également être exploitées via des chemins d'accès directs compatibles RDMA lorsque cela correspond mieux aux exigences de charge de travail et de latence.


L'ensemble du comportement d'exécution est fourni via dag_run.conf, ce qui permet à un même DAG de prendre en charge différents systèmes sources, moteurs de transformation, destinations de stockage, stratégies de récupération et périmètres d'archivage. Configurez uniquement les groupes de paramètres requis pour le flux de travail sélectionné, conservez les identifiants dans Airflow Connections ou un backend de secrets, et utilisez les exemples comme modèles hors production plutôt que comme valeurs d'identifiants.

[[8-1-ingestion-parameters]]
== 8.1 Paramètres d'ingestion

Utilisez ces paramètres pour sélectionner et configurer le mécanisme d’ingestion en amont. s3_direct utilise les objets de données brutes StorageGRID configurés dans le groupe de préparation des données ; les paramètres Airbyte et NiFi ne sont nécessaires que si ces outils d’ingestion respectifs sont sélectionnés.

Paramètre Défaut Obligatoire Description Exemple

ingestion_tool

s3_direct

Non

Sélectionne le mode d'ingestion

"s3_direct"

airbyte_api_url

Aucune

Airbyte uniquement

Point de terminaison de l'API Airbyte

"http://airbyte:8000"

airbyte_connection_id

Aucune

Airbyte uniquement

ID de connexion Airbyte

"connection-123"

airbyte_api_token

Aucune

Facultatif

Jeton Bearer

"<TOKEN>"

airbyte_timeout_secs

30

Non

Délai d'attente Airbyte dépassé

60

nifi_api_url

Aucune

NiFi uniquement

NiFi point de terminaison de l’API

"http://nifi:8080"

nifi_process_group_id

Aucune

NiFi uniquement

groupe de processus NiFi

"abc123"

nifi_timeout_secs

30

Non

NiFi délai d’expiration

60

[[8-2-data-preparation-parameters]]
== 8.2 Paramètres de préparation des données

Ces paramètres contrôlent l'accès aux données brutes, la sortie des données préparées, la découverte des entrées et le comportement de transformation. Les paramètres s3_raw_* font référence à StorageGRID, tandis que les paramètres compatibles avec le code s3_formatted_* identifient le compartiment NAS ONTAP où les données préparées, horodatées à l’exécution, ainsi que les manifestes, sont écrits.

Bucket NAS StorageGRID brut / données préparées ONTAP :

Configurez des points de terminaison et des identifiants distincts lorsque StorageGRID et le compartiment NAS ONTAP utilisent des services compatibles S3 ou des politiques d'accès différents. Les clés de secours génériques ne s'appliquent que lorsqu'aucun paramètre de données brutes ou préparées plus spécifique n'est défini.

Paramètre Défaut Description Exemple

s3_raw_bucket

ai-raw-data

compartiment d'entrée brute StorageGRID

"bucket1"

s3_raw_prefix

example_ai_pipeline/raw

Préfixe de données brutes StorageGRID

"example_ai_pipeline/raw"

s3_raw_endpoint_url

chaîne de repli

Point de terminaison S3 StorageGRID

"http://10.63.150.62:10444"

s3_raw_access_key_id

chaîne de repli

Clé d'accès brute

"<KEY>"

s3_raw_secret_access_key

chaîne de repli

Clé secrète brute

"<SECRET>"

s3_raw_region

aws_region

Région brute

"us-east-1"

s3_formatted_bucket

ai-formatted-data

Compartiment de sortie des données préparées ONTAP NAS

"prepnasbucket"

s3_formatted_prefix

example_ai_pipeline/formatted

Préfixe de données préparées ONTAP NAS

"example_ai_pipeline/formatted"

s3_formatted_endpoint_url

chaîne de repli

Point de terminaison S3 du compartiment NAS ONTAP

"http://10.63.150.159"

s3_formatted_access_key_id

chaîne de repli

Clé d'accès au compartiment NAS ONTAP

"<KEY>"

s3_formatted_secret_access_key

chaîne de repli

Clé secrète du compartiment NAS ONTAP

"<SECRET>"

Solution de repli générale : 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.

Sélection des entrées :

Utilisez des paramètres explicites de clé d’objet pour traiter les entrées CSV connues ; sinon, la tâche détecte les objets tabulaires éligibles sous le préfixe brut StorageGRID configuré.

Paramètre Défaut Description Exemple

s3_tabular_object_keys

Découverte automatique

Liste explicite des clés CSV

["raw/demo/a.csv"]

s3_tabular_object_key

Aucune

Clé CSV explicite unique

"raw/demo/a.csv"

Transformation:

Choisissez le chemin Python pour une préparation locale légère ou Spark pour une préparation distribuée. L'échantillonnage et la graine s'appliquent de manière reproductible aux ensembles d'entraînement, de validation et d'inférence générés.

Paramètre Défaut Description Exemple

transformation_engine

python

python ou spark

"spark"

spark_required

false

Échec plutôt que repli

true

table_format

none

none/delta/iceberg

"delta"

table_format_required

false

Échec si le format est indisponible

true

sample_count

toutes les lignes

Limite de lignes (≤0 = toutes)

14400

seed

7

Graine de mélange reproductible

11

Spark :

Ces paramètres s'appliquent uniquement à transformation_engine=spark. Ils contrôlent le placement des processus Spark, l'allocation des ressources, les limites de temps et les dépendances d'exécution optionnelles de Delta Lake ou d'Iceberg.

Paramètre Défaut Description Exemple

spark_submit_bin

spark-submit

Binaire Spark

"/opt/spark/bin/spark-submit"

spark_master

local[*]

Spark master

"local[*]"

spark_driver_memory

4g

Mémoire du pilote

"8g"

spark_executor_memory

4g

Mémoire de l'exécuteur

"8g"

spark_timeout_secs

900/7200

Délai d'attente (0 = désactivé)

0

spark_delta_packages

Delta 3.2.0

package d'exécution Delta

"io.delta:delta-spark_2.12:3.2.0"

spark_iceberg_packages

Iceberg 1.5.2

package d'exécution Iceberg

"org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.5.2"

spark_iceberg_catalog

local

Nom du catalogue Iceberg

"local"

[[8-3-xcp-and-training-destination-parameters]]
== 8.3 Paramètres XCP et de destination d’entraînement

Utilisez ce groupe enable_xcp=true pour valider la source ONTAP NAS NFS, invoquer l’hôte XCP et choisir le niveau d’entraînement actif. xcp_copy_destination est le commutateur de contrôle : il sélectionne soit les paramètres spécifiques à ONTAP S3, soit ceux spécifiques à LustreFS ci-dessous, et les étapes du modèle en aval utilisent le même niveau sélectionné.

Paramètre Défaut Obligatoire Description Exemple

enable_xcp

false

Oui pour XCP

Active la branche XCP

true

xcp_copy_destination

s3

Non

s3 ou lustrefs

"lustrefs"

xcp_nfs_source_ip

10.63.150.159

Vérification préalable XCP

IP du serveur NFS

"10.63.150.159"

xcp_nfs_source_path

/prepnasbucket/example_ai_pipeline

Vérification préalable XCP

Chemin d'export NFS

"/prepnasbucket/example_ai_pipeline"

ssh_user

root

Non

Utilisateur SSH de l’hôte XCP

"root"

ssh_host

10.63.150.178

Non

Adresse de l’hôte XCP

"10.63.150.178"

Destination S3 (requise lorsque xcp_copy_destination=s3) :

Fournissez ces paramètres uniquement pour le chemin d’entraînement ONTAP S3. Le profil ou les identifiants directs permettent à XCP et à la logique de synchronisation des artefacts du modèle d’accéder au compartiment et au préfixe ONTAP S3 sélectionnés.

Paramètre Défaut Description Exemple

xcp_s3_endpoint

défaut

Point de terminaison XCP S3

"http://10.63.150.161"

xcp_s3_bucket

Aucune

compartiment de destination XCP

"trainingbucket"

xcp_s3_dest_prefix

example_ai_pipeline

Préfixe de destination

"example_ai_pipeline"

xcp_s3_training_prefix

xcp_s3_dest_prefix

Préfixe de découverte de la formation

"example_ai_pipeline"

xcp_s3_profile

ontaps3

Profil d’identifiant nommé

"ontaps3"

xcp_s3_profiles

Aucune

Correspondance de profil

{"ontaps3": {…​}}

xcp_s3_access_key_id

Aucune

Basculement direct par clé

"<KEY>"

xcp_s3_secret_access_key

Aucune

Repli secret direct

"<SECRET>"

xcp_s3_region

aws_region

Région XCP S3

"us-east-1"

Destination LustreFS (obligatoire lorsque xcp_copy_destination=lustrefs) :

Fournissez ces paramètres uniquement pour le chemin d'entraînement LustreFS. La source et la destination doivent être montées et accessibles sur l'hôte XCP ; la destination doit également être accessible au worker Airflow qui exécute les étapes du modèle.

Paramètre Défaut Description Exemple

xcp_lustrefs_source_path

/prepnasbucket/example_ai_pipeline

Source de copie XCP

"/prepnasbucket/example_ai_pipeline"

xcp_lustrefs_dest_path

/mnt/lustre/client

Destination de montage LustreFS

"/mnt/lustre/client"

xcp_lustrefs_training_subpath

xcp_s3_dest_prefix

Sous-répertoire d’entraînement sous le point de montage

"example_ai_pipeline"

xcp_lustrefs_newid

data_prep cachet d’exécution

Identifiant de tâche XCP

"20260901_120000"

Comportement du texte source :

Ces options déterminent comment les trois ensembles de données textuelles sont trouvés après la migration XCP. Les clés explicites prévalent sur la détection automatique ; le repli local peut être désactivé pour exiger que les entrées de texte proviennent de la destination XCP sélectionnée.

Paramètre Défaut Description Exemple

xcp_text_allow_local_fallback

true

Autoriser le repli vers le texte local

false

xcp_text_base_key

Automatique

Emplacement explicite du texte de base

"…​/text_base.json"

xcp_text_finetune_key

Automatique

Emplacement explicite du texte de réglage fin

"…​/text_finetune.json"

xcp_text_infer_key

Automatique

Emplacement explicite du texte d'inférence

"…​/text_infer.json"

[[8-4-model-training-parameters]]
== 8.4 Paramètres d'entraînement du modèle

Ces paramètres permettent de sélectionner la source locale ou fournie par XCP, de limiter le volume d'entraînement et de préserver l'ordre reproductible des données. Lorsque XCP est activé, l'entraînement lit le niveau ONTAP S3 ou LustreFS sélectionné et publie les artefacts de référence vers cette même destination.

Paramètre Défaut Description Exemple

enable_xcp

false

Sélectionne la source XCP ou locale

true

xcp_copy_destination

s3

Sélectionne le niveau source

"lustrefs"

sample_count

toutes les lignes

Limite de l'échantillon d'entraînement

14400

seed

7

Mélange reproductible

11

Produit regression_model.bin, text_vectorizer.bin, text_classifier.bin, train_metrics.json.

[[8-5-fine-tuning-parameters]]
== 8.5 Ajustement précis des paramètres

Le réglage fin consiste à matérialiser les artefacts textuels de référence à partir de la destination XCP sélectionnée, à appliquer un apprentissage incrémental à l'ensemble de données de réglage fin, puis à republier le classificateur optimisé et ses métriques. Veillez à conserver la cohérence des paramètres XCP avec ceux utilisés lors de l'entraînement du modèle afin de préserver la provenance des artefacts.

Paramètre Défaut Description Exemple

enable_xcp

false

Permet de matérialiser/publier l'artefact

true

xcp_copy_destination

s3

Sélectionne la source/destination de l'artefact

"lustrefs"

Consomme text_vectorizer.bin, text_classifier.bin, text_finetune.json. Produit text_classifier_tuned.bin, fine_tune_metrics.json.

[[8-6-inference-parameters]]
== 8.6 Paramètres d'inférence

Ces indicateurs contrôlent la portée de l’évaluation une fois le modèle ajusté matérialisé à partir du niveau d’entraînement sélectionné. Activez l’une ou l’autre option lorsque les exigences de validation ou métier nécessitent des sorties au-delà de la répartition d’inférence par défaut et du texte d’entrée d’inférence.

Paramètre Défaut Description Exemple

infer_all_splits

false

Notation des divisions train/val/infer

true

infer_all_text

false

Noter le texte de base/affiné/d’inférence

true

Consomme regression_model.bin, text_vectorizer.bin, text_classifier_tuned.bin. Produit tabular_predictions.csv, text_predictions.json.

[[8-7-checkpoint-parameters]]
== 8.7 Paramètres du point de contrôle

La création de points de contrôle est limitée à model_training. Ces paramètres déterminent si l'enregistrement de fin de formation est créé, où il est stocké, comment les échecs de téléchargement sont gérés et si une exécution ultérieure vérifie ou réutilise un résultat de formation terminé valide.

Paramètre Défaut Description Exemple

checkpoint_enabled

true

Permet la création de fichiers de point de contrôle

true

checkpoint_store

local

local ou formatted_s3

"formatted_s3"

checkpoint_upload_fail_mode

warn

warn ou fail

"fail"

training_checkpoint_reuse_mode

off

off/verify_only/resume_if_exists

"resume_if_exists"

checkpoint_reuse_mode

off

Alias rétrocompatible

"verify_only"

[[8-8-manual-archive-parameters]]
== 8.8 Paramètres d'archivage manuel

Utilisez ce groupe pour activer l’archivage StorageGRID, identifier le compartiment de destination et les identifiants, puis choisir le point d’archivage. Le paramètre sélectionné `manual_archive_stage`détermine à la fois le moment de l’archivage et si l’archive contient uniquement les artefacts d’entraînement de base ou l’ensemble complet des résultats d’inférence.

Paramètre Défaut Obligatoire Description Exemple

manual_archive_enabled

false

Non

Permet l'archivage

true

manual_archive_stage

inferencing

Non

Point d'archivage et ensemble d'artefacts : model_training pour les artefacts d'entraînement de base, ou inferencing pour l'ensemble complet des résultats

"model_training"

manual_archive_bucket

archivalbucket

Oui lorsqu’elle est activée

compartiment d'archive

"archivalbucket"

manual_archive_prefix

ai-models

Non

Préfixe d'archive

"ai-models"

manual_archive_endpoint

défaut

Personnalisé uniquement

Point de terminaison S3 d’archivage

"http://10.63.150.62:10444"

manual_archive_profile

sgdlocal

Recommandé

Profil d’identification

"sgdlocal"

manual_archive_profiles

Aucune

Facultatif

Correspondance de profil

{"sgdlocal": {…​}}

manual_archive_include_xcp_inputs

false

Non

Inclure les entrées XCP dans l'archive

true

manual_archive_cleanup_raw

false

Non

Supprimer le dossier brut local après le téléchargement

true

Alias : fabricpool_archive_* pour tous les manual_archive_* paramètres.

[[8-8-1-manual-archive-stage-decision]]
=== 8.8.1 Décision relative à l’étape d’archivage manuel

La route_manual_archive_stage tâche de branche lit manual_archive_stage une fois par exécution du DAG. La valeur sélectionnée détermine à la fois le moment où l'archivage s'exécute et les artefacts qui sont téléchargés vers le bucket d'archivage StorageGRID. Les objets d'archive sont stockés sous s3://<manual_archive_bucket>/<manual_archive_prefix>/<stage>/<run_stamp>/.

manual_archive_stage valeur Calendrier d’archivage Artefacts archivés Utilisation recommandée

model_training

Immédiatement après model_training; sans attendre de réglage fin ni d'inférence

regression_model.bin, text_vectorizer.bin, text_classifier.bin, train_metrics.json

Préserver un modèle de référence reproductible, minimiser le volume des archives ou conserver un point de contrôle avant les étapes ultérieures

inferencing (défaut)

Après fine_tuning et inferencing la fin

Tous model_training les artefacts plus text_classifier_tuned.bin, fine_tune_metrics.json, tabular_predictions.csv et text_predictions.json

Conserver l’ensemble des données relatives aux résultats commerciaux et aux preuves de prédiction pour une exécution du modèle

Quelle que soit l’option choisie, définissez manual_archive_include_xcp_inputs=true pour ajouter les entrées d’entraînement XCP matérialisées localement lorsqu’elles sont présentes. Définissez manual_archive_enabled=false pour ignorer la tâche d’archivage sans modifier le flux de travail d’entraînement et d’inférence.

[[8-9-complete-sample-configuration]]
== 8.9 Exemple de configuration complet

Ce catalogue fournit les configurations de départ pour les principaux chemins de déploiement et de test. Chaque exemple suppose que les données brutes se trouvent dans StorageGRID et que les données préparées sont écrites dans le bucket NAS ONTAP. Remplacez les noms de bucket, les adresses de point de terminaison, les chemins du système de fichiers et les noms de profil par les valeurs de l'environnement cible. Ne placez pas les clés d'accès ou les secrets de production dans CONF_JSON; configurez-les via les connexions Airflow, les variables ou un backend de secrets.

[[8-9-1-xcp-to-lustrefs-with-spark-and-delta-lake]]
=== 8.9.1 XCP vers LustreFS avec Spark et Delta Lake

Utilisez cet exemple à débit maximal pour la préparation distribuée et les E/S hautes performances du modèle LustreFS. Il traite tous les fichiers tabulaires admissibles sous s3_raw_prefix, écrit des tables Delta pendant la préparation, conserve le point de contrôle d’entraînement dans le compartiment de données préparées ONTAP NAS, et archive l’ensemble complet des résultats d’inférence.

{
  "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 Préparation de XCP sans Python

Utilisez cette configuration de base pour une exécution fonctionnelle légère. La préparation utilise le moteur Python local et les étapes en aval utilisent les chemins locaux du pipeline pour les données préparées et les artefacts ; XCP, Spark, les formats de table, la réutilisation des points de contrôle et l'archivage sont désactivés.

{
    "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 Préparation de Python avec deux fichiers d'entrée explicites

Utilisez ce test ciblé lors de la validation du pipeline par rapport à deux objets CSV StorageGRID connus. s3_tabular_object_keys Il désactive la détection automatique des fichiers tabulaires ; les entrées de texte utilisent toujours leurs emplacements attendus sous le préfixe brut.

{
    "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 Préparation de Python avec découverte automatique de tous les fichiers

Omettez s3_tabular_object_keys et s3_tabular_object_key pour traiter chaque objet tabulaire admissible sous le préfixe brut StorageGRID. Cet exemple convient à un test fonctionnel ou de montée en charge sur tous les fichiers à l’aide du moteur de préparation Python.

{
    "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 signifie que la préparation des données utilise toutes les lignes disponibles. Définissez une valeur positive pour une exécution de test limitée.

[[8-9-5-xcp-to-ontap-s3-with-python-preparation]]
=== 8.9.5 Préparation de XCP vers ONTAP S3 avec Python

Utilisez cette configuration lorsque des données préparées doivent être copiées depuis l’export NFS NAS ONTAP vers un compartiment d’entraînement ONTAP S3. L’entraînement, le réglage fin et l’inférence du modèle génèrent et publient des artefacts via cette même destination ONTAP S3.

{
    "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 vers ONTAP S3 avec Spark et Iceberg

Utilisez cette configuration pour la préparation distribuée avec une sortie de table Iceberg et ONTAP S3 comme destination d'entraînement active. Définissez spark_required et table_format_required sur true lorsque l'exécution doit échouer plutôt que de basculer vers une autre solution si Spark ou Iceberg est indisponible.

{
    "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 Résumé de la sélection des scénarios

Scénario Destination XCP Moteur de préparation Format de tableau Portée d’entrée Étape d'archivage

8.9.1

LustreFS

Étincelle

Delta

Tous les fichiers découverts

inferencing

8.9.2

Aucune

Python

Aucune

Tous les fichiers découverts

Désactivées

8.9.3

Aucune

Python

Aucune

Deux fichiers explicites

Désactivées

8.9.4

Aucune

Python

Aucune

Tous les fichiers découverts

Désactivées

8.9.5

ONTAP S3

Python

Aucune

Tous les fichiers découverts

model_training

8.9.6

ONTAP S3

Étincelle

Iceberg

Tous les fichiers découverts

inferencing

[[8-9-8-execution-walkthroughs]]
=== 8.9.8 Procédures pas à pas d'exécution

Exécutez les exemples depuis l'espace de travail Airflow. Le script de déclenchement génère un ID d'exécution unique manual__<UTC timestamp>, attend la fin de l'exécution et renvoie un code de sortie différent de zéro en cas d'échec ou de dépassement du délai d'attente. Les configurations complètes suivantes utilisent le même schéma CONF_JSON="$(python3 - <<'PY' …​)" que les exemples opérationnels. Configurez les connexions gérées par Airflow, les profils XCP et les profils d'archivage référencés dans votre système de gestion des secrets avant de les exécuter, et limitez-vous CONF_JSON aux identifiants non secrets de compartiment, de point de terminaison, de chemin et de profil.

Le nom de format de tableau valide est iceberg. N'utilisez pas icerberg, qui n'est pas une valeur prise en charge.

Tous les fichiers, Spark, Iceberg, XCP vers ONTAP S3, point de contrôle vers prepared-data S3, archive après inférence :

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

Tous les fichiers, Spark, Iceberg, XCP vers LustreFS, point de contrôle vers prepared-data S3, archive après inférence :

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

Pour le mode ONTAP S3, transmettez uniquement le nom non secret xcp_s3_profile dans CONF_JSON et définissez les identifiants correspondants sur l’hôte XCP ou via le stockage de secrets géré par Airflow avant l’exécution. Pour le mode LustreFS, la xcp_s3_profiles correspondance est volontairement omise, car le parcours d’entraînement ne résout pas les identifiants ONTAP S3. Dans les deux exemples, définissez les identifiants des données brutes StorageGRID, des données préparées ONTAP NAS et des archives via le stockage de secrets géré par Airflow plutôt qu’en JSON inline. L’omission de s3_tabular_object_keys et le réglage de sample_count sur 0 demandent la découverte automatique de tous les fichiers tabulaires éligibles et l’utilisation de toutes les lignes disponibles.

Python, sans XCP, test à deux fichiers :

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 vers 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 vers 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

Avant une exécution de XCP, vérifiez le chemin NFS NAS ONTAP configuré et l'accessibilité de la destination depuis l'hôte XCP. Après une exécution réussie, consultez les journaux des tâches pour [data_prep] effective_config, [xcp_copy] effective_config, [model_training] effective_config et [manual_archive] confirmer le moteur sélectionné, la portée d'entrée, la destination et l'étape d'archivage.