- Notas de Versão
- Antes de começar
- Introdução
- Projetos
- Conjuntos de dados
- Pacotes de ML
- Pipelines
- Habilidades de ML
- Logs de ML
- Document Understanding no AI Center
- Licenciamento
- Como fazer
- Guia básico de solução de problemas
Pipelines completos
Um pipeline completo é usado para treinar um novo modelo de aprendizado de máquina e avaliar o desempenho desse novo modelo, tudo de uma vez. Além disso, uma etapa de pré-processamento é executada antes do treinamento, permitindo a manipulação de dados/treinamento de um modelo de machine learning treinado.
process_data()
, train ()
evaluate()
e save()
no arquivo train.py). Esse código, juntamente com um conjunto de dados ou uma subpasta dentro de um conjunto de dados e, opcionalmente, um conjunto de avaliação, produz uma nova versão do pacote, uma pontuação (o retorno da função evaluate()
para a nova versão do modelo) e quaisquer saídas arbitrárias que o usuário gostaria de persistir, além da pontuação.
Crie um novo pipeline completo, conforme descrito aqui. Certifique-se de fornecer as seguintes informações específicas do pipeline completo:
- No campo Pipeline type, selecione Full Pipeline run.
- No campo Choose input dataset, selecione um conjunto de dados ou uma pasta da qual você deseja importar dados para o treinamento completo. Todos os arquivos nesse conjunto de dados/pasta devem estar disponíveis localmente durante o tempo de execução do pipeline no caminho armazenado na variável
data_directory
. - Opcionalmente, no campo Escolher conjunto de dados de avaliação, selecione um conjunto de dados ou uma pasta da qual você deseja importar dados para a avaliação. Todos os arquivos nesse conjunto de dados/pasta devem estar disponíveis localmente durante o tempo de execução do pipeline no caminho armazenado na variável
test_data_directory
. Se nenhuma pasta estiver selecionada, espera-se que seu pipeline grave algo na variável de diretóriotest_data_directory
na funçãoprocess_data
. Se você não selecionar uma pasta e seuprocess_data
não gravar emtest_data_directory
, então o diretório passado para a função de avaliação estará vazio. - Na seção Inserir parâmetros, insira as variáveis de ambiente definidas e usadas por seu pipeline, se houver. As variáveis de ambiente são:
training_data_directory
, com o valor padrão dataset/training: define onde os dados do treinamento estão acessíveis localmente para o pipeline. Esse diretório é usado como entrada para a funçãotrain()
. A maioria dos usuários nunca terá que substituir isso por meio da UI e pode apenas gravar dados emos.environ['training_data_directory']
na funçãoprocess_data
e pode apenas esperar que o argumento data_directory emtrain(self, data_directory
seja chamado comos.environ['training_data_directory']
.-
test_data_directory
com o valor padrão dataset/test: define onde os dados do teste estão acessíveis localmente para o pipeline. Esse diretório é usado como entrada para a funçãoevaluate()
. A maioria dos usuários nunca terá que substituir isso por meio da UI e pode apenas gravar dados emos.environ['test_data_directory']
na funçãoprocess_data
e pode apenas esperar que o argumento data_directory emevaluate(self, data_directory
seja chamado comos.environ['test_data_directory']
. artifacts_directory
, com valor padrão artifacts: define o caminho para um diretório que será persistente como dados auxiliares relacionados a esse pipeline. A maioria, se não todos os usuários, nunca terá a necessidade de substituir isso por meio da UI. Qualquer coisa pode ser salva durante a execução do pipeline, incluindo imagens, PDFs e subpastas. Concretamente, quaisquer dados que seu código gravar no diretório especificado pelo caminhoos.environ['artifacts_directory']
serão carregados no final da execução do pipeline e serão visualizáveis na página Detalhes do pipeline.save_training_data
, com o valor padrão true: se estiver definido como true, a pastatraining_data_directory
será carregada no final da execução do pipeline como uma saída do pipeline no diretóriotraining_data_directory
.save_test_data
, com o valor padrão true: se estiver definido como true, a pastatest_data_directory
será carregada no final da execução do pipeline como uma saída do pipeline no diretóriotest_data_directory
.
Dependendo de sua escolha de selecionar ou não um conjunto de dados de avaliação, é possível criar pipelines completos da seguinte forma:
Assista ao seguinte vídeo para saber como criar um pipeline completo com a versão do pacote recém-treinado 1.1. Certifique-se de selecionar o mesmo conjunto de dados (em nosso exemplo, tutorialdataset) tanto como o conjunto de dados de entrada quanto como o conjunto de dados de avaliação.
Assista ao seguinte vídeo para saber como criar um pipeline completo com a versão do pacote recém-treinado 1.1. Selecione o conjunto de dados de entrada, mas deixe o conjunto de dados de avaliação não selecionado.
Após o pipeline ter sido executado, na página Pipelines, o status do pipeline é alterado para Bem-sucedido. A página Detalhes do pipeline exibe os arquivos arbitrários e pastas relacionados à execução do pipeline.
- A função
train()
é treinada em train.csv, e não no conteúdo inalterado da pasta de dados (exemploexample1.txt, e example2.txt). Oprocess_data
pode ser usado para dividir dinamicamente dados com base em quaisquer parâmetros definidos pelo usuário. - O primeiro pipeline completo executa avaliações em um diretório com exemplo1.txt,example2.txt, test.csv. O segundo pipeline completo executa avaliações em um diretório apenas com test.csv. Essa é a diferença em não selecionar um conjunto de avaliação explicitamente ao criar a segunda execução do pipeline completo. Dessa forma, você pode ter avaliações de novos dados dos UiPath Robots, bem como dados divididos dinamicamente já em seu projeto.
- Cada componente individual pode gravar artefatos arbitrários como parte de um pipeline (histogramas, logs do TensorBoard, plotagens de distribuição etc.).
- O arquivo zip do pacote de ML é a nova versão do pacote gerado automaticamente pelo pipeline de treinamento.
- A pasta Artefatos, visível apenas se não estiver vazia, é a pasta que reagrupa todos os artefatos gerados pelo pipeline, e está salva sob a pasta
artifacts_directory
. - A pasta de treinamento, visível apenas se
save_training_data
foi definido como true, é uma cópia da pastatraining_data_directory
. - A pasta de teste, visível apenas se
save_training_data
foi definido como true, é uma cópia da pastatest_data_directory
.
Aqui está uma execução conceitualmente análoga de um completo de avaliação em algum pacote, como por exemplo, a versão 1.1, a saída de um pipeline de treinamento na versão 1.0.
- Copie a versão 1.1 do pacote para
~/mlpackage
. - Crie um diretório chamado
./dataset
. - Copie o conteúdo do conjunto de dados da entrada em
./dataset
. - Se o usuário definir algo no campo Choose evaluation dataset, copie esse conjunto de dados da avaliação e o coloque em
./dataset/test
. - Defina as variáveis de ambiente
training_data_directory=./dataset/training
etest_data_directory=./dataset/test
. - Execute o seguinte código python:
from train import Main m = Main() m.process_data('./dataset') m.evaluate(os.environ['test_data_directory']) m.train(os.environ['training_data_directory']) m.evaluate(os.environ['test_data_directory'])
from train import Main m = Main() m.process_data('./dataset') m.evaluate(os.environ['test_data_directory']) m.train(os.environ['training_data_directory']) m.evaluate(os.environ['test_data_directory']) - Persiste o conteúdo de
~/mlpackage
como a versão do pacote 1.2. Os artefatos persistem se estiverem gravados, e os dados dos instantâneos, sesave_data
estiver definido como true.Observação: a existência das variáveis de ambientetraining_data_directory
etest_data_directory
significa queprocess_data
pode usar essas variáveis para dividir os dados dinamicamente.
_results.json
contém um resumo da execução do pipeline, expondo todas as entradas/saídas e tempos de execução para um pipeline completo.
{
"parameters": {
"pipeline": "< Pipeline_name >",
"inputs": {
"package": "<Package_name>",
"version": "<version_number>",
"input_data": "<storage_directory>",
"evaluation_data": "<storage_directory>/None",
"gpu": "True/False"
},
"env": {
"key": "value",
...
}
},
"run_summary": {
"execution_time": <time>, #in seconds
"start_at": <timestamp>, #in seconds
"end_at": <timestamp>, #in seconds
"outputs": {
"previous_score": <previous_score>, #float
"current_score": <current_score>, #float
"training_data": "<training_storage_directory>/None",
"test_data": "<test_storage_directory>/None",
"artifacts_data": "<artifacts_storage_directory>",
"package": "<Package_name>",
"version": "<new_version>"
}
}
}
{
"parameters": {
"pipeline": "< Pipeline_name >",
"inputs": {
"package": "<Package_name>",
"version": "<version_number>",
"input_data": "<storage_directory>",
"evaluation_data": "<storage_directory>/None",
"gpu": "True/False"
},
"env": {
"key": "value",
...
}
},
"run_summary": {
"execution_time": <time>, #in seconds
"start_at": <timestamp>, #in seconds
"end_at": <timestamp>, #in seconds
"outputs": {
"previous_score": <previous_score>, #float
"current_score": <current_score>, #float
"training_data": "<training_storage_directory>/None",
"test_data": "<test_storage_directory>/None",
"artifacts_data": "<artifacts_storage_directory>",
"package": "<Package_name>",
"version": "<new_version>"
}
}
}