Modifiez votre script d'entraînement pour attribuer des groupes d'instances - Amazon SageMaker

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.

Modifiez votre script d'entraînement pour attribuer des groupes d'instances

Avec la configuration de clusters hétérogène décrite dans les sections précédentes, vous avez préparé l'environnement de SageMaker formation et les instances pour votre tâche de formation. Pour affecter davantage de groupes d'instances à certaines tâches d'entraînement et de traitement des données, l'étape suivante consiste à modifier votre script d'entraînement. Par défaut, la tâche d'entraînement crée simplement des répliques de script d'entraînement pour tous les nœuds, quelle que soit la taille de l'instance, ce qui peut entraîner une perte de performances.

Par exemple, si vous mélangez des CPU instances et des GPU instances dans un cluster hétérogène tout en transmettant un script d'entraînement de réseau neuronal profond à l'entry_pointargument de l' SageMaker estimateur, le entry_point script est répliqué sur chaque instance. Cela signifie que, sans assignation de tâches appropriée, CPU les instances exécutent également l'intégralité du script et démarrent la tâche de formation conçue pour la formation distribuée sur les GPU instances. Par conséquent, vous devez apporter des modifications aux fonctions de traitement spécifiques que vous souhaitez décharger et exécuter sur les CPU instances. Vous pouvez utiliser les variables d' SageMaker environnement pour récupérer les informations du cluster hétérogène et permettre à des processus spécifiques de s'exécuter en conséquence.

Lorsque votre tâche de formation commence, votre script de formation lit les informations relatives à l'environnement de SageMaker formation, notamment la configuration de clusters hétérogènes. La configuration contient des informations telles que les groupes d'instances actuels, les hôtes actuels de chaque groupe et le groupe dans lequel réside l'hôte actuel.

Vous pouvez demander des informations sur les groupes d'instances lors de la phase d'initialisation d'une tâche de SageMaker formation de la manière suivante.

(Recommandé) Lire les informations relatives aux groupes d'instances à l'aide du kit SageMaker de formation

Utilisez le module Python d'environnement fourni par la bibliothèque de SageMaker boîtes à outils de formation. La bibliothèque de boîtes à outils est préinstallée dans les conteneurs du SageMaker framework pour TensorFlow et PyTorch, par conséquent, vous n'avez pas besoin d'une étape d'installation supplémentaire lorsque vous utilisez les conteneurs prédéfinis. Il s'agit de la méthode recommandée pour récupérer les variables d' SageMaker environnement en modifiant le moins de code dans votre script d'entraînement.

from sagemaker_training import environment env = environment.Environment()

Variables d'environnement liées à la SageMaker formation générale et aux clusters hétérogènes :

  • env.is_hetero : renvoie un résultat booléen, qu'un cluster hétérogène soit configuré ou non.

  • env.current_host : renvoie l'hôte actuel.

  • env.current_instance_type : renvoie le type d'instance de l'hôte actuel.

  • env.current_instance_group : renvoie le nom du groupe d'instances actuel.

  • env.current_instance_group_hosts : renvoie la liste des hôtes du groupe d'instances actuel.

  • env.instance_groups : renvoie une liste des noms de groupes d'instances utilisés pour l'entraînement.

  • env.instance_groups_dict : renvoie la configuration de cluster hétérogène complète de la tâche d'entraînement.

  • env.distribution_instance_groups— Renvoie la liste des groupes d'instances affectés au distribution paramètre de la classe d' SageMaker estimateur.

  • env.distribution_hosts— Renvoie la liste des hôtes appartenant aux groupes d'instances affectés au distribution paramètre de la classe d' SageMaker estimateur.

Par exemple, considérez l'exemple suivant d'un cluster hétérogène composé de deux groupes d'instances.

from sagemaker.instance_group import InstanceGroup instance_group_1 = InstanceGroup( "instance_group_1", "ml.c5.18xlarge", 1) instance_group_2 = InstanceGroup( "instance_group_2", "ml.p3dn.24xlarge", 2)

La sortie de env.instance_groups_dict de l'exemple de cluster hétérogène doit être semblable à ce qui suit.

{ "instance_group_1": { "hosts": [ "algo-2" ], "instance_group_name": "instance_group_1", "instance_type": "ml.c5.18xlarge" }, "instance_group_2": { "hosts": [ "algo-3", "algo-1" ], "instance_group_name": "instance_group_2", "instance_type": "ml.p3dn.24xlarge" } }

(Facultatif) Lire les informations du groupe d'instances à partir du JSON fichier de configuration des ressources

Si vous préférez récupérer les variables d'environnement au JSON format, vous pouvez directement utiliser le JSON fichier de configuration des ressources. Le JSON fichier d'une instance d' SageMaker entraînement se trouve /opt/ml/input/config/resourceconfig.json par défaut à l'emplacement.

file_path = '/opt/ml/input/config/resourceconfig.json' config = read_file_as_json(file_path) print(json.dumps(config, indent=4, sort_keys=True))