Partilhar via


ParallelRunConfig Classe

Define a configuração de um ParallelRunStep objeto.

Para obter um exemplo de como usar ParallelRunStep, consulte o bloco de anotações https://aka.ms/batch-inference-notebooks.

Para obter um guia de solução de problemas, consulte https://aka.ms/prstsg. Você pode encontrar mais referências lá.

Inicialize o objeto config.

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. Ele pode ser configurado para usar um ambiente Python existente ou para configurar um ambiente temporário para o experimento. A definição de ambiente é responsável por definir as dependências de aplicativos necessárias, como pacotes conda ou pip.

entry_script
Necessário
str

Script de usuário que será executado em paralelo em vários nós. Isso é especificado como um caminho de arquivo local. Se source_directory for especificado, então entry_script é um caminho relativo dentro do diretório. Caso contrário, pode ser qualquer caminho acessível na máquina. O entry_script deve conter duas funções: init()Esta função deve ser usada para qualquer preparação dispendiosa ou comum para inferências subsequentes, por exemplo, desserializar e carregar o modelo em um objeto global. run(mini_batch): O método a ser paralelizado. Cada invocação terá um minilote. 'mini_batch': A inferência em lote invocará o método run e passará uma lista ou um Pandas DataFrame como um argumento para o método. Cada entrada no min_batch será um caminho de arquivo se a entrada for um FileDataset, um Pandas DataFrame se a entrada for um TabularDataset. run() método deve retornar um Pandas DataFrame ou uma matriz. Por append_row output_action, esses elementos retornados são anexados ao arquivo de saída comum. Por summary_only, o conteúdo dos elementos é ignorado. Para todas as ações de saída, cada elemento de saída retornado indica uma inferência bem-sucedida do elemento de entrada no minilote 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 minilotes sejam processados.

error_threshold
Necessário
int

O número de falhas TabularDataset de registro e falhas de arquivo para FileDataset isso deve ser ignorado durante o processamento. Se a contagem de erros ultrapassar esse valor, o trabalho será abortado. O limite de erro é para toda a entrada e não para minilotes 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 suportados atuais são 'append_row' e 'summary_only'.

  1. 'append_row' – Todos os valores de saída por invocações do método run() serão agregados em um arquivo exclusivo chamado parallel_run_step.txt que é criado no local de saída.
  2. 'summary_only' – Espera-se que o script do usuário armazene a saída em si. Uma linha de saída ainda é esperada para cada item de entrada bem-sucedido processado. O sistema usa essa saída apenas para o cálculo do limite de erro (ignorando o valor real da linha).
compute_target
Necessário

Destino de computação a ser usado para execução de ParallelRunStep. Este parâmetro pode ser especificado como um objeto de destino de computação ou o nome de um destino de computação no espaço de trabalho.

node_count
Necessário
int

Número de nós no destino de computação usado 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. Para máquina GPU, o valor padrão é 1. Para a máquina CPU, o valor padrão é o número de núcleos. Um processo de trabalho chamará run() repetidamente passando o mini lote que obtém. O número total de processos de trabalho em seu trabalho é process_count_per_node * node_count, que decide o número máximo de processos a run() serem executados em paralelo.

Default value: None
mini_batch_size

Para a entrada FileDataset, este campo é o número de arquivos que um script de usuário pode processar em uma chamada run(). Para a entrada TabularDataset, esse campo é o tamanho aproximado dos dados que o script do usuário pode processar em uma chamada run(). Os valores de exemplo são 1024, 1024KB, 10MB e 1GB. (opcional, o valor padrão é 10 arquivos para FileDataset e 1MB para TabularDataset.)

Default value: None
source_directory
str

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

Default value: None
description
str

Uma descrição para fornecer o serviço de lote usado para fins de exibição.

Default value: None
logging_level
str

Uma cadeia de caracteres do nome do nível de log, que é definido em 'logging'. Os valores possíveis são 'WARNING', 'INFO' e 'DEBUG'. (opcional, o valor padrão é 'INFO'.)

Default value: INFO
run_invocation_timeout
int

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

Default value: 60
run_max_try
int

O número máximo de tentativas para um mini lote com falha ou tempo limite. O intervalo é [1, int.max]. O valor padrão é 3. Um mini lote com contagem de desfila maior do que isso não será processado novamente e será excluído diretamente.

Default value: 3
append_row_file_name
str

O nome do arquivo de saída, se o output_action for 'append_row'. (opcional, o valor padrão é 'parallel_run_step.txt')

Default value: None
allowed_failed_count
int

O número de minilotes com falha que devem ser ignorados durante o processamento. Se a contagem com falha ultrapassar esse valor, o trabalho será abortado. Esse limite é para toda a entrada, em vez do minilote individual enviado para o método run(). O intervalo é [-1, int.max]. -1 indica ignorar todas as falhas durante o processamento. Um mini lote pode falhar na primeira vez que é processado e, em seguida, ter sucesso na segunda tentativa. A verificação entre a primeira e a segunda vez contará como falha. A verificação após a segunda vez não contará como falha. O argumento –error_threshold, –allowed_failed_count e –allowed_failed_percent podem trabalhar juntos. Se mais de um especificado, o trabalho será abortado se exceder qualquer um deles.

Default value: None
allowed_failed_percent

A porcentagem de minilotes com falha que devem ser ignorados durante o processamento. Se a porcentagem com falha ultrapassar esse valor, o trabalho será abortado. Esse limite é para toda a entrada, em vez do minilote individual enviado para o método run(). O intervalo é [0, 100]. 100 ou 100.0 indica ignorar todas as falhas durante o processamento. A verificação começa depois que todos os minilotes foram agendados. O argumento –error_threshold, –allowed_failed_count e –allowed_failed_percent podem trabalhar juntos. Se mais de um especificado, o trabalho será abortado se exceder qualquer um deles.

Default value: None
partition_keys

As chaves usadas para particionar o conjunto de dados em minilotes. Se especificado, os dados com a mesma chave serão particionados no mesmo minilote. Se partition_keys e mini_batch_size forem especificados, o erro será gerado. Deve ser uma lista de elementos str, cada um sendo uma chave usada para particionar o conjunto de dados de entrada. No entanto, se promovido para PipelineParameter, os valores padrão devem ser o json dump str da lista porque o tipo de lista não é suportado em PipelineParameter por enquanto. A(s) entrada(s) deve(m) ser(em) particionada(s) data(s), e a partition_keys deve ser um subconjunto das chaves de cada conjunto de dados de entrada para que isso funcione.

Default value: None
environment_variables

Um dicionário de nomes e valores de variáveis de ambiente. Essas variáveis de ambiente são definidas no processo onde o script do usuário está sendo executado.

Default value: None
environment
Necessário

A definição de ambiente que configura o ambiente Python. Ele pode ser configurado para usar um ambiente Python existente ou para configurar um ambiente temporário para o experimento. A definição de ambiente é responsável por definir as dependências de aplicativos necessárias, como pacotes conda ou pip.

entry_script
Necessário
str

Script de usuário que será executado em paralelo em vários nós. Isso é especificado como um caminho de arquivo local. Se source_directory for especificado, então entry_script é um caminho relativo dentro do diretório. Caso contrário, pode ser qualquer caminho acessível na máquina. O entry_script deve conter duas funções: init()Esta função deve ser usada para qualquer preparação dispendiosa ou comum para inferências subsequentes, por exemplo, desserializar e carregar o modelo em um objeto global. run(mini_batch): O método a ser paralelizado. Cada invocação terá um minilote. 'mini_batch': A inferência em lote invocará o método run e passará uma lista ou um Pandas DataFrame como um argumento para o método. Cada entrada no min_batch será um caminho de arquivo se a entrada for um FileDataset, um Pandas DataFrame se a entrada for um TabularDataset. run() método deve retornar um Pandas DataFrame ou uma matriz. Por append_row output_action, esses elementos retornados são anexados ao arquivo de saída comum. Por summary_only, o conteúdo dos elementos é ignorado. Para todas as ações de saída, cada elemento de saída retornado indica uma inferência bem-sucedida do elemento de entrada no minilote 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 minilotes sejam processados.

error_threshold
Necessário
int

O número de falhas TabularDataset de registro e falhas de arquivo para FileDataset isso deve ser ignorado durante o processamento. Se a contagem de erros ultrapassar esse valor, o trabalho será abortado. O limite de erro é para toda a entrada e não para minilotes 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 suportados atuais são 'append_row' e 'summary_only'.

  1. 'append_row' – Todos os valores de saída por invocações do método run() serão agregados em um arquivo exclusivo chamado parallel_run_step.txt que é criado no local de saída.
  2. 'summary_only' – Espera-se que o script do usuário armazene a saída em si. Uma linha de saída ainda é esperada para cada item de entrada bem-sucedido processado. O sistema usa essa saída apenas para o cálculo do limite de erro (ignorando o valor real da linha).
compute_target
Necessário

Destino de computação a ser usado para execução de ParallelRunStep. Este parâmetro pode ser especificado como um objeto de destino de computação ou o nome de um destino de computação no espaço de trabalho.

node_count
Necessário
int

Número de nós no destino de computação usado 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 uma máquina GPU, o valor padrão é 1. Para uma máquina CPU, o valor padrão é o número de núcleos. Um processo de trabalho chamará run() repetidamente passando o mini lote que obtém. O número total de processos de trabalho em seu trabalho é process_count_per_node * node_count, que decide o número máximo de processos a run() serem executados em paralelo.

mini_batch_size
Necessário
str ou int

Para a entrada FileDataset, este campo é o número de arquivos que um script de usuário pode processar em uma chamada run(). Para a entrada TabularDataset, esse campo é o tamanho aproximado dos dados que o script do usuário pode processar em uma chamada run(). Os valores de exemplo são 1024, 1024KB, 10MB e 1GB. (opcional, o valor padrão é 10 arquivos para FileDataset e 1MB para TabularDataset.)

source_directory
Necessário
str

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

description
Necessário
str

Uma descrição para fornecer o serviço de lote usado para fins de exibição.

logging_level
Necessário
str

Uma cadeia de caracteres do nome do nível de log, que é definido em 'logging'. Os valores possíveis são 'WARNING', 'INFO' e 'DEBUG'. (opcional, o valor padrão é 'INFO'.)

run_invocation_timeout
Necessário
int

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

run_max_try
Necessário
int

O número máximo de tentativas para um mini lote com falha ou tempo limite. O intervalo é [1, int.max]. O valor padrão é 3. Um mini lote com contagem de desfila maior do que isso não será processado novamente e será excluído diretamente.

append_row_file_name
Necessário
str

O nome do arquivo de saída, se o output_action for 'append_row'. (opcional, o valor padrão é 'parallel_run_step.txt')

allowed_failed_count
Necessário
int

O número de minilotes com falha que devem ser ignorados durante o processamento. Se a contagem com falha ultrapassar esse valor, o trabalho será abortado. Esse limite é para toda a entrada, em vez do minilote individual enviado para o método run(). O intervalo é [-1, int.max]. -1 indica ignorar todas as falhas durante o processamento. Um mini lote pode falhar na primeira vez que é processado e, em seguida, ter sucesso na segunda tentativa. A verificação entre a primeira e a segunda vez contará como falha. A verificação após a segunda vez não contará como falha. O argumento –error_threshold, –allowed_failed_count e –allowed_failed_percent podem trabalhar juntos. Se mais de um especificado, o trabalho será abortado se exceder qualquer um deles.

allowed_failed_percent
Necessário

A porcentagem de minilotes com falha que devem ser ignorados durante o processamento. Se a porcentagem com falha ultrapassar esse valor, o trabalho será abortado. Esse limite é para toda a entrada, em vez do minilote individual enviado para o método run(). O intervalo é [0, 100]. 100 ou 100.0 indica ignorar todas as falhas durante o processamento. A verificação começa depois que todos os minilotes foram agendados. O argumento –error_threshold, –allowed_failed_count e –allowed_failed_percent podem trabalhar juntos. Se mais de um especificado, o trabalho será abortado se exceder qualquer um deles.

partition_keys
Necessário

As chaves usadas para particionar o conjunto de dados em minilotes. Se especificado, os dados com a mesma chave serão particionados no mesmo minilote. Se partition_keys e mini_batch_size forem especificados, o erro será gerado. Deve ser uma lista de elementos str, cada um sendo uma chave usada para particionar o conjunto de dados de entrada. No entanto, se promovido para PipelineParameter, os valores padrão devem ser o json dump str da lista porque o tipo de lista não é suportado em PipelineParameter por enquanto. A(s) entrada(s) deve(m) ser(em) particionada(s) data(s), e a partition_keys deve ser um subconjunto das chaves de cada conjunto de dados de entrada para que isso funcione.

environment_variables
Necessário

Um dicionário de nomes e valores de variáveis de ambiente. Essas variáveis de ambiente são definidas no processo onde o script do usuário está sendo executado.

Observações

A classe ParallelRunConfig é usada para fornecer configuração para a ParallelRunStep classe. ParallelRunConfig e ParallelRunStep podem ser usados juntos 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 ajustáveis para acelerar o processamento paralelo podem ser controlados com a ParallelRunConfig classe. ParallelRunStep pode trabalhar com qualquer um TabularDataset ou FileDataset como entrada.

Para usar ParallelRunStep e ParallelRunConfig:

  • Crie um ParallelRunConfig objeto para especificar como o processamento em lote é 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 seu script Python personalizado.

  • Crie um objeto ParallelRunStep que usa o objeto ParallelRunConfig, define entradas e saídas para a etapa.

  • Use o objeto ParallelRunStep configurado da mesma forma Pipeline que faria com outros tipos de etapa de pipeline.

Exemplos de trabalho com classes ParallelRunStep e ParallelRunConfig para inferência em lote são discutidos 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 anotações https://aka.ms/batch-inference-notebooks.

Métodos

load_yaml

Carregue dados de configuração de execução paralela de um arquivo YAML.

save_to_yaml

Exporte dados de configuração de execução paralela para um arquivo YAML.

load_yaml

Carregue dados de configuração de execução paralela de um arquivo YAML.

static load_yaml(workspace, path)

Parâmetros

Name Description
workspace
Necessário

O espaço de trabalho do qual ler os dados de configuração.

path
Necessário
str

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

save_to_yaml

Exporte dados de configuração de execução paralela para um arquivo YAML.

save_to_yaml(path)

Parâmetros

Name Description
path
Necessário
str

O caminho para salvar o arquivo.