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 o guia de solução de problemas, consulte https://aka.ms/prstsg. Você pode encontrar mais referências lá.
Inicialize o objeto de configuração.
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
Nome | Description |
---|---|
environment
Obrigatório
|
A definição de ambiente que configura o ambiente do 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 aplicativo necessárias, como pacotes conda ou pip. |
entry_script
Obrigatório
|
Script de usuário que será executado em paralelo em vários nós. Isso é especificado como um caminho de arquivo local. Se |
error_threshold
Obrigatório
|
O número de falhas TabularDataset de registro e falhas de arquivo para FileDataset isso devem ser ignoradas 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
Obrigatório
|
Como a saída deve ser organizada. Os valores atuais com suporte são 'append_row' e 'summary_only'.
|
compute_target
Obrigatório
|
AmlCompute ou
str
Destino de computação a ser usado para execução de 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
Obrigatório
|
Número de nós no destino de computação usado para executar o ParallelRunStep. |
process_count_per_node
|
O número de processos de trabalho por nó para executar o script de entrada em paralelo.
Para o computador 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á Valor padrão: None
|
mini_batch_size
|
Para entrada FileDataset, esse campo é o número de arquivos que um script de 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, 1024KB, 10 MB e 1 GB. (opcional, o valor padrão é 10 arquivos para FileDataset e 1MB para TabularDataset.) Valor padrão: None
|
source_directory
|
Caminho para a pasta que contém os Valor padrão: None
|
description
|
Uma descrição para fornecer o serviço em lote usado para fins de exibição. Valor padrão: None
|
logging_level
|
Uma cadeia de caracteres do nome do nível de registro em log, que é definido em 'log'. Os valores possíveis são 'WARNING', 'INFO' e 'DEBUG'. (opcional, o valor padrão é 'INFO'.) Valor padrão: INFO
|
run_invocation_timeout
|
Tempo limite em segundos para cada invocação do método run(). (opcional, o valor padrão é 60.) Valor padrão: 60
|
run_max_try
|
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 mini lote com contagem de dequeue maior do que isso não será processado novamente e será excluído diretamente. Valor padrão: 3
|
append_row_file_name
|
O nome do arquivo de saída se for Valor padrão: None
|
allowed_failed_count
|
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 toda a entrada em vez do método de minilot individual enviado para run(). O intervalo é [-1, int.max]. -1 indica ignorar todas as falhas durante o processamento. Um mini lote pode falhar na primeira vez em que é processado e, em seguida, ter êxito na segunda tentativa. A verificação entre a primeira e a segunda vez irá contá-la como falha. A verificação após a segunda vez não a conta como falha. O argumento –error_threshold, –allowed_failed_count e –allowed_failed_percent pode trabalhar em conjunto. Se mais de um especificado, o trabalho será anulado se exceder qualquer um deles. Valor padrão: None
|
allowed_failed_percent
|
O percentual 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 toda a entrada em vez do método de minilot individual enviado para 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 mini-lotes tiverem sido agendados. O argumento –error_threshold, –allowed_failed_count e –allowed_failed_percent pode trabalhar em conjunto. Se mais de um especificado, o trabalho será anulado se exceder qualquer um deles. Valor padrão: None
|
partition_keys
|
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 cada um sendo uma chave usada para particionar o conjunto de dados de entrada. No entanto, se promovido a PipelineParameter, os valores padrão devem ser a estrutura de despejo json da lista porque o tipo de lista não tem suporte no 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. Valor padrão: None
|
environment_variables
|
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. Valor padrão: None
|
environment
Obrigatório
|
A definição de ambiente que configura o ambiente do 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 aplicativo necessárias, como pacotes conda ou pip. |
entry_script
Obrigatório
|
Script de usuário que será executado em paralelo em vários nós. Isso é especificado como um caminho de arquivo local. Se |
error_threshold
Obrigatório
|
O número de falhas TabularDataset de registro e falhas de arquivo para FileDataset isso devem ser ignoradas 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
Obrigatório
|
Como a saída deve ser organizada. Os valores atuais com suporte são 'append_row' e 'summary_only'.
|
compute_target
Obrigatório
|
AmlCompute ou
str
Destino de computação a ser usado para execução de 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
Obrigatório
|
Número de nós no destino de computação usado para executar o ParallelRunStep. |
process_count_per_node
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á |
mini_batch_size
Obrigatório
|
Para entrada FileDataset, esse campo é o número de arquivos que um script de 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, 1024KB, 10 MB e 1 GB. (opcional, o valor padrão é 10 arquivos para FileDataset e 1MB para TabularDataset.) |
source_directory
Obrigatório
|
Caminho para a pasta que contém os |
description
Obrigatório
|
Uma descrição para fornecer o serviço em lote usado para fins de exibição. |
logging_level
Obrigatório
|
Uma cadeia de caracteres do nome do nível de registro em log, que é definido em 'log'. Os valores possíveis são 'WARNING', 'INFO' e 'DEBUG'. (opcional, o valor padrão é 'INFO'.) |
run_invocation_timeout
Obrigatório
|
Tempo limite em segundos para cada invocação do método run(). (opcional, o valor padrão é 60.) |
run_max_try
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 mini lote com contagem de dequeue maior do que isso não será processado novamente e será excluído diretamente. |
append_row_file_name
Obrigatório
|
O nome do arquivo de saída se for |
allowed_failed_count
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 toda a entrada em vez do método de minilot individual enviado para run(). O intervalo é [-1, int.max]. -1 indica ignorar todas as falhas durante o processamento. Um mini lote pode falhar na primeira vez em que é processado e, em seguida, ter êxito na segunda tentativa. A verificação entre a primeira e a segunda vez irá contá-la como falha. A verificação após a segunda vez não a conta como falha. O argumento –error_threshold, –allowed_failed_count e –allowed_failed_percent pode trabalhar em conjunto. Se mais de um especificado, o trabalho será anulado se exceder qualquer um deles. |
allowed_failed_percent
Obrigatório
|
O percentual 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 toda a entrada em vez do método de minilot individual enviado para 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 mini-lotes tiverem sido agendados. O argumento –error_threshold, –allowed_failed_count e –allowed_failed_percent pode trabalhar em conjunto. Se mais de um especificado, o trabalho será anulado se exceder qualquer um deles. |
partition_keys
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 cada um sendo uma chave usada para particionar o conjunto de dados de entrada. No entanto, se promovido a PipelineParameter, os valores padrão devem ser a estrutura de despejo json da lista porque o tipo de lista não tem suporte no 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
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 configuração para a ParallelRunStep classe. ParallelRunConfig e ParallelRunStep podem ser usados juntos para processar grandes quantidades 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. 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 funcionar com ou TabularDatasetFileDataset 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 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 como Pipeline faria com outros tipos de etapa de pipeline.
Exemplos de como trabalhar com classes ParallelRunStep e ParallelRunConfig para inferência em lote são discutidos nos seguintes artigos:
Tutorial: criar um pipeline do Azure Machine Learning para pontuação de lote. Este artigo mostra como usar essas duas classes para pontuação em lote assíncrona em um pipeline e habilitar um ponto de extremidade REST para executar o pipeline.
Execute a inferência de lote em grandes quantidades de dados usando o Azure Machine Learning. Este artigo mostra como processar grandes quantidades de dados de forma assíncrona e em paralelo com um script de inferência personalizado e um modelo de classificação de imagem pré-treinado baseia-se no conjunto de dados do MNIST.
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 |
Exportar dados de configuração de execução paralela para um arquivo YAML. |
load_yaml
save_to_yaml
Exportar dados de configuração de execução paralela para um arquivo YAML.
save_to_yaml(path)
Parâmetros
Nome | Description |
---|---|
path
Obrigatório
|
O caminho para o qual salvar o arquivo. |