

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.

# Registrar parámetros y métricas con Amazon SageMaker Experiments
<a name="train-remote-decorator-experiments"></a>

Esta guía muestra cómo registrar parámetros y métricas con Amazon SageMaker Experiments. Un experimento de SageMaker IA consta de ejecuciones y cada ejecución consta de todas las entradas, parámetros, configuraciones y resultados de una interacción de entrenamiento con un solo modelo. 

Puede registrar los parámetros y las métricas desde una función remota mediante el decorador @remote o la API `RemoteExecutor`. 

Para registrar parámetros y métricas desde una función remota, elija uno de los métodos siguientes:
+ Cree una instancia de un experimento de SageMaker IA ejecutado dentro de una función remota utilizando la `Run` biblioteca de SageMaker experimentos. Para obtener más información, consulte [Crear un experimento de Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/experiments-create.html).
+ Utilice la `load_run` función dentro de una función remota de la biblioteca de experimentos de SageMaker IA. Esto cargará una instancia `Run` declarada fuera de la función remota.

En las siguientes secciones se muestra cómo crear y rastrear el linaje mediante experimentos de SageMaker IA mediante los métodos enumerados anteriormente. En las secciones también se describen los casos que no están respaldados por la SageMaker formación.

## Usa el decorador @remote para integrarlo con Experiments SageMaker
<a name="train-remote-decorator-experiments-remote"></a>

Puedes crear una instancia de un experimento en SageMaker IA o cargar un experimento de SageMaker IA actual desde una función remota. En las siguientes secciones, se muestra cómo utilizar cualquiera de los dos métodos. 

### Crea un experimento con Experimentos SageMaker
<a name="train-remote-decorator-experiments-remote-create"></a>

Puedes crear un experimento ejecutado en un experimento de SageMaker IA. Para ello, pase el nombre del experimento, el nombre de la ejecución y otros parámetros a la función remota.

El siguiente ejemplo de código importa el nombre del experimento, el nombre de la ejecución y los parámetros que se registrarán durante cada ejecución. Los parámetros `param_1` y `param_2` se registran a lo largo del tiempo dentro de un ciclo de entrenamiento. Los parámetros comunes pueden incluir el tamaño del lote o fechas de inicio. En este ejemplo, las métricas `metric_a` y `metric_b` se registran durante una ejecución a lo largo del tiempo dentro de un ciclo de entrenamiento. Otras métricas comunes pueden incluir `accuracy` o `loss`. 

```
from sagemaker.remote_function import remote
from sagemaker.experiments.run import Run

# Define your remote function
@remote
def train({{value_1}}, {{value_2}}, {{exp_name}}, {{run_name}}):
    ...
    ...
    #Creates the experiment
    with Run(
        experiment_name=exp_name,
        run_name=run_name,
    ) as run:
        ...
        #Define values for the parameters to log
        run.log_parameter("{{param_1}}", value_1)
        run.log_parameter("{{param_2}}", value_2) 
        ...
        #Define metrics to log
        run.log_metric("{{metric_a}}", 0.5)
        run.log_metric("{{metric_b}}", 0.1)


# Invoke your remote function        
train(1.0, 2.0, "my-exp-name", "my-run-name")
```

### Carga SageMaker los experimentos actuales con un trabajo iniciado por el decorador @remote
<a name="train-remote-decorator-experiments-remote-current"></a>

Usa la `load_run()` función de la biblioteca de SageMaker experimentos para cargar el objeto de ejecución actual desde el contexto de ejecución. También puede utilizar la función `load_run()` dentro de la función remota. Cargue el objeto de ejecución inicializado localmente mediante la `with` sentencia en el objeto de ejecución, como se muestra en el siguiente ejemplo de código.

```
from sagemaker.experiments.run import Run, load_run

# Define your remote function
@remote
def train({{value_1}}, {{value_2}}):
    ...
    ...
    with load_run() as run:
        run.log_metric("{{metric_a}}", value_1)
        run.log_metric("{{metric_b}}", value_2)


# Invoke your remote function
with Run(
    experiment_name="{{my-exp-name}}",
    run_name="{{my-run-name}}",
) as run:
    train(0.5, 1.0)
```

## Cargar la ejecución de un experimento actual dentro de un trabajo iniciado con la API `RemoteExecutor`
<a name="train-remote-decorator-experiments-api"></a>

También puedes cargar un experimento de SageMaker IA en curso si tus trabajos se iniciaron con la `RemoteExecutor` API. El siguiente ejemplo de código muestra cómo utilizar la `RemoteExecutor` API con la `load_run` función SageMaker Experimentos. Esto se hace para cargar un experimento de SageMaker IA en curso y capturar las métricas del trabajo enviado por`RemoteExecutor`.

```
from sagemaker.experiments.run import Run, load_run

def square(x):
    with load_run() as run:
        result = x * x
        run.log_metric("result", result)
    return result


with RemoteExecutor(
    max_parallel_job=2,
    instance_type="{{ml.m5.large}}"
) as e:
    with Run(
        experiment_name="{{my-exp-name}}",
        run_name="{{my-run-name}}",
    ):
        future_1 = e.submit(square, 2)
```

## Usos no compatibles para SageMaker los experimentos al anotar el código con un decorador @remote
<a name="train-remote-decorator-experiments-unsupported"></a>

SageMaker La IA no admite el paso de un objeto `Run` de tipo a una función @remote ni el uso de objetos globales. `Run` Los siguientes ejemplos muestran un código que generará un `SerializationError`.

El siguiente ejemplo de código intenta pasar un objeto de tipo `Run` a un decorador @remote y genera un error.

```
@remote
def func(run: Run):
    run.log_metrics("metric_a", 1.0)
    
with Run(...) as run:
    func(run) ---> SerializationError caused by NotImplementedError
```

El siguiente ejemplo de código intenta utilizar un objeto `run` global instanciado fuera de la función remota. En el ejemplo de código, la función `train()` se define dentro del contexto `with Run` y hace referencia a un objeto de ejecución global desde dentro. Cuando se llama `train()`, genera un error.

```
with Run(...) as run:
    @remote
    def train({{metric_1}}, {{value_1}}, {{metric_2}}, {{value_2}}):
        run.log_parameter(metric_1, value_1)
        run.log_parameter(metric_2, value_2)
    
    train("p1", 1.0, "p2", 0.5) ---> SerializationError caused by NotImplementedError
```