Registrazione di parametri e metriche con Amazon Experiments SageMaker - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Registrazione di parametri e metriche con Amazon Experiments SageMaker

Questa guida mostra come registrare parametri e metriche con Amazon SageMaker Experiments. Un SageMaker esperimento è composto da esecuzioni e ogni esecuzione è composta da tutti gli input, i parametri, le configurazioni e i risultati per un'interazione di training basata su un singolo modello.

È possibile registrare parametri e metriche da una funzione remota utilizzando il decoratore @remote o il. RemoteExecutor API

Per registrare i parametri e le metriche da una funzione remota, scegli uno dei metodi riportati di seguito:

  • Crea un'istanza di un SageMaker esperimento eseguito all'interno di una funzione remota utilizzando Run la libreria Experiments. SageMaker Per ulteriori informazioni, consulta Create an Amazon SageMaker Experiment.

  • Usa la load_run funzione all'interno di una funzione remota della libreria SageMaker Experiments. Questo caricherà un'istanza Run dichiarata al di fuori della funzione remota.

Le sezioni seguenti mostrano come creare e tracciare il lignaggio con esecuzioni SageMaker sperimentali utilizzando i metodi elencati in precedenza. Le sezioni descrivono anche i casi che non sono supportati dalla SageMaker formazione.

Usa il decoratore @remote per l'integrazione con SageMaker Experiments

È possibile creare un'istanza di un esperimento o caricare un SageMaker esperimento corrente dall'interno di una funzione remota. SageMaker Nelle sezioni seguenti viene illustrato come utilizzare entrambi i metodi.

Crea un esperimento con Experiments SageMaker

Puoi creare un esperimento eseguito nell' SageMaker esperimento. A tal fine, dovrai inoltrare il nome dell'esperimento, il nome dell'esecuzione e altri parametri alla funzione remota.

Il seguente esempio di codice importa il nome dell'esperimento, il nome dell'esecuzione e i parametri da registrare durante ogni esecuzione. I parametri param_1 e param_2 vengono registrati nel tempo all'interno di un ciclo di addestramento. I parametri comuni possono includere le dimensioni dei lotti o le epoche. In questo esempio, le metriche metric_a e metric_b vengono registrate per un'esecuzione nel tempo all'interno di un ciclo di addestramento. Altre metriche comuni possono includere 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")

Carica SageMaker gli esperimenti correnti con un lavoro avviato dal decoratore @remote

Utilizzate la load_run() funzione della libreria SageMaker Experiments per caricare l'oggetto run corrente dal contesto di esecuzione. È inoltre possibile utilizzare la funzione load_run() all'interno della funzione remota. Carica l'oggetto di esecuzione inizializzato localmente dall'istruzione with sull'oggetto di esecuzione, come illustrato nel seguente esempio di codice.

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)

Carica un esperimento corrente eseguito all'interno di un processo avviato con RemoteExecutor API

Puoi anche caricare un SageMaker esperimento in corso se i tuoi lavori sono stati avviati con. RemoteExecutor API Il seguente esempio di codice mostra come utilizzare RemoteExecutor API con la load_run funzione SageMaker Experiments. Questa operazione viene eseguita per caricare un SageMaker esperimento in corso e acquisire le metriche nel lavoro inviato daRemoteExecutor.

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)

Usi non supportati per SageMaker gli esperimenti durante l'annotazione del codice con un decoratore @remote

SageMaker non supporta il passaggio di un oggetto Run di tipo a una funzione @remote o l'utilizzo di oggetti globali. Run I seguenti esempi mostrano il codice che genererà un SerializationError.

Il seguente esempio di codice tenta di trasmettere un oggetto tipo Run a un decoratore @remote e genera un errore.

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

Il seguente esempio di codice tenta di utilizzare un oggetto run globale istanziato all'esterno della funzione remota. Nell'esempio di codice, la funzione train() è definita all'interno del contesto with Run, facendo riferimento a un oggetto di esecuzione globale dall'interno. Quando train() viene richiamato, genera un errore.

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