8. Riferimento di configurazione
Karthikeyan Nagalingam, NetApp
Il riferimento di configurazione descrive i parametri di runtime che controllano l'acquisizione dei dati, la preparazione dei dati, la mobilità XCP, l'addestramento, il checkpointing e l'archiviazione. Il bucket ONTAP NAS viene utilizzato principalmente come livello di staging per i dati preparati e XCP, per garantire supportabilità e portabilità. Nell'utilizzo in produzione real-time, gli stessi dati preparati possono anche essere utilizzati tramite percorsi di accesso diretti compatibili con RDMA, quando questo corrisponde meglio ai requisiti di carico di lavoro e latenza.
Tutto il comportamento in fase di esecuzione viene fornito tramite dag_run.conf, consentendo allo stesso DAG di servire diversi sistemi di origine, motori di trasformazione, destinazioni di storage, criteri di ripristino e ambiti di archiviazione. Configura solo i gruppi di parametri necessari per il workflow selezionato, mantieni le credenziali in Airflow Connections o in un backend di segreti e utilizza gli esempi come modelli non di produzione anziché come valori delle credenziali.
[[8-1-ingestion-parameters]]
== 8.1 Parametri di ingestione
Usa queste impostazioni per selezionare e configurare il meccanismo di acquisizione upstream. s3_direct utilizza gli oggetti dati raw di StorageGRID configurati nel gruppo di preparazione dei dati; le impostazioni di Airbyte e NiFi sono necessarie solo quando vengono selezionati i rispettivi strumenti di acquisizione.
| Parametro | Predefinito | Richiesto | Descrizione | Esempio |
|---|---|---|---|---|
|
|
NO |
Seleziona la modalità di ingestione |
|
|
Nessuno |
Solo Airbyte |
Endpoint API Airbyte |
|
|
Nessuno |
Solo Airbyte |
ID di connessione Airbyte |
|
|
Nessuno |
Opzionale |
token Bearer |
|
|
|
NO |
Timeout di Airbyte |
|
|
Nessuno |
NiFi soltanto |
NiFi endpoint API |
|
|
Nessuno |
NiFi soltanto |
gruppo di processi NiFi |
|
|
|
NO |
timeout di NiFi |
|
[[8-2-data-preparation-parameters]]
== 8.2 Parametri di preparazione dei dati
Queste impostazioni controllano l'accesso ai dati raw, l'output dei dati preparati, il rilevamento degli input e il comportamento di trasformazione. I parametri s3_raw_* fanno riferimento a StorageGRID, mentre i parametri compatibili con il codice s3_formatted_* identificano il bucket ONTAP NAS in cui vengono scritti i dati preparati, con timestamp di esecuzione, e i manifest.
Bucket NAS StorageGRID raw / dati preparati ONTAP:
Configura endpoint e credenziali separati quando StorageGRID e il bucket ONTAP NAS utilizzano servizi compatibili con S3 o criteri di accesso diversi. Le chiavi di fallback generiche si applicano solo quando manca un'impostazione più specifica per raw o per i dati preparati.
| Parametro | Predefinito | Descrizione | Esempio |
|---|---|---|---|
|
|
Bucket di input raw di StorageGRID |
|
|
|
Prefisso raw-data di StorageGRID |
|
|
catena di fallback |
Endpoint S3 di StorageGRID |
|
|
catena di fallback |
Chiave di accesso raw |
|
|
catena di fallback |
chiave segreta raw |
|
|
|
Regione raw |
|
|
|
Bucket di output dei dati preparati ONTAP NAS |
|
|
|
Prefisso prepared-data di ONTAP NAS |
|
|
catena di fallback |
Endpoint S3 del bucket NAS ONTAP |
|
|
catena di fallback |
Chiave di accesso al bucket NAS ONTAP |
|
|
catena di fallback |
Chiave segreta del bucket NAS ONTAP |
|
Ripiego generale: 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.
Selezione dell'input:
Usa impostazioni esplicite per le chiavi degli oggetti per elaborare input CSV noti; altrimenti, l'attività individua gli oggetti tabellari idonei nel prefisso raw di StorageGRID configurato.
| Parametro | Predefinito | Descrizione | Esempio |
|---|---|---|---|
|
Scoperta automatica |
Elenco esplicito delle chiavi CSV |
|
|
Nessuno |
Singola chiave CSV esplicita |
|
Trasformazione:
Seleziona il percorso Python per una preparazione locale leggera o Spark per una preparazione distribuita. Il campionamento e il seed si applicano in modo riproducibile alle suddivisioni generate per l'addestramento, la convalida e l'inferenza.
| Parametro | Predefinito | Descrizione | Esempio |
|---|---|---|---|
|
|
|
|
|
|
Non eseguire il fallback, ma restituisci un errore |
|
|
|
|
|
|
|
Non riuscire se il formato non è disponibile |
|
|
tutte le righe |
Limite di righe (≤0 = tutte) |
|
|
|
Seed di rimescolamento riproducibile |
|
Spark:
Queste impostazioni si applicano solo a transformation_engine=spark. Controllano il posizionamento dei processi Spark, l'allocazione delle risorse, i limiti di tempo e le dipendenze di runtime opzionali di Delta Lake o Iceberg.
| Parametro | Predefinito | Descrizione | Esempio |
|---|---|---|---|
|
|
binario Spark |
|
|
|
Spark master |
|
|
|
Memoria del driver |
|
|
|
Memoria dell'esecutore |
|
|
|
Timeout (0 = disabilitato) |
|
|
Delta 3.2.0 |
Pacchetto runtime Delta |
|
|
Iceberg 1.5.2 |
Pacchetto runtime Iceberg |
|
|
|
Nome del catalogo Iceberg |
|
[[8-3-xcp-and-training-destination-parameters]]
== 8.3 XCP e parametri di destinazione per il training
Usa questo gruppo quando enable_xcp=true convalidi l'origine ONTAP NAS NFS, richiami l'host XCP e scegli il livello di training attivo. xcp_copy_destination è l'interruttore di controllo: seleziona le impostazioni specifiche di ONTAP S3 o di LustreFS riportate di seguito e le fasi successive del modello utilizzano lo stesso livello selezionato.
| Parametro | Predefinito | Richiesto | Descrizione | Esempio |
|---|---|---|---|---|
|
|
Sì per XCP |
Abilita il branch XCP |
|
|
|
NO |
|
|
|
|
Controllo preflight di XCP |
IP del server NFS |
|
|
|
Controllo preflight di XCP |
Percorso di esportazione NFS |
|
|
|
NO |
Utente SSH dell'host XCP |
|
|
|
NO |
indirizzo host XCP |
|
Destinazione S3 (obbligatoria quando xcp_copy_destination=s3):
Fornisci queste impostazioni solo per il percorso di training ONTAP S3. Il profilo o le credenziali dirette consentono a XCP e alla logica di sincronizzazione degli artefatti del modello di accedere al bucket e al prefisso ONTAP S3 selezionati.
| Parametro | Predefinito | Descrizione | Esempio |
|---|---|---|---|
|
predefinito |
Endpoint XCP S3 |
|
|
Nessuno |
Bucket di destinazione XCP |
|
|
|
Prefisso di destinazione |
|
|
|
prefisso di individuazione dell'addestramento |
|
|
|
Profilo di credenziali denominate |
|
|
Nessuno |
Mappa del profilo |
|
|
Nessuno |
Fallback diretto della chiave |
|
|
Nessuno |
Fallback diretto del segreto |
|
|
|
Regione XCP S3 |
|
Destinazione LustreFS (obbligatoria quando xcp_copy_destination=lustrefs):
Fornisci queste impostazioni solo per il percorso di addestramento LustreFS. La sorgente e la destinazione devono essere montate e accessibili sull'host XCP; la destinazione deve inoltre essere accessibile al worker di Airflow che esegue le fasi del modello.
| Parametro | Predefinito | Descrizione | Esempio |
|---|---|---|---|
|
|
Sorgente di copia XCP |
|
|
|
destinazione di montaggio LustreFS |
|
|
|
Sottocartella di training sotto mount |
|
|
|
Identificatore del processo XCP |
|
Comportamento del testo di origine:
Queste opzioni controllano come vengono individuati i tre dataset di testo dopo la mobilità XCP. Le chiavi esplicite hanno la precedenza sul rilevamento automatico; puoi disabilitare il fallback locale per richiedere che gli input di testo provengano dalla destinazione XCP selezionata.
| Parametro | Predefinito | Descrizione | Esempio |
|---|---|---|---|
|
|
Consenti il fallback del testo locale |
|
|
Auto |
Posizione esplicita del testo di base |
|
|
Auto |
Posizione esplicita del testo di fine-tuning |
|
|
Auto |
Posizione esplicita del testo di inferenza |
|
[[8-4-model-training-parameters]]
== 8.4 Parametri di addestramento del modello
Queste impostazioni consentono di selezionare l'origine locale o quella fornita tramite XCP, limitare il volume di addestramento e preservare l'ordine riproducibile dei dati. Quando XCP è abilitato, l'addestramento legge il tier ONTAP S3 o LustreFS selezionato e pubblica gli artefatti di base nella stessa destinazione.
| Parametro | Predefinito | Descrizione | Esempio |
|---|---|---|---|
|
|
Seleziona XCP o la sorgente locale |
|
|
|
Seleziona il livello di origine |
|
|
tutte le righe |
Limite del campione di addestramento |
|
|
|
Mescolamento riproducibile |
|
Produce: regression_model.bin, text_vectorizer.bin, text_classifier.bin, train_metrics.json.
[[8-5-fine-tuning-parameters]]
== 8.5 Parametri di ottimizzazione
La fase di fine-tuning materializza gli artefatti di testo di base dalla destinazione XCP selezionata, applica l'apprendimento incrementale al dataset di fine-tuning e ripubblica il classificatore ottimizzato e le relative metriche. Mantieni le relative impostazioni XCP coerenti con l'addestramento del modello per preservare la provenienza degli artefatti.
| Parametro | Predefinito | Descrizione | Esempio |
|---|---|---|---|
|
|
Consente di materializzare/pubblicare l'artefatto |
|
|
|
Seleziona l'origine/la destinazione dell'artefatto |
|
Consuma: text_vectorizer.bin, text_classifier.bin, text_finetune.json. Produce: text_classifier_tuned.bin, fine_tune_metrics.json.
[[8-6-inference-parameters]]
== 8.6 Parametri di inferenza
Questi flag controllano l'ambito del punteggio dopo che il modello ottimizzato è stato materializzato dal livello di addestramento selezionato. Abilita una delle due opzioni quando la convalida o i requisiti aziendali richiedono output che vanno oltre la suddivisione predefinita dell'inferenza e l'input di testo per l'inferenza.
| Parametro | Predefinito | Descrizione | Esempio |
|---|---|---|---|
|
|
Punteggio suddivisioni train/val/infer |
|
|
|
Valuta il testo di base/finetune/infer |
|
Consuma: regression_model.bin, text_vectorizer.bin, text_classifier_tuned.bin. Produce: tabular_predictions.csv, text_predictions.json.
[[8-7-checkpoint-parameters]]
== 8.7 Parametri del checkpoint
Il checkpointing è limitato a model_training. Queste impostazioni determinano se viene creato il record di completamento dell'addestramento, dove viene memorizzato, come vengono gestiti gli errori di caricamento e se un'esecuzione successiva verifica o riutilizza un risultato di addestramento completato valido.
| Parametro | Predefinito | Descrizione | Esempio |
|---|---|---|---|
|
|
Consente la creazione di file di checkpoint |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Alias retrocompatibile |
|
[[8-8-manual-archive-parameters]]
== 8.8 Parametri di archiviazione manuale
Usa questo gruppo per abilitare l'archiviazione di StorageGRID, identificare il bucket di destinazione e le credenziali e scegliere il punto di archiviazione. L'opzione selezionata manual_archive_stage controlla sia la tempistica dell'archiviazione sia se l'archivio contiene solo gli artefatti di training di base o l'intero set di risultati dell'inferenza.
| Parametro | Predefinito | Richiesto | Descrizione | Esempio |
|---|---|---|---|---|
|
|
NO |
Consente l'archiviazione |
|
|
|
NO |
Punto di archiviazione e set di artefatti: |
|
|
|
Sì quando abilitato |
Bucket di archivio |
|
|
|
NO |
Prefisso dell'archivio |
|
|
predefinito |
Solo personalizzato |
Endpoint S3 di archiviazione |
|
|
|
Consigliato |
Profilo credenziali |
|
|
Nessuno |
Opzionale |
Mappa del profilo |
|
|
|
NO |
Includi gli input XCP nell'archivio |
|
|
|
NO |
Rimuovi la cartella raw locale dopo il caricamento |
|
Alias: fabricpool_archive_* per tutti manual_archive_* i parametri.
[[8-8-1-manual-archive-stage-decision]]
=== 8.8.1 Decisione manuale della fase di archiviazione
L'attività di branch legge route_manual_archive_stage manual_archive_stage`una volta per esecuzione del DAG. Il valore selezionato determina sia quando viene eseguita l'archiviazione sia quali artefatti vengono caricati nel bucket di archiviazione di StorageGRID. Gli oggetti di archivio vengono memorizzati in `s3://<manual_archive_bucket>/<manual_archive_prefix>/<stage>/<run_stamp>/.
manual_archive_stage valore |
Tempistiche di archiviazione | Artefatti archiviati | Uso consigliato |
|---|---|---|---|
|
Immediatamente dopo |
|
Preserva un modello di base riproducibile, riduci al minimo il volume dell'archivio o conserva un checkpoint prima delle fasi successive |
|
Dopo |
Tutti |
Conserva i risultati aziendali completi e le prove predittive per un'esecuzione del modello |
Per entrambe le selezioni, imposta manual_archive_include_xcp_inputs=true per aggiungere gli input di training XCP materializzati localmente, se presenti. Imposta manual_archive_enabled=false per saltare l'attività di archiviazione senza modificare il flusso di lavoro di training e inferenza.
[[8-9-complete-sample-configuration]]
== 8.9 Configurazione di esempio completa
Questo catalogo fornisce configurazioni iniziali per i principali percorsi di implementazione e test. Ogni esempio presuppone che i dati raw siano in StorageGRID e che i dati preparati vengano scritti nel bucket NAS ONTAP. Sostituisci i nomi dei bucket, gli indirizzi degli endpoint, i percorsi del filesystem e i nomi dei profili con i valori dell'ambiente di destinazione. Non inserire chiavi di accesso o segreti di produzione in CONF_JSON; configurali tramite Airflow Connections, Variables o un backend dei segreti.
[[8-9-1-xcp-to-lustrefs-with-spark-and-delta-lake]]
=== 8.9.1 Da XCP a LustreFS con Spark e Delta Lake
Utilizza questo esempio a velocità effettiva completa per la preparazione distribuita e l'I/O del modello LustreFS dalle performance elevate. Elabora tutti i file tabellari idonei in s3_raw_prefix, scrive le tabelle Delta durante la preparazione, salva il checkpoint di addestramento nel bucket dei dati preparati di ONTAP NAS e archivia l'intero set di risultati dell'inferenza.
{
"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 Nessun XCP con preparazione di Python
Utilizza questa configurazione di riferimento per un'esecuzione funzionale leggera. La fase di preparazione utilizza il motore Python locale, mentre le fasi successive utilizzano i percorsi locali dei dati preparati e degli artefatti della pipeline; XCP, Spark, i formati di tabella, il riutilizzo dei checkpoint e l'archiviazione sono disabilitati.
{
"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 Preparazione di Python con due file di input espliciti
Utilizza questo test mirato quando convalidi la pipeline rispetto a due oggetti CSV StorageGRID noti. s3_tabular_object_keys disabilita il rilevamento automatico dei file tabellari; gli input di testo utilizzano comunque le posizioni previste nel prefisso raw.
{
"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 Preparazione di Python con rilevamento automatico di tutti i file
Ometti s3_tabular_object_keys e s3_tabular_object_key per elaborare ogni oggetto tabellare idoneo nel prefisso raw di StorageGRID. Questo esempio è adatto per un test funzionale o di scalabilità su tutti i file utilizzando il motore di preparazione 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 significa che la preparazione dei dati utilizza tutte le righe disponibili. Imposta un valore positivo per un'esecuzione di test limitata.
[[8-9-5-xcp-to-ontap-s3-with-python-preparation]]
=== 8.9.5 Preparazione da XCP a ONTAP S3 con Python
Usa questa configurazione quando i dati preparati devono essere copiati dall'esportazione NFS NAS di ONTAP a un training bucket S3 di ONTAP. L'addestramento del modello, il fine-tuning e l'inferenza materializzano e pubblicano gli artefatti tramite la stessa destinazione S3 di ONTAP.
{
"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 a ONTAP S3 con Spark e Iceberg
Usa questa configurazione per la preparazione distribuita con output di tabella Iceberg e ONTAP S3 come destinazione di training attiva. Imposta spark_required e table_format_required su true quando un'esecuzione deve non riuscire invece di eseguire il fallback se Spark o Iceberg non sono disponibili.
{
"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 Riepilogo della selezione degli scenari
| Scenario | destinazione XCP | Motore di preparazione | Formato tabella | Ambito di input | Fase di archiviazione |
|---|---|---|---|---|---|
8.9.1 |
LustreFS |
Scintilla |
Delta |
Tutti i file rilevati |
|
8.9.2 |
Nessuno |
Pitone |
Nessuno |
Tutti i file rilevati |
Disattivato |
8.9.3 |
Nessuno |
Pitone |
Nessuno |
Due file espliciti |
Disattivato |
8.9.4 |
Nessuno |
Pitone |
Nessuno |
Tutti i file rilevati |
Disattivato |
8.9.5 |
ONTAP S3 |
Pitone |
Nessuno |
Tutti i file rilevati |
|
8.9.6 |
ONTAP S3 |
Scintilla |
Iceberg |
Tutti i file rilevati |
|
[[8-9-8-execution-walkthroughs]]
=== 8.9.8 Procedure dettagliate di esecuzione
Esegui gli esempi dall'area di lavoro di Airflow. Lo script di attivazione genera un ID di esecuzione univoco manual__<UTC timestamp>, attende il completamento e restituisce un codice di uscita diverso da zero in caso di errore o timeout. Le seguenti configurazioni complete utilizzano lo stesso schema CONF_JSON="$(python3 - <<'PY' …)" degli esempi operativi. Configura le connessioni gestite da Airflow, i profili XCP e i profili di archiviazione a cui si fa riferimento nel backend dei segreti prima di eseguirli e limitati CONF_JSON agli identificatori non segreti di bucket, endpoint, percorsi e profili.
Il nome del formato tabella valido è iceberg. Non utilizzare icerberg, che non è un valore supportato.
Tutti i file, Spark, Iceberg, XCP su ONTAP S3, checkpoint su prepared-data S3, archiviazione dopo l'inferenza:
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
Tutti i file, Spark, Iceberg, XCP su LustreFS, checkpoint su prepared-data S3, archivio dopo l'inferenza:
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
Per la modalità ONTAP S3, passa solo il nome non segreto xcp_s3_profile in CONF_JSON e definisci le credenziali corrispondenti sull'host XCP o tramite l'archiviazione dei segreti gestita da Airflow prima dell'esecuzione. Per la modalità LustreFS, la xcp_s3_profiles mappa viene intenzionalmente omessa perché il percorso di training non risolve le credenziali ONTAP S3. In entrambi gli esempi, definisci le credenziali per i dati raw di StorageGRID, i dati preparati di ONTAP NAS e l'archivio tramite l'archiviazione dei segreti gestita da Airflow anziché nel JSON inline. Omettere s3_tabular_object_keys e impostare sample_count su 0 richiede il rilevamento automatico di tutti i file tabulari idonei e l'uso di tutte le righe disponibili.
Python, senza XCP, test con due file:
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 su 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 verso 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
Prima di eseguire XCP, verifica il percorso NFS ONTAP NAS configurato e l'accessibilità della destinazione dall'host XCP. Dopo un'esecuzione riuscita, esamina i log delle attività per [data_prep] effective_config, [xcp_copy] effective_config, [model_training] effective_config e [manual_archive] per confermare il motore selezionato, l'ambito di input, la destinazione e la fase di archiviazione.