Modificación del script de entrenamiento para asignar grupos de instancias - Amazon SageMaker AI

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Modificación del script de entrenamiento para asignar grupos de instancias

Con la configuración de clústeres heterogéneos de las secciones anteriores, ha preparado el entorno de SageMaker formación y las instancias para su trabajo de formación. Para seguir asignando los grupos de instancias a determinadas tareas de entrenamiento y procesamiento de datos, el siguiente paso es modificar el script de entrenamiento. De forma predeterminada, el trabajo de entrenamiento simplemente crea réplicas de los scripts de entrenamiento para todos los nodos, independientemente del tamaño de la instancia, lo que podría provocar una pérdida de rendimiento.

Por ejemplo, si mezclas instancias de CPU e instancias de GPU en un clúster heterogéneo y, al mismo tiempo, pasas un guion de entrenamiento de redes neuronales profundas al entry_point argumento del estimador de SageMaker IA, el entry_point script se replica en cada instancia. Esto significa que, sin la asignación de tareas adecuada, las instancias de CPU también ejecutan todo el script e inician el trabajo de entrenamiento diseñado para el entrenamiento distribuido en instancias de GPU. Por lo tanto, debe realizar cambios en las funciones de procesamiento específicas que quiera descargar y ejecutar en las instancias de CPU. Puedes usar las variables de entorno de la SageMaker IA para recuperar la información del clúster heterogéneo y permitir que los procesos específicos se ejecuten en consecuencia.

Cuando comienza el trabajo de formación, el guion de formación lee la información del entorno de SageMaker formación, que incluye la configuración de clústeres heterogéneos. La configuración contiene información como los grupos de instancias actuales, los hosts actuales de cada grupo y en qué grupo reside el host actual.

Puedes consultar la información del grupo de instancias durante la fase de inicialización de un trabajo de formación en SageMaker IA de las siguientes maneras.

(Recomendado) Leer la información de los grupos de instancias con el kit de herramientas de SageMaker formación

Utilice el módulo Python del entorno que proporciona la biblioteca del kit de herramientas de SageMaker formación. La biblioteca del kit de herramientas viene preinstalada en los contenedores del SageMaker marco TensorFlow y PyTorch, por lo tanto, no es necesario realizar ningún paso de instalación adicional cuando se utilizan los contenedores prediseñados. Esta es la forma recomendada de recuperar las variables de entorno de la SageMaker IA con menos cambios de código en el script de entrenamiento.

from sagemaker_training import environment env = environment.Environment()

Variables de entorno relacionadas con el SageMaker entrenamiento general y los clústeres heterogéneos:

  • env.is_hetero: devuelve un resultado booleano independientemente de si un clúster heterogéneo está configurado o no.

  • env.current_host: devuelve el host actual.

  • env.current_instance_type: devuelve el tipo de instancia del host actual.

  • env.current_instance_group: devuelve el nombre del grupo de instancias actual.

  • env.current_instance_group_hosts: devuelve una lista de los hosts del grupo de instancias actual.

  • env.instance_groups: devuelve una lista de los nombres de los grupos de instancias utilizados para el entrenamiento.

  • env.instance_groups_dict: devuelve la configuración de clúster heterogénea completa del trabajo de entrenamiento.

  • env.distribution_instance_groups— Devuelve una lista de grupos de instancias asignados al distribution parámetro de la clase de estimador de SageMaker IA.

  • env.distribution_hosts— Devuelve una lista de hosts que pertenecen a los grupos de instancias asignados al distribution parámetro de la clase de estimador de SageMaker IA.

Por ejemplo, considere el siguiente ejemplo de un clúster heterogéneo que consta de dos grupos de instancias.

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)

El resultado de env.instance_groups_dict del clúster heterogéneo de ejemplo debería ser similar al siguiente.

{ "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" } }

(Opcional) Leer la información del grupo de instancias del archivo JSON de configuración de recursos

Si prefiere recuperar las variables de entorno en formato JSON, puede usar directamente el archivo JSON de configuración de recursos. El archivo JSON de una instancia de SageMaker entrenamiento se encuentra en, de forma /opt/ml/input/config/resourceconfig.json predeterminada, en.

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