8. Referência de Configuração
Karthikeyan Nagalingam, NetApp
A referência de configuração descreve os parâmetros de tempo de execução que controlam a ingestão de dados, a preparação de dados, a mobilidade de dados XCP, o treinamento, o checkpoint e o arquivamento. O bucket NAS do ONTAP é usado principalmente como a camada de dados preparados e de staging do XCP para suporte e portabilidade. No uso de produção em tempo real, os mesmos dados preparados também podem ser consumidos por meio de caminhos de acesso direto compatíveis com RDMA, quando isso melhor corresponder aos requisitos de carga de trabalho e latência.
Todo o comportamento em tempo de execução é fornecido por meio de dag_run.conf, permitindo que o mesmo DAG atenda a diferentes sistemas de origem, mecanismos de transformação, destinos de armazenamento, políticas de recuperação e escopos de arquivamento. Configure apenas os grupos de parâmetros necessários para o fluxo de trabalho selecionado, mantenha as credenciais no Airflow Connections ou em um backend de segredos e use os exemplos como modelos de não produção, em vez de valores de credenciais.
[[8-1-ingestion-parameters]]
== 8.1 Parâmetros de ingestão
Use estas configurações para selecionar e configurar o mecanismo de ingestão upstream. s3_direct usa os objetos de dados brutos do StorageGRID configurados no grupo de preparação de dados; as configurações do Airbyte e do NiFi são necessárias somente quando essas respectivas ferramentas de ingestão são selecionadas.
| Parâmetro | Padrão | Obrigatório | Descrição | Exemplo |
|---|---|---|---|---|
|
|
Não |
Seleciona o modo de ingestão |
|
|
Nenhum |
Somente o Airbyte |
Endpoint da API do Airbyte |
|
|
Nenhum |
Somente o Airbyte |
ID de conexão do Airbyte |
|
|
Nenhum |
Opcional |
Token Bearer |
|
|
|
Não |
Tempo limite do Airbyte |
|
|
Nenhum |
NiFi apenas |
Endpoint da API do NiFi |
|
|
Nenhum |
NiFi apenas |
Grupo de processos NiFi |
|
|
|
Não |
Tempo limite do NiFi |
|
[[8-2-data-preparation-parameters]]
== 8.2 Parâmetros de Preparação de Dados
Essas configurações controlam o acesso a dados brutos, a saída de dados preparados, a descoberta de entradas e o comportamento de transformação. Os s3_raw_* parâmetros referem-se ao StorageGRID, enquanto os parâmetros compatíveis com código s3_formatted_* identificam o bucket ONTAP NAS onde os dados preparados com carimbo de execução e os manifestos são gravados.
Bucket NAS bruto do StorageGRID / dados preparados do ONTAP:
Configure endpoints e credenciais separados quando o StorageGRID e o bucket NAS do ONTAP usarem serviços compatíveis com S3 ou políticas de acesso diferentes. As chaves genéricas de fallback se aplicam somente quando uma configuração mais específica de dados brutos ou de dados preparados estiver ausente.
| Parâmetro | Padrão | Descrição | Exemplo |
|---|---|---|---|
|
|
Bucket de entrada bruta do StorageGRID |
|
|
|
Prefixo de dados brutos do StorageGRID |
|
|
cadeia de fallback |
Endpoint S3 do StorageGRID |
|
|
cadeia de fallback |
Chave de acesso bruta |
|
|
cadeia de fallback |
Chave secreta bruta |
|
|
|
Região bruta |
|
|
|
Bucket de saída de dados preparados do ONTAP NAS |
|
|
|
Prefixo de dados preparados do ONTAP NAS |
|
|
cadeia de fallback |
Endpoint S3 do bucket NAS do ONTAP |
|
|
cadeia de fallback |
Chave de acesso ao bucket NAS do ONTAP |
|
|
cadeia de fallback |
Chave secreta do bucket NAS do ONTAP |
|
Alternativa geral: 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.
Seleção de entrada:
Use configurações explícitas de chave de objeto para processar entradas CSV conhecidas; caso contrário, a tarefa descobre objetos tabulares qualificados no prefixo bruto configurado do StorageGRID.
| Parâmetro | Padrão | Descrição | Exemplo |
|---|---|---|---|
|
Descoberta automática |
Lista explícita de chaves CSV |
|
|
Nenhum |
Chave CSV explícita única |
|
Transformação:
Selecione o caminho do Python para preparação local simplificada ou o Spark para preparação distribuída. A amostragem e a semente são aplicadas de forma reprodutível às divisões geradas de treinamento, validação e inferência.
| Parâmetro | Padrão | Descrição | Exemplo |
|---|---|---|---|
|
|
|
|
|
|
Falhar em vez de usar uma alternativa |
|
|
|
|
|
|
|
Falhar se o formato não estiver disponível |
|
|
todas as linhas |
Limite de linhas (≤0 = todas) |
|
|
|
Semente de embaralhamento reproduzível |
|
Spark:
Essas configurações se aplicam somente ao Spark transformation_engine=spark. Elas controlam o posicionamento do processo Spark, a alocação de recursos, os limites de tempo e as dependências opcionais de tempo de execução do Delta Lake ou do Iceberg.
| Parâmetro | Padrão | Descrição | Exemplo |
|---|---|---|---|
|
|
Binário do Spark |
|
|
|
Master do Spark |
|
|
|
Memória do driver |
|
|
|
Memória do executor |
|
|
|
Tempo limite (0 = desativado) |
|
|
O Delta 3.2.0 |
Pacote de tempo de execução Delta |
|
|
Iceberg 1.5.2 |
Pacote de tempo de execução do Iceberg |
|
|
|
Nome do catálogo Iceberg |
|
[[8-3-xcp-and-training-destination-parameters]]
== 8.3 Parâmetros de XCP e destino de treinamento
Use este grupo quando enable_xcp=true`para validar a origem NFS NAS do ONTAP, invocar o host XCP e escolher a camada de treinamento ativa. `xcp_copy_destination é a chave de controle: ela seleciona as configurações específicas do ONTAP S3 ou do LustreFS abaixo, e os estágios subsequentes do modelo usam a mesma camada selecionada.
| Parâmetro | Padrão | Obrigatório | Descrição | Exemplo |
|---|---|---|---|---|
|
|
Sim para XCP |
Habilita a ramificação do XCP |
|
|
|
Não |
|
|
|
|
Pré-verificação do XCP |
IP do servidor NFS |
|
|
|
Pré-verificação do XCP |
Caminho de exportação NFS |
|
|
|
Não |
Usuário SSH do host XCP |
|
|
|
Não |
Endereço do host XCP |
|
destino S3 (obrigatório quando xcp_copy_destination=s3):
Forneça essas configurações apenas para o caminho de treinamento do ONTAP S3. O perfil ou as credenciais diretas permitem que o XCP e a lógica de sincronização de artefatos do modelo acessem o bucket e o prefixo do ONTAP S3 selecionados.
| Parâmetro | Padrão | Descrição | Exemplo |
|---|---|---|---|
|
padrão |
Endpoint do XCP S3 |
|
|
Nenhum |
Bucket de destino do XCP |
|
|
|
Prefixo de destino |
|
|
|
Prefixo de descoberta de treinamento |
|
|
|
Perfil de credencial nomeado |
|
|
Nenhum |
Mapa de perfil |
|
|
Nenhum |
Fallback de chave direta |
|
|
Nenhum |
Fallback de segredo direto |
|
|
|
Região do XCP S3 |
|
destino do LustreFS (obrigatório quando xcp_copy_destination=lustrefs):
Forneça essas configurações apenas para o caminho de treinamento do LustreFS. A origem e o destino devem estar montados e acessíveis no host XCP; o destino também deve estar acessível ao worker do Airflow que executa os estágios do modelo.
| Parâmetro | Padrão | Descrição | Exemplo |
|---|---|---|---|
|
|
Origem da cópia do XCP |
|
|
|
Destino de montagem do LustreFS |
|
|
|
Subdiretório de treinamento sob o ponto de montagem |
|
|
|
Identificador da tarefa do XCP |
|
Comportamento do texto-fonte:
Essas opções controlam como os três conjuntos de dados de texto são encontrados após a mobilidade XCP. Chaves explícitas substituem a descoberta; o fallback local pode ser desativado para exigir que as entradas de texto venham do destino XCP selecionado.
| Parâmetro | Padrão | Descrição | Exemplo |
|---|---|---|---|
|
|
Permitir fallback de texto local |
|
|
Automático |
Localização explícita do texto base |
|
|
Automático |
Localização explícita do texto de ajuste fino |
|
|
Automático |
Localização explícita do texto de inferência |
|
[[8-4-model-training-parameters]]
== 8.4 Parâmetros de treinamento do modelo
Essas configurações selecionam a origem local ou fornecida pelo XCP, limitam o volume de treinamento e preservam a ordem reproduzível dos dados. Quando o XCP está ativado, o treinamento lê a camada ONTAP S3 ou LustreFS selecionada e publica os artefatos de linha de base de volta para esse mesmo destino.
| Parâmetro | Padrão | Descrição | Exemplo |
|---|---|---|---|
|
|
Seleciona a fonte XCP ou local |
|
|
|
Seleciona a camada de origem |
|
|
todas as linhas |
Limite de amostras de treinamento |
|
|
|
Embaralhamento reproduzível |
|
Produz: regression_model.bin, text_vectorizer.bin, text_classifier.bin, train_metrics.json.
[[8-5-fine-tuning-parameters]]
== 8.5 Parâmetros de ajuste fino
O ajuste fino materializa os artefatos de texto de referência do destino XCP selecionado, aplica aprendizado incremental ao conjunto de dados de ajuste fino e republica o classificador ajustado e suas métricas. Mantenha as configurações de XCP consistentes com o treinamento do modelo para preservar a procedência dos artefatos.
| Parâmetro | Padrão | Descrição | Exemplo |
|---|---|---|---|
|
|
Permite a materialização/publicação de artefatos |
|
|
|
Seleciona a origem/o destino do artefato |
|
Consome: text_vectorizer.bin, text_classifier.bin, text_finetune.json. Produz: text_classifier_tuned.bin, fine_tune_metrics.json.
[[8-6-inference-parameters]]
== 8.6 Parâmetros de Inferência
Essas opções controlam o escopo da pontuação após o modelo ajustado ser materializado a partir da camada de treinamento selecionada. Habilite qualquer uma das opções quando os requisitos de validação ou de negócios exigirem resultados além da divisão de inferência padrão e da entrada de texto de inferência.
| Parâmetro | Padrão | Descrição | Exemplo |
|---|---|---|---|
|
|
Pontuar divisões de treino/validação/inferência |
|
|
|
Texto para pontuar/base/ajuste fino/inferência |
|
Consome: regression_model.bin, text_vectorizer.bin, text_classifier_tuned.bin. Produz: tabular_predictions.csv, text_predictions.json.
[[8-7-checkpoint-parameters]]
== 8.7 Parâmetros do ponto de verificação
O recurso de checkpointing tem escopo definido para model_training. Essas configurações determinam se o registro de conclusão do treinamento é criado, onde ele é armazenado, como as falhas de upload são tratadas e se uma execução posterior verifica ou reutiliza um resultado válido de treinamento concluído.
| Parâmetro | Padrão | Descrição | Exemplo |
|---|---|---|---|
|
|
Permite a criação de arquivos de ponto de verificação |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Alias retrocompatível |
|
[[8-8-manual-archive-parameters]]
== 8.8 Parâmetros de arquivamento manual
Use este grupo para habilitar o arquivamento do StorageGRID, identificar o bucket de destino e as credenciais, e escolher o ponto de arquivamento. A opção selecionada manual_archive_stage controla tanto o momento do arquivamento quanto se o arquivo contém apenas artefatos de treinamento de linha de base ou o conjunto completo de resultados de inferência.
| Parâmetro | Padrão | Obrigatório | Descrição | Exemplo |
|---|---|---|---|---|
|
|
Não |
Permite o arquivamento |
|
|
|
Não |
Ponto de arquivamento e conjunto de artefatos: |
|
|
|
Sim quando ativado |
Bucket de arquivamento |
|
|
|
Não |
Prefixo de arquivamento |
|
|
padrão |
Somente personalizado |
Endpoint de arquivamento S3 |
|
|
|
Recomendado |
Perfil de credenciais |
|
|
Nenhum |
Opcional |
Mapa de perfil |
|
|
|
Não |
Incluir entradas do XCP no arquivo |
|
|
|
Não |
Remover a pasta local de arquivos brutos após o upload |
|
Sinônimos: fabricpool_archive_* para todos manual_archive_* os parâmetros.
[[8-8-1-manual-archive-stage-decision]]
=== 8.8.1 Decisão manual da etapa de arquivamento
A route_manual_archive_stage tarefa de ramificação lê manual_archive_stage uma vez por execução do DAG. O valor selecionado determina quando o arquivamento é executado e quais artefatos são carregados no bucket de arquivamento do StorageGRID. Os objetos de arquivamento são armazenados em s3://<manual_archive_bucket>/<manual_archive_prefix>/<stage>/<run_stamp>/.
manual_archive_stage valor |
Tempo de arquivamento | Artefatos arquivados | Uso recomendado |
|---|---|---|---|
|
Imediatamente após |
|
Preserve um modelo de linha de base reproduzível, minimize o volume do arquivo ou mantenha um ponto de verificação antes das etapas posteriores |
|
Após |
Todos |
Mantenha o histórico completo dos resultados de negócios e das evidências de previsão para uma execução do modelo |
Para qualquer uma das opções, configure manual_archive_include_xcp_inputs=true para adicionar entradas de treinamento XCP materializadas localmente quando presentes. Configure manual_archive_enabled=false para ignorar a tarefa de arquivamento sem alterar o fluxo de trabalho de treinamento e inferência.
[[8-9-complete-sample-configuration]]
== 8.9 Configuração de amostra completa
Este catálogo fornece configurações iniciais para os principais caminhos de implantação e teste. Cada exemplo pressupõe que os dados brutos estejam no StorageGRID e que os dados preparados sejam gravados no bucket NAS do ONTAP. Substitua os nomes dos buckets, os endereços dos endpoints, os caminhos do sistema de arquivos e os nomes dos perfis pelos valores do ambiente de destino. Não coloque chaves de acesso nem segredos de produção em CONF_JSON; configure-os por meio de Conexões do Airflow, Variáveis ou um backend de segredos.
[[8-9-1-xcp-to-lustrefs-with-spark-and-delta-lake]]
=== 8.9.1 XCP para LustreFS com Spark e Delta Lake
Use este exemplo de throughput total para preparação distribuída e E/S de modelo do LustreFS de alto desempenho. Ele processa todos os arquivos tabulares qualificados em s3_raw_prefix, grava tabelas Delta durante a preparação, persiste o checkpoint de treinamento no bucket de dados preparados do ONTAP NAS e arquiva o conjunto completo de resultados de inferência.
{
"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 Sem XCP com preparação para Python
Use esta configuração de linha de base para uma execução funcional leve. A preparação usa o mecanismo local de Python, e os estágios subsequentes usam os caminhos locais do pipeline para dados preparados e artefatos; XCP, Spark, formatos de tabela, reutilização de checkpoints e arquivamento estão desativados.
{
"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 Preparação do Python com dois arquivos de entrada explícitos
Use este teste específico ao validar o pipeline em relação a dois objetos CSV conhecidos do StorageGRID. s3_tabular_object_keys desativa a descoberta automática de arquivos tabulares; as entradas de texto ainda usam seus locais esperados sob o prefixo 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 Preparação do Python com descoberta automática de todos os arquivos
Omita s3_tabular_object_keys e s3_tabular_object_key para processar todos os objetos tabulares qualificados no prefixo raw do StorageGRID. Este exemplo é adequado para um teste funcional ou de escalabilidade de todos os arquivos usando o mecanismo de preparação do 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 a preparação de dados utiliza todas as linhas disponíveis. Defina um valor positivo para uma execução de teste limitada.
[[8-9-5-xcp-to-ontap-s3-with-python-preparation]]
=== 8.9.5 XCP para o ONTAP S3 com preparação em Python
Use esta configuração quando os dados preparados precisarem ser copiados da exportação NFS do ONTAP NAS para um bucket de treinamento do ONTAP S3. O treinamento, o ajuste fino e a inferência do modelo materializam e publicam artefatos por meio desse mesmo destino do 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 para o ONTAP S3 com Spark e Iceberg
Use esta configuração para preparação distribuída com saída de tabela Iceberg e o ONTAP S3 como destino ativo de treinamento. Defina spark_required e table_format_required como true quando uma execução precisar falhar em vez de recorrer a uma alternativa se o Spark ou o Iceberg não estiverem disponíveis.
{
"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 Resumo da seleção de cenários
| Cenário | Destino do XCP | Mecanismo de preparação | Formato de tabela | Escopo de entrada | Estágio de arquivamento |
|---|---|---|---|---|---|
8.9.1 |
LustreFS |
Fagulha |
Delta |
Todos os arquivos descobertos |
|
8.9.2 |
Nenhum |
Pitão |
Nenhum |
Todos os arquivos descobertos |
Desabilitado |
8.9.3 |
Nenhum |
Pitão |
Nenhum |
Dois arquivos explícitos |
Desabilitado |
8.9.4 |
Nenhum |
Pitão |
Nenhum |
Todos os arquivos descobertos |
Desabilitado |
8.9.5 |
ONTAP S3 |
Pitão |
Nenhum |
Todos os arquivos descobertos |
|
8.9.6 |
ONTAP S3 |
Fagulha |
Iceberg |
Todos os arquivos descobertos |
|
[[8-9-8-execution-walkthroughs]]
=== 8.9.8 passo a passo da execução
Execute os exemplos a partir do workspace do Airflow. O script de acionamento gera um ID de execução exclusivo manual__<UTC timestamp>, aguarda a conclusão e retorna um código de saída diferente de zero para uma execução com falha ou expirada. As configurações completas a seguir usam o mesmo padrão CONF_JSON="$(python3 - <<'PY' …)" que os exemplos operacionais. Configure as conexões gerenciadas pelo Airflow, os perfis XCP e os perfis de arquivamento referenciados no seu backend de segredos antes de executá-los e mantenha CONF_JSON limitado a identificadores não secretos de bucket, endpoint, caminho e perfil.
O nome de formato de tabela válido é iceberg. Não use icerberg, pois não é um valor suportado.
Todos os arquivos, Spark, Iceberg, XCP para o ONTAP S3, checkpoint para o prepared-data S3, arquivamento após a inferência:
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 os arquivos, Spark, Iceberg, XCP para LustreFS, checkpoint para dados preparados no S3, arquivamento após inferência:
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 o modo ONTAP S3, passe apenas o nome não secreto xcp_s3_profile em CONF_JSON e defina as credenciais correspondentes no host XCP ou por meio do armazenamento de segredos gerenciado pelo Airflow antes da execução. Para o modo LustreFS, o xcp_s3_profiles mapa é omitido intencionalmente porque a rota de treinamento não resolve as credenciais do ONTAP S3. Em ambos os exemplos, defina as credenciais de dados brutos do StorageGRID, de dados preparados do ONTAP NAS e de arquivamento por meio do armazenamento de segredos gerenciado pelo Airflow, em vez de JSON embutido. Omitir s3_tabular_object_keys e definir sample_count como 0 solicita a descoberta automática de todos os arquivos tabulares qualificados e o uso de todas as linhas disponíveis.
Teste de dois arquivos em Python, sem XCP:
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 para 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 para o 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 executar o XCP, verifique o caminho NFS do ONTAP NAS configurado e a acessibilidade do destino a partir do host XCP. Após uma execução bem-sucedida, revise os logs de tarefas para [data_prep] effective_config, [xcp_copy] effective_config, [model_training] effective_config, e [manual_archive] para confirmar o mecanismo selecionado, o escopo de entrada, o destino e o estágio de arquivamento.