As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Registrando parâmetros e métricas com Amazon SageMaker Experiments
Este guia mostra como registrar parâmetros e métricas com o Amazon SageMaker Experiments. Um SageMaker experimento consiste em execuções, e cada execução consiste em todas as entradas, parâmetros, configurações e resultados para uma única interação de treinamento de modelo.
Você pode registrar parâmetros e métricas de uma função remota usando o decorador @remote ou o. RemoteExecutor
API
Para registrar parâmetros e métricas em uma função remota, escolha um dos seguintes métodos:
-
Instancie um SageMaker experimento executado dentro de uma função remota usando a
Run
biblioteca SageMaker Experiments. Para obter mais informações, consulte Create an Amazon SageMaker Experiment. -
Use a
load_run
função dentro de uma função remota da biblioteca SageMaker Experiments. Isso carregará uma instânciaRun
declarada fora da função remota.
As seções a seguir mostram como criar e rastrear linhagens com SageMaker experimentos usando os métodos listados anteriormente. As seções também descrevem casos que não são apoiados pelo SageMaker treinamento.
Use o decorador @remote para integrar com Experiments SageMaker
Você pode instanciar um experimento em SageMaker ou carregar um SageMaker experimento atual de dentro de uma função remota. As seções a seguir mostram como usar qualquer um dos métodos.
Crie um experimento com SageMaker Experimentos
Você pode criar um experimento executado em SageMaker experimento. Para fazer isso, você passa o nome do experimento, o nome da execução e outros parâmetros para a função remota.
O exemplo de código a seguir importa o nome do experimento e da execução e os parâmetros a serem registrados durante cada execução. Os parâmetros param_1
e param_2
são registrados ao longo do tempo dentro de um ciclo de treinamento. Os parâmetros comuns poderão incluir tamanho do lote ou épocas. Neste exemplo, as métricas metric_a
e metric_b
são registradas para uma corrida ao longo do tempo dentro de um ciclo de treinamento. Outras métricas comuns poderão incluir accuracy
ou 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")
Carregue SageMaker os experimentos atuais com um trabalho iniciado pelo decorador @remote
Use a load_run()
função da biblioteca SageMaker Experiments para carregar o objeto de execução atual a partir do contexto de execução. Você também pode usar a função load_run()
na função remota. Carregue o objeto de execução inicializado localmente pela instrução with
no objeto de execução, conforme mostrado no exemplo de código a seguir.
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)
Carregue um experimento atual executado em um trabalho iniciado com o RemoteExecutor
API
Você também pode carregar um SageMaker experimento atual executado se seus trabalhos foram iniciados com RemoteExecutor
API o. O exemplo de código a seguir mostra como usar RemoteExecutor
API com a load_run
função SageMaker Experiments. Você faz isso para carregar uma execução de SageMaker experimento atual e capturar métricas no trabalho enviado porRemoteExecutor
.
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 não suportados para SageMaker experimentos ao anotar seu código com um decorador @remote
SageMaker não suporta a passagem de um objeto Run
de tipo para uma função @remote ou o uso de Run
objetos globais. Os exemplos a seguir mostram um código que emitirá um SerializationError
.
O exemplo de código a seguir tenta passar um objeto de tipo Run
para um decorador @remote e gera um erro.
@remote def func(run: Run): run.log_metrics("metric_a", 1.0) with Run(...) as run: func(run) ---> SerializationError caused by NotImplementedError
O exemplo de código a seguir tenta usar um objeto run
global instanciado fora da função remota. No exemplo de código, a função train()
é definida dentro do contexto with Run
, fazendo referência a um objeto global executado de dentro. Quando o train()
é chamado, ele gera um erro.
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