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á.
Utilização de planos de SageMaker treinamento para trabalhos de treinamento
Você pode usar um plano de SageMaker treinamento para seus trabalhos de treinamento especificando o plano de sua escolha ao criar um trabalho de treinamento.
nota
O plano de treinamento deve estar no status Scheduled ou Active para ser usado por uma tarefa de treinamento.
Se a capacidade necessária não estiver imediatamente disponível para uma tarefa de treinamento, a tarefa aguardará até que haja capacidade disponível, ou até que StoppingCondition seja atingida, ou a tarefa ficará no status de capacidade Pending por dois dias, o que ocorrer primeiro. Se a condição de interrupção for atendida, a tarefa será interrompida. Se uma tarefa ficar pendente por dois dias, ela será encerrada com umInsufficientCapacityError.
Importante
Processo de encerramento da capacidade reservada: você tem acesso total a todas as instâncias reservadas até 30 minutos antes do horário de término da capacidade reservada. Quando restam 30 minutos em sua capacidade reservada, os planos de SageMaker treinamento iniciam o processo de encerramento de todas as instâncias em execução dentro dessa capacidade reservada.
Para garantir que você não perca o progresso do treinamento devido a esses encerramentos, recomendamos verificar suas tarefas de treinamento.
Implementar um ponto de verificação na tarefa de treinamento
Ao usar planos SageMaker de treinamento para seus trabalhos SageMaker de treinamento, certifique-se de implementar o checkpoint em seu script de treinamento. Isso permite que você salve o progresso de seu treinamento antes que a capacidade reservada expire. A verificação é especialmente importante ao trabalhar com capacidades reservadas, pois permite que você retome o treinamento a partir do último ponto salvo se seu trabalho for interrompido entre duas capacidades reservadas ou quando seu plano de treinamento atinge a data de término.
Para isso, é possível usar a variável de ambiente SAGEMAKER_CURRENT_CAPACITY_BLOCK_EXPIRATION_TIMESTAMP. Essa variável ajuda a determinar quando iniciar o processo de verificação. Ao incorporar essa lógica em seu script de treinamento, você garante que o progresso do modelo seja salvo em intervalos apropriados.
Veja aqui um exemplo de como você pode implementar essa lógica de ponto de verificação em seu script de treinamento do Python:
import os import time from datetime import datetime, timedelta def is_close_to_expiration(threshold_minutes=30): # Retrieve the expiration timestamp from the environment variable expiration_time_str = os.environ.get('SAGEMAKER_CURRENT_CAPACITY_BLOCK_EXPIRATION_TIMESTAMP', '0') # If the timestamp is not set (default '0'), return False if expiration_time_str == '0': return False # Convert the timestamp string (in milliseconds) to a datetime object expiration_time = datetime(1970, 1, 1) + timedelta(milliseconds=int(expiration_time_str)) # Calculate the time difference between now and the expiration time time_difference = expiration_time - datetime.now() # Return True if we're within the threshold time of expiration return time_difference < timedelta(minutes=threshold_minutes) def start_checkpointing(): # Placeholder function for checkpointing logic print("Starting checkpointing process...") # TODO: Implement actual checkpointing logic here # For example: # - Save model state # - Save optimizer state # - Save current epoch and iteration numbers # - Save any other relevant training state # Main training loop num_epochs = 100 final_checkpointing_done = False for epoch in range(num_epochs): # TODO: Replace this with your actual training code # For example: # - Load a batch of data # - Forward pass # - Calculate loss # - Backward pass # - Update model parameters # Check if we're close to capacity expiration and haven't done final checkpointing if not final_checkpointing_done and is_close_to_expiration(): start_checkpointing() final_checkpointing_done = True # Simulate some training time (remove this in actual implementation) time.sleep(1) print("Training completed.")
nota
-
O provisionamento do trabalho de treinamento segue uma ordem First-In-First-Out (FIFO), mas um trabalho de cluster menor criado posteriormente pode receber capacidade antes de um trabalho de cluster maior criado anteriormente, se o trabalho maior não puder ser realizado.
-
SageMaker a piscina aquecida gerenciada por treinamento é compatível com os planos de SageMaker treinamento. Para reutilização do cluster, você deve fornecer valores de
TrainingPlanArnidênticos nas solicitaçõesCreateTrainingJobsubsequentes para reutilizar o mesmo cluster.