Usando a interface de linha de comando do TFX
A interface de linha de comando (CLI) do TFX executa uma gama completa de ações de pipeline usando orquestradores de pipeline, como Kubeflow Pipelines e Vertex Pipelines. O orquestrador local também pode ser usado para desenvolvimento ou depuração mais rápidos. Apache Beam e Apache Airflow são suportados como recursos experimentais. Por exemplo, você pode usar a CLI para:
Criar, atualizar e excluir pipelines.
Executar um pipeline e monitorar a execução em vários orquestradores.
Listar pipelines e execuções de pipeline.
Observação: o TFX CLI atualmente não oferece garantias de compatibilidade. A interface CLI pode mudar à medida que novas versões forem lançadas.
Sobre a CLI do TFX
A CLI do TFX é instalada como parte do pacote TFX. Todos os comandos CLI seguem a estrutura abaixo:
tfx <var>command-group</var> <var>command</var> <var>flags</var>
As seguintes opções de command-group são atualmente suportadas:
tfx pipeline - Criar e gerenciar pipelines TFX.
tfx run - Criar e gerenciar execuções de pipelines TFX em várias plataformas de orquestração.
tfx template - Comandos experimentais para listar e copiar templates de pipelines TFX.
Cada grupo de comandos fornece um conjunto de comandos. Siga as instruções nas seções comandos de pipeline, comandos de execução e comandos de template para saber mais sobre como usar esses comandos.
Aviso: atualmente nem todos os comandos são suportados em todos os orquestradores. Esses comandos mencionam explicitamente os mecanismos suportados.
Os sinalizadores permitem que você passe argumentos para os comandos da CLI. As palavras nos sinalizadores são separadas ou por um hífen (-
) ou por sublinhado (_
). Por exemplo, o sinalizador do nome do pipeline pode ser especificado como --pipeline-name
ou --pipeline_name
. Este documento especifica sinalizadores com sublinhados por questões de brevidade. Saiba mais sobre os sinalizadores usados na CLI do TFX.
tfx pipeline
A estrutura dos comandos no grupo de comandos tfx pipeline
é a seguinte:
tfx pipeline <var>command</var> <var>required-flags</var> [<var>optional-flags</var>]
Use as seções a seguir para saber mais sobre os comandos no grupo de comandos do tfx pipeline
.
create
Cria um novo pipeline no orquestrador fornecido.
Uso
tfx pipeline create --pipeline_path=<var>pipeline-path</var> [--endpoint=<var>endpoint</var> --engine=<var>engine</var> \ --iap_client_id=<var>iap-client-id</var> --namespace=<var>namespace</var> \ --build_image --build_base_image=<var>build-base-image</var>]
- --pipeline_path=pipeline-path
- O caminho para o arquivo de configuração do pipeline.
- --endpoint=endpoint
-
(Opcional.) Endpoint do serviço da API Kubeflow Pipelines. O endpoint do seu serviço de API do Kubeflow Pipelines é o mesmo que a URL do painel do Kubeflow Pipelines. O valor do seu endpoint deve ser algo como:
(Opcional.) O orquestrador a ser usado para o pipeline. O valor de engine deve corresponder a um dos seguintes valores:
- kubeflow: define o motor como Kubeflow
- local: define o motor como orquestrador local
- vertex: define o motor como Vertex Pipelines
- airflow: (experimental) define o motor como Apache Airflow
- beam: (experimental) define o motor como Apache Beam
Se o engine não estiver configurado, ele será detectado automaticamente com base no ambiente.
** Nota importante: O orquestrador exigido pelo DagRunner no arquivo de configuração do pipeline deve corresponder ao motor selecionado ou detectado automaticamente. A detecção automática do motor é baseada no ambiente do usuário. Se o Apache Airflow e o Kubeflow Pipelines não estiverem instalados, o orquestrador local será usado por padrão.
kubeflow
.(Opcional.) Quando o engine é kubeflow ou vertex, o TFX cria uma imagem de container para seu pipeline, se especificado. `Dockerfile` no diretório atual será usado e o TFX irá gerar um automaticamente se não existir.
A imagem construída será enviada para o registro remoto especificado em `KubeflowDagRunnerConfig` ou `KubeflowV2DagRunnerConfig`.
(Opcional.) Quando o engine é kubeflow, o TFX cria uma imagem de container para seu pipeline. A imagem base do build especifica a imagem de container base a ser usada ao criar a imagem do container do pipeline.
Exemplos:
Kubeflow:
tfx pipeline create --engine=kubeflow --pipeline_path=<var>pipeline-path</var> \ --iap_client_id=<var>iap-client-id</var> --namespace=<var>namespace</var> --endpoint=<var>endpoint</var> \ --build_image
Local:
tfx pipeline create --engine=local --pipeline_path=<var>pipeline-path</var>
Vertex:
tfx pipeline create --engine=vertex --pipeline_path=<var>pipeline-path</var> \ --build_image
Para detectar automaticamente o motor do ambiente do usuário, simplesmente evite usar o sinalizador engine como no exemplo abaixo. Para mais detalhes, veja a seção sobre sinalizadores.
tfx pipeline create --pipeline_path=<var>pipeline-path</var>
update
Atualiza um pipeline existente no orquestrador fornecido.
Uso:
tfx pipeline update --pipeline_path=<var>pipeline-path</var> [--endpoint=<var>endpoint</var> --engine=<var>engine</var> \ --iap_client_id=<var>iap-client-id</var> --namespace=<var>namespace</var> --build_image]
- --pipeline_path=pipeline-path
- O caminho para o arquivo de configuração do pipeline.
- --endpoint=endpoint
-
(Opcional.) Endpoint do serviço da API Kubeflow Pipelines. O endpoint do seu serviço de API do Kubeflow Pipelines é o mesmo que a URL do painel do Kubeflow Pipelines. O valor do seu endpoint deve ser algo como:
(Opcional.) O orquestrador a ser usado para o pipeline. O valor de engine deve corresponder a um dos seguintes valores:
- kubeflow: define o motor como Kubeflow
- local: define o motor como orquestrador local
- vertex: define o motor como Vertex Pipelines
- airflow: (experimental) define o motor como Apache Airflow
- beam: (experimental) define o motor como Apache Beam
Se o engine não estiver configurado, ele será detectado automaticamente com base no ambiente.
** Nota importante: O orquestrador exigido pelo DagRunner no arquivo de configuração do pipeline deve corresponder ao motor selecionado ou detectado automaticamente. A detecção automática do motor é baseada no ambiente do usuário. Se o Apache Airflow e o Kubeflow Pipelines não estiverem instalados, o orquestrador local será usado por padrão.
kubeflow
.(Opcional.) Quando o engine é kubeflow ou vertex, o TFX cria uma imagem de container para seu pipeline, se especificado. `Dockerfile` no diretório atual será usado.
A imagem construída será enviada para o registro remoto especificado em `KubeflowDagRunnerConfig` ou `KubeflowV2DagRunnerConfig`.
Exemplos:
Kubeflow:
tfx pipeline update --engine=kubeflow --pipeline_path=<var>pipeline-path</var> \ --iap_client_id=<var>iap-client-id</var> --namespace=<var>namespace</var> --endpoint=<var>endpoint</var> \ --build_image
Local:
tfx pipeline update --engine=local --pipeline_path=<var>pipeline-path</var>
Vertex:
tfx pipeline update --engine=vertex --pipeline_path=<var>pipeline-path</var> \ --build_image
compile
Compila o arquivo de configuração do pipeline para criar um arquivo de workflow no Kubeflow e executa as seguintes verificações durante a compilação:
Verifica se o caminho do pipeline é válido.
Verifica se os dados do pipeline foram extraídos com sucesso do arquivo de configuração do pipeline.
Verifica se o DagRunner na configuração do pipeline corresponde ao motor.
Verifica se o arquivo de workflow foi criado com sucesso no caminho do pacote fornecido (somente para Kubeflow).
Recomenda-se usar antes de criar ou atualizar um pipeline.
Uso:
tfx pipeline compile --pipeline_path=<var>pipeline-path</var> [--engine=<var>engine</var>]
- --pipeline_path=pipeline-path
- O caminho para o arquivo de configuração do pipeline.
- --engine=engine
-
(Opcional.) O orquestrador a ser usado para o pipeline. O valor de engine deve corresponder a um dos seguintes valores:
- kubeflow: define o motor como Kubeflow
- local: define o motor como orquestrador local
- vertex: define o motor como Vertex Pipelines
- airflow: (experimental) define o motor como Apache Airflow
- beam: (experimental) define o motor como Apache Beam
Se o engine não estiver configurado, ele será detectado automaticamente com base no ambiente.
** Nota importante: O orquestrador exigido pelo DagRunner no arquivo de configuração do pipeline deve corresponder ao motor selecionado ou detectado automaticamente. A detecção automática do motor é baseada no ambiente do usuário. Se o Apache Airflow e o Kubeflow Pipelines não estiverem instalados, o orquestrador local será usado por padrão.
Exemplos:
Kubeflow:
tfx pipeline compile --engine=kubeflow --pipeline_path=<var>pipeline-path</var>
Local:
tfx pipeline compile --engine=local --pipeline_path=<var>pipeline-path</var>
Vertex:
tfx pipeline compile --engine=vertex --pipeline_path=<var>pipeline-path</var>
delete
Exclui um pipeline do orquestrador fornecido.
Uso:
tfx pipeline delete --pipeline_path=<var>pipeline-path</var> [--endpoint=<var>endpoint</var> --engine=<var>engine</var> \ --iap_client_id=<var>iap-client-id</var> --namespace=<var>namespace</var>]
- --pipeline_path=pipeline-path
- O caminho para o arquivo de configuração do pipeline.
- --endpoint=endpoint
-
(Opcional.) Endpoint do serviço da API Kubeflow Pipelines. O endpoint do seu serviço de API do Kubeflow Pipelines é o mesmo que a URL do painel do Kubeflow Pipelines. O valor do seu endpoint deve ser algo como:
(Opcional.) O orquestrador a ser usado para o pipeline. O valor de engine deve corresponder a um dos seguintes valores:
- kubeflow: define o motor como Kubeflow
- local: define o motor como orquestrador local
- vertex: define o motor como Vertex Pipelines
- airflow: (experimental) define o motor como Apache Airflow
- beam: (experimental) define o motor como Apache Beam
Se o engine não estiver configurado, ele será detectado automaticamente com base no ambiente.
** Nota importante: O orquestrador exigido pelo DagRunner no arquivo de configuração do pipeline deve corresponder ao motor selecionado ou detectado automaticamente. A detecção automática do motor é baseada no ambiente do usuário. Se o Apache Airflow e o Kubeflow Pipelines não estiverem instalados, o orquestrador local será usado por padrão.
kubeflow
.Exemplos:
Kubeflow:
tfx pipeline delete --engine=kubeflow --pipeline_name=<var>pipeline-name</var> \ --iap_client_id=<var>iap-client-id</var> --namespace=<var>namespace</var> --endpoint=<var>endpoint</var>
Local:
tfx pipeline delete --engine=local --pipeline_name=<var>pipeline-name</var>
Vertex:
tfx pipeline delete --engine=vertex --pipeline_name=<var>pipeline-name</var>
list
Lista todos os pipelines no orquestrador fornecido.
Uso:
tfx pipeline list [--endpoint=<var>endpoint</var> --engine=<var>engine</var> \ --iap_client_id=<var>iap-client-id</var> --namespace=<var>namespace</var>]
- --endpoint=endpoint
-
(Opcional.) Endpoint do serviço da API Kubeflow Pipelines. O endpoint do seu serviço de API do Kubeflow Pipelines é o mesmo que a URL do painel do Kubeflow Pipelines. O valor do seu endpoint deve ser algo como:
(Opcional.) O orquestrador a ser usado para o pipeline. O valor de engine deve corresponder a um dos seguintes valores:
- kubeflow: define o motor como Kubeflow
- local: define o motor como orquestrador local
- vertex: define o motor como Vertex Pipelines
- airflow: (experimental) define o motor como Apache Airflow
- beam: (experimental) define o motor como Apache Beam
Se o engine não estiver configurado, ele será detectado automaticamente com base no ambiente.
** Nota importante: O orquestrador exigido pelo DagRunner no arquivo de configuração do pipeline deve corresponder ao motor selecionado ou detectado automaticamente. A detecção automática do motor é baseada no ambiente do usuário. Se o Apache Airflow e o Kubeflow Pipelines não estiverem instalados, o orquestrador local será usado por padrão.
kubeflow
.Exemplos:
Kubeflow:
tfx pipeline list --engine=kubeflow --iap_client_id=<var>iap-client-id</var> \ --namespace=<var>namespace</var> --endpoint=<var>endpoint</var>
Local:
tfx pipeline list --engine=local
Vertex:
tfx pipeline list --engine=vertex
tfx run
A estrutura dos comandos no grupo de comandos tfx run
é a seguinte:
tfx run <var>command</var> <var>required-flags</var> [<var>optional-flags</var>]
Use as seções a seguir para saber mais sobre os comandos do grupo de comandos tfx run
.
create
Cria uma nova instância de execução para um pipeline no orquestrador. Para o Kubeflow, é usada a versão mais recente do pipeline no cluster.
Uso:
tfx run create --pipeline_name=<var>pipeline-name</var> [--endpoint=<var>endpoint</var> \ --engine=<var>engine</var> --iap_client_id=<var>iap-client-id</var> --namespace=<var>namespace</var>]
- --pipeline_name=pipeline-name
- O nome do pipeline.
- --endpoint=endpoint
-
(Opcional.) Endpoint do serviço da API Kubeflow Pipelines. O endpoint do seu serviço de API do Kubeflow Pipelines é o mesmo que a URL do painel do Kubeflow Pipelines. O valor do seu endpoint deve ser algo como:
(Opcional.) O orquestrador a ser usado para o pipeline. O valor de engine deve corresponder a um dos seguintes valores:
- kubeflow: define o motor como Kubeflow
- local: define o motor como orquestrador local
- vertex: define o motor como Vertex Pipelines
- airflow: (experimental) define o motor como Apache Airflow
- beam: (experimental) define o motor como Apache Beam
Se o engine não estiver configurado, ele será detectado automaticamente com base no ambiente.
** Nota importante: O orquestrador exigido pelo DagRunner no arquivo de configuração do pipeline deve corresponder ao motor selecionado ou detectado automaticamente. A detecção automática do motor é baseada no ambiente do usuário. Se o Apache Airflow e o Kubeflow Pipelines não estiverem instalados, o orquestrador local será usado por padrão.
kubeflow
.Exemplos:
Kubeflow:
tfx run create --engine=kubeflow --pipeline_name=<var>pipeline-name</var> --iap_client_id=<var>iap-client-id</var> \ --namespace=<var>namespace</var> --endpoint=<var>endpoint</var>
Local:
tfx run create --engine=local --pipeline_name=<var>pipeline-name</var>
Vertex:
tfx run create --engine=vertex --pipeline_name=<var>pipeline-name</var> \ --runtime_parameter=<var>var_name</var>=<var>var_value</var> \ --project=<var>gcp-project-id</var> --region=<var>gcp-region</var>
terminate
Interrompe a execução de um determinado pipeline.
** Observação importante: atualmente suportado apenas no Kubeflow.
Uso:
tfx run terminate --run_id=<var>run-id</var> [--endpoint=<var>endpoint</var> --engine=<var>engine</var> \ --iap_client_id=<var>iap-client-id</var> --namespace=<var>namespace</var>]
- --run_id=run-id
- Identificador exclusivo para uma execução de pipeline.
- --endpoint=endpoint
-
(Opcional.) Endpoint do serviço da API Kubeflow Pipelines. O endpoint do seu serviço de API do Kubeflow Pipelines é o mesmo que a URL do painel do Kubeflow Pipelines. O valor do seu endpoint deve ser algo como:
(Opcional.) O orquestrador a ser usado para o pipeline. O valor de engine deve corresponder a um dos seguintes valores:
- kubeflow: define o motor como Kubeflow
Se o engine não estiver configurado, ele será detectado automaticamente com base no ambiente.
** Nota importante: O orquestrador exigido pelo DagRunner no arquivo de configuração do pipeline deve corresponder ao motor selecionado ou detectado automaticamente. A detecção automática do motor é baseada no ambiente do usuário. Se o Apache Airflow e o Kubeflow Pipelines não estiverem instalados, o orquestrador local será usado por padrão.
kubeflow
.Exemplos:
Kubeflow:
tfx run delete --engine=kubeflow --run_id=<var>run-id</var> --iap_client_id=<var>iap-client-id</var> \ --namespace=<var>namespace</var> --endpoint=<var>endpoint</var>
list
Lista todas as execuções de um pipeline.
** Observação importante: atualmente não é suportado em motores Local e Apache Beam.
Uso:
tfx run list --pipeline_name=<var>pipeline-name</var> [--endpoint=<var>endpoint</var> \ --engine=<var>engine</var> --iap_client_id=<var>iap-client-id</var> --namespace=<var>namespace</var>]
- --pipeline_name=pipeline-name
- O nome do pipeline.
- --endpoint=endpoint
-
(Opcional.) Endpoint do serviço da API Kubeflow Pipelines. O endpoint do seu serviço de API do Kubeflow Pipelines é o mesmo que a URL do painel do Kubeflow Pipelines. O valor do seu endpoint deve ser algo como:
(Opcional.) O orquestrador a ser usado para o pipeline. O valor de engine deve corresponder a um dos seguintes valores:
- kubeflow: define o motor como Kubeflow
- airflow: (experimental) define o motor como Apache Airflow
Se o engine não estiver configurado, ele será detectado automaticamente com base no ambiente.
** Nota importante: O orquestrador exigido pelo DagRunner no arquivo de configuração do pipeline deve corresponder ao motor selecionado ou detectado automaticamente. A detecção automática do motor é baseada no ambiente do usuário. Se o Apache Airflow e o Kubeflow Pipelines não estiverem instalados, o orquestrador local será usado por padrão.
kubeflow
.Exemplos:
Kubeflow:
tfx run list --engine=kubeflow --pipeline_name=<var>pipeline-name</var> --iap_client_id=<var>iap-client-id</var> \ --namespace=<var>namespace</var> --endpoint=<var>endpoint</var>
status
Retorna o status atual de uma execução.
** Observação importante: atualmente não é suportado em motores Local e Apache Beam.
Uso:
tfx run status --pipeline_name=<var>pipeline-name</var> --run_id=<var>run-id</var> [--endpoint=<var>endpoint</var> \ --engine=<var>engine</var> --iap_client_id=<var>iap-client-id</var> --namespace=<var>namespace</var>]
- --pipeline_name=pipeline-name
- O nome do pipeline.
- --run_id=run-id
- Identificador exclusivo para uma execução de pipeline.
- --endpoint=endpoint
-
(Opcional.) Endpoint do serviço da API Kubeflow Pipelines. O endpoint do seu serviço de API do Kubeflow Pipelines é o mesmo que a URL do painel do Kubeflow Pipelines. O valor do seu endpoint deve ser algo como:
(Opcional.) O orquestrador a ser usado para o pipeline. O valor de engine deve corresponder a um dos seguintes valores:
- kubeflow: define o motor como Kubeflow
- airflow: (experimental) define o motor como Apache Airflow
Se o engine não estiver configurado, ele será detectado automaticamente com base no ambiente.
** Nota importante: O orquestrador exigido pelo DagRunner no arquivo de configuração do pipeline deve corresponder ao motor selecionado ou detectado automaticamente. A detecção automática do motor é baseada no ambiente do usuário. Se o Apache Airflow e o Kubeflow Pipelines não estiverem instalados, o orquestrador local será usado por padrão.
kubeflow
.Exemplos:
Kubeflow:
tfx run status --engine=kubeflow --run_id=<var>run-id</var> --pipeline_name=<var>pipeline-name</var> \ --iap_client_id=<var>iap-client-id</var> --namespace=<var>namespace</var> --endpoint=<var>endpoint</var>
delete
Exclui uma execução de um determinado pipeline.
** Observação importante: atualmente suportado apenas no Kubeflow.
Uso:
tfx run delete --run_id=<var>run-id</var> [--engine=<var>engine</var> --iap_client_id=<var>iap-client-id</var> \ --namespace=<var>namespace</var> --endpoint=<var>endpoint</var>]
- --run_id=run-id
- Identificador exclusivo para uma execução de pipeline.
- --endpoint=endpoint
-
(Opcional.) Endpoint do serviço da API Kubeflow Pipelines. O endpoint do seu serviço de API do Kubeflow Pipelines é o mesmo que a URL do painel do Kubeflow Pipelines. O valor do seu endpoint deve ser algo como:
(Opcional.) O orquestrador a ser usado para o pipeline. O valor de engine deve corresponder a um dos seguintes valores:
- kubeflow: define o motor como Kubeflow
Se o engine não estiver configurado, ele será detectado automaticamente com base no ambiente.
** Nota importante: O orquestrador exigido pelo DagRunner no arquivo de configuração do pipeline deve corresponder ao motor selecionado ou detectado automaticamente. A detecção automática do motor é baseada no ambiente do usuário. Se o Apache Airflow e o Kubeflow Pipelines não estiverem instalados, o orquestrador local será usado por padrão.
kubeflow
.Exemplos:
Kubeflow:
tfx run delete --engine=kubeflow --run_id=<var>run-id</var> --iap_client_id=<var>iap-client-id</var> \ --namespace=<var>namespace</var> --endpoint=<var>endpoint</var>
tfx template [Experimental]
A estrutura dos comandos no grupo de comandos tfx template
é a seguinte:
tfx template <var>command</var> <var>required-flags</var> [<var>optional-flags</var>]
Use as seções a seguir para saber mais sobre os comandos no grupo de comandos tfx template
. O template é um recurso experimental e está sujeito a alterações a qualquer momento.
list
Veja a lista dos templates de pipeline TFX disponíveis:
Uso:
tfx template list
copy
Copia um template para o diretório de destino.
Uso:
tfx template copy --model=<var>model</var> --pipeline_name=<var>pipeline-name</var> \ --destination_path=<var>destination-path</var>
- --model=model
- O nome do modelo criado pelo template do pipeline.
- --pipeline_name=pipeline-name
- O nome do pipeline.
- --destination_path=destination-path
- O caminho para onde copiar o template.
Understanding TFX CLI Flags
Common flags
- --engine=engine
-
O orquestrador a ser usado para o pipeline. O valor de engine deve corresponder a um dos seguintes valores:
- kubeflow: define o motor como Kubeflow
- local: define o motor como orquestrador local
- vertex: define o motor como Vertex Pipelines
- airflow: (experimental) define o motor como Apache Airflow
- beam: (experimental) define o motor como Apache Beam
Se o engine não estiver configurado, ele será detectado automaticamente com base no ambiente.
** Nota importante: O orquestrador exigido pelo DagRunner no arquivo de configuração do pipeline deve corresponder ao motor selecionado ou detectado automaticamente. A detecção automática do motor é baseada no ambiente do usuário. Se o Apache Airflow e o Kubeflow Pipelines não estiverem instalados, o orquestrador local será usado por padrão.
Kubeflow specific flags
- --endpoint=endpoint
-
Endpoint do serviço da API Kubeflow Pipelines. O endpoint do seu serviço de API do Kubeflow Pipelines é o mesmo que a URL do painel do Kubeflow Pipelines. O valor do seu endpoint deve ser algo como:
kubeflow
.Generated files by TFX CLI
Quando pipelines são criados e executados, vários arquivos são gerados para gerenciamento do pipeline.
${HOME}/tfx/local, beam, airflow, vertex
Os metadados do pipeline lidos da configuração são armazenados em
${HOME}/tfx/${ORCHESTRATION_ENGINE}/${PIPELINE_NAME}
. Este local pode ser personalizado definindo uma variável de ambiente comoAIRFLOW_HOME
ouKUBEFLOW_HOME
. Este comportamento poderá ser alterado em versões futuras. Este diretório é usado para armazenar informações de pipeline, incluindo IDs de pipeline no cluster Kubeflow Pipelines, que são necessários para criar execuções ou atualizar pipelines.Antes do TFX 0.25, esses arquivos estavam localizados em
${HOME}/${ORCHESTRATION_ENGINE}
. No TFX 0.25, os arquivos no local antigo serão movidos automaticamente para o novo local para uma migração tranquila.A partir do TFX 0.27, o kubeflow não cria esses arquivos de metadados no sistema de arquivos local. No entanto, veja abaixo outros arquivos que o kubeflow cria.
(somente Kubeflow) Dockerfile e uma imagem de container
O Kubeflow Pipelines requer dois tipos de entrada para um pipeline. Esses arquivos são gerados pelo TFX no diretório atual.
Um é uma imagem de container que será usada para executar componentes no pipeline. Esta imagem de container é criada quando um pipeline para Kubeflow Pipelines é criado ou atualizado com o sinalizador
--build-image
. A CLI do TFX geraráDockerfile
se não existir e criará e enviará uma imagem de container para o registro especificado em KubeflowDagRunnerConfig.