ParallelRunConfig Classe

Define a configuração de um ParallelRunStep objeto.

Para obter um exemplo de utilização de ParallelRunStep, consulte o bloco de notas https://aka.ms/batch-inference-notebooks.

Para obter o guia de resolução de problemas, consulte https://aka.ms/prstsg. Pode encontrar mais referências.

Inicialize o objeto de configuração.

Herança
azureml.pipeline.core._parallel_run_config_base._ParallelRunConfigBase
ParallelRunConfig

Construtor

ParallelRunConfig(environment, entry_script, error_threshold, output_action, compute_target, node_count, process_count_per_node=None, mini_batch_size=None, source_directory=None, description=None, logging_level='INFO', run_invocation_timeout=60, run_max_try=3, append_row_file_name=None, allowed_failed_count=None, allowed_failed_percent=None, partition_keys=None, environment_variables=None)

Parâmetros

Name Description
environment
Necessário

A definição de ambiente que configura o ambiente python. Pode ser configurado para utilizar um ambiente Python existente ou para configurar um ambiente temporário para a experimentação. A definição de ambiente é responsável por definir as dependências de aplicação necessárias, como pacotes conda ou pip.

entry_script
Necessário
str

Script de utilizador que será executado em paralelo em vários nós. Isto é especificado como um caminho de ficheiro local. Se source_directory for especificado, entry_script será um caminho relativo dentro do diretório. Caso contrário, pode ser qualquer caminho acessível no computador. O entry_script deve conter duas funções: init()esta função deve ser utilizada para qualquer preparação dispendiosa ou comum para inferências subsequentes, por exemplo, desserializar e carregar o modelo para um objeto global. run(mini_batch): o método a ser paralelo. Cada invocação terá um mini-lote. "mini_batch": a inferência do Batch invocará o método de execução e transmitirá uma lista ou um DataFrame do Pandas como um argumento para o método. Cada entrada no min_batch será um caminho de ficheiro se a entrada for um FileDataset, um DataFrame do Pandas se a entrada for um TabularDataset. o método run() deve devolver um DataFrame do Pandas ou uma matriz. Para append_row output_action, estes elementos devolvidos são acrescentados ao ficheiro de saída comum. Para summary_only, os conteúdos dos elementos são ignorados. Para todas as ações de saída, cada elemento de saída devolvido indica uma inferência bem-sucedida do elemento de entrada no mini-lote de entrada. Cada processo de trabalho paralelo chamará init uma vez e, em seguida, repetirá a função de execução até que todos os mini-lotes sejam processados.

error_threshold
Necessário
int

O número de falhas TabularDataset de registo para e falhas de ficheiros para FileDataset isso deve ser ignorado durante o processamento. Se a contagem de erros for superior a este valor, a tarefa será abortada. O limiar de erro destina-se a toda a entrada e não ao método de mini-lotes individuais enviados para executar(). O intervalo é [-1, int.max]. -1 indica ignorar todas as falhas durante o processamento.

output_action
Necessário
str

Como a saída deve ser organizada. Os valores suportados atuais são "append_row" e "summary_only".

  1. 'append_row' – todas as invocações de métodos de saída por run() serão agregadas num ficheiro exclusivo com o nome parallel_run_step.txt criado na localização de saída.
  2. 'summary_only' – Espera-se que o script do utilizador armazene o próprio resultado. Ainda é esperada uma linha de saída para cada item de entrada bem-sucedido processado. O sistema utiliza esta saída apenas para o cálculo do limiar de erro (ignorando o valor real da linha).
compute_target
Necessário

Destino de computação a utilizar para a execução parallelRunStep. Este parâmetro pode ser especificado como um objeto de destino de computação ou o nome de um destino de computação na área de trabalho.

node_count
Necessário
int

Número de nós no destino de computação utilizado para executar o ParallelRunStep.

process_count_per_node
int

O número de processos de trabalho por nó para executar o script de entrada em paralelo. No computador GPU, o valor predefinido é 1. Para o computador CPU, o valor predefinido é o número de núcleos. Um processo de trabalho irá chamar run() repetidamente ao transmitir o mini lote que obtém. O número total de processos de trabalho na sua tarefa é process_count_per_node * node_count, que decide o número máximo de run() execuções em paralelo.

valor predefinido: None
mini_batch_size

Para entrada FileDataset, este campo é o número de ficheiros que um script de utilizador pode processar numa chamada run(). Para a entrada TabularDataset, este campo é o tamanho aproximado dos dados que o script de utilizador pode processar numa chamada run(). Os valores de exemplo são 1024, 1024 KB, 10 MB e 1GB. (opcional, o valor predefinido é 10 ficheiros para FileDataset e 1MB para TabularDataset.)

valor predefinido: None
source_directory
str

Caminho para a pasta que contém os entry_script ficheiros de suporte e utilizados para executar no destino de computação.

valor predefinido: None
description
str

Uma descrição para fornecer o serviço batch utilizado para fins de apresentação.

valor predefinido: None
logging_level
str

Uma cadeia do nome do nível de registo, que é definida em "registo". Os valores possíveis são "AVISO", "INFORMAÇÕES" e "DEPURAÇÃO". (opcional, o valor predefinido é "INFO".)

valor predefinido: INFO
run_invocation_timeout
int

Tempo limite em segundos para cada invocação do método run(). (opcional, o valor predefinido é 60.)

valor predefinido: 60
run_max_try
int

O número máximo de tentativas para um mini lote com falhas ou tempo limite. O intervalo é [1, int.max]. O valor predefinido é 3. Um mini lote com contagem de deques maior do que este não será processado novamente e será eliminado diretamente.

valor predefinido: 3
append_row_file_name
str

O nome do ficheiro de saída se for output_action "append_row". (opcional, o valor predefinido é "parallel_run_step.txt")

valor predefinido: None
allowed_failed_count
int

O número de mini-lotes com falhas que devem ser ignorados durante o processamento. Se a contagem de falhas for superior a este valor, a tarefa será abortada. Este limiar destina-se a toda a entrada em vez do método de mini-lote individual enviado para executar(). O intervalo é [-1, int.max]. -1 indica ignorar todas as falhas durante o processamento. Um mini lote pode falhar na primeira vez que for processado e, em seguida, ter êxito na segunda tentativa. A verificação entre a primeira e a segunda vez irá contabilizá-la como falhada. A verificação após a segunda vez não irá contabilizá-la como falhada. O argumento –error_threshold, – allowed_failed_count e – allowed_failed_percent pode funcionar em conjunto. Se mais do que um especificado, a tarefa será abortada se exceder qualquer uma delas.

valor predefinido: None
allowed_failed_percent

A percentagem de mini-lotes falhados que devem ser ignorados durante o processamento. Se a percentagem falhada for superior a este valor, a tarefa será abortada. Este limiar destina-se a toda a entrada em vez do método de mini-lote individual enviado para executar(). O intervalo é [0, 100]. 100 ou 100.0 indica ignorar todas as falhas durante o processamento. A verificação é iniciada depois de todos os mini-lotes terem sido agendados. O argumento –error_threshold, – allowed_failed_count e – allowed_failed_percent pode funcionar em conjunto. Se mais do que um especificado, a tarefa será abortada se exceder qualquer uma delas.

valor predefinido: None
partition_keys

As chaves utilizadas para particionar o conjunto de dados em mini-lotes. Se especificado, os dados com a mesma chave serão particionados no mesmo mini-lote. Se forem especificados partition_keys e mini_batch_size, será gerado um erro. Deve ser uma lista de elementos str cada um sendo uma chave utilizada para particionar o conjunto de dados de entrada. No entanto, se for promovido a PipelineParameter, os valores predefinidos deverão ser o limite de captura json da lista, porque o tipo de lista não é suportado no PipelineParameter por enquanto. As entradas têm de ser conjuntos de dados particionados e o partition_keys tem de ser um subconjunto das chaves de cada conjunto de dados de entrada para que isto funcione.

valor predefinido: None
environment_variables

Um dicionário de nomes e valores de variáveis de ambiente. Estas variáveis de ambiente são definidas no processo em que o script de utilizador está a ser executado.

valor predefinido: None
environment
Necessário

A definição de ambiente que configura o ambiente python. Pode ser configurado para utilizar um ambiente Python existente ou para configurar um ambiente temporário para a experimentação. A definição de ambiente é responsável por definir as dependências de aplicação necessárias, como pacotes conda ou pip.

entry_script
Necessário
str

Script de utilizador que será executado em paralelo em vários nós. É especificado como um caminho de ficheiro local. Se source_directory for especificado, entry_script será um caminho relativo dentro do diretório. Caso contrário, pode ser qualquer caminho acessível no computador. O entry_script deve conter duas funções: init()esta função deve ser utilizada para qualquer preparação dispendiosa ou comum para inferências subsequentes, por exemplo, anular a serialização e carregar o modelo para um objeto global. run(mini_batch): o método a ser paralelizado. Cada invocação terá um mini-lote. "mini_batch": a inferência do Batch invocará o método de execução e transmitirá uma lista ou um DataFrame do Pandas como um argumento para o método . Cada entrada no min_batch será um caminho de ficheiro se a entrada for um FileDataset, um DataFrame do Pandas se a entrada for um TabularDataset. O método run() deve devolver um DataFrame do Pandas ou uma matriz. Por append_row output_action, estes elementos devolvidos são acrescentados ao ficheiro de saída comum. Por summary_only, os conteúdos dos elementos são ignorados. Para todas as ações de saída, cada elemento de saída devolvido indica uma inferência bem-sucedida do elemento de entrada no mini-lote de entrada. Cada processo de trabalho paralelo chamará init uma vez e, em seguida, repetirá a função de execução até que todos os mini-lotes sejam processados.

error_threshold
Necessário
int

O número de falhas de registo para TabularDataset e falhas de ficheiros para FileDataset o mesmo deve ser ignorado durante o processamento. Se a contagem de erros ultrapassar este valor, a tarefa será abortada. O limiar de erro destina-se a toda a entrada e não a mini-lotes individuais enviados para o método run(). O intervalo é [-1, int.max]. -1 indica ignorar todas as falhas durante o processamento.

output_action
Necessário
str

Como a saída deve ser organizada. Os valores atuais suportados são "append_row" e "summary_only".

  1. 'append_row' – todos os valores resultantes por invocações de método run() serão agregados num ficheiro exclusivo com o nome parallel_run_step.txt que é criado na localização de saída.
  2. 'summary_only' – espera-se que o script do utilizador armazene o próprio resultado. Ainda é esperada uma linha de saída para cada item de entrada bem-sucedido processado. O sistema utiliza esta saída apenas para o cálculo do limiar de erro (ignorando o valor real da linha).
compute_target
Necessário

Destino de computação a utilizar para a execução parallelRunStep. Este parâmetro pode ser especificado como um objeto de destino de computação ou o nome de um destino de computação na área de trabalho.

node_count
Necessário
int

Número de nós no destino de computação utilizado para executar o ParallelRunStep.

process_count_per_node
Necessário
int

O número de processos de trabalho por nó para executar o script de entrada em paralelo. Para um computador GPU, o valor predefinido é 1. Para um computador com CPU, o valor predefinido é o número de núcleos. Um processo de trabalho irá chamar run() repetidamente ao transmitir o mini lote que obtém. O número total de processos de trabalho na sua tarefa é process_count_per_node * node_count, que decide o número máximo de run() a executar em paralelo.

mini_batch_size
Necessário
str ou int

Para entrada FileDataset, este campo é o número de ficheiros que um script de utilizador pode processar numa chamada run(). Para a entrada TabularDataset, este campo é o tamanho aproximado dos dados que o script de utilizador pode processar numa chamada run(). Os valores de exemplo são 1024, 1024 KB, 10 MB e 1 GB. (opcional, o valor predefinido é 10 ficheiros para FileDataset e 1MB para TabularDataset.)

source_directory
Necessário
str

Caminho para a pasta que contém os entry_script ficheiros de suporte e utilizados para executar no destino de computação.

description
Necessário
str

Uma descrição para fornecer o serviço batch utilizado para fins de apresentação.

logging_level
Necessário
str

Uma cadeia do nome do nível de registo, que é definida em "registo". Os valores possíveis são "AVISO", "INFORMAÇÕES" e "DEPURAR". (opcional, o valor predefinido é "INFO".)

run_invocation_timeout
Necessário
int

Tempo limite em segundos para cada invocação do método run(). (opcional, o valor predefinido é 60.)

run_max_try
Necessário
int

O número máximo de tentativas para um mini lote com falhas ou tempo limite. O intervalo é [1, int.max]. O valor predefinido é 3. Um mini lote com contagem de pedidos maior do que este não será processado novamente e será eliminado diretamente.

append_row_file_name
Necessário
str

O nome do ficheiro de saída se for output_action "append_row". (opcional, o valor predefinido é "parallel_run_step.txt")

allowed_failed_count
Necessário
int

O número de mini lotes com falhas que devem ser ignorados durante o processamento. Se a contagem de falhas ultrapassar este valor, a tarefa será abortada. Este limiar destina-se a toda a entrada em vez do mini-lote individual enviado para executar(). O intervalo é [-1, int.max]. -1 indica ignorar todas as falhas durante o processamento. Um mini lote pode falhar na primeira vez que for processado e, em seguida, ser bem-sucedido na segunda tentativa. A verificação entre a primeira e a segunda vez irá contabilizá-la como falhada. A verificação após a segunda vez não irá contar como falhada. O argumento –error_threshold, –allowed_failed_count e –allowed_failed_percent pode funcionar em conjunto. Se for mais do que uma especificada, a tarefa será abortada se exceder qualquer uma delas.

allowed_failed_percent
Necessário

A percentagem de mini lotes com falhas que devem ser ignorados durante o processamento. Se a percentagem falhada ultrapassar este valor, a tarefa será abortada. Este limiar destina-se a toda a entrada em vez do mini-lote individual enviado para executar(). O intervalo é [0, 100]. 100 ou 100,0 indica ignorar todas as falhas durante o processamento. A verificação é iniciada depois de todos os mini lotes terem sido agendados. O argumento –error_threshold, –allowed_failed_count e –allowed_failed_percent pode funcionar em conjunto. Se for mais do que uma especificada, a tarefa será abortada se exceder qualquer uma delas.

partition_keys
Necessário

As chaves utilizadas para particionar o conjunto de dados em mini-lotes. Se for especificado, os dados com a mesma chave serão particionados no mesmo mini-lote. Se forem especificados partition_keys e mini_batch_size, será gerado um erro. Deve ser uma lista de elementos str cada um sendo uma chave utilizada para particionar o conjunto de dados de entrada. No entanto, se for promovido para PipelineParameter, os valores predefinidos devem ser o limite de captura de json da lista, uma vez que o tipo de lista não é suportado no PipelineParameter por enquanto. As entradas têm de ser conjuntos de dados particionados e o partition_keys tem de ser um subconjunto das chaves de cada conjunto de dados de entrada para que isto funcione.

environment_variables
Necessário

Um dicionário de nomes e valores de variáveis de ambiente. Estas variáveis de ambiente são definidas no processo em que o script de utilizador está a ser executado.

Observações

A classe ParallelRunConfig é utilizada para fornecer configuração para a ParallelRunStep classe . ParallelRunConfig e ParallelRunStep podem ser utilizados em conjunto para processar grandes quantidades de dados em paralelo. Alguns casos de utilização comuns incluem a preparação de modelos de ML ou a execução de inferências offline para gerar predições num lote de observações. ParallelRunStep funciona ao dividir os seus dados em lotes que são processados em paralelo. O tamanho do lote, a contagem de nós e outros parâmetros atumes para acelerar o processamento paralelo podem ser controlados com a ParallelRunConfig classe . ParallelRunStep pode funcionar com ou TabularDatasetFileDataset como entrada.

Para utilizar ParallelRunStep e ParallelRunConfig:

  • Crie um ParallelRunConfig objeto para especificar a forma como o processamento em lotes é executado, com parâmetros para controlar o tamanho do lote, o número de nós por destino de computação e uma referência ao script Python personalizado.

  • Crie um objeto ParallelRunStep que utilize o objeto ParallelRunConfig, defina entradas e saídas para o passo.

  • Utilize o objeto ParallelRunStep configurado tal Pipeline como faria com outros tipos de passos de pipeline.

Os exemplos de trabalho com classes ParallelRunStep e ParallelRunConfig para inferência de lotes são abordados nos seguintes artigos:


   from azureml.pipeline.steps import ParallelRunStep, ParallelRunConfig

   parallel_run_config = ParallelRunConfig(
       source_directory=scripts_folder,
       entry_script=script_file,
       mini_batch_size="5",        # or partition_keys=["key1", "key2"], which is another way to partition the
                                   # input to mini-batches, refer to the parameter description for details
       error_threshold=10,         # Optional, allowed failed count on mini batch items
       allowed_failed_count=15,    # Optional, allowed failed count on mini batches
       allowed_failed_percent=10,  # Optional, allowed failed percent on mini batches
       run_max_try=3,
       output_action="append_row",
       environment=batch_env,
       compute_target=compute_target,
       node_count=2)

   parallelrun_step = ParallelRunStep(
       name="predict-digits-mnist",
       parallel_run_config=parallel_run_config,
       inputs=[ named_mnist_ds ],
       output=output_dir,
       arguments=[ "--extra_arg", "example_value" ],
       allow_reuse=True
   )

Para obter mais informações sobre este exemplo, consulte o bloco de notas https://aka.ms/batch-inference-notebooks.

Métodos

load_yaml

Carregar dados de configuração de execução paralela a partir de um ficheiro YAML.

save_to_yaml

Exportar dados de configuração de execução paralela para um ficheiro YAML.

load_yaml

Carregar dados de configuração de execução paralela a partir de um ficheiro YAML.

static load_yaml(workspace, path)

Parâmetros

Name Description
workspace
Necessário

A área de trabalho a partir da onde ler os dados de configuração.

path
Necessário
str

O caminho a partir do qual carregar a configuração.

save_to_yaml

Exportar dados de configuração de execução paralela para um ficheiro YAML.

save_to_yaml(path)

Parâmetros

Name Description
path
Necessário
str

O caminho para o qual guardar o ficheiro.