Modification de votre script d’entraînement pour affecter des groupes d’instances - Amazon SageMaker AI

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.

Modification de votre script d’entraînement pour affecter des groupes d’instances

Avec la configuration de cluster hétérogène présentée dans les sections précédentes, vous avez préparé l’environnement et les instances d’entraînement de SageMaker pour votre tâche d’entraînement. 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 instances de processeur et des instances de processeur graphique dans un cluster hétérogène tout en transmettant un script d’entraînement de réseau neuronal approfondi à l’argument entry_point de l’estimateur SageMaker AI, le script entry_point est répliqué sur chaque instance. Cela signifie que, sans affectation de tâches appropriée, les instances de processeur exécutent également l’intégralité du script et lancent la tâche d’entraînement conçue pour l’entraînement distribuée sur les instances de processeur graphique. Par conséquent, vous devez apporter des modifications aux fonctions de traitement spécifiques que vous souhaitez décharger et exécuter sur les instances de processeur. Vous pouvez utiliser les variables d’environnement de SageMaker AI pour récupérer les informations du cluster hétérogène et laisser des processus spécifiques s’exécuter en conséquence.

Lorsque votre tâche d’entraînement commence, votre script d’entraînement lit les informations de l’environnement d’entraînement de SageMaker qui incluent une configuration de cluster hétérogène. 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 interroger les informations d’un groupe d’instances pendant la phase d’initialisation d’une tâche d’entraînement de SageMaker AI des façons suivantes.

(Recommandé) Lire les informations des groupes d’instances avec le kit d’entraînement de SageMaker

Utilisez le module d’environnement Python que la bibliothèque d’outils d’entraînement de SageMaker fournit. La bibliothèque de boîtes à outils est préinstallée dans les conteneurs d’infrastructure SageMaker pour TensorFlow et PyTorch, vous n’avez donc 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’environnement SageMaker AI avec moins de modifications de code dans votre script d’entraînement.

from sagemaker_training import environment env = environment.Environment()

Variables d’environnement liées à l’entraînement générale SageMaker 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 une liste des groupes d’instances attribués au paramètre distribution de la classe d’estimateur SageMaker AI.

  • env.distribution_hosts : renvoie la liste des hôtes appartenant aux groupes d’instances affectés au paramètre distribution de la classe d’estimateur SageMaker AI.

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) Lecture des informations du groupe d’instances à partir du fichier JSON de configuration de ressources

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

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