

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Cargas de trabajo de transformación de datos con procesamiento SageMaker
<a name="processing-job"></a>

SageMaker El procesamiento se refiere a las capacidades de la SageMaker IA para ejecutar los datos antes y después del procesamiento, diseñar funciones y modelar tareas de evaluación en la infraestructura totalmente gestionada de la SageMaker IA. Estas tareas se ejecutan como [trabajos de procesamiento](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProcessingJob.html). A continuación, se proporciona información y recursos para obtener información sobre el SageMaker procesamiento.

Con la API de SageMaker procesamiento, los científicos de datos pueden ejecutar scripts y cuadernos para procesar, transformar y analizar conjuntos de datos a fin de prepararlos para el aprendizaje automático. Cuando se combina con otras tareas fundamentales de aprendizaje automático que proporciona la SageMaker IA, como la formación y el alojamiento, el procesamiento le proporciona las ventajas de un entorno de aprendizaje automático totalmente gestionado, que incluye todo el soporte de seguridad y cumplimiento integrado en SageMaker la IA. Tiene la flexibilidad de utilizar los contenedores de procesamiento de datos integrados o crear sus propios contenedores para una lógica de procesamiento personalizada y, a continuación, enviar los trabajos para que se ejecuten en una infraestructura gestionada por la SageMaker IA. 

**nota**  
 Puede crear un trabajo de procesamiento mediante programación llamando a la acción de la [CreateProcessingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProcessingJob.html)API en cualquier lenguaje compatible con la SageMaker IA o utilizando el. AWS CLI Para obtener información sobre cómo esta acción de API se traduce en una función en el idioma que prefieras, consulta la sección [Vea también](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProcessingJob.html#API_CreateProcessingJob_SeeAlso) de CreateProcessingJob y elige un SDK. Como ejemplo, para los usuarios de Python, consulte la sección [Amazon SageMaker Processing](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_processing.html) del SDK de SageMaker Python. También puede consultar la sintaxis de solicitud completa de [create\$1processing\$1job](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/create_processing_job.html) en AWS SDK para Python (Boto3).

En el siguiente diagrama se muestra cómo Amazon SageMaker AI ejecuta un trabajo de procesamiento. Amazon SageMaker AI toma el script, copia los datos del Amazon Simple Storage Service (Amazon S3) y, a continuación, extrae un contenedor de procesamiento. Amazon SageMaker AI gestiona completamente la infraestructura subyacente de un trabajo de procesamiento. Después de enviar un trabajo de procesamiento, la SageMaker IA lanza las instancias de cómputo, procesa y analiza los datos de entrada y, una vez finalizada, libera los recursos. El resultado del trabajo de procesamiento se almacena en el bucket de Amazon S3 que especifique. 

**nota**  
Los datos de entrada tienen que estar almacenados en un bucket de Amazon S3. Como alternativa, también puede utilizar Amazon Athena o Amazon Redshift como orígenes de entrada.

![\[Ejecución de un trabajo de procesamiento.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/Processing-1.png)


**sugerencia**  
Para obtener información sobre las prácticas recomendadas para la computación distribuida de los trabajos de entrenamiento y procesamiento de machine learning (ML) en general, consulte [Cómputo distribuido con mejores prácticas de SageMaker IA](distributed-training-options.md).

## Usa cuadernos SageMaker de muestra de Amazon Processing
<a name="processing-job-sample-notebooks"></a>

Proporcionamos dos cuadernos de Jupyter de ejemplos que muestran cómo realizar el preprocesamiento de datos, la evaluación de modelos o ambas tareas.

[Para ver un ejemplo de cuaderno que muestra cómo ejecutar scripts de scikit-learn para realizar el preprocesamiento de datos y el entrenamiento y la evaluación de modelos con el SDK de SageMaker Python para procesamiento, consulte scikit-learn Processing.](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker_processing/scikit_learn_data_processing_and_model_evaluation) Este cuaderno también muestra cómo usar su propio contenedor personalizado para ejecutar cargas de trabajo de procesamiento con sus bibliotecas de Python y otras dependencias específicas.

Para ver un ejemplo de bloc de notas que muestra cómo usar Amazon SageMaker Processing para realizar el preprocesamiento de datos distribuidos con Spark, consulta [Procesamiento distribuido (Spark)](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker_processing/spark_distributed_data_processing/sagemaker-spark-processing.ipynb). Este cuaderno también muestra cómo entrenar un modelo de regresión utilizando el conjunto XGBoost de datos preprocesado.

Para obtener instrucciones sobre cómo crear instancias de Jupyter Notebook y acceder a ellas, que puede utilizar para ejecutar estos ejemplos en SageMaker IA, consulte. [Instancias de Amazon SageMaker Notebook](nbi.md) Una vez que haya creado una instancia de bloc de notas y la haya abierto, seleccione la pestaña **Ejemplos de SageMaker IA** para ver una lista de todas las muestras de SageMaker IA. Para abrir un cuaderno, elija su pestaña **Usar** y elija **Crear copia**.

## Supervisa los trabajos SageMaker de procesamiento de Amazon con CloudWatch registros y métricas
<a name="processing-job-cloudwatch"></a>

Amazon SageMaker Processing proporciona CloudWatch registros y métricas de Amazon para supervisar los trabajos de procesamiento. CloudWatch proporciona métricas de CPU, GPU, memoria, memoria de GPU y disco, y registro de eventos. Para obtener más información, consulte [Métricas de Amazon SageMaker AI en Amazon CloudWatch](monitoring-cloudwatch.md) y [CloudWatch Registros para Amazon SageMaker AI](logging-cloudwatch.md).

# Ejecución de un trabajo de procesamiento con Apache Spark
<a name="use-spark-processing-container"></a>

Apache Spark es un motor de análisis unificado para el procesamiento de datos a gran escala. Amazon SageMaker AI proporciona imágenes de Docker prediseñadas que incluyen Apache Spark y otras dependencias necesarias para ejecutar trabajos de procesamiento de datos distribuidos. A continuación se proporciona un ejemplo de cómo ejecutar un trabajo de Procesamiento de Amazon SageMaker mediante Apache Spark.

Con el [Amazon SageMaker Python SDK](https://github.com/aws/sagemaker-python-sdk#installing-the-sagemaker-python-sdk), puede aplicar fácilmente transformaciones de datos y extraer características (ingeniería de características) mediante el marco Spark. Para obtener información sobre el uso de Amazon SageMaker Python SDK para ejecutar trabajos de procesamiento de Spark, consulte [Procesamiento de datos con Spark](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_processing.html#data-processing-with-spark) en el [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/).

En [GitHub](https://github.com/aws/sagemaker-spark-container) hay disponible un repositorio de código que contiene el código fuente y los Dockerfiles de las imágenes de Spark. 

 Puede usar la clase [https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.spark.processing.PySparkProcessor](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.spark.processing.PySparkProcessor) o [https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.spark.processing.SparkJarProcessor](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.spark.processing.SparkJarProcessor) para ejecutar su aplicación Spark dentro de un trabajo de procesamiento. Tenga en cuenta que puede establecer MaxRuntimeInSeconds en un límite máximo de tiempo de ejecución de 5 días. Con respecto al tiempo de ejecución y al número de instancias utilizadas, las cargas de trabajo de simple spark muestran una relación casi lineal entre el número de instancias y el tiempo de finalización. 

 El siguiente ejemplo de código muestra cómo ejecutar un trabajo de procesamiento que invoca su guión de PySpark `preprocess.py`. 

```
from sagemaker.spark.processing import PySparkProcessor

spark_processor = PySparkProcessor(
    base_job_name="spark-preprocessor",
    framework_version="2.4",
    role=role,
    instance_count=2,
    instance_type="ml.m5.xlarge",
    max_runtime_in_seconds=1200,
)

spark_processor.run(
    submit_app="preprocess.py",
    arguments=['s3_input_bucket', bucket,
               's3_input_key_prefix', input_prefix,
               's3_output_bucket', bucket,
               's3_output_key_prefix', output_prefix]
)
```

 Para obtener más información, consulte el [cuaderno de ejemplos](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker_processing/spark_distributed_data_processing/sagemaker-spark-processing.html) de procesamiento de datos distribuido con Apache Spark y SageMaker Processing. 

 Si no utiliza el [Amazon SageMaker AI Python SDK](https://sagemaker.readthedocs.io/) y una de sus clases de procesadores para recuperar las imágenes prediseñadas, puede recuperarlas usted mismo. Las imágenes de Docker prediseñadas de SageMaker se almacenan en Amazon Elastic Container Registry (Amazon ECR). Para ver una lista completa de las imágenes de Docker prediseñadas disponibles, consulte el documento de [imágenes disponibles](https://github.com/aws/sagemaker-spark-container/blob/master/available_images.md). 

 Para obtener más información sobre el uso de SageMaker Python SDK con contenedores de procesamiento, consulte [Amazon SageMaker AI Python SDK](https://sagemaker.readthedocs.io/en/stable/). 

# Ejecución de un trabajo de procesamiento con scikit-learn
<a name="use-scikit-learn-processing-container"></a>

Puede utilizar la característica Procesamiento de Amazon SageMaker para procesar datos y evaluar modelos con scripts scikit-learn en una imagen de Docker proporcionada por Amazon SageMaker AI. A continuación se proporciona un ejemplo de cómo ejecutar un trabajo de Procesamiento de Amazon SageMaker mediante scikit-learn.

Para ver un cuaderno de muestras con ejemplos de cómo ejecutar scripts scikit-learn utilizando una imagen de Docker que proporciona y mantiene SageMaker AI para preprocesar datos y evaluar modelos, consulte [Procesamiento de scikit-learn](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker_processing/scikit_learn_data_processing_and_model_evaluation). Para usar este cuaderno, debe instalar el SageMaker AI Python SDK para procesamiento. 

Este cuaderno ejecuta un trabajo de procesamiento utilizando la clase `SKLearnProcessor` del SDK de SageMaker Python para ejecutar un guión scikit-learn que proporcione usted. El guión preprocesa los datos, entrena un modelo mediante un trabajo de entrenamiento de SageMaker y, a continuación, ejecuta un trabajo de procesamiento para evaluar el modelo formado. El trabajo de procesamiento calcula cómo se espera que será el rendimiento del modelo en producción.

Para obtener más información sobre el uso del SDK de SageMaker Python con contenedores de procesamiento, consulte el [SDK de SageMaker Python](https://sagemaker.readthedocs.io/en/stable/). Para obtener una lista completa de las imágenes de Docker prediseñadas disponibles para los trabajos de procesamiento, consulte las [rutas de registro de Docker y el código de ejemplo](https://docs.aws.amazon.com/sagemaker/latest/dg-ecr-paths/sagemaker-algo-docker-registry-paths).

El siguiente ejemplo de código muestra cómo el bloc de notas utiliza `SKLearnProcessor` para ejecutar su propio guión scikit-learn utilizando una imagen de Docker que proporciona y mantiene SageMaker AI, en lugar de su propia imagen de Docker.

```
from sagemaker.sklearn.processing import SKLearnProcessor
from sagemaker.processing import ProcessingInput, ProcessingOutput

sklearn_processor = SKLearnProcessor(framework_version='0.20.0',
                                     role=role,
                                     instance_type='ml.m5.xlarge',
                                     instance_count=1)

sklearn_processor.run(code='preprocessing.py',
                      inputs=[ProcessingInput(
                        source='s3://path/to/my/input-data.csv',
                        destination='/opt/ml/processing/input')],
                      outputs=[ProcessingOutput(source='/opt/ml/processing/output/train'),
                               ProcessingOutput(source='/opt/ml/processing/output/validation'),
                               ProcessingOutput(source='/opt/ml/processing/output/test')]
                     )
```

Para procesar datos en paralelo con Scikit-Learn en Procesamiento de Amazon SageMaker, puede fragmentar objetos de entrada mediante la clave S3 configurando `s3_data_distribution_type='ShardedByS3Key'` dentro de un `ProcessingInput` para que cada instancia reciba aproximadamente el mismo número de objetos de entrada.

# Procesamiento de datos con procesadores Framework
<a name="processing-job-frameworks"></a>

A `FrameworkProcessor` puede ejecutar trabajos de procesamiento con un marco de aprendizaje automático específico, lo que le proporciona un contenedor SageMaker administrado por Amazon AI para cualquier marco de aprendizaje automático que elija. `FrameworkProcessor`proporciona contenedores prediseñados para los siguientes marcos de aprendizaje automático: Hugging Face,, MXNet PyTorch, TensorFlow y. XGBoost

La `FrameworkProcessor` clase también ofrece la posibilidad de personalizar la configuración del contenedor. La clase `FrameworkProcessor` admite la especificación de un directorio fuente `source_dir` para los scripts y las dependencias de procesamiento. Con esta capacidad, puede dar al procesador acceso a varios scripts de un directorio en lugar de especificar solo un script. `FrameworkProcessor` también admite la inclusión de un archivo `requirements.txt` en el `source_dir` para personalizar las bibliotecas de Python para instalarlas en el contenedor.

Para obtener más información sobre la `FrameworkProcessor` clase y sus métodos y parámetros, consulte [FrameworkProcessor](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.processing.FrameworkProcessor)el *SDK de Python de Amazon SageMaker AI*.

Para ver ejemplos del uso de un `FrameworkProcessor` para cada uno de los marcos de machine learning compatibles, consulte los siguientes temas.

**Topics**
+ [Ejemplo de código utilizado HuggingFaceProcessor en el SDK de Amazon SageMaker Python](processing-job-frameworks-hugging-face.md)
+ [MXNet Procesador Framework](processing-job-frameworks-mxnet.md)
+ [PyTorch Procesador Framework](processing-job-frameworks-pytorch.md)
+ [TensorFlow Procesador Framework](processing-job-frameworks-tensorflow.md)
+ [XGBoost Procesador Framework](processing-job-frameworks-xgboost.md)

# Ejemplo de código utilizado HuggingFaceProcessor en el SDK de Amazon SageMaker Python
<a name="processing-job-frameworks-hugging-face"></a>

Hugging Face es un proveedor de código abierto de modelos de procesamiento de lenguaje natural (NLP). El SDK `HuggingFaceProcessor` de Amazon SageMaker Python le permite ejecutar trabajos de procesamiento con scripts de Hugging Face. Cuando usa el `HuggingFaceProcessor`, puede aprovechar un contenedor de Docker creado por Amazon con un entorno Hugging Face gestionado para no tener que traer tu propio contenedor.

El siguiente ejemplo de código muestra cómo puede usarlo `HuggingFaceProcessor` para ejecutar su trabajo de procesamiento con una imagen de Docker proporcionada y mantenida por SageMaker AI. Tenga en cuenta que, al ejecutar el trabajo, puede especificar un directorio que contenga sus scripts y dependencias en el `source_dir` argumento, y puede tener un `requirements.txt` archivo ubicado dentro de su `source_dir` directorio que especifique las dependencias de sus scripts de procesamiento. SageMaker El procesamiento instala automáticamente las dependencias `requirements.txt` en el contenedor.

```
from sagemaker.huggingface import HuggingFaceProcessor
from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker import get_execution_role

#Initialize the HuggingFaceProcessor
hfp = HuggingFaceProcessor(
    role=get_execution_role(), 
    instance_count=1,
    instance_type='ml.g4dn.xlarge',
    transformers_version='4.4.2',
    pytorch_version='1.6.0', 
    base_job_name='frameworkprocessor-hf'
)

#Run the processing job
hfp.run(
    code='processing-script.py',
    source_dir='scripts',
    inputs=[
        ProcessingInput(
            input_name='data',
            source=f's3://{BUCKET}/{S3_INPUT_PATH}',
            destination='/opt/ml/processing/input/data/'
        )
    ],
    outputs=[
        ProcessingOutput(output_name='train', source='/opt/ml/processing/output/train/', destination=f's3://{BUCKET}/{S3_OUTPUT_PATH}'),
        ProcessingOutput(output_name='test', source='/opt/ml/processing/output/test/', destination=f's3://{BUCKET}/{S3_OUTPUT_PATH}'),
        ProcessingOutput(output_name='val', source='/opt/ml/processing/output/val/', destination=f's3://{BUCKET}/{S3_OUTPUT_PATH}')
    ]
)
```

Si tiene un archivo `requirements.txt`, debería ser una lista de bibliotecas que desee instalar en el contenedor. La ruta para `source_dir` puede ser una ruta de URI relativa, absoluta o de Amazon S3. Sin embargo, si utiliza un URI de Amazon S3, debe apuntar a un archivo tar.gz. Puede tener varios scripts en el directorio que especifique para `source_dir`. Para obtener más información sobre la `HuggingFaceProcessor` clase, consulte [Hugging Face](https://sagemaker.readthedocs.io/en/stable/frameworks/huggingface/sagemaker.huggingface.html) Estimator en el SDK de Python de *Amazon SageMaker AI*.

# MXNet Procesador Framework
<a name="processing-job-frameworks-mxnet"></a>

Apache MXNet es un marco de aprendizaje profundo de código abierto que se utiliza habitualmente para entrenar e implementar redes neuronales. El SDK `MXNetProcessor` de Amazon SageMaker Python le permite ejecutar trabajos de procesamiento con MXNet scripts. Al utilizar el`MXNetProcessor`, puede aprovechar un contenedor Docker creado por Amazon con un MXNet entorno gestionado para no tener que traer su propio contenedor.

El siguiente ejemplo de código muestra cómo puede usarlo `MXNetProcessor` para ejecutar su trabajo de procesamiento con una imagen de Docker proporcionada y mantenida por AI. SageMaker Tenga en cuenta que, al ejecutar el trabajo, puede especificar un directorio que contenga sus scripts y dependencias en el `source_dir` argumento, y puede tener un `requirements.txt` archivo ubicado dentro de su `source_dir` directorio que especifique las dependencias de sus scripts de procesamiento. SageMaker El procesamiento instala automáticamente las dependencias `requirements.txt` en el contenedor.

```
from sagemaker.mxnet import MXNetProcessor
from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker import get_execution_role

#Initialize the MXNetProcessor
mxp = MXNetProcessor(
    framework_version='1.8.0',
    py_version='py37',
    role=get_execution_role(), 
    instance_count=1,
    instance_type='ml.c5.xlarge',
    base_job_name='frameworkprocessor-mxnet'
)

#Run the processing job
mxp.run(
    code='processing-script.py',
    source_dir='scripts',
    inputs=[
        ProcessingInput(
            input_name='data',
            source=f's3://{BUCKET}/{S3_INPUT_PATH}',
            destination='/opt/ml/processing/input/data/'
        )
    ],
    outputs=[
        ProcessingOutput(
            output_name='processed_data',
            source='/opt/ml/processing/output/',
            destination=f's3://{BUCKET}/{S3_OUTPUT_PATH}'
        )
    ]
)
```

Si tiene un archivo `requirements.txt`, debería ser una lista de bibliotecas que desee instalar en el contenedor. La ruta para `source_dir` puede ser una ruta de URI relativa, absoluta o de Amazon S3. Sin embargo, si utiliza un URI de Amazon S3, debe apuntar a un archivo tar.gz. Puede tener varios scripts en el directorio que especifique para `source_dir`. Para obtener más información sobre la `MXNetProcessor` clase, consulte [MXNet Estimator](https://sagemaker.readthedocs.io/en/stable/frameworks/mxnet/sagemaker.mxnet.html#mxnet-estimator) en el SDK de Amazon * SageMaker Python*.

# PyTorch Procesador Framework
<a name="processing-job-frameworks-pytorch"></a>

PyTorch es un marco de aprendizaje automático de código abierto. El SDK `PyTorchProcessor` de Amazon SageMaker Python le permite ejecutar trabajos de procesamiento con PyTorch scripts. Al utilizar el`PyTorchProcessor`, puede aprovechar un contenedor Docker creado por Amazon con un PyTorch entorno gestionado para no tener que traer su propio contenedor.

El siguiente ejemplo de código muestra cómo puede usarlo `PyTorchProcessor` para ejecutar su trabajo de procesamiento con una imagen de Docker proporcionada y mantenida por AI. SageMaker Tenga en cuenta que, al ejecutar el trabajo, puede especificar un directorio que contenga sus scripts y dependencias en el `source_dir` argumento, y puede tener un `requirements.txt` archivo ubicado dentro de su `source_dir` directorio que especifique las dependencias de sus scripts de procesamiento. SageMaker El procesamiento instala automáticamente las dependencias `requirements.txt` en el contenedor.

Para ver las PyTorch versiones compatibles con SageMaker AI, consulta las imágenes disponibles del [contenedor de aprendizaje profundo](https://github.com/aws/deep-learning-containers/blob/master/available_images.md).

```
from sagemaker.pytorch.processing import PyTorchProcessor
from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker import get_execution_role

#Initialize the PyTorchProcessor
pytorch_processor = PyTorchProcessor(
    framework_version='1.8',
    role=get_execution_role(),
    instance_type='ml.m5.xlarge',
    instance_count=1,
    base_job_name='frameworkprocessor-PT'
)

#Run the processing job
pytorch_processor.run(
    code='processing-script.py',
    source_dir='scripts',
    inputs=[
        ProcessingInput(
            input_name='data',
            source=f's3://{BUCKET}/{S3_INPUT_PATH}',
            destination='/opt/ml/processing/input'
        )
    ],
    outputs=[
        ProcessingOutput(output_name='data_structured', source='/opt/ml/processing/tmp/data_structured', destination=f's3://{BUCKET}/{S3_OUTPUT_PATH}'),
        ProcessingOutput(output_name='train', source='/opt/ml/processing/output/train', destination=f's3://{BUCKET}/{S3_OUTPUT_PATH}'),
        ProcessingOutput(output_name='validation', source='/opt/ml/processing/output/val', destination=f's3://{BUCKET}/{S3_OUTPUT_PATH}'),
        ProcessingOutput(output_name='test', source='/opt/ml/processing/output/test', destination=f's3://{BUCKET}/{S3_OUTPUT_PATH}'),
        ProcessingOutput(output_name='logs', source='/opt/ml/processing/logs', destination=f's3://{BUCKET}/{S3_OUTPUT_PATH}')
    ]
)
```

Si tiene un archivo `requirements.txt`, debería ser una lista de bibliotecas que desee instalar en el contenedor. La ruta para `source_dir` puede ser una ruta de URI relativa, absoluta o de Amazon S3. Sin embargo, si utiliza un URI de Amazon S3, debe apuntar a un archivo tar.gz. Puede tener varios scripts en el directorio que especifique para `source_dir`. Para obtener más información sobre la `PyTorchProcessor` clase, consulte [PyTorch Estimator](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html) en el SDK de Amazon * SageMaker Python*.

# TensorFlow Procesador Framework
<a name="processing-job-frameworks-tensorflow"></a>

TensorFlow es una biblioteca de aprendizaje automático e inteligencia artificial de código abierto. El SDK `TensorFlowProcessor` de Amazon SageMaker Python le permite ejecutar trabajos de procesamiento con TensorFlow scripts. Al utilizar el`TensorFlowProcessor`, puede aprovechar un contenedor Docker creado por Amazon con un TensorFlow entorno gestionado para no tener que traer su propio contenedor.

El siguiente ejemplo de código muestra cómo puede usarlo `TensorFlowProcessor` para ejecutar su trabajo de procesamiento con una imagen de Docker proporcionada y mantenida por AI. SageMaker Tenga en cuenta que, al ejecutar el trabajo, puede especificar un directorio que contenga sus scripts y dependencias en el `source_dir` argumento, y puede tener un `requirements.txt` archivo ubicado dentro de su `source_dir` directorio que especifique las dependencias de sus scripts de procesamiento. SageMaker El procesamiento instala automáticamente las dependencias `requirements.txt` en el contenedor.

```
from sagemaker.tensorflow import TensorFlowProcessor
from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker import get_execution_role

#Initialize the TensorFlowProcessor
tp = TensorFlowProcessor(
    framework_version='2.3',
    role=get_execution_role(),
    instance_type='ml.m5.xlarge',
    instance_count=1,
    base_job_name='frameworkprocessor-TF',
    py_version='py37'
)

#Run the processing job
tp.run(
    code='processing-script.py',
    source_dir='scripts',
    inputs=[
        ProcessingInput(
            input_name='data',
            source=f's3://{BUCKET}/{S3_INPUT_PATH}',
            destination='/opt/ml/processing/input/data'
        ),
        ProcessingInput(
            input_name='model',
            source=f's3://{BUCKET}/{S3_PATH_TO_MODEL}',
            destination='/opt/ml/processing/input/model'
        )
    ],
    outputs=[
        ProcessingOutput(
            output_name='predictions',
            source='/opt/ml/processing/output',
            destination=f's3://{BUCKET}/{S3_OUTPUT_PATH}'
        )
    ]
)
```

Si tiene un archivo `requirements.txt`, debería ser una lista de bibliotecas que desee instalar en el contenedor. La ruta para `source_dir` puede ser una ruta de URI relativa, absoluta o de Amazon S3. Sin embargo, si utiliza un URI de Amazon S3, debe apuntar a un archivo tar.gz. Puede tener varios scripts en el directorio que especifique para `source_dir`. Para obtener más información sobre la `TensorFlowProcessor` clase, consulte [TensorFlow Estimator](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator) en el SDK de Amazon * SageMaker Python*.

# XGBoost Procesador Framework
<a name="processing-job-frameworks-xgboost"></a>

XGBoost es un marco de aprendizaje automático de código abierto. El SDK `XGBoostProcessor` de Amazon SageMaker Python le permite ejecutar trabajos de procesamiento con XGBoost scripts. Cuando utiliza el XGBoost procesador, puede aprovechar un contenedor Docker creado por Amazon con un XGBoost entorno gestionado para no tener que traer su propio contenedor.

El siguiente ejemplo de código muestra cómo puede usarlo `XGBoostProcessor` para ejecutar su trabajo de procesamiento con una imagen de Docker proporcionada y mantenida por AI. SageMaker Tenga en cuenta que, al ejecutar el trabajo, puede especificar un directorio que contenga sus scripts y dependencias en el `source_dir` argumento, y puede tener un `requirements.txt` archivo ubicado dentro de su `source_dir` directorio que especifique las dependencias de sus scripts de procesamiento. SageMaker El procesamiento instala automáticamente las dependencias `requirements.txt` en el contenedor.

```
from sagemaker.xgboost import XGBoostProcessor
from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker import get_execution_role

#Initialize the XGBoostProcessor
xgb = XGBoostProcessor(
    framework_version='1.2-2',
    role=get_execution_role(),
    instance_type='ml.m5.xlarge',
    instance_count=1,
    base_job_name='frameworkprocessor-XGB',
)

#Run the processing job
xgb.run(
    code='processing-script.py',
    source_dir='scripts',
    inputs=[
        ProcessingInput(
            input_name='data',
            source=f's3://{BUCKET}/{S3_INPUT_PATH}',
            destination='/opt/ml/processing/input/data'
        )
    ],
    outputs=[
        ProcessingOutput(
            output_name='processed_data',
            source='/opt/ml/processing/output/',
            destination=f's3://{BUCKET}/{S3_OUTPUT_PATH}'
        )
    ]
)
```

Si tiene un archivo `requirements.txt`, debería ser una lista de bibliotecas que desee instalar en el contenedor. La ruta para `source_dir` puede ser una ruta de URI relativa, absoluta o de Amazon S3. Sin embargo, si utiliza un URI de Amazon S3, debe apuntar a un archivo tar.gz. Puede tener varios scripts en el directorio que especifique para `source_dir`. Para obtener más información sobre la `XGBoostProcessor` clase, consulte [XGBoost Estimator](https://sagemaker.readthedocs.io/en/stable/frameworks/xgboost/xgboost.html) en el SDK de Amazon * SageMaker Python*.

# Utilizar su propio código de procesamiento
<a name="use-your-own-processing-code"></a>

Puede instalar bibliotecas para ejecutar sus scripts en su propio contenedor de procesamiento o, en un escenario más avanzado, puede crear su propio contenedor de procesamiento que cumpla con el contrato de ejecución en Amazon SageMaker AI. Para obtener más información sobre los contenedores en la SageMaker IA, consulte[Contenedores de Docker para entrenamiento e implementación de modelos](docker-containers.md). Para obtener una especificación formal que defina el contrato de un contenedor de Amazon SageMaker Processing, consulta[Cómo crear su propio contenedor de procesamiento (escenario avanzado)](build-your-own-processing-container.md). 

**Topics**
+ [Ejecutar scripts con su propio contenedor de procesamiento](processing-container-run-scripts.md)
+ [Cómo crear su propio contenedor de procesamiento (escenario avanzado)](build-your-own-processing-container.md)

# Ejecutar scripts con su propio contenedor de procesamiento
<a name="processing-container-run-scripts"></a>

Puede usar scripts de scikit-learn para preprocesar datos y evaluar sus modelos. Para saber cómo ejecutar scripts de scikit-learn para realizar estas tareas, consulte el cuaderno de muestras de [Procesamiento de scikit-learn](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker_processing/scikit_learn_data_processing_and_model_evaluation). Este cuaderno usa la `ScriptProcessor` clase del SDK de Amazon SageMaker Python para el procesamiento.

El siguiente ejemplo muestra un flujo de trabajo general para usar una clase `ScriptProcessor` con su propio contenedor de procesamiento. El flujo de trabajo muestra cómo crear su propia imagen, construir su contenedor y usar una clase `ScriptProcessor` para ejecutar un guión de preprocesamiento de Python con el contenedor. El trabajo de procesamiento procesa los datos de entrada y guarda los datos procesados en Amazon Simple Storage Service (Amazon S3).

Antes de usar los siguientes ejemplos, debe tener sus propios datos de entrada y un guión de Python preparado para procesar los datos. Para ver un end-to-end ejemplo guiado de este proceso, consulte el cuaderno de ejemplo de [procesamiento de scikit-learn](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker_processing/scikit_learn_data_processing_and_model_evaluation).

1. Cree un directorio de Docker y agregue el archivo Dockerfile utilizado para crear el contenedor de procesamiento. Instale pandas y scikit-learn en él. (También puede instalar sus propias dependencias con un comando `RUN` similar.)

   ```
   mkdir docker
   
   %%writefile docker/Dockerfile
   
   FROM python:3.7-slim-buster
   
   RUN pip3 install pandas==0.25.3 scikit-learn==0.21.3
   ENV PYTHONUNBUFFERED=TRUE
   
   ENTRYPOINT ["python3"]
   ```

1. Cree el contenedor mediante el comando docker, cree un repositorio de Amazon Elastic Container Registry (Amazon ECR) y envíe la imagen a Amazon ECR.

   ```
   import boto3
   
   account_id = boto3.client('sts').get_caller_identity().get('Account')
   region = boto3.Session().region_name
   ecr_repository = 'sagemaker-processing-container'
   tag = ':latest'
   processing_repository_uri = '{}.dkr.ecr.{}.amazonaws.com/{}'.format(account_id, region, ecr_repository + tag)
   
   # Create ECR repository and push docker image
   !docker build -t $ecr_repository docker
   !aws ecr get-login-password --region {region} | docker login --username AWS --password-stdin {account_id}.dkr.ecr.{region}.amazonaws.com
   !aws ecr create-repository --repository-name $ecr_repository
   !docker tag {ecr_repository + tag} $processing_repository_uri
   !docker push $processing_repository_uri
   ```

1. Configure `ScriptProcessor` desde el SDK de SageMaker Python para ejecutar el script. *image\$1uri*Sustitúyalo por el URI de la imagen que has creado y *role\$1arn* sustitúyelo por el ARN de un AWS Identity and Access Management rol que tenga acceso a tu bucket de Amazon S3 de destino.

   ```
   from sagemaker.processing import ScriptProcessor, ProcessingInput, ProcessingOutput
   
   script_processor = ScriptProcessor(command=['python3'],
                   image_uri='image_uri',
                   role='role_arn',
                   instance_count=1,
                   instance_type='ml.m5.xlarge')
   ```

1. Ejecute el script. *preprocessing.py*Sustitúyalo por el nombre de tu propio script de procesamiento de Python y *s3://path/to/my/input-data.csv* sustitúyelo por la ruta de Amazon S3 a tus datos de entrada.

   ```
   script_processor.run(code='preprocessing.py',
                        inputs=[ProcessingInput(
                           source='s3://path/to/my/input-data.csv',
                           destination='/opt/ml/processing/input')],
                        outputs=[ProcessingOutput(source='/opt/ml/processing/output/train'),
                                  ProcessingOutput(source='/opt/ml/processing/output/validation'),
                                  ProcessingOutput(source='/opt/ml/processing/output/test')])
   ```

Puede usar el mismo procedimiento con otra dependencia de biblioteca o de sistema. También puede utilizar las imágenes de Docker existentes. Esto incluye las imágenes que ejecute en otras plataformas, como [Kubernetes](https://kubernetes.io/).

# Cómo crear su propio contenedor de procesamiento (escenario avanzado)
<a name="build-your-own-processing-container"></a>

Puede proporcionar a Amazon SageMaker Processing una imagen de Docker que tenga su propio código y dependencias para ejecutar sus cargas de trabajo de procesamiento de datos, ingeniería de características y evaluación de modelos. A continuación se proporciona información sobre cómo crear su propio contenedor de procesamiento.

El siguiente ejemplo de un archiDockerfile crea un contenedor con las bibliotecas de Python scikit-learn y pandas que puede ejecutar como un trabajo de procesamiento. 

```
FROM python:3.7-slim-buster

# Install scikit-learn and pandas
RUN pip3 install pandas==0.25.3 scikit-learn==0.21.3

# Add a Python script and configure Docker to run it
ADD processing_script.py /
ENTRYPOINT ["python3", "/processing_script.py"]
```

Para ver un ejemplo de un script de procesamiento, consulte [Comenzar](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker_processing/basic_sagemaker_data_processing/basic_sagemaker_processing.ipynb) con el procesamiento. SageMaker 

Cree e inserte esta imagen de Docker en un repositorio de Amazon Elastic Container Registry (Amazon ECR) y asegúrese de que su función de IAM de SageMaker IA pueda extraer la imagen de Amazon ECR. Luego puedes ejecutar esta imagen en Amazon SageMaker Processing.

# Imagen de cómo Amazon SageMaker Processing gestiona su contenedor de procesamiento
<a name="byoc-run-image"></a>

Amazon SageMaker Processing ejecuta la imagen del contenedor de procesamiento de forma similar a la del siguiente comando, donde `AppSpecification.ImageUri` se muestra el URI de la imagen de Amazon ECR que se especifica en una `CreateProcessingJob` operación. 

```
docker run [AppSpecification.ImageUri]
```

Este comando ejecuta el comando `ENTRYPOINT` configurado en la imagen de Docker. 

También puede anular el comando entrypoint en la imagen o proporcionar argumentos de línea de comandos al comando entrypoint utilizando los parámetros `AppSpecification.ContainerEntrypoint` y `AppSpecification.ContainerArgument` en la solicitud `CreateProcessingJob`. Al especificar estos parámetros, Amazon SageMaker Processing se configura para ejecutar el contenedor de forma similar a como lo hace el siguiente comando. 

```
 docker run --entry-point [AppSpecification.ContainerEntrypoint] [AppSpecification.ImageUri] [AppSpecification.ContainerArguments]
```

Por ejemplo, si especificas que debe `ContainerEntrypoint` estar `[python3, -v, /processing_script.py]` en tu `CreateProcessingJob ` solicitud y `ContainerArguments` que debe estar`[data-format, csv]`, Amazon SageMaker Processing ejecuta tu contenedor con el siguiente comando. 

```
 python3 -v /processing_script.py data-format csv 
```

 Al crear su contenedor de procesamiento, tenga en cuenta los siguientes detalles: 
+ Amazon SageMaker Processing decide si el trabajo se completa o no, en función del código de salida de la ejecución del comando. Un trabajo de procesamiento se completa si todos los contenedores de procesamiento salen correctamente con un código de salida 0 y devuelve un error si alguno de los contenedores sale con un código de salida distinto de cero.
+  Amazon SageMaker Processing le permite anular el punto de entrada del contenedor de procesamiento y establecer argumentos de línea de comandos del mismo modo que lo hace con la API de Docker. Las imágenes de Docker también pueden configurar los argumentos de punto de entrada y línea de comandos mediante las instrucciones `ENTRYPOINT` y CMD. La forma en que los parámetros `ContainerEntrypoint` y `ContainerArgument` de `CreateProcessingJob` configuran el punto de entrada y los argumentos de una imagen de Docker refleja cómo Docker anula el punto de entrada y los argumentos a través de la API de Docker:
  + Si no se proporcionan `ContainerEntrypoint` ni `ContainerArguments`, el Procesamiento utiliza el `ENTRYPOINT` o CMD predeterminado en la imagen.
  + Si se proporciona `ContainerEntrypoint`, pero no `ContainerArguments`, el Procesamiento ejecuta la imagen con el punto de entrada indicado, e ignora el `ENTRYPOINT` y CMD en la imagen.
  + Si se proporciona `ContainerArguments`, pero no `ContainerEntrypoint`, el Procesamiento ejecuta la imagen con el `ENTRYPOINT` predeterminado en la imagen y con los argumentos proporcionados.
  + Si se proporcionan `ContainerEntrypoint` y `ContainerArguments`, el Procesamiento ejecuta la imagen con el punto de entrada y los argumentos indicados y se ignoran el `ENTRYPOINT` y CMD en la imagen.
+ Debe usar el formato exec de la instrucción `ENTRYPOINT` en su Dockerfile (`ENTRYPOINT` `["executable", "param1", "param2"])` en lugar del formato shell (`ENTRYPOINT`` command param1 param2`). Esto permite que su contenedor de procesamiento reciba señales `SIGINT` y `SIGKILL`, que el Procesamiento utiliza para detener los trabajos de procesamiento utilizando la API `StopProcessingJob`.
+ `/opt/ml`y todos sus subdirectorios están reservados por AI. SageMaker Cuando cree su imagen de Docker de procesamiento, no coloque ningún dato requerido por su contenedor de procesamiento en estos directorios.
+ Si planea usar dispositivos GPU, asegúrese de que sus contenedores sean compatibles con nvidia-docker. Incluya solo el kit de herramientas CUDA en los contenedores. No cree un paquete con controladores de NVIDIA con la imagen. Para obtener más información sobre nvidia-docker, consulte [NVIDIA/nvidia-docker](https://github.com/NVIDIA/nvidia-docker).

# Cómo Amazon SageMaker Processing configura la entrada y la salida de tu contenedor de procesamiento
<a name="byoc-input-and-output"></a>

Cuando crea un trabajo de procesamiento mediante la operación `CreateProcessingJob`, puede especificar varios valores `ProcessingInput` y `ProcessingOutput`. 

Utilice el `ProcessingInput` parámetro para especificar un URI de Amazon Simple Storage Service (Amazon S3) desde el que descargar datos y una ruta de acceso en el contenedor de procesamiento donde descargar los datos. El parámetro `ProcessingOutput` configura una ruta de acceso en su contenedor de procesamiento desde la que cargar datos y donde Amazon S3 cargará esos datos. Para `ProcessingInput` y `ProcessingOutput`, la ruta de acceso en el contenedor de procesamiento debe empezar por `/opt/ml/processing/ `.

Por ejemplo, podría crear un trabajo de procesamiento con un parámetro `ProcessingInput` que descargue datos desde `s3://your-data-bucket/path/to/input/csv/data` en `/opt/ml/processing/csv` en el contenedor de procesamiento y un parámetro `ProcessingOutput` que cargue datos desde `/opt/ml/processing/processed_csv` en `s3://your-data-bucket/path/to/output/csv/data`. Su trabajo de procesamiento leería los datos de entrada y escribiría los datos de salida en `/opt/ml/processing/processed_csv`. A continuación, carga los datos escritos en esta ruta a la ubicación de salida especificada por Amazon S3. 

**importante**  
Los enlaces simbólicos (symlinks) no se pueden utilizar para cargar datos de salida en Amazon S3. No se siguen los symlinks al cargar los datos de salida. 

# Cómo Amazon SageMaker Processing proporciona registros y métricas para tu contenedor de procesamiento
<a name="byoc-logs-and-metrics"></a>

Cuando tu contenedor de procesamiento escribe en `stdout` o`stderr`, Amazon SageMaker Processing guarda el resultado de cada contenedor de procesamiento y lo coloca en CloudWatch los registros de Amazon. Para obtener más información acerca del registro, consulte [CloudWatch Registros para Amazon SageMaker AI](logging-cloudwatch.md).

Amazon SageMaker Processing también proporciona CloudWatch métricas para cada instancia que ejecuta tu contenedor de procesamiento. Para obtener más información acerca de las métricas, consulte [Métricas de Amazon SageMaker AI en Amazon CloudWatch](monitoring-cloudwatch.md). 

## Cómo Amazon SageMaker Processing configura tu contenedor de procesamiento
<a name="byoc-config"></a>

Amazon SageMaker Processing proporciona información de configuración a su contenedor de procesamiento a través de variables de entorno y dos archivos JSON `/opt/ml/config/resourceconfig.json` (`/opt/ml/config/processingjobconfig.json`y) en ubicaciones predefinidas del contenedor. 

Cuando se inicia un trabajo de procesamiento, utiliza las variables de entorno que ha especificado con el mapeo de `Environment` en la solicitud `CreateProcessingJob`. El archivo `/opt/ml/config/processingjobconfig.json` contiene información sobre los nombres de host de los contenedores de procesamiento, y también se especifica en la solicitud `CreateProcessingJob`. 

En el ejemplo siguiente se muestra el formato del archivo `/opt/ml/config/processingjobconfig.json`.

```
{
    "ProcessingJobArn": "<processing_job_arn>",
    "ProcessingJobName": "<processing_job_name>",
    "AppSpecification": {
        "ImageUri": "<image_uri>",
        "ContainerEntrypoint": null,
        "ContainerArguments": null
    },
    "Environment": {
        "KEY": "VALUE"
    },
    "ProcessingInputs": [
        {
            "InputName": "input-1",
            "S3Input": {
                "LocalPath": "/opt/ml/processing/input/dataset",
                "S3Uri": "<s3_uri>",
                "S3DataDistributionType": "FullyReplicated",
                "S3DataType": "S3Prefix",
                "S3InputMode": "File",
                "S3CompressionType": "None",
                "S3DownloadMode": "StartOfJob"
            }
        }
    ],
    "ProcessingOutputConfig": {
        "Outputs": [
            {
                "OutputName": "output-1",
                "S3Output": {
                    "LocalPath": "/opt/ml/processing/output/dataset",
                    "S3Uri": "<s3_uri>",
                    "S3UploadMode": "EndOfJob"
                }
            }
        ],
        "KmsKeyId": null
    },
    "ProcessingResources": {
        "ClusterConfig": {
            "InstanceCount": 1,
            "InstanceType": "ml.m5.xlarge",
            "VolumeSizeInGB": 30,
            "VolumeKmsKeyId": null
        }
    },
    "RoleArn": "<IAM role>",
    "StoppingCondition": {
        "MaxRuntimeInSeconds": 86400
    }
}
```

El archivo `/opt/ml/config/resourceconfig.json` contiene información sobre los nombres de host de los contenedores de procesamiento. Utilice los siguientes nombres de host al crear o ejecutar código de procesamiento distribuido.

```
{
  "current_host": "algo-1",
  "hosts": ["algo-1","algo-2","algo-3"]
}
```

No utilice la información sobre los nombres de host que se incluye en `/etc/hostname` o `/etc/hosts` porque podría ser inexacta.

Es posible que la información del nombre de host no esté disponible inmediatamente para el contenedor de procesamiento. Recomendamos agregar una política de reintentos en las operaciones de resolución de nombres de host a medida que los nodos estén disponibles en el clúster.

# Guardar y acceder a la información de metadatos sobre su trabajo de procesamiento
<a name="byoc-metadata"></a>

Para guardar metadatos del contenedor de procesamiento después de salir de él, los contenedores pueden escribir texto codificado en UTF-8 en el archivo `/opt/ml/output/message`. Después de que el trabajo de procesamiento cambie a un estado de terminal ("`Completed`", "`Stopped`" o "`Failed`"), el campo "`ExitMessage`" en [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html) contiene el primer 1 KB de este archivo. Obtenga acceso a esa parte inicial del archivo con una llamada a [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html), que la devuelve a través del parámetro `ExitMessage`. Para trabajos de procesamiento con error, puede utilizar este campo para ofrecer información de por qué el contenedor de procesamiento generó un error.

**importante**  
No escriba datos confidenciales en el archivo `/opt/ml/output/message`. 

Si los datos de este archivo no están codificados en UTF-8, se produce un error en el trabajo y devuelve `ClientError`. Si varios contenedores finalizan con `ExitMessage,` el contenido `ExitMessage` de cada contenedor de procesamiento se concatena y, a continuación, se trunca a 1 KB.

# Ejecute su contenedor de procesamiento con el SDK de Python para SageMaker IA
<a name="byoc-run"></a>

Puedes usar el SDK de SageMaker Python para ejecutar tu propia imagen de procesamiento mediante la `Processor` clase. El siguiente ejemplo muestra cómo ejecutar su propio contenedor de procesamiento con una entrada de Amazon Simple Storage Service (Amazon S3) y una salida a Amazon S3.

```
from sagemaker.processing import Processor, ProcessingInput, ProcessingOutput

processor = Processor(image_uri='<your_ecr_image_uri>',
                     role=role,
                     instance_count=1,
                     instance_type="ml.m5.xlarge")

processor.run(inputs=[ProcessingInput(
                        source='<s3_uri or local path>',
                        destination='/opt/ml/processing/input_data')],
                    outputs=[ProcessingOutput(
                        source='/opt/ml/processing/processed_data',
                        destination='<s3_uri>')],
                    )
```

En lugar de crear el código de procesamiento en la imagen de procesamiento, puede proporcionar un `ScriptProcessor` con su imagen y el comando que desea ejecutar, junto con el código que desea ejecutar dentro de ese contenedor. Para ver un ejemplo, consulta [Ejecutar scripts con su propio contenedor de procesamiento](processing-container-run-scripts.md).

También puedes usar la imagen de scikit-learn que proporciona Amazon SageMaker Processing `SKLearnProcessor` para ejecutar los scripts de scikit-learn. Para ver un ejemplo, consulte [Ejecución de un trabajo de procesamiento con scikit-learn](use-scikit-learn-processing-container.md). 