ParallelRunConfig Clase
Define la configuración de un objeto ParallelRunStep.
Para obtener un ejemplo del uso de ParallelRunStep, vea el cuaderno https://aka.ms/batch-inference-notebooks.
Para consultar la guía de solución de problemas, vea https://aka.ms/prstsg. Puede encontrar más referencias allí.
Inicialice el objeto config.
- Herencia
-
azureml.pipeline.core._parallel_run_config_base._ParallelRunConfigBaseParallelRunConfig
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 que use un entorno de Python existente o para configurar un entorno temporal para el experimento. La definición del entorno es responsable de definir las dependencias de aplicación necesarias, como los paquetes Conda o PIP. |
entry_script
Requerido
|
Script de usuario que se ejecutará en paralelo en varios nodos. Se especifica como una ruta de acceso del archivo local. Si se especifica |
error_threshold
Requerido
|
número de errores de registro para TabularDataset y errores de archivo para FileDataset que se deben omitir durante el procesamiento. Si el recuento de errores está por encima de este valor, se anulará el trabajo. El umbral de error es para toda la entrada y no para los minilotes individuales que se envían al método run(). El intervalo es [-1, int.max]. -1 indica que se omitan todos los errores durante el procesamiento. |
output_action
Requerido
|
Cómo se debería organizar la salida. Los valores admitidos actualmente son "append_row" y "summary_only".
|
compute_target
Requerido
|
Destino de proceso que se 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 del área de trabajo. |
node_count
Requerido
|
Número de nodos del destino de proceso usados 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 una máquina de GPU, el valor predeterminado es 1.
En una máquina de CPU, el valor predeterminado es el número de núcleos por nodo.
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 a 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 a run(). Los valores de ejemplo son 1024, 1024 KB, 10 MB y 1 GB. (Opcional: el valor predeterminado es 10 archivos para FileDataset y 1 MB para TabularDataset). Valor predeterminado: None
|
source_directory
|
Ruta de acceso a una carpeta que contiene 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 "logging". 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 de cada invocación del método run(). (Opcional; el valor predeterminado es 60). Valor predeterminado: 60
|
run_max_try
|
Número máximo de reintentos para un minilote con errores o que ha agotado el tiempo de espera. El intervalo es [1, int.max]. El valor predeterminado es 3. Un minilote con un recuento de eliminación de la cola mayor que este no se volverá a procesar 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 minilotes con errores que se deben omitir durante el procesamiento. Si el recuento de errores está por encima de 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 que se omitan todos los errores durante el procesamiento. Un minilote puede producir un error la primera vez que se procesa y, a continuación, se realiza correctamente en el segundo intento. Si se comprueba entre la primera y la segunda vez, se cuenta como con errores. La comprobación después de la segunda vez no se cuenta como con errores. Los argumentos –error_threshold, –allowed_failed_count y –allowed_failed_percent pueden funcionar juntos. Si se especifica más de uno, el trabajo se anulará si supera cualquiera de ellos. Valor predeterminado: None
|
allowed_failed_percent
|
Porcentaje de minilotes con errores que se deben omitir durante el procesamiento. Si el porcentaje de errores está por encima de 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 omitan todos los errores durante el procesamiento. La comprobación se inicia después de que se hayan programado todos los minilotes. Los argumentos –error_threshold, –allowed_failed_count y –allowed_failed_percent pueden funcionar juntos. Si se especifica más de uno, el trabajo se anulará si supera cualquiera 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 que son 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 el str de volcado JSON de la lista, ya que el tipo de lista no se admite en PipelineParameter por ahora. Las entradas deben ser conjuntos de datos con particiones y 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 donde 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 que use un entorno de Python existente o para configurar un entorno temporal para el experimento. La definición del entorno es responsable de definir las dependencias de aplicación necesarias, como los paquetes Conda o PIP. |
entry_script
Requerido
|
Script de usuario que se ejecutará en paralelo en varios nodos. Se especifica como una ruta de acceso del archivo local. Si se especifica |
error_threshold
Requerido
|
número de errores de registro para TabularDataset y errores de archivo para FileDataset que se deben omitir durante el procesamiento. Si el recuento de errores está por encima de este valor, se anulará el trabajo. El umbral de error es para toda la entrada y no para los minilotes individuales que se envían al método run(). El intervalo es [-1, int.max]. -1 indica que se omitan todos los errores durante el procesamiento. |
output_action
Requerido
|
Cómo se debería organizar la salida. Los valores admitidos actualmente son "append_row" y "summary_only".
|
compute_target
Requerido
|
Destino de proceso que se 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 del área de trabajo. |
node_count
Requerido
|
Número de nodos del destino de proceso usados 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 a 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 a run(). Los valores de ejemplo son 1024, 1024 KB, 10 MB y 1 GB. (Opcional: el valor predeterminado es 10 archivos para FileDataset y 1 MB para TabularDataset). |
source_directory
Requerido
|
Ruta de acceso a una carpeta que contiene |
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 "logging". Los valores posibles son "WARNING", "INFO" y "DEBUG". (Opcional: el valor predeterminado es "INFO"). |
run_invocation_timeout
Requerido
|
Tiempo de espera en segundos de cada invocación del método run(). (Opcional; el valor predeterminado es 60). |
run_max_try
Requerido
|
Número máximo de reintentos para un minilote con errores o que ha agotado el tiempo de espera. El intervalo es [1, int.max]. El valor predeterminado es 3. Un minilote con un recuento de eliminación de la cola mayor que este no se volverá a procesar y se eliminará directamente. |
append_row_file_name
Requerido
|
Nombre del archivo de salida si |
allowed_failed_count
Requerido
|
Número de minilotes con errores que se deben omitir durante el procesamiento. Si el recuento de errores está por encima de 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 que se omitan todos los errores durante el procesamiento. Un minilote puede producir un error la primera vez que se procesa y, a continuación, se realiza correctamente en el segundo intento. Si se comprueba entre la primera y la segunda vez, se cuenta como con errores. La comprobación después de la segunda vez no se cuenta como con errores. Los argumentos –error_threshold, –allowed_failed_count y –allowed_failed_percent pueden funcionar juntos. Si se especifica más de uno, el trabajo se anulará si supera cualquiera de ellos. |
allowed_failed_percent
Requerido
|
Porcentaje de minilotes con errores que se deben omitir durante el procesamiento. Si el porcentaje de errores está por encima de 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 omitan todos los errores durante el procesamiento. La comprobación se inicia después de que se hayan programado todos los minilotes. Los argumentos –error_threshold, –allowed_failed_count y –allowed_failed_percent pueden funcionar juntos. Si se especifica más de uno, el trabajo se anulará si supera cualquiera 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 que son 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 el str de volcado JSON de la lista, ya que el tipo de lista no se admite en PipelineParameter por ahora. Las entradas deben ser conjuntos de datos con particiones y 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 donde se ejecuta el script de usuario. |
Comentarios
La clase ParallelRunConfig se usa para proporcionar la configuración de la clase ParallelRunStep. ParallelRunConfig y ParallelRunStep se pueden usar conjuntamente 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 número de nodos y otros parámetros ajustables para acelerar el procesamiento paralelo se pueden controlar con la clase ParallelRunConfig. ParallelRunStep puede funcionar con TabularDataset o FileDataset como entrada.
Para usar ParallelRunStep y ParallelRunConfig:
Cree un objeto ParallelRunConfig 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 y defina las entradas y salidas del paso.
Use el objeto ParallelRunStep configurado en una Pipeline como lo haría con otros tipos de pasos de canalización.
En los siguientes artículos se analizan ejemplos de trabajo con las 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 más información sobre este ejemplo, consulte el cuaderno https://aka.ms/batch-inference-notebooks.
Métodos
load_yaml |
Cargue datos de configuración de ejecución en paralelo desde un archivo YAML. |
save_to_yaml |
Exporta datos de configuración de ejecución en paralelo a un archivo YAML. |
load_yaml
Cargue 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 desde la que se leerán los datos de configuración. |
path
Requerido
|
La ruta de acceso desde la que se carga la configuración. |
save_to_yaml
Exporta 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 en la que se guardará el archivo. |