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
|
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
Necessário
|
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
|
Como a saída deve ser organizada. Os valores suportados atuais são 'append_row' e 'summary_only'.
|
compute_target
Necessário
|
AmlCompute ou
str
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
|
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 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á 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
|
Caminho para a pasta que contém os Default value: None
|
description
|
Uma descrição para fornecer o serviço de lote usado para fins de exibição. Default value: None
|
logging_level
|
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
|
Tempo limite em segundos para cada invocação do método run(). (opcional, o valor padrão é 60.) Default value: 60
|
run_max_try
|
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
|
O nome do arquivo de saída, se o Default value: 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á 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
|
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
Necessário
|
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
|
Como a saída deve ser organizada. Os valores suportados atuais são 'append_row' e 'summary_only'.
|
compute_target
Necessário
|
AmlCompute ou
str
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
|
Número de nós no destino de computação usado para executar o ParallelRunStep. |
process_count_per_node
Necessário
|
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á |
mini_batch_size
Necessário
|
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
|
Caminho para a pasta que contém os |
description
Necessário
|
Uma descrição para fornecer o serviço de lote usado para fins de exibição. |
logging_level
Necessário
|
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
|
Tempo limite em segundos para cada invocação do método run(). (opcional, o valor padrão é 60.) |
run_max_try
Necessário
|
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
|
O nome do arquivo de saída, se o |
allowed_failed_count
Necessá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á 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:
Tutorial: Criar um pipeline do Azure Machine Learning para classificação em lote. Este artigo mostra como utilizar estas duas classes para a classificação em lotes assíncrona num pipeline e permitir que um ponto final REST possa executar o pipeline.
Executar a inferência de lote em grandes quantidades de dados com 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 imagens pré-preparado baseado no conjunto de dados 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 |
Exporte dados de configuração de execução paralela para um arquivo YAML. |
load_yaml
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
|
O caminho para salvar o arquivo. |