ParallelRunConfig Classe

Define a configuração para um objeto ParallelRunStep.

Para obter um exemplo de uso do ParallelRunStep, confira o https://aka.ms/batch-inference-notebooks do notebook.

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

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

environment
Environment
Obrigatório

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

entry_script
str
Obrigatório

Script do usuário que será executado em paralelo em vários nós. Isso é especificado como caminho de arquivo 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 usada para qualquer preparação cara 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 de lote invocará o método de execução e passará uma lista ou um DataFrame do Pandas como argumento para o método. Cada entrada em min_batch será um filepath, se a entrada for um FileDataset, um DataFrame do Pandas, se a entrada for um TabularDataset. o método run() deve retornar um DataFrame do Pandas ou uma matriz. Para append_row output_action, esses elementos retornados são acrescentados ao arquivo de saída comum. Para 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, fará um loop sobre a função de execução até que todos os minilotes sejam processados.

error_threshold
int
Obrigatório

O número de falhas de registro para TabularDataset e falhas de arquivo para FileDataset que devem ser ignorados durante o processamento. Se a contagem de erros ultrapassar esse valor, o trabalho será anulado. 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
str
Obrigatório

Como a saída deve ser organizada. Os valores atuais com suporte são 'append_row' e 'summary_only'.

  1. 'append_row' – Todos os valores gerados pelas invocações do método run() serão agregados em um arquivo exclusivo nomeado parallel_run_step.txt que é criado no local de saída.
  2. 'summary_only' – Espera-se que o próprio script do usuário armazene a saída. Uma linha de saída ainda é esperada para cada item de entrada processado com êxito. O sistema usa essa saída apenas para cálculo de limite de erro (ignorando o valor real da linha).
compute_target
AmlCompute ou str
Obrigatório

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

node_count
int
Obrigatório

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

process_count_per_node
int
valor padrão: None

O número de processos de trabalho por nó para executar o script de entrada em paralelo. Para o computador de GPU, o valor padrão é 1. Para o computador de CPU, o valor padrão é o número de núcleos. Um processo de trabalho chamará run() repetidamente passando o mini lote que ele obtém. O número total de processos de trabalho em seu trabalho é process_count_per_node * node_count, o que decide o número máximo de run() a ser executado em paralelo.

mini_batch_size
Union[str, int]
valor padrão: None

Para entrada FileDataset, esse campo é o número de arquivos que um script do usuário pode processar em uma chamada run(). Para 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, 1024 KB, 10 MB e 1 GB. (opcional, o valor padrão é 10 arquivos para FileDataset e 1 MB para TabularDataset.)

source_directory
str
valor padrão: None

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

description
str
valor padrão: None

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

logging_level
str
valor padrão: INFO

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

run_invocation_timeout
int
valor padrão: 60

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

run_max_try
int
valor padrão: 3

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

append_row_file_name
str
valor padrão: None

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
int
valor padrão: None

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á anulado. Esse limite é para a entrada inteira, e não para o minilote individual enviado para o método run(). O intervalo é [-1, int.max]. -1 indica ignorar todas as falhas durante o processamento. Um minilote pode falhar na primeira vez que for processado e ter êxito na segunda tentativa. A verificação entre a primeira e a segunda vez o contará como falha. A verificação após a segunda vez não o contará como falha. Os argumentos –error_threshold, –allowed_failed_count e –allowed_failed_percent podem trabalhar em conjunto. Se mais de um for especificado, o trabalho será anulado caso exceda qualquer um deles.

allowed_failed_percent
float
valor padrão: None

A porcentagem de minilotes com falha que devem ser ignorados durante o processamento. Se a porcentagem com falha ultrapassar esse valor, o trabalho será anulado. Esse limite é para a entrada inteira, e não para o 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 é iniciada depois que todos os minilotes foram agendados. Os argumentos –error_threshold, –allowed_failed_count e –allowed_failed_percent podem trabalhar em conjunto. Se mais de um for especificado, o trabalho será anulado caso exceda qualquer um deles.

partition_keys
List[str]
valor padrão: None

As chaves usadas para particionar o conjuntos 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, em que cada um é uma chave usada para particionar o conjuntos de dados de entrada. No entanto, se promovido para PipelineParameter, os valores padrão devem ser o StR de despejo do JSON da lista, pois o tipo de lista não é compatível com PipelineParameter por enquanto. As entradas devem ser conjuntos de dados particionados e o partition_keys deve ser um subconjunto das chaves de cada conjunto de dados de entrada para que isso funcione.

environment_variables
Dict[str, str]
valor padrão: None

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

environment
Environment
Obrigatório

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

entry_script
str
Obrigatório

Script do usuário que será executado em paralelo em vários nós. Isso é especificado como caminho de arquivo 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 usada para qualquer preparação cara 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 de lote invocará o método de execução e passará uma lista ou um DataFrame do Pandas como argumento para o método. Cada entrada em min_batch será um filepath, se a entrada for um FileDataset, um DataFrame do Pandas, se a entrada for um TabularDataset. o método run() deve retornar um DataFrame do Pandas ou uma matriz. Para append_row output_action, esses elementos retornados são acrescentados ao arquivo de saída comum. Para 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, fará um loop sobre a função de execução até que todos os minilotes sejam processados.

error_threshold
int
Obrigatório

O número de falhas de registro para TabularDataset e falhas de arquivo para FileDataset que devem ser ignorados durante o processamento. Se a contagem de erros ultrapassar esse valor, o trabalho será anulado. 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
str
Obrigatório

Como a saída deve ser organizada. Os valores atuais com suporte são 'append_row' e 'summary_only'.

  1. 'append_row' – Todos os valores gerados pelas invocações do método run() serão agregados em um arquivo exclusivo nomeado parallel_run_step.txt que é criado no local de saída.
  2. 'summary_only' – Espera-se que o próprio script do usuário armazene a saída. Uma linha de saída ainda é esperada para cada item de entrada processado com êxito. O sistema usa essa saída apenas para cálculo de limite de erro (ignorando o valor real da linha).
compute_target
AmlCompute ou str
Obrigatório

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

node_count
int
Obrigatório

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

process_count_per_node
int
Obrigatório

O número de processos de trabalho por nó para executar o script de entrada em paralelo. Para um computador de GPU, o valor padrão é 1. Para um computador de CPU, o valor padrão é o número de núcleos. Um processo de trabalho chamará run() repetidamente passando o mini lote que ele obtém. O número total de processos de trabalho em seu trabalho é process_count_per_node * node_count, o que decide o número máximo de run() a ser executado em paralelo.

mini_batch_size
str ou int
Obrigatório

Para entrada FileDataset, esse campo é o número de arquivos que um script do usuário pode processar em uma chamada run(). Para 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, 1024 KB, 10 MB e 1 GB. (opcional, o valor padrão é 10 arquivos para FileDataset e 1 MB para TabularDataset.)

source_directory
str
Obrigatório

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

description
str
Obrigatório

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

logging_level
str
Obrigatório

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

run_invocation_timeout
int
Obrigatório

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

run_max_try
int
Obrigatório

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

append_row_file_name
str
Obrigatório

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
int
Obrigatório

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á anulado. Esse limite é para a entrada inteira, e não para o minilote individual enviado para o método run(). O intervalo é [-1, int.max]. -1 indica ignorar todas as falhas durante o processamento. Um minilote pode falhar na primeira vez que for processado e ter êxito na segunda tentativa. A verificação entre a primeira e a segunda vez o contará como falha. A verificação após a segunda vez não o contará como falha. Os argumentos –error_threshold, –allowed_failed_count e –allowed_failed_percent podem trabalhar em conjunto. Se mais de um for especificado, o trabalho será anulado caso exceda qualquer um deles.

allowed_failed_percent
float
Obrigató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á anulado. Esse limite é para a entrada inteira, e não para o 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 é iniciada depois que todos os minilotes foram agendados. Os argumentos –error_threshold, –allowed_failed_count e –allowed_failed_percent podem trabalhar em conjunto. Se mais de um for especificado, o trabalho será anulado caso exceda qualquer um deles.

partition_keys
List[str]
Obrigatório

As chaves usadas para particionar o conjuntos 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, em que cada um é uma chave usada para particionar o conjuntos de dados de entrada. No entanto, se promovido para PipelineParameter, os valores padrão devem ser o StR de despejo do JSON da lista, pois o tipo de lista não é compatível com PipelineParameter por enquanto. As entradas devem ser conjuntos de dados particionados e o partition_keys deve ser um subconjunto das chaves de cada conjunto de dados de entrada para que isso funcione.

environment_variables
Dict[str, str]
Obrigatório

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

Comentários

A classe ParallelRunConfig é usada para fornecer a configuração da classe ParallelRunStep. ParallelRunConfig e ParallelRunStep podem ser usados para processar grandes volumes de dados em paralelo. Casos de uso comuns são treinar um modelo de ML ou executar inferência offline para gerar previsões em um lote de observações. O ParallelRunStep funciona separando seus dados em lotes que são processados em paralelo. A contagem de nós de tamanho do lote e outros parâmetros que podem ser reduzidos para acelerar o processamento paralelo podem ser controlados com a classe ParallelRunConfig. O ParallelRunStep pode funcionar com TabularDataset ou FileDataset como entrada.

Para usar ParallelRunStep e ParallelRunConfig:

  • Crie um objeto ParallelRunConfig para especificar 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 usa o objeto ParallelRunConfig e defina entradas e saídas para a etapa.

  • Use o objeto ParallelRunStep configurado em um Pipeline da mesma forma 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 esse exemplo, confira o https://aka.ms/batch-inference-notebooks do notebook.

Métodos

load_yaml

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

save_to_yaml

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

load_yaml

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

static load_yaml(workspace, path)

Parâmetros

workspace
Workspace
Obrigatório

O workspace para ler os dados de configuração.

path
str
Obrigatório

O caminho para carregar a configuração.

save_to_yaml

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

save_to_yaml(path)

Parâmetros

path
str
Obrigatório

O caminho para salvar o arquivo.