8. Referencia de configuración
Karthikeyan Nagalingam, NetApp
La referencia de configuración describe los parámetros de tiempo de ejecución que controlan la ingesta de datos, la preparación de datos, la movilidad de XCP, el entrenamiento, la creación de puntos de control y el archivado. El bucket NAS de ONTAP se usa principalmente como la capa de preparación de datos y de staging de XCP para facilitar la capacidad de soporte y la portabilidad. En el uso de producción en tiempo real, los mismos datos preparados también pueden consumirse a través de rutas de acceso directas compatibles con RDMA cuando eso se adapta mejor a los requisitos de la carga de trabajo y la latencia.
Todo el comportamiento en tiempo de ejecución se proporciona a través de dag_run.conf, lo que permite que un mismo DAG dé servicio a diferentes sistemas de origen, motores de transformación, destinos de almacenamiento, políticas de recuperación y ámbitos de archivo. Configura únicamente los grupos de parámetros necesarios para el flujo de trabajo seleccionado, guarda las credenciales en Airflow Connections o en un backend de secretos y utiliza los ejemplos como plantillas para entornos que no sean de producción en lugar de como valores de credenciales.
[[8-1-ingestion-parameters]]
== 8.1 Parámetros de ingestión
Utiliza estos ajustes para seleccionar y configurar el mecanismo de ingesta de origen. s3_direct utiliza los objetos de datos sin procesar de StorageGRID configurados en el grupo de preparación de datos; los ajustes de Airbyte y NiFi solo son necesarios cuando se seleccionan esas herramientas de ingesta.
| Parámetro | Predeterminado | Requerido | Descripción | Ejemplo |
|---|---|---|---|---|
|
|
No |
Selecciona el modo de ingesta |
|
|
Ninguno |
Solo Airbyte |
Punto final de la API de Airbyte |
|
|
Ninguno |
Solo Airbyte |
ID de conexión de Airbyte |
|
|
Ninguno |
Opcional |
Token Bearer |
|
|
|
No |
Tiempo de espera de Airbyte |
|
|
Ninguno |
NiFi solo |
NiFi endpoint de API |
|
|
Ninguno |
NiFi solo |
Grupo de procesos de NiFi |
|
|
|
No |
NiFi tiempo de espera |
|
[[8-2-data-preparation-parameters]]
== 8.2 Parámetros de preparación de datos
Estos parámetros controlan el acceso a los datos sin procesar, la salida de datos preparados, la detección de entradas y el comportamiento de la transformación. Los parámetros s3_raw_* hacen referencia a StorageGRID, mientras que los parámetros compatibles con el código s3_formatted_* identifican el bucket NAS de ONTAP en el que se escriben los datos preparados con marca de ejecución y los manifiestos.
Bucket NAS de StorageGRID sin procesar / ONTAP de datos preparados:
Configura endpoints y credenciales independientes cuando StorageGRID y el bucket NAS de ONTAP utilicen servicios compatibles con S3 o políticas de acceso diferentes. Las claves de reserva genéricas solo se aplican cuando no existe una configuración más específica para datos sin procesar o datos preparados.
| Parámetro | Predeterminado | Descripción | Ejemplo |
|---|---|---|---|
|
|
Compartimento de entrada sin procesar de StorageGRID |
|
|
|
Prefijo de datos sin procesar de StorageGRID |
|
|
cadena de respaldo |
Punto de conexión de StorageGRID S3 |
|
|
cadena de respaldo |
Clave de acceso sin procesar |
|
|
cadena de respaldo |
Clave secreta sin procesar |
|
|
|
Región sin formato |
|
|
|
Depósito de salida de datos preparados de ONTAP NAS |
|
|
|
Prefijo de datos preparados de ONTAP NAS |
|
|
cadena de respaldo |
Punto final S3 del bucket NAS de ONTAP |
|
|
cadena de respaldo |
Clave de acceso al bucket de ONTAP NAS |
|
|
cadena de respaldo |
Clave secreta del bucket de ONTAP NAS |
|
alternativas generales: 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.
Selección de entrada:
Utiliza configuraciones explícitas de claves de objeto para procesar entradas CSV conocidas; de lo contrario, la tarea detecta los objetos tabulares aptos en el prefijo raw configurado de StorageGRID.
| Parámetro | Predeterminado | Descripción | Ejemplo |
|---|---|---|---|
|
Detección automática |
Lista explícita de claves CSV |
|
|
Ninguno |
Una única clave CSV explícita |
|
Transformación:
Selecciona la ruta de Python para una preparación local ligera o Spark para una preparación distribuida. El muestreo y la semilla se aplican de forma reproducible a las divisiones generadas de entrenamiento, validación e inferencia.
| Parámetro | Predeterminado | Descripción | Ejemplo |
|---|---|---|---|
|
|
|
|
|
|
Fail en lugar de fallback |
|
|
|
|
|
|
|
Dará error si el formato no está disponible |
|
|
todas las filas |
Límite de filas (≤0 = todas) |
|
|
|
Semilla de mezcla reproducible |
|
Spark:
Estos ajustes solo se aplican a transformation_engine=spark. Controlan la ubicación de los procesos de Spark, la asignación de recursos, los límites de tiempo y las dependencias opcionales del entorno de ejecución de Delta Lake o Iceberg.
| Parámetro | Predeterminado | Descripción | Ejemplo |
|---|---|---|---|
|
|
Binario de Spark |
|
|
|
Master de Spark |
|
|
|
Memoria del controlador |
|
|
|
Memoria del ejecutor |
|
|
|
Tiempo de espera (0 = desactivado) |
|
|
Delta 3.2.0 |
Paquete de runtime de Delta |
|
|
Iceberg 1.5.2 |
Paquete de tiempo de ejecución de Iceberg |
|
|
|
Nombre del catálogo de Iceberg |
|
[[8-3-xcp-and-training-destination-parameters]]
== 8.3 Parámetros de XCP y del destino de entrenamiento
Utiliza este grupo cuando enable_xcp=true valides el origen NFS de ONTAP NAS, invoques el host XCP y elijas el nivel de entrenamiento activo. xcp_copy_destination es el conmutador de control: selecciona la configuración específica de ONTAP S3 o de LustreFS que aparece a continuación, y las etapas posteriores del modelo usan el mismo nivel seleccionado.
| Parámetro | Predeterminado | Requerido | Descripción | Ejemplo |
|---|---|---|---|---|
|
|
Sí para XCP |
Habilita la rama de XCP |
|
|
|
No |
|
|
|
|
Comprobación previa de XCP |
IP del servidor NFS |
|
|
|
Comprobación previa de XCP |
Ruta de exportación de NFS |
|
|
|
No |
Usuario SSH del host XCP |
|
|
|
No |
Dirección del host de XCP |
|
Destino S3 (obligatorio cuando se utiliza xcp_copy_destination=s3):
Proporciona esta configuración solo para la ruta de entrenamiento de ONTAP S3. El perfil o las credenciales directas permiten que XCP y la lógica de sincronización de artefactos del modelo accedan al bucket y al prefijo de ONTAP S3 seleccionados.
| Parámetro | Predeterminado | Descripción | Ejemplo |
|---|---|---|---|
|
por defecto |
Punto final de XCP S3 |
|
|
Ninguno |
Bucket de destino de XCP |
|
|
|
Prefijo de destino |
|
|
|
Prefijo de detección de entrenamiento |
|
|
|
Perfil de credenciales con nombre |
|
|
Ninguno |
Mapa de perfiles |
|
|
Ninguno |
Alternativa directa de clave |
|
|
Ninguno |
Alternativa directa de secreto |
|
|
|
Región de XCP S3 |
|
Destino de LustreFS (obligatorio cuando se utiliza xcp_copy_destination=lustrefs):
Indica estos parámetros únicamente para la ruta de entrenamiento de LustreFS. El origen y el destino deben estar montados y ser accesibles en el host XCP; además, el destino debe ser accesible para el worker de Airflow que ejecuta las etapas del modelo.
| Parámetro | Predeterminado | Descripción | Ejemplo |
|---|---|---|---|
|
|
Origen de la copia de XCP |
|
|
|
Destino de montaje de LustreFS |
|
|
|
Subdirectorio «training» dentro de «mount» |
|
|
|
Identificador de trabajo de XCP |
|
Comportamiento del texto de origen:
Estas opciones controlan cómo se encuentran los tres conjuntos de datos de texto después de la movilidad XCP. Las claves explícitas prevalecen sobre la detección; la alternativa local se puede desactivar para exigir que las entradas de texto procedan del destino XCP seleccionado.
| Parámetro | Predeterminado | Descripción | Ejemplo |
|---|---|---|---|
|
|
Permitir texto alternativo local |
|
|
Automático |
Ubicación explícita del texto base |
|
|
Automático |
Ubicación explícita del texto de ajuste fino |
|
|
Automático |
Ubicación explícita del texto de inferencia |
|
[[8-4-model-training-parameters]]
== 8.4 parámetros de entrenamiento del modelo
Estos ajustes te permiten seleccionar la fuente local o la proporcionada por XCP, limitar el volumen de entrenamiento y mantener un orden reproducible de los datos. Cuando XCP está habilitado, el entrenamiento lee el nivel seleccionado de ONTAP S3 o LustreFS y publica los artefactos de referencia de nuevo en ese mismo destino.
| Parámetro | Predeterminado | Descripción | Ejemplo |
|---|---|---|---|
|
|
Selecciona XCP o una fuente local |
|
|
|
Selecciona el nivel de origen |
|
|
todas las filas |
Límite de muestras de entrenamiento |
|
|
|
Barajado reproducible |
|
Produce: regression_model.bin, text_vectorizer.bin, text_classifier.bin, train_metrics.json.
[[8-5-fine-tuning-parameters]]
== 8.5 Ajuste preciso de los parámetros
El ajuste fino materializa los artefactos de texto de referencia del destino XCP seleccionado, aplica aprendizaje incremental al conjunto de datos de ajuste fino y vuelve a publicar el clasificador ajustado y sus métricas. Mantén la configuración de XCP coherente con el entrenamiento del modelo para conservar la procedencia de los artefactos.
| Parámetro | Predeterminado | Descripción | Ejemplo |
|---|---|---|---|
|
|
Permite materializar/publicar artefactos |
|
|
|
Selecciona el origen y el destino del artefacto |
|
Consume: text_vectorizer.bin, text_classifier.bin, text_finetune.json. Produce: text_classifier_tuned.bin, fine_tune_metrics.json.
[[8-6-inference-parameters]]
== 8.6 Parámetros de inferencia
Estas opciones controlan el alcance de la puntuación una vez que el modelo ajustado se materializa a partir del nivel de entrenamiento seleccionado. Activa cualquiera de estas opciones cuando los requisitos de validación o del negocio exijan resultados que vayan más allá de la división de inferencia predeterminada y de la entrada de texto de inferencia.
| Parámetro | Predeterminado | Descripción | Ejemplo |
|---|---|---|---|
|
|
Calcular los resultados de los conjuntos de entrenamiento, validación e inferencia |
|
|
|
Calcular puntuación/ajustar/inferir texto |
|
Consume: regression_model.bin, text_vectorizer.bin, text_classifier_tuned.bin. Produce: tabular_predictions.csv, text_predictions.json.
[[8-7-checkpoint-parameters]]
== 8.7 Parámetros de puntos de control
El checkpointing se aplica a model_training. Estos ajustes determinan si se crea el registro de finalización del entrenamiento, dónde se almacena, cómo se gestionan los errores de carga y si una ejecución posterior verifica o reutiliza un resultado válido de entrenamiento completado.
| Parámetro | Predeterminado | Descripción | Ejemplo |
|---|---|---|---|
|
|
Permite la creación de archivos de puntos de control |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Alias retrocompatible |
|
[[8-8-manual-archive-parameters]]
== 8.8 Parámetros de archivado manual
Utiliza este grupo para habilitar el archivado en StorageGRID, identificar el bucket de destino y las credenciales, y seleccionar el punto de archivado. La opción manual_archive_stage seleccionada controla tanto el momento del archivado como si el archivo contiene solo los artefactos de entrenamiento de referencia o el conjunto completo de resultados de inferencia.
| Parámetro | Predeterminado | Requerido | Descripción | Ejemplo |
|---|---|---|---|---|
|
|
No |
Permite el archivado |
|
|
|
No |
Punto de archivado y conjunto de artefactos: |
|
|
|
Sí cuando está activado |
Bucket de archivo |
|
|
|
No |
Prefijo de archivado |
|
|
por defecto |
Solo personalizado |
Punto final S3 del archivo |
|
|
|
Recomendado |
Perfil de credenciales |
|
|
Ninguno |
Opcional |
Mapa de perfiles |
|
|
|
No |
Incluir entradas de XCP en el archivo |
|
|
|
No |
Eliminar la carpeta local «raw» tras la carga |
|
Alias: fabricpool_archive_* para todos los parámetros manual_archive_*.
[[8-8-1-manual-archive-stage-decision]]
=== 8.8.1 Decisión manual sobre la fase de archivado
La tarea de rama route_manual_archive_stage lee manual_archive_stage una vez por cada ejecución de DAG. El valor seleccionado determina tanto cuándo se ejecuta el archivado como qué artefactos se cargan en el bucket de archivado de StorageGRID. Los objetos archivados se almacenan en s3://<manual_archive_bucket>/<manual_archive_prefix>/<stage>/<run_stamp>/.
manual_archive_stage valor |
Tiempos de archivado | Artefactos archivados | Uso recomendado |
|---|---|---|---|
|
Inmediatamente después |
|
Conserva un modelo de referencia reproducible, minimiza el volumen del archivo o conserva un punto de control antes de las etapas posteriores |
|
Después de |
Todos |
Conservar toda la información relativa a los resultados empresariales y a la evidencia de las predicciones de una ejecución del modelo |
En cualquiera de las dos opciones, configura manual_archive_include_xcp_inputs=true para añadir las entradas de entrenamiento de XCP materializadas localmente cuando estén presentes. Configura manual_archive_enabled=false para omitir la tarea de archivado sin cambiar el flujo de trabajo de entrenamiento e inferencia.
[[8-9-complete-sample-configuration]]
== 8.9 Configuración de ejemplo completa
Este catálogo ofrece configuraciones iniciales para las principales rutas de implementación y prueba. Todos los ejemplos dan por hecho que los datos sin procesar están en StorageGRID y que los datos preparados se escriben en el bucket NAS de ONTAP. Sustituye los nombres de los buckets, las direcciones de los endpoints, las rutas del sistema de archivos y los nombres de los perfiles por los valores del entorno de destino. No coloques claves de acceso ni secretos de producción en CONF_JSON; configúralos mediante Airflow Connections, Variables o un backend de secretos.
[[8-9-1-xcp-to-lustrefs-with-spark-and-delta-lake]]
=== 8.9.1 XCP a LustreFS con Spark y Delta Lake
Utiliza este ejemplo de rendimiento completo para la preparación distribuida y las operaciones de E/S del modelo LustreFS de alto rendimiento. Procesa todos los archivos tabulares aptos en s3_raw_prefix, escribe tablas Delta durante la preparación, guarda el checkpoint de entrenamiento en el bucket de datos preparados de ONTAP NAS y archiva el conjunto completo de resultados de inferencia.
{
"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 Sin XCP con preparación de Python
Utiliza esta configuración básica para una ejecución funcional ligera. La preparación utiliza el motor local de Python y las etapas posteriores usan las rutas locales de datos preparados y artefactos del pipeline; XCP, Spark, los formatos de tabla, la reutilización de checkpoints y el archivado están desactivados.
{
"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 Preparación de Python con dos archivos de entrada explícitos
Utiliza esta prueba específica para validar el proceso con dos objetos CSV de StorageGRID conocidos. s3_tabular_object_keys desactiva la detección automática de archivos tabulares; los campos de texto siguen utilizando las ubicaciones previstas bajo el prefijo 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 Preparación de Python con detección automática de todos los archivos
Omite s3_tabular_object_keys y s3_tabular_object_key para procesar todos los objetos tabulares aptos bajo el prefijo raw de StorageGRID. Este ejemplo es adecuado para una prueba funcional o de escalabilidad de todos los archivos con el motor de preparación de 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 que la preparación de datos utiliza todas las filas disponibles. Establece un valor positivo para una ejecución de prueba limitada.
[[8-9-5-xcp-to-ontap-s3-with-python-preparation]]
=== 8.9.5 Preparación de XCP a ONTAP S3 con Python
Utiliza esta configuración cuando sea necesario copiar datos preparados desde la exportación NFS de ONTAP NAS a un bucket de entrenamiento de ONTAP S3. El entrenamiento de modelos, el ajuste fino y la inferencia generan y publican artefactos a través de ese mismo destino de 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 to ONTAP S3 con Spark e Iceberg
Utiliza esta configuración para la preparación distribuida con salida de tabla Iceberg y ONTAP S3 como destino activo de entrenamiento. Establece spark_required y table_format_required en true cuando una ejecución deba fallar en lugar de usar una alternativa si Spark o Iceberg no están disponibles.
{
"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 Resumen de la selección de escenarios
| Guión | Destino de XCP | Motor de preparación | Formato de tabla | Ámbito de entrada | Fase de archivo |
|---|---|---|---|---|---|
8.9.1 |
LustreFS |
Chispa |
Delta |
Todos los archivos detectados |
|
8.9.2 |
Ninguno |
Pitón |
Ninguno |
Todos los archivos detectados |
Deshabilitado |
8.9.3 |
Ninguno |
Pitón |
Ninguno |
Dos archivos explícitos |
Deshabilitado |
8.9.4 |
Ninguno |
Pitón |
Ninguno |
Todos los archivos detectados |
Deshabilitado |
8.9.5 |
ONTAP S3 |
Pitón |
Ninguno |
Todos los archivos detectados |
|
8.9.6 |
ONTAP S3 |
Chispa |
Iceberg |
Todos los archivos detectados |
|
[[8-9-8-execution-walkthroughs]]
=== 8.9.8 guías paso a paso de ejecución
Ejecuta los ejemplos desde el espacio de trabajo de Airflow. El script de activación genera un manual__<UTC timestamp> ID de ejecución único, espera a que finalice y devuelve un código de salida distinto de cero en caso de error o de que se agote el tiempo de espera. Las siguientes configuraciones completas utilizan el mismo CONF_JSON="$(python3 - <<'PY' …)" patrón que los ejemplos operativos. Configura las conexiones gestionadas por Airflow, los perfiles XCP y los perfiles de archivado a los que se hace referencia en tu backend de secretos antes de ejecutarlas, y limita CONF_JSON a identificadores no secretos de buckets, endpoints, rutas y perfiles.
El nombre válido del formato de tabla es iceberg. No utilices icerberg, ya que no es un valor admitido.
Todos los archivos, Spark, Iceberg, XCP a ONTAP S3, punto de control a S3 de datos preparados, archivo después de la inferencia:
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
Todos los archivos, Spark, Iceberg, XCP a LustreFS, checkpoint a prepared-data S3, archivo después de la inferencia:
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
Para el modo ONTAP S3, introduce solo el nombre no secreto xcp_s3_profile en CONF_JSON y define las credenciales correspondientes en el host XCP o mediante el almacenamiento de secretos gestionado por Airflow antes de la ejecución. Para el modo LustreFS, el xcp_s3_profiles mapa se omite intencionadamente porque la ruta de entrenamiento no resuelve las credenciales de ONTAP S3. En ambos ejemplos, define las credenciales de datos sin procesar de StorageGRID, de datos preparados de ONTAP NAS y de archivo mediante el almacenamiento de secretos gestionado por Airflow en lugar de JSON en línea. Omitir s3_tabular_object_keys y establecer sample_count en 0 solicita el descubrimiento automático de todos los archivos tabulares aptos y el uso de todas las filas disponibles.
Python, sin XCP, prueba de dos archivos:
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 a 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 a 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
Antes de ejecutar XCP, comprueba la ruta NFS del NAS de ONTAP configurada y la accesibilidad del destino desde el host de XCP. Después de una ejecución correcta, revisa los registros de tareas de [data_prep] effective_config, [xcp_copy] effective_config, [model_training] effective_config y [manual_archive] para confirmar el motor seleccionado, el ámbito de entrada, el destino y la etapa de archivo.