ParallelRunConfig Clase
Define la configuración de un ParallelRunStep objeto .
Para obtener un ejemplo de uso de ParallelRunStep, consulte el cuaderno https://aka.ms/batch-inference-notebooks.
Para obtener una guía de solución de problemas, consulte https://aka.ms/prstsg. Puede encontrar más referencias allí.
Inicialice el objeto config.
Constructor
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
Nombre | Description |
---|---|
environment
Requerido
|
Definición de entorno que configura el entorno de Python. Se puede configurar para usar un entorno de Python existente o para configurar un entorno temporal para el experimento. La definición de entorno es responsable de definir las dependencias de aplicación necesarias, como paquetes conda o pip. |
entry_script
Requerido
|
Script de usuario que se ejecutará en paralelo en varios nodos. Esto se especifica como una ruta de acceso del archivo local. Si |
error_threshold
Requerido
|
Número de errores de registro y TabularDataset errores de archivo para FileDataset que se deben omitir durante el procesamiento. Si el recuento de errores supera este valor, se anulará el trabajo. El umbral de error es para toda la entrada y no para los miniprocesos individuales enviados al método run(). El intervalo es [-1, int.max]. -1 indica omitir todos los errores durante el procesamiento. |
output_action
Requerido
|
Cómo se debe organizar la salida. Los valores admitidos actuales son "append_row" y "summary_only".
|
compute_target
Requerido
|
Destino de proceso que se va a usar para la ejecución de ParallelRunStep. Este parámetro se puede especificar como un objeto de destino de proceso o el nombre de un destino de proceso en el área de trabajo. |
node_count
Requerido
|
Número de nodos del destino de proceso usado para ejecutar ParallelRunStep. |
process_count_per_node
|
Número de procesos de trabajo por nodo para ejecutar el script de entrada en paralelo.
En el caso de la máquina gpu, el valor predeterminado es 1.
En el caso de la máquina de CPU, el valor predeterminado es el número de núcleos.
Un proceso de trabajo llamará repetidamente a Valor predeterminado: None
|
mini_batch_size
|
Para la entrada FileDataset, este campo es el número de archivos que un script de usuario puede procesar en una llamada run(). Para la entrada TabularDataset, este campo es el tamaño aproximado de los datos que el script de usuario puede procesar en una llamada run(). Los valores de ejemplo son 1024, 1024 KB, 10 MB y 1 GB. (opcional, el valor predeterminado es 10 archivos para FileDataset y 1MB para TabularDataset). Valor predeterminado: None
|
source_directory
|
Ruta de acceso a la carpeta que contiene los Valor predeterminado: None
|
description
|
Descripción para proporcionar el servicio por lotes que se usa con fines de visualización. Valor predeterminado: None
|
logging_level
|
Cadena del nombre del nivel de registro, que se define en "registro". Los valores posibles son "WARNING", "INFO" y "DEBUG". (opcional, el valor predeterminado es 'INFO'). Valor predeterminado: INFO
|
run_invocation_timeout
|
Tiempo de espera en segundos para cada invocación del método run(). (opcional, el valor predeterminado es 60). Valor predeterminado: 60
|
run_max_try
|
Número de intentos máximos para un lote de mini error o de tiempo de espera. El intervalo es [1, int.max]. El valor predeterminado es 3. Un mini lote con recuento de desqueue mayor que no se procesará de nuevo y se eliminará directamente. Valor predeterminado: 3
|
append_row_file_name
|
Nombre del archivo de salida si Valor predeterminado: None
|
allowed_failed_count
|
Número de mini lotes con errores que se deben omitir durante el procesamiento. Si el recuento de errores supera este valor, se anulará el trabajo. Este umbral es para toda la entrada en lugar del minilote individual enviado al método run(). El intervalo es [-1, int.max]. -1 indica omitir todos los errores durante el procesamiento. Un mini lote puede producir un error en la primera vez que se procesa y, a continuación, se realiza correctamente en el segundo intento. La comprobación entre la primera y la segunda vez la contará como errónea. La comprobación después de la segunda vez no la contará como con errores. El argumento –error_threshold, –allowed_failed_count y –allowed_failed_percent puede funcionar conjuntamente. Si se especifica más de uno, se anulará el trabajo si supera alguno de ellos. Valor predeterminado: None
|
allowed_failed_percent
|
Porcentaje de mini lotes con errores que se deben omitir durante el procesamiento. Si el porcentaje con error supera este valor, se anulará el trabajo. Este umbral es para toda la entrada en lugar del minilote individual enviado al método run(). El intervalo es [0, 100]. 100 o 100.0 indica que se omiten todos los errores durante el procesamiento. La comprobación se inicia después de que se hayan programado todos los mini lotes. El argumento –error_threshold, –allowed_failed_count y –allowed_failed_percent puede funcionar conjuntamente. Si se especifica más de uno, se anulará el trabajo si supera alguno de ellos. Valor predeterminado: None
|
partition_keys
|
Claves usadas para particionar el conjunto de datos en minilotes. Si se especifica, los datos con la misma clave se dividirán en el mismo minilote. Si se especifican partition_keys y mini_batch_size, se producirá un error. Debe ser una lista de elementos str cada uno de los cuales es una clave que se usa para particionar el conjunto de datos de entrada. Sin embargo, si se promueve a PipelineParameter, los valores predeterminados deben ser la cadena de volcado json de la lista porque el tipo de lista no se admite en PipelineParameter por ahora. Las entradas deben tener particiones de conjuntos de datos y el partition_keys debe ser un subconjunto de las claves de cada conjunto de datos de entrada para que funcione. Valor predeterminado: None
|
environment_variables
|
Diccionario de nombres y valores de variables de entorno. Estas variables de entorno se establecen en el proceso en el que se ejecuta el script de usuario. Valor predeterminado: None
|
environment
Requerido
|
Definición de entorno que configura el entorno de Python. Se puede configurar para usar un entorno de Python existente o para configurar un entorno temporal para el experimento. La definición de entorno es responsable de definir las dependencias de aplicación necesarias, como paquetes conda o pip. |
entry_script
Requerido
|
Script de usuario que se ejecutará en paralelo en varios nodos. Esto se especifica como una ruta de acceso del archivo local. Si |
error_threshold
Requerido
|
Número de errores de registro y TabularDataset errores de archivo para FileDataset que se deben omitir durante el procesamiento. Si el recuento de errores supera este valor, se anulará el trabajo. El umbral de error es para toda la entrada y no para los miniprocesos individuales enviados al método run(). El intervalo es [-1, int.max]. -1 indica omitir todos los errores durante el procesamiento. |
output_action
Requerido
|
Cómo se debe organizar la salida. Los valores admitidos actuales son "append_row" y "summary_only".
|
compute_target
Requerido
|
Destino de proceso que se va a usar para la ejecución de ParallelRunStep. Este parámetro se puede especificar como un objeto de destino de proceso o el nombre de un destino de proceso en el área de trabajo. |
node_count
Requerido
|
Número de nodos del destino de proceso usado para ejecutar ParallelRunStep. |
process_count_per_node
Requerido
|
Número de procesos de trabajo por nodo para ejecutar el script de entrada en paralelo.
En el caso de una máquina de GPU, el valor predeterminado es 1.
Para una máquina de CPU, el valor predeterminado es el número de núcleos.
Un proceso de trabajo llamará repetidamente a |
mini_batch_size
Requerido
|
Para la entrada FileDataset, este campo es el número de archivos que un script de usuario puede procesar en una llamada run(). Para la entrada TabularDataset, este campo es el tamaño aproximado de los datos que el script de usuario puede procesar en una llamada run(). Los valores de ejemplo son 1024, 1024 KB, 10 MB y 1 GB. (opcional, el valor predeterminado es 10 archivos para FileDataset y 1MB para TabularDataset). |
source_directory
Requerido
|
Ruta de acceso a la carpeta que contiene los |
description
Requerido
|
Descripción para proporcionar el servicio por lotes que se usa con fines de visualización. |
logging_level
Requerido
|
Cadena del nombre del nivel de registro, que se define en "registro". Los valores posibles son "WARNING", "INFO" y "DEBUG". (opcional, el valor predeterminado es 'INFO'). |
run_invocation_timeout
Requerido
|
Tiempo de espera en segundos para cada invocación del método run(). (opcional, el valor predeterminado es 60). |
run_max_try
Requerido
|
Número de intentos máximos para un lote de mini error o de tiempo de espera. El intervalo es [1, int.max]. El valor predeterminado es 3. Un mini lote con recuento de desqueue mayor que no se procesará de nuevo y se eliminará directamente. |
append_row_file_name
Requerido
|
Nombre del archivo de salida si |
allowed_failed_count
Requerido
|
Número de mini lotes con errores que se deben omitir durante el procesamiento. Si el recuento de errores supera este valor, se anulará el trabajo. Este umbral es para toda la entrada en lugar del minilote individual enviado al método run(). El intervalo es [-1, int.max]. -1 indica omitir todos los errores durante el procesamiento. Un mini lote puede producir un error en la primera vez que se procesa y, a continuación, se realiza correctamente en el segundo intento. La comprobación entre la primera y la segunda vez la contará como errónea. La comprobación después de la segunda vez no la contará como con errores. El argumento –error_threshold, –allowed_failed_count y –allowed_failed_percent puede funcionar conjuntamente. Si se especifica más de uno, se anulará el trabajo si supera alguno de ellos. |
allowed_failed_percent
Requerido
|
Porcentaje de mini lotes con errores que se deben omitir durante el procesamiento. Si el porcentaje con error supera este valor, se anulará el trabajo. Este umbral es para toda la entrada en lugar del minilote individual enviado al método run(). El intervalo es [0, 100]. 100 o 100.0 indica que se omiten todos los errores durante el procesamiento. La comprobación se inicia después de que se hayan programado todos los mini lotes. El argumento –error_threshold, –allowed_failed_count y –allowed_failed_percent puede funcionar conjuntamente. Si se especifica más de uno, se anulará el trabajo si supera alguno de ellos. |
partition_keys
Requerido
|
Claves usadas para particionar el conjunto de datos en minilotes. Si se especifica, los datos con la misma clave se dividirán en el mismo minilote. Si se especifican partition_keys y mini_batch_size, se producirá un error. Debe ser una lista de elementos str cada uno de los cuales es una clave que se usa para particionar el conjunto de datos de entrada. Sin embargo, si se promueve a PipelineParameter, los valores predeterminados deben ser la cadena de volcado json de la lista porque el tipo de lista no se admite en PipelineParameter por ahora. Las entradas deben tener particiones de conjuntos de datos y el partition_keys debe ser un subconjunto de las claves de cada conjunto de datos de entrada para que funcione. |
environment_variables
Requerido
|
Diccionario de nombres y valores de variables de entorno. Estas variables de entorno se establecen en el proceso en el que se ejecuta el script de usuario. |
Comentarios
La clase ParallelRunConfig se usa para proporcionar configuración para la ParallelRunStep clase . ParallelRunConfig y ParallelRunStep se pueden usar juntos para procesar grandes cantidades de datos en paralelo. Los casos de uso comunes son el entrenamiento de un modelo de aprendizaje automático o la ejecución de inferencia sin conexión para generar predicciones sobre un lote de observaciones. ParallelRunStep funciona mediante la separación de los datos en lotes que se procesan en paralelo. El tamaño del lote, el recuento de nodos y otros parámetros ajustables para acelerar el procesamiento paralelo se puede controlar con la ParallelRunConfig clase . ParallelRunStep puede funcionar con o TabularDatasetFileDataset como entrada.
Para usar ParallelRunStep y ParallelRunConfig:
Cree un ParallelRunConfig objeto para especificar cómo se realiza el procesamiento por lotes, con parámetros para controlar el tamaño del lote, el número de nodos por destino de proceso y una referencia al script de Python personalizado.
Cree un objeto ParallelRunStep que use el objeto ParallelRunConfig, define entradas y salidas para el paso.
Use el objeto ParallelRunStep configurado en un Pipeline elemento igual que lo haría con otros tipos de pasos de canalización.
En los artículos siguientes se describen ejemplos de cómo trabajar con clases ParallelRunStep y ParallelRunConfig para la inferencia por lotes:
Tutorial: Compilación de una canalización de Azure Machine Learning para la puntuación por lotes En este artículo se muestra cómo usar estas dos clases para la puntuación por lotes asincrónica en una canalización y cómo habilitar un punto de conexión REST para ejecutar la canalización.
Ejecución de una inferencia por lotes en grandes cantidades de datos mediante Azure Machine Learning En este artículo se muestra cómo procesar grandes cantidades de datos de forma asincrónica y en paralelo con un script de inferencia personalizado y un modelo de clasificación de imágenes previamente entrenado basado en el conjunto de datos de 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 obtener más información sobre este ejemplo, vea el cuaderno https://aka.ms/batch-inference-notebooks.
Métodos
load_yaml |
Cargue los datos de configuración de ejecución en paralelo desde un archivo YAML. |
save_to_yaml |
Exporte los datos de configuración de ejecución en paralelo a un archivo YAML. |
load_yaml
Cargue los datos de configuración de ejecución en paralelo desde un archivo YAML.
static load_yaml(workspace, path)
Parámetros
Nombre | Description |
---|---|
workspace
Requerido
|
Área de trabajo de la que se van a leer los datos de configuración. |
path
Requerido
|
Ruta de acceso desde la que se carga la configuración. |
save_to_yaml
Exporte los datos de configuración de ejecución en paralelo a un archivo YAML.
save_to_yaml(path)
Parámetros
Nombre | Description |
---|---|
path
Requerido
|
Ruta de acceso a la que se va a guardar el archivo. |