

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.

# Captura de datos
<a name="model-monitor-data-capture"></a>

Para registrar las entradas de su punto de conexión y las salidas de inferencia del modelo implementado en Amazon S3, puede habilitar una característica llamada *captura de datos*. La *captura de datos* se suele utilizar para registrar información que se puede utilizar para el entrenamiento, la depuración y la supervisión. Amazon SageMaker Model Monitor analiza automáticamente los datos capturados y compara las métricas de estos datos con una línea base que usted cree para el modelo. Para obtener más información acerca del monitor de modelos, consulte [Supervisión de la calidad de los datos y los modelos con Amazon SageMaker Model Monitor](model-monitor.md).

Puede implementar la *captura de datos* para los modos de monitor de modelos en tiempo real y por lotes mediante el AWS SDK para Python (Boto) SDK de SageMaker Python. En el caso de un punto de conexión en tiempo real, especificará la configuración de *captura de datos* al crear el punto de conexión. Debido a la naturaleza persistente de su punto de conexión en tiempo real, puede configurar opciones adicionales para activar o desactivar la captura de datos en determinados momentos, o cambiar la frecuencia de muestreo. También puede optar por cifrar los datos de inferencia.

En el caso de un trabajo de transformación por lotes, puede habilitar la *captura de datos* si desea ejecutar una supervisión del modelo según lo programado o una supervisión continua del modelo para los trabajos de transformación por lotes periódicos y regulares. Especificará la configuración de *captura de datos* al crear el trabajo de transformación por lotes. Dentro de esta configuración, tiene la opción de activar el cifrado o generar el ID de inferencia con el resultado, lo que le ayuda a cotejar los datos capturados con los datos de Ground Truth.

# Captura de datos del punto de conexión en tiempo real
<a name="model-monitor-data-capture-endpoint"></a>

**nota**  
Para evitar que las solicitudes de inferencia se vean afectadas, la captura de datos deja de capturar solicitudes con niveles altos de uso de disco. Se recomienda mantener la utilización del disco por debajo del 75 % para garantizar que la captura de datos siga capturando las solicitudes.

Para capturar datos para su punto final en tiempo real, debe implementar un modelo mediante servicios de alojamiento de SageMaker IA. Esto requiere que cree un modelo de SageMaker IA, defina una configuración de punto final y cree un punto final HTTPS.

Los pasos necesarios para activar la captura de datos son similares tanto si utilizas el SDK de SageMaker Python como AWS SDK para Python (Boto) si lo utilizas. Si utilizas el AWS SDK, define el [DataCaptureConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataCaptureConfig.html)diccionario, junto con los campos obligatorios, en el [CreateEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html)método para activar la captura de datos. Si utilizas el SDK de SageMaker Python, importa la [DataCaptureConfig](https://sagemaker.readthedocs.io/en/stable/api/inference/model_monitor.html#sagemaker.model_monitor.data_capture_config.DataCaptureConfig)clase e inicializa una instancia de esta clase. A continuación, pase este objeto al parámetro `DataCaptureConfig` del método `sagemaker.model.Model.deploy()`.

Para usar los fragmentos de código siguientes, reemplaza el código del *italicized placeholder text* ejemplo por tu propia información.

## Cómo establecer la captura de datos
<a name="model-monitor-data-capture-defing.title"></a>

Especifique una configuración de captura de datos. Puede capturar la carga útil de solicitud, la carga útil de respuesta o ambas con esta configuración. El fragmento de código siguiente muestra cómo habilitar la captura de datos mediante el SDK de SageMaker Python para AWS SDK para Python (Boto) IA y el AI.

**nota**  
No necesita usar el monitor de modelos para capturar las cargas de solicitud o respuesta.

------
#### [ AWS SDK para Python (Boto) ]

Configure los datos que desea capturar con el [DataCaptureConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataCaptureConfig.html)diccionario al crear un punto final mediante el `CreateEndpointConfig` método. Establezca `EnableCapture` en el valor booleano True. Además, proporcione los siguientes parámetros obligatorios:
+ `EndpointConfigName`: el nombre de la configuración del punto de conexión. Utilizará este nombre cuando haga una solicitud `CreateEndpoint`.
+ `ProductionVariants`: una lista de modelos que desea alojar en este punto de conexión. Defina un tipo de datos de diccionario para cada modelo.
+ `DataCaptureConfig`: tipo de datos de diccionario en el que se especifica un valor entero que corresponde al porcentaje inicial de datos que se van a muestrear (`InitialSamplingPercentage`), el URI de Amazon S3 en el que desea que se almacenen los datos capturados y una lista de opciones de captura (`CaptureOptions`). Especifique `Input` o `Output` para `CaptureMode` en la lista `CaptureOptions`. 

Si lo desea, puede especificar cómo debe codificar la SageMaker IA los datos capturados pasando los argumentos del par clave-valor al diccionario. `CaptureContentTypeHeader`

```
# Create an endpoint config name.
endpoint_config_name = '<endpoint-config-name>'

# The name of the production variant.
variant_name = '<name-of-production-variant>'                   
  
# The name of the model that you want to host. 
# This is the name that you specified when creating the model.
model_name = '<The_name_of_your_model>'

instance_type = '<instance-type>'
#instance_type='ml.m5.xlarge' # Example    

# Number of instances to launch initially.
initial_instance_count = <integer>

# Sampling percentage. Choose an integer value between 0 and 100
initial_sampling_percentage = <integer>                                                                                                                                                                                                                        

# The S3 URI containing the captured data
s3_capture_upload_path = 's3://<bucket-name>/<data_capture_s3_key>'

# Specify either Input, Output, or both
capture_modes = [ "Input",  "Output" ] 
#capture_mode = [ "Input"] # Example - If you want to capture input only
                            
endpoint_config_response = sagemaker_client.create_endpoint_config(
    EndpointConfigName=endpoint_config_name, 
    # List of ProductionVariant objects, one for each model that you want to host at this endpoint.
    ProductionVariants=[
        {
            "VariantName": variant_name, 
            "ModelName": model_name, 
            "InstanceType": instance_type, # Specify the compute instance type.
            "InitialInstanceCount": initial_instance_count # Number of instances to launch initially.
        }
    ],
    DataCaptureConfig= {
        'EnableCapture': True, # Whether data should be captured or not.
        'InitialSamplingPercentage' : initial_sampling_percentage,
        'DestinationS3Uri': s3_capture_upload_path,
        'CaptureOptions': [{"CaptureMode" : capture_mode} for capture_mode in capture_modes] # Example - Use list comprehension to capture both Input and Output
    }
)
```

Para obtener más información sobre otras opciones de configuración de puntos finales, consulta la [CreateEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html)API en la [Guía de referencia de API de Amazon SageMaker AI Service](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Operations_Amazon_SageMaker_Service.html).

------
#### [ SageMaker Python SDK ]

Importe la clase `DataCaptureConfig` del módulo [sagemaker.model\$1monitor](https://sagemaker.readthedocs.io/en/stable/api/inference/model_monitor.html). Habilite la captura de datos al configurar `EnableCapture` en el valor booleano `True`.

Si lo desea, proporcione argumentos para los siguientes parámetros:
+ `SamplingPercentage`: un valor entero que corresponde al porcentaje de datos que se van a muestrear. Si no proporciona un porcentaje de muestreo, SageMaker AI tomará una muestra predeterminada del 20 (20%) de sus datos.
+ `DestinationS3Uri`: el URI de Amazon S3 que la SageMaker IA utilizará para almacenar los datos capturados. Si no lo proporciona, la SageMaker IA almacenará los datos capturados`"s3://<default-session-bucket>/ model-monitor/data-capture"`.

```
from sagemaker.model_monitor import DataCaptureConfig

# Set to True to enable data capture
enable_capture = True

# Optional - Sampling percentage. Choose an integer value between 0 and 100
sampling_percentage = <int> 
# sampling_percentage = 30 # Example 30%

# Optional - The S3 URI of stored captured-data location
s3_capture_upload_path = 's3://<bucket-name>/<data_capture_s3_key>'

# Specify either Input, Output or both. 
capture_modes = ['REQUEST','RESPONSE'] # In this example, we specify both
# capture_mode = ['REQUEST'] # Example - If you want to only capture input.

# Configuration object passed in when deploying Models to SM endpoints
data_capture_config = DataCaptureConfig(
    enable_capture = enable_capture, 
    sampling_percentage = sampling_percentage, # Optional
    destination_s3_uri = s3_capture_upload_path, # Optional
    capture_options = ["REQUEST", "RESPONSE"],
)
```

------

## Implementación del modelo
<a name="model-monitor-data-capture-deploy"></a>

Implemente el modelo y cree un punto de conexión HTTPS con `DataCapture` habilitado.

------
#### [ AWS SDK para Python (Boto3) ]

Proporcione la configuración del punto final a la SageMaker IA. El servicio inicia las instancias de cómputo de ML e implementa el modelo o los modelos según se especifica en la configuración.

Una vez que tenga su configuración de modelo y punto de conexión, utilice la API de [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) para crear su punto de conexión. El nombre del punto final debe ser único en una AWS región de su AWS cuenta. 

Siga estas instrucciones para crear un punto de conexión utilizando la configuración especificada en la solicitud. Amazon SageMaker AI usa el punto final para aprovisionar recursos e implementar modelos.

```
# The name of the endpoint. The name must be unique within an AWS Region in your AWS account.
endpoint_name = '<endpoint-name>' 

# The name of the endpoint configuration associated with this endpoint.
endpoint_config_name='<endpoint-config-name>'

create_endpoint_response = sagemaker_client.create_endpoint(
                                            EndpointName=endpoint_name, 
                                            EndpointConfigName=endpoint_config_name)
```

Para obtener más información, consulte la API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html).

------
#### [ SageMaker Python SDK ]

Defina un nombre para el punto de conexión. Este paso es opcional. Si no proporciona uno, SageMaker AI creará un nombre único para usted:

```
from datetime import datetime

endpoint_name = f"DEMO-{datetime.utcnow():%Y-%m-%d-%H%M}"
print("EndpointName =", endpoint_name)
```

Implemente el modelo en un punto de conexión HTTPS en tiempo real con el método `deploy()` integrado del objeto de modelo. Proporcione el nombre del tipo de instancia de Amazon EC2 en el que se va a implementar este modelo en el campo `instance_type` junto con el número inicial de instancias en las que se ejecutará el punto de conexión para el campo `initial_instance_count`:

```
initial_instance_count=<integer>
# initial_instance_count=1 # Example

instance_type='<instance-type>'
# instance_type='ml.m4.xlarge' # Example

# Uncomment if you did not define this variable in the previous step
#data_capture_config = <name-of-data-capture-configuration>

model.deploy(
    initial_instance_count=initial_instance_count,
    instance_type=instance_type,
    endpoint_name=endpoint_name,
    data_capture_config=data_capture_config
)
```

------

## Ver datos capturados
<a name="model-monitor-data-capture-view"></a>

Cree un objeto predictor a partir de la clase [predictor](https://sagemaker.readthedocs.io/en/stable/api/inference/predictors.html) del SDK de SageMaker Python. Utilizará el objeto devuelto por la clase `Predictor` para invocar su punto de conexión en un futuro. Proporcione el nombre de su punto de conexión (definido anteriormente como `endpoint_name`), junto con los objetos serializadores y deserializadores para el serializador y el deserializador, respectivamente. [Para obtener información sobre los tipos de serializadores, consulta la clase [Serializers](https://sagemaker.readthedocs.io/en/stable/api/inference/serializers.html) en el SDK de Python para IASageMaker .](https://sagemaker.readthedocs.io/en/stable/index.html)

```
from sagemaker.predictor import Predictor
from sagemaker.serializers import <Serializer>
from sagemaker.deserializers import <Deserializers>

predictor = Predictor(endpoint_name=endpoint_name,
                      serializer = <Serializer_Class>,
                      deserializer = <Deserializer_Class>)

# Example
#from sagemaker.predictor import Predictor
#from sagemaker.serializers import CSVSerializer
#from sagemaker.deserializers import JSONDeserializer

#predictor = Predictor(endpoint_name=endpoint_name,
#                      serializer=CSVSerializer(),
#                      deserializer=JSONDeserializer())
```

En el siguiente escenario de ejemplo de código, se invoca el punto de conexión con los datos de validación de muestra que se almacenaron localmente en un archivo CSV denominado `validation_with_predictions`. El conjunto de validación de muestras contiene etiquetas para cada entrada.

Las primeras líneas de la instrucción with abren primero el archivo CSV del conjunto de validación, luego dividen cada fila del archivo por un carácter de coma `","` y, a continuación, almacenan los dos objetos devueltos en una etiqueta y en las variables input\$1cols. Para cada fila, la entrada (`input_cols`) se pasa al método integrado `Predictor.predict()` de los objetos de la variable de predicción (`predictor`).

Suponga que el modelo devuelve una probabilidad. Las probabilidades oscilan entre valores enteros de 0 y 1,0. Si la probabilidad devuelta por el modelo es superior al 80 % (0,8), se asigna a la predicción una etiqueta de valor entero de 1. De lo contrario, se asigna a la predicción una etiqueta de valor entero de 0.

```
from time import sleep

validate_dataset = "validation_with_predictions.csv"

# Cut off threshold of 80%
cutoff = 0.8

limit = 200  # Need at least 200 samples to compute standard deviations
i = 0
with open(f"test_data/{validate_dataset}", "w") as validation_file:
    validation_file.write("probability,prediction,label\n")  # CSV header
    with open("test_data/validation.csv", "r") as f:
        for row in f:
            (label, input_cols) = row.split(",", 1)
            probability = float(predictor.predict(input_cols))
            prediction = "1" if probability > cutoff else "0"
            baseline_file.write(f"{probability},{prediction},{label}\n")
            i += 1
            if i > limit:
                break
            print(".", end="", flush=True)
            sleep(0.5)
print()
print("Done!")
```

Dado que habilitó la captura de datos en los pasos anteriores, la carga de solicitud y respuesta, junto con algunos metadatos adicionales, se guarda en la ubicación de Amazon S3 especificada en `DataCaptureConfig`. La entrega de los datos de captura a Amazon S3 puede tardar un par de minutos.

Para ve la fecha de captura, enumere los archivos de captura de datos almacenados en Amazon S3. El formato de la ruta de Amazon S3 es: `s3:///{endpoint-name}/{variant-name}/yyyy/mm/dd/hh/filename.jsonl`.

Espere ver archivos diferentes de distintos períodos de tiempo, organizados en función de la hora en que se produjo la invocación. Ejecute lo siguiente para imprimir el contenido de un único archivo de captura:

```
print("\n".join(capture_file[-3:-1]))
```

Esto devolverá un archivo con formato JSONline específico de SageMaker AI. Lo siguiente es un ejemplo de respuesta tomado de un punto de conexión en tiempo real que se invocó con los datos `csv/text`:

```
{"captureData":{"endpointInput":{"observedContentType":"text/csv","mode":"INPUT",
"data":"69,0,153.7,109,194.0,105,256.1,114,14.1,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0\n",
"encoding":"CSV"},"endpointOutput":{"observedContentType":"text/csv; charset=utf-8","mode":"OUTPUT","data":"0.0254181120544672","encoding":"CSV"}},
"eventMetadata":{"eventId":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee","inferenceTime":"2022-02-14T17:25:49Z"},"eventVersion":"0"}
{"captureData":{"endpointInput":{"observedContentType":"text/csv","mode":"INPUT",
"data":"94,23,197.1,125,214.5,136,282.2,103,9.5,5,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,1\n",
"encoding":"CSV"},"endpointOutput":{"observedContentType":"text/csv; charset=utf-8","mode":"OUTPUT","data":"0.07675473392009735","encoding":"CSV"}},
"eventMetadata":{"eventId":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee","inferenceTime":"2022-02-14T17:25:49Z"},"eventVersion":"0"}
```

En el ejemplo anterior, el objeto `capture_file` es un tipo de lista. Indexe el primer elemento de la lista para ver una única solicitud de inferencia.

```
# The capture_file object is a list. Index the first element to view a single inference request  
print(json.dumps(json.loads(capture_file[0]), indent=2))
```

Esto devolverá una respuesta similar a la siguiente. Los valores devueltos variarán en función de la configuración del punto final, el modelo de SageMaker IA y los datos capturados:

```
{
  "captureData": {
    "endpointInput": {
      "observedContentType": "text/csv", # data MIME type
      "mode": "INPUT",
      "data": "50,0,188.9,94,203.9,104,151.8,124,11.6,8,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,1,0\n",
      "encoding": "CSV"
    },
    "endpointOutput": {
      "observedContentType": "text/csv; charset=character-encoding",
      "mode": "OUTPUT",
      "data": "0.023190177977085114",
      "encoding": "CSV"
    }
  },
  "eventMetadata": {
    "eventId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
    "inferenceTime": "2022-02-14T17:25:06Z"
  },
  "eventVersion": "0"
}
```

# Captura de datos del trabajo de transformación por lotes
<a name="model-monitor-data-capture-batch"></a>

 Los pasos necesarios para activar la captura de datos para su trabajo de transformación por lotes son similares tanto si utiliza el SDK de Python como si lo AWS SDK para Python (Boto) hace con el de SageMaker Python. Si utilizas el AWS SDK, define el [DataCaptureConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataCaptureConfig.html)diccionario, junto con los campos obligatorios, en el `CreateTransformJob` método para activar la captura de datos. Si utilizas el SDK de Python para SageMaker IA, importa la `BatchDataCaptureConfig` clase e inicializa una instancia desde esta clase. A continuación, pase este objeto al parámetro `batch_data_capture_config` de la instancia de trabajo de transformación. 

 Para usar los siguientes fragmentos de código, reemplaza el código del *italicized placeholder text* ejemplo por tu propia información. 

## Cómo establecer la captura de datos
<a name="data-capture-batch-enable"></a>

 Especifique una configuración de captura de datos al lanzar un trabajo de transformación. Ya sea que utilice el SDK de SageMaker Python AWS SDK para Python (Boto3) o el de Python, debe proporcionar el `DestinationS3Uri` argumento, que es el directorio en el que desea que el trabajo de transformación registre los datos capturados. Si lo desea, también puede especificar los siguientes parámetros: 
+  `KmsKeyId`: la AWS KMS clave utilizada para cifrar los datos capturados. 
+  `GenerateInferenceId`: un indicador booleano que, al capturar los datos, indica si desea que el trabajo de transformación anexe el identificador de inferencia y la hora a la salida. Esto es útil para la supervisión de la calidad del modelo, donde es necesario ingerir los datos de Ground Truth. El ID de inferencia y la hora ayudan a cotejar los datos capturados con sus datos de Ground Truth. 

------
#### [ AWS SDK para Python (Boto3) ]

 Configure los datos que desee capturar con el [DataCaptureConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataCaptureConfig.html)diccionario al crear un trabajo de transformación mediante el `CreateTransformJob` método. 

```
input_data_s3_uri = "s3://input_S3_uri"
output_data_s3_uri = "s3://output_S3_uri"
data_capture_destination = "s3://captured_data_S3_uri"

model_name = "model_name"

sm_client.create_transform_job(
    TransformJobName="transform_job_name",
    MaxConcurrentTransforms=2,
    ModelName=model_name,
    TransformInput={
        "DataSource": {
            "S3DataSource": {
                "S3DataType": "S3Prefix",
                "S3Uri": input_data_s3_uri,
            }
        },
        "ContentType": "text/csv",
        "CompressionType": "None",
        "SplitType": "Line",
    },
    TransformOutput={
        "S3OutputPath": output_data_s3_uri,
        "Accept": "text/csv",
        "AssembleWith": "Line",
    },
    TransformResources={
        "InstanceType": "ml.m4.xlarge",
        "InstanceCount": 1,
    },
    DataCaptureConfig={
       "DestinationS3Uri": data_capture_destination,
       "KmsKeyId": "kms_key",
       "GenerateInferenceId": True,
    }
    )
```

------
#### [ SageMaker Python SDK ]

 Importe la clase `BatchDataCaptureConfig` del [sagemaker.model\$1monitor](https://sagemaker.readthedocs.io/en/stable/api/inference/model_monitor.html). 

```
from sagemaker.transformer import Transformer
from sagemaker.inputs import BatchDataCaptureConfig

# Optional - The S3 URI of where to store captured data in S3
data_capture_destination = "s3://captured_data_S3_uri"

model_name = "model_name"

transformer = Transformer(model_name=model_name, ...)
transform_arg = transformer.transform(
    batch_data_capture_config=BatchDataCaptureConfig(
        destination_s3_uri=data_capture_destination,
        kms_key_id="kms_key",
        generate_inference_id=True,
    ),
    ...
)
```

------

## Cómo ver los datos capturados
<a name="data-capture-batch-view"></a>

 Una vez que se completa el trabajo de transformación, los datos capturados se registran bajo el `DestinationS3Uri` que proporcionó en la configuración de captura de datos. Hay dos subdirectorios en `DestinationS3Uri`, `/input` y `/output`. Si `DestinationS3Uri` es `s3://my-data-capture`, el trabajo de transformación crea los siguientes directorios: 
+  `s3://my-data-capture/input`: los datos de entrada capturados para el trabajo de transformación. 
+  `s3://my-data-capture/output`: los datos de salida capturados para el trabajo de transformación. 

 Para evitar la duplicación de datos, los datos capturados en los dos directorios anteriores son manifiestos. Cada manifiesto es un archivo JSONL que contiene las ubicaciones de Amazon S3 de los objetos de origen. Un archivo de manifiesto puede verse como el siguiente ejemplo: 

```
# under "/input" directory
[
    {"prefix":"s3://input_S3_uri/"},
    "dummy_0.csv",
    "dummy_1.csv",
    "dummy_2.csv",
    ...
]

# under "/output" directory
[
    {"prefix":"s3://output_S3_uri/"},
    "dummy_0.csv.out",
    "dummy_1.csv.out",
    "dummy_2.csv.out",
    ...
]
```

 La tarea de transformación organiza y etiqueta estos manifiestos con un prefijo *yyyy/mm/dd/hh* S3 para indicar cuándo se capturaron. Esto ayuda al monitor de modelos a determinar la parte de datos adecuada que debe analizarse. Por ejemplo, si comienza el trabajo de transformación el 26 de agosto de 2022 a las 13:00 UTC, los datos capturados se etiquetan con una cadena de prefijo `2022/08/26/13/`. 

## InferenceId Generación
<a name="data-capture-batch-inferenceid"></a>

 Al configurar `DataCaptureConfig` para un trabajo de transformación, puede activar el indicador booleano `GenerateInferenceId`. Esto es particularmente útil cuando necesita ejecutar trabajos de supervisión de la calidad y el sesgo del modelo, para lo cual necesita datos de Ground Truth ingeridos por los usuarios. El monitor de modelos se basa en un ID de inferencia para cotejar los datos capturados y los datos de Ground Truth. Para obtener más información sobre la ingestión de Ground Truth, consulte [Ingestión de etiquetas de Ground Truth y combinación con predicciones](model-monitor-model-quality-merge.md). Cuando `GenerateInferenceId` está activado, el resultado de la transformación anexa un ID de inferencia (un UUID asignado al azar), así como la hora de inicio del trabajo de transformación en UTC para cada registro. Necesita estos dos valores para ejecutar la supervisión de la calidad y el sesgo del modelo. Cuando construye los datos de Ground Truth, debe proporcionar el mismo ID de inferencia para cotejar los datos de salida. Actualmente, esta característica admite la transformación de las salidas en los formatos CSV, JSON y JSONL. 

 Si el resultado de la transformación está en formato CSV, el archivo de salida tiene el siguiente aspecto: 

```
0, 1f1d57b1-2e6f-488c-8c30-db4e6d757861,2022-08-30T00:49:15Z
1, 22445434-0c67-45e9-bb4d-bd1bf26561e6,2022-08-30T00:49:15Z
...
```

 Las dos últimas columnas son el identificador de inferencia y la hora de inicio del trabajo de transformación. No los modifique. Las columnas restantes son los resultados del trabajo de transformación. 

 Si el resultado de la transformación está en formato JSON o JSONL, el archivo de salida tiene el siguiente aspecto: 

```
{"output": 0, "SageMakerInferenceId": "1f1d57b1-2e6f-488c-8c30-db4e6d757861", "SageMakerInferenceTime": "2022-08-30T00:49:15Z"}
{"output": 1, "SageMakerInferenceId": "22445434-0c67-45e9-bb4d-bd1bf26561e6", "SageMakerInferenceTime": "2022-08-30T00:49:15Z"}
...
```

 Hay dos campos anexados que están reservados, `SageMakerInferenceId` y `SageMakerInferenceTime`. No modifique estos campos si necesita supervisar la calidad del modelo o el sesgo del modelo; los necesita para los trabajos de fusión. 