

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á.

# SageMaker Piscinas aquecidas gerenciadas por IA
<a name="train-warm-pools"></a>

SageMaker Os pools quentes gerenciados por IA permitem que você retenha e reutilize a infraestrutura provisionada após a conclusão de um trabalho de treinamento para reduzir a latência de cargas de trabalho repetitivas, como experimentação iterativa ou execução de vários trabalhos consecutivos. Os trabalhos de treinamento subsequentes que correspondem aos parâmetros especificados são executados na infraestrutura de grupo de aquecimento retido, o que acelera os horários de início ao reduzir o tempo gasto no provisionamento de recursos. 

**Importante**  
SageMaker As piscinas quentes gerenciadas por IA são um recurso faturável. Para obter mais informações, consulte [Faturamento](#train-warm-pools-billing).

**Topics**
+ [Como funciona](#train-warm-pools-how-it-works)
+ [Considerações](#train-warm-pools-considerations)
+ [Solicitar um aumento da cota do grupo de aquecimento](train-warm-pools-resource-limits.md)
+ [Use piscinas quentes gerenciadas por SageMaker IA](train-warm-pools-how-to-use.md)

## Como funciona
<a name="train-warm-pools-how-it-works"></a>

Para usar pools quentes gerenciados por SageMaker IA e reduzir a latência entre trabalhos de treinamento consecutivos semelhantes, crie um trabalho de treinamento que especifique um `KeepAlivePeriodInSeconds` valor em seus. `ResourceConfig` Esse valor representa o período de tempo em segundos para reter os recursos configurados em um grupo de aquecimento para trabalhos de treinamento subsequentes. Se você precisar executar vários trabalhos de treinamento usando configurações semelhantes, poderá reduzir ainda mais a latência e o tempo faturável usando um diretório de cache persistente dedicado para armazenar e reutilizar suas informações em um trabalho diferente.

**Topics**
+ [Ciclo de vida do grupo de alta atividade](#train-warm-pools-lifecycle)
+ [Criação de grupo de aquecimento](#train-warm-pools-creation)
+ [Combinar os trabalhos de treinamento](#train-warm-pools-matching-criteria)
+ [Duração máxima do grupo de aquecimento](#train-warm-pools-maximum-duration)
+ [Usando cache persistente](#train-warm-pools-persistent-cache)
+ [Faturamento](#train-warm-pools-billing)

### Ciclo de vida do grupo de alta atividade
<a name="train-warm-pools-lifecycle"></a>

1. Crie um trabalho de treinamento inicial com um valor `KeepAlivePeriodInSeconds` maior que 0. Quando você executa esse primeiro trabalho de treinamento, isso “inicia a frio” um cluster com tempos de inicialização típicos. 

1. Quando o primeiro trabalho de treinamento é concluído, os recursos provisionados são mantidos ativos em um grupo de aquecimento pelo período especificado no valor `KeepAlivePeriodInSeconds`. Desde que o cluster esteja íntegro e o grupo de aquecimento esteja dentro do `KeepAlivePeriodInSeconds` especificado, o status do grupo de aquecimento será `Available`. 

1. O grupo de aquecimento `Available` permanece até identificar um trabalho de treinamento correspondente para reutilização ou exceder o `KeepAlivePeriodInSeconds` especificado e ser encerrado. O tempo máximo permitido para o `KeepAlivePeriodInSeconds` é de 3.600 segundos (60 minutos). Se o status do grupo de aquecimento for `Terminated`, esse é o fim do ciclo de vida do grupo de aquecimento.

1. Se o grupo de aquecimento identificar um segundo trabalho de treinamento com especificações correspondentes, como contagem de instâncias ou tipo de instância, o grupo de aquecimento passará do primeiro trabalho de treinamento para o segundo trabalho de treinamento para reutilização. O status do primeiro trabalho de treinamento em grupo de aquecimento se torna `Reused`. Este é o fim do ciclo de vida do grupo de aquecimento para o primeiro trabalho de treinamento. 

1. O status do segundo trabalho de treinamento que reutilizou a grupo de aquecimento se torna `InUse`. Após a conclusão do segundo trabalho de treinamento, o grupo de aquecimento `Available` tem a `KeepAlivePeriodInSeconds` duração especificada no segundo trabalho de treinamento. Um grupo de aquecimento pode continuar se movendo para os trabalhos de treinamento correspondentes subsequentes por no máximo 28 dias.

1. Se o grupo de aquecimento não estiver mais disponível para reutilização, o status da piscina aquecida será `Terminated`. Os grupos de aquecimento não estão mais disponíveis se forem encerrados por um usuário, para uma atualização de patch ou se excederem o `KeepAlivePeriodInSeconds` especificado.

Para obter mais informações sobre as opções de status de piscinas aquecidas, consulte [WarmPoolStatus](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_WarmPoolStatus.html)a *Amazon SageMaker API Reference*.

### Criação de grupo de aquecimento
<a name="train-warm-pools-creation"></a>

Se um trabalho de treinamento inicial for concluído com êxito e tiver um `KeepAlivePeriodInSeconds` valor maior que 0, será criado um grupo de aquecimento. Se você interromper um trabalho de treinamento após o lançamento de um cluster, ainda será retido um grupo de aquecimento. Se o trabalho de treinamento falhar devido a um erro do algoritmo ou do cliente, ainda será retido um grupo de aquecimento. Se o trabalho de treinamento falhar por qualquer outro motivo que possa comprometer a integridade do cluster, o grupo de aquecimento não será criado. 

Para verificar a criação bem-sucedida do grupo de aquecimento, verifique o status do grupo de aquecimento do seu trabalho de treinamento. Se um grupo de aquecimento for provisionado com sucesso, o status do grupo de aquecimento é `Available`. Se um grupo de aquecimento não for provisionado com sucesso, o status do grupo de aquecimento é `Terminated`.

### Combinar os trabalhos de treinamento
<a name="train-warm-pools-matching-criteria"></a>

Para que um grupo de aquecimento persista, deve encontrar um trabalho de treinamento correspondente dentro do tempo especificado no valor `KeepAlivePeriodInSeconds`. O próximo trabalho de treinamento é compatível se os valores seguintes forem idênticos: 
+ `RoleArn` 
+ Valores de `ResourceConfig`:
  + `InstanceCount`
  + `InstanceType`
  + `VolumeKmsKeyId`
  + `VolumeSizeInGB`
+ Valores de `VpcConfig`:
  + `SecurityGroupIds`
  + `Subnets`
+ `EnableInterContainerTrafficEncryption`
+ `EnableNetworkIsolation`
+ Se você aprovou [tags de sessão](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_operations) para seu trabalho de treinamento com `EnableSessionTagChaining` definido como `True` no trabalho de treinamento `SessionChainingConfig`, um trabalho de treinamento correspondente também deve definir `EnableSessionTagChaining` como `True` e ter chaves de sessão idênticas. Para obter mais informações, consulte [Usar controle de acesso por atributo (ABAC) para treinamento de multilocação](model-access-training-data-abac.md). 

Todos esses valores devem ser os mesmos para que uma piscina aquecida passe para um trabalho de treinamento subsequente para reutilização.

### Duração máxima do grupo de aquecimento
<a name="train-warm-pools-maximum-duration"></a>

O `KeepAlivePeriodInSeconds` máximo para um único trabalho de treinamento é de 3.600 segundos (60 minutos) e o tempo máximo em que um cluster de grupo de aquecimento pode continuar executando trabalhos de treinamento consecutivos é de 28 dias. 

Cada trabalho de treinamento subsequente também deve especificar um valor de `KeepAlivePeriodInSeconds`. Quando o grupo de aquecimento passa para a próxima tarefa de treinamento, ela herda o novo valor `KeepAlivePeriodInSeconds` especificado no trabalho de treinamento `ResourceConfig`. Dessa forma, você pode manter um grupo de aquecimento passando de um trabalho de treinamento para outro por no máximo 28 dias.

Se `KeepAlivePeriodInSeconds` não for especificado, o grupo de aquecimento desligará após a conclusão do trabalho de treinamento.

### Usando cache persistente
<a name="train-warm-pools-persistent-cache"></a>

Quando você cria uma piscina aquecida, a SageMaker IA monta um diretório especial no volume que persistirá durante todo o ciclo de vida da piscina aquecida. Esse diretório também pode ser usado para armazenar informações que você deseja reutilizar em outro trabalho. 

Usar o cache persistente pode reduzir a latência e o tempo faturável em vez de usar apenas grupos de aquecimento para trabalhos que exigem o seguinte:
+ várias interações com configurações semelhantes
+ trabalhos de treinamento incremental
+ otimização de hiperparâmetros

Por exemplo, você pode evitar o download das mesmas dependências do Python em execuções repetidas configurando um diretório de cache pip dentro do diretório de cache persistente. Você é totalmente responsável por gerenciar o conteúdo desse diretório. Veja a seguir exemplos de tipos de informações que você pode colocar no cache persistente para ajudar a reduzir a latência e o tempo faturável.
+ Dependências gerenciadas pelo pip.
+ Dependências gerenciadas pelo conda.
+ [Informações do ponto de verificação](https://docs.aws.amazon.com/sagemaker/latest/dg/model-checkpoints.html).
+ Qualquer informação adicional gerada durante o treinamento.

A localização do cache persistente é `/opt/ml/sagemaker/warmpoolcache`. A variável de ambiente `SAGEMAKER_MANAGED_WARMPOOL_CACHE_DIRECTORY` aponta para a localização do diretório de cache persistente.

O exemplo de código a seguir mostra como configurar um grupo de aquecimento e usar o cache persistente para armazenar suas dependências de pip para uso em um trabalho subsequente. O trabalho subsequente deve ser executado dentro do prazo determinado pelo parâmetro`keep_alive_period_in_seconds`.

```
import sagemakerfrom sagemaker import get_execution_rolefrom sagemaker.tensorflow import TensorFlow
# Creates a SageMaker session and gets execution role
session = sagemaker.Session()
role = get_execution_role()
# Creates an example estimator
estimator = TensorFlow(
    ...
    entry_point='{{my-training-script.py}}',
    source_dir='{{code}}',
    role={{role}},
    model_dir='{{model_dir}}',
    framework_version='{{2.2}}',
    py_version='{{py37}}',
    job_name='{{my-training-job-1}}',
    instance_type='{{ml.g4dn.xlarge}}',
    instance_count={{1}},
    volume_size={{250}},
    hyperparameters={
"batch-size": {{512}},
        "epochs": {{1}},
        "learning-rate": {{1e-3}},
        "beta_1": {{0.9}},
        "beta_2": {{0.999}},
    },
    keep_alive_period_in_seconds={{1800}},
    environment={"PIP_CACHE_DIR": "/opt/ml/sagemaker/warmpoolcache/pip"}
)
```

No exemplo de código anterior, o uso do parâmetro [ambiente](https://sagemaker.readthedocs.io/en/stable/api/training/estimators.html#estimators) exporta a variável de ambiente `PIP_CACHE_DIRECTORY` para apontar para o diretório `/opt/ml/sagemaker/warmpoolcache/pip`. A exportação dessa variável de ambiente mudará o local em que o pip armazena seu cache no novo local. Qualquer diretório, incluindo diretórios aninhados, que você criar dentro do diretório de cache persistente estará disponível para reutilização durante uma execução de treinamento subsequente. No exemplo de código anterior, um diretório chamado `pip` é alterado para ser o local padrão para armazenar em cache todas as dependências instaladas usando pip.

A localização do cache persistente também pode ser acessada de dentro do seu script de treinamento do Python usando a variável de ambiente, conforme mostrado no exemplo de código a seguir.

```
import os
import shutil
if __name__ == '__main__':
    PERSISTED_DIR = os.environ["SAGEMAKER_MANAGED_WARMPOOL_CACHE_DIRECTORY"]

    # create a file to be persisted
    open(os.path.join(PERSISTED_DIR, "{{test.txt}}"), 'a').close()
    # create a directory to be persisted
    os.mkdir(os.path.join(PERSISTED_DIR, "{{test_dir}}"))

    # Move a file to be persisted
    shutil.move("{{path/of/your/file.txt}}", PERSISTED_DIR)
```

### Faturamento
<a name="train-warm-pools-billing"></a>

SageMaker As piscinas quentes gerenciadas por IA são um recurso faturável. Recupere o status do grupo de aquecimento do seu trabalho de treinamento para verificar o tempo faturável de seus grupos de aquecimento. Você pode verificar o status do pool aquecido por meio do comando da [DescribeTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html)API [Usando o console Amazon SageMaker AI](train-warm-pools-how-to-use.md#train-warm-pools-how-to-use-sagemaker-console) ou diretamente por meio dele. Para obter mais informações, consulte [WarmPoolStatus](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_WarmPoolStatus.html)a *Amazon SageMaker API Reference*.

**nota**  
Após o término do tempo especificado pelo parâmetro `KeepAlivePeriodInSeconds`, o grupo de aquecimento e o cache persistente serão encerrados e o conteúdo será excluído.

## Considerações
<a name="train-warm-pools-considerations"></a>

Considere os itens a seguir ao usar piscinas quentes gerenciadas por SageMaker IA.
+ SageMaker Os pools quentes gerenciados por IA não podem ser usados com treinamento de cluster heterogêneo. 
+ SageMaker Os pools quentes gerenciados por IA não podem ser usados com instâncias spot.
+ SageMaker As piscinas quentes gerenciadas por IA estão limitadas a um `KeepAlivePeriodInSeconds` valor de 3600 segundos (60 minutos).
+ Se um grupo de aquecimento continuar a corresponder com êxito aos trabalhos de treinamento dentro do valor `KeepAlivePeriodInSeconds` especificado, o cluster só poderá continuar em execução por no máximo 28 dias.