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._ParallelRunConfigBaseParallelRunConfig
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
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
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
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
Como a saída deve ser organizada. Os valores atuais com suporte são 'append_row' e 'summary_only'.
- '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.
- '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
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
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 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.
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
Caminho para a pasta que contém os arquivos entry_script
e de suporte usados para executar no destino de computação.
- description
- str
Uma descrição para fornecer o serviço em lote usado para fins de exibição.
- logging_level
- str
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
Tempo limite em segundos para cada invocação do método run(). (opcional; o valor padrão é 60.)
- run_max_try
- int
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
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
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
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.
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.
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
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
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
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
Como a saída deve ser organizada. Os valores atuais com suporte são 'append_row' e 'summary_only'.
- '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.
- '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
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
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 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.
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
Caminho para a pasta que contém os arquivos entry_script
e de suporte usados para executar no destino de computação.
- description
- str
Uma descrição para fornecer o serviço em lote usado para fins de exibição.
- logging_level
- str
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
Tempo limite em segundos para cada invocação do método run(). (opcional; o valor padrão é 60.)
- run_max_try
- int
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
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
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
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.
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.
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:
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 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
save_to_yaml
Exporte os dados de configuração de execução paralela para um arquivo YAML.
save_to_yaml(path)
Parâmetros
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de