Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
SageMaker Piscines d'eau chaude gérées
SageMaker les warm pools gérés vous permettent de conserver et de réutiliser l'infrastructure provisionnée après la fin d'une tâche de formation afin de réduire le temps de latence lié aux charges de travail répétitives, telles que les expériences itératives ou l'exécution de nombreuses tâches de manière consécutive. Les tâches de formation suivantes correspondant à des paramètres spécifiés s'exécutent sur l'infrastructure du groupe d'instances pré-initialisées retenue, ce qui accélère les temps de démarrage tout en réduisant le temps passé à mettre en service les ressources.
Important
SageMaker les piscines d'eau chaude gérées sont une ressource facturable. Pour de plus amples informations, veuillez consulter Facturation.
Rubriques
Comment ça marche
Pour utiliser des pools de chaleur SageMaker gérés et réduire le temps de latence entre des tâches de formation consécutives similaires, créez une tâche de formation qui spécifie une KeepAlivePeriodInSeconds
valeur dans sonResourceConfig
. Cette valeur représente la durée en secondes nécessaire pour conserver les ressources retenues dans un groupe d'instances pré-initialisées pour les tâches d'entraînement suivantes. Si vous devez exécuter plusieurs tâches d'entraînement avec des configurations similaires, vous pouvez réduire davantage le temps de latence et le temps facturable en utilisant un répertoire de cache permanent dédié pour stocker et réutiliser vos informations dans le cadre d'une autre tâche.
Rubriques
Cycle de vie d'un groupe d'instances pré-initialisées
-
Créez une tâche d'entraînement initiale avec une valeur
KeepAlivePeriodInSeconds
supérieure à 0. Lorsque vous exécutez cette première tâche d'entraînement, elle « démarre à froid » un cluster avec des temps de démarrage classiques. -
Une fois la première tâche d'entraînement terminée, les ressources allouées restent actives dans un groupe d'instances pré-initialisées pendant la période spécifiée dans la valeur
KeepAlivePeriodInSeconds
. Tant que le cluster est sain et que le groupe d'instances pré-initialisées ne dépasse pas la valeur spécifiéeKeepAlivePeriodInSeconds
, l'état du groupe d'instances pré-initialisées estAvailable
. -
Le groupe d'instances pré-initialisées reste dans l'état
Available
jusqu'à ce qu'il identifie une tâche d'entraînement correspondante pour être réutilisé ou jusqu'à ce qu'il dépasse la valeur spécifiéeKeepAlivePeriodInSeconds
et soit terminé. La durée maximale autorisée pourKeepAlivePeriodInSeconds
est de 3 600 secondes (60 minutes). Si l'état du groupe d'instances pré-initialisées estTerminated
, cela indique la fin du cycle de vie du groupe d'instances pré-initialisées. -
Si le groupe d'instances pré-initialisées identifie une deuxième tâche d'entraînement avec des spécifications correspondantes, telles que le nombre d'instances ou le type d'instance, alors le groupe d'instances pré-initialisées passe de la première tâche d'entraînement à la deuxième pour être réutilisé. L'état du groupe d'instances pré-initialisées de la première tâche d'entraînement devient
Reused
. Cela indique la fin du cycle de vie du groupe d'instances pré-initialisées pour la première tâche d'entraînement. -
L'état de la deuxième tâche d'entraînement qui a réutilisé le groupe d'instances pré-initialisées devient
InUse
. Une fois la deuxième tâche d'entraînement terminée, l'état du groupe d'instances pré-initialisées estAvailable
pendant la duréeKeepAlivePeriodInSeconds
spécifiée dans la deuxième tâche d'entraînement. Un groupe d'instances pré-initialisées peut continuer à passer aux tâches d'entraînement correspondantes suivantes pendant 28 jours maximum. -
Si le groupe d'instances pré-initialisées n'est plus disponible pour être réutilisé, son état devient
Terminated
. Les groupes d'instances pré-initialisées ne sont plus disponibles s'ils sont terminés par un utilisateur, en cas de mise à jour du correctif ou de dépassement de la valeurKeepAlivePeriodInSeconds
spécifiée.
Pour plus d'informations sur les options relatives au statut du warm pool, consultez WarmPoolStatusle manuel Amazon SageMaker API Reference.
Création d'un groupe d'instances pré-initialisées
Si une tâche d'entraînement initiale est terminée avec succès et que sa valeur KeepAlivePeriodInSeconds
est supérieure à 0, cela crée un groupe d'instances pré-initialisées. Si vous arrêtez une tâche d'entraînement alors qu'un cluster est déjà lancé, le groupe d'instances pré-initialisées est retenu. Si la tâche d'entraînement échoue en raison d'un algorithme ou d'une erreur client, le groupe d'instances pré-initialisées est retenu. Si la tâche d'entraînement échoue pour une toute autre raison susceptible de compromettre la santé du cluster, le groupe d'instances pré-initialisées n'est pas créé.
Pour s'assurer de la création réussie d'un groupe d'instances pré-initialisées, vérifiez l'état du groupe d'instances pré-initialisées de votre tâche d'entraînement. Si un groupe d'instances pré-initialisées est mis en service avec succès, l'état du groupe d'instances pré-initialisées est Available
. Si un groupe d'instances pré-initialisées ne parvient pas à être mis en service, l'état du groupe d'instances pré-initialisées est Terminated
.
Tâches d'entraînement correspondantes
Pour qu'un groupe d'instances pré-initialisées persiste, il doit trouver une tâche d'entraînement correspondante pendant le délai spécifié dans la valeur KeepAlivePeriodInSeconds
. La tâche d'entraînement suivante correspond si les valeurs suivantes sont identiques :
-
RoleArn
-
Valeurs
ResourceConfig
:-
InstanceCount
-
InstanceType
-
VolumeKmsKeyId
-
VolumeSizeInGB
-
-
Valeurs
VpcConfig
:-
SecurityGroupIds
-
Subnets
-
-
EnableInterContainerTrafficEncryption
-
EnableNetworkIsolation
-
Si vous avez transmis des balises de session pour votre tâche de formation
EnableSessionTagChaining
définies surTrue
dans celles de la tâche de formationSessionChainingConfig
, une tâche de formation correspondante doit également être définie surTrue
etEnableSessionTagChaining
avoir des clés de session identiques. Pour de plus amples informations, veuillez consulter Utiliser le contrôle d'accès basé sur les attributs (ABAC) pour la formation multi-locataires.
Toutes ces valeurs doivent être identiques pour qu'un groupe d'instances pré-initialisées passe à la tâche d'entraînement suivante pour être réutilisé.
Durée maximale d'un groupe d'instances pré-initialisées
La durée maximale KeepAlivePeriodInSeconds
pour une seule tâche d'entraînement est de 3 600 secondes (60 minutes) et la durée maximale pendant laquelle un cluster de groupe d'instances pré-initialisées peut continuer à exécuter des tâches d'entraînement consécutives est de 28 jours.
Chaque tâche d'entraînement suivante doit également spécifier une valeur KeepAlivePeriodInSeconds
. Lorsque le groupe d'instances pré-initialisées passe à la tâche d'entraînement suivante, il hérite de la nouvelle valeur KeepAlivePeriodInSeconds
spécifiée dans la valeur ResourceConfig
de cette tâche d'entraînement. Ainsi, un groupe d'instances pré-initialisées peut passer d'une tâche d'entraînement à une autre pendant 28 jours maximum.
Si aucune valeur KeepAlivePeriodInSeconds
n'est spécifiée, le groupe d'instances pré-initialisées se désactive une fois la tâche d'entraînement terminée.
Utilisation du cache permanent
Lorsque vous créez un pool de chaleur, un répertoire spécial SageMaker est installé sur le volume, qui sera conservé tout au long du cycle de vie du pool de chaleur. Ce répertoire peut également être utilisé pour stocker des informations que vous souhaitez réutiliser dans le cadre d'une autre tâche.
L'utilisation d'un cache permanent peut réduire la latence et le temps facturable par rapport à l'utilisation de groupes d'instances pré-initialisées uniquement pour les tâches nécessitant les éléments suivants :
-
interactions multiples avec des configurations similaires
-
tâches d'entraînement incrémentiel
-
optimisation des hyperparamètres
Par exemple, vous pouvez éviter de télécharger les mêmes dépendances Python lors d'exécutions répétées en configurant un répertoire de cache pip dans le répertoire de cache persistant. Vous êtes entièrement responsable de la gestion du contenu de ce répertoire. Vous trouverez ci-dessous des exemples de types d'informations que vous pouvez placer dans votre cache permanent afin de réduire votre latence et votre temps facturable.
-
Dépendances gérées par pip.
-
Dépendances gérées par conda.
-
Toute information supplémentaire générée pendant l'entraînement.
L'emplacement du cache persistant est /opt/ml/sagemaker/warmpoolcache
. La variable d'environnement SAGEMAKER_MANAGED_WARMPOOL_CACHE_DIRECTORY
pointe vers l'emplacement du répertoire de cache persistant.
L'exemple de code suivant vous montre comment configurer un groupe d'instances pré-initialisées et utiliser le cache persistant pour stocker vos dépendances pip afin de les utiliser dans une tâche ultérieure. La tâche suivante doit être exécutée dans le délai indiqué par le paramètre 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"} )
Dans l'exemple de code précédent, l'utilisation du paramètre d'environnementPIP_CACHE_DIRECTORY
pour qu'elle pointe vers le répertoire /opt/ml/sagemaker/warmpoolcache/pip
. L'exportation de cette variable d'environnement changera l'endroit où pip stocke son cache vers le nouvel emplacement. Tout répertoire, y compris les répertoires imbriqués, que vous créez dans le répertoire de cache persistant pourra être réutilisé lors d'une exécution d'entraînement ultérieure. Dans l'exemple de code précédent, un répertoire appelé pip
est modifié pour être l'emplacement par défaut pour mettre en cache toutes les dépendances installées à l'aide de pip.
L'emplacement du cache permanent est également accessible depuis votre script d'entraînement Python à l'aide de la variable d'environnement, comme indiqué dans l'exemple de code suivant.
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)
Facturation
SageMaker les piscines d'eau chaude gérées sont une ressource facturable. Consultez l'état du groupe d'instances pré-initialisées pour votre tâche d'entraînement afin de vérifier la durée facturable pour vos groupes d'instances pré-initialisées. Vous pouvez vérifier l'état du pool de chaleur soit par le biais de la commande, Utilisation de la SageMaker console Amazon soit directement par le biais de la DescribeTrainingJobAPIcommande. Pour plus d'informations, consultez WarmPoolStatusle Amazon SageMaker API Reference.
Note
Une fois le délai spécifié par le paramètre KeepAlivePeriodInSeconds
expiré, le groupe d'instances pré-initialisées et le cache persistant s'arrêteront et le contenu sera supprimé.
Considérations
Tenez compte des éléments suivants lorsque vous utilisez des pools d'eau chaude SageMaker gérés.
-
SageMaker les pools de chaleur gérés ne peuvent pas être utilisés avec un entraînement en cluster hétérogène.
-
SageMaker les pools de chaleur gérés ne peuvent pas être utilisés avec des instances ponctuelles.
-
SageMaker les pools de chaleur gérés sont limités à une
KeepAlivePeriodInSeconds
valeur de 3 600 secondes (60 minutes). -
Si un groupe d'instances pré-initialisées continue de faire correspondre des tâches d'entraînement dans la valeur
KeepAlivePeriodInSeconds
spécifiée, le cluster pourra continuer à fonctionner pendant 28 jours au plus.