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.
Configurar un trabajo de formación con un clúster heterogéneo en Amazon SageMaker
En esta sección se proporcionan instrucciones sobre cómo ejecutar un trabajo de entrenamiento con un clúster heterogéneo que consta de varios tipos de instancias.
Tenga en cuenta lo siguiente antes de empezar.
-
Todos los grupos de instancias comparten la misma imagen de Docker y el mismo script de entrenamiento. Por lo tanto, debe modificar su script de entrenamiento para detectar a qué grupo de instancias pertenece y bifurcar la ejecución en consecuencia.
-
La función de clúster heterogéneo no es compatible con el modo SageMaker local.
-
Los flujos de CloudWatch registro de Amazon de un trabajo de formación en clústeres heterogéneos no están agrupados por grupos de instancias. Tiene que averiguar a partir de los registros qué nodos están en cada grupo.
Opción 1: Uso de SageMaker Python SDK
Sigue las instrucciones sobre cómo configurar grupos de instancias para un clúster heterogéneo mediante SageMaker PythonSDK.
-
Para configurar grupos de instancias de un clúster heterogéneo para un trabajo de entrenamiento, utilice la clase
sagemaker.instance_group.InstanceGroup
. Puede especificar un nombre personalizado para cada grupo de instancias, el tipo de instancia y la cantidad de instancias para cada grupo de instancias. Para obtener más información, consulta sagemaker.instance_group. InstanceGroupen la SDKdocumentación de SageMaker Python. nota
Para obtener más información sobre los tipos de instancias disponibles y la cantidad máxima de grupos de instancias que puedes configurar en un clúster heterogéneo, consulta la InstanceGroupAPIreferencia.
En el siguiente ejemplo de código, se muestra cómo configurar dos grupos de instancias que constan de
ml.c5.18xlarge
CPU solo dos instancias con nombreinstance_group_1
y unaml.p3dn.24xlarge
GPU instancia con nombreinstance_group_2
, como se muestra en el siguiente diagrama.El diagrama anterior muestra un ejemplo conceptual de cómo los procesos previos al entrenamiento, como el preprocesamiento de datos, se pueden asignar al grupo de CPU instancias y transmitir los datos preprocesados al GPU grupo de instancias.
from sagemaker.instance_group import InstanceGroup instance_group_1 = InstanceGroup( "
instance_group_1
", "ml.c5.18xlarge
",2
) instance_group_2 = InstanceGroup( "instance_group_2
", "ml.p3dn.24xlarge
",1
) -
Con los objetos del grupo de instancias, configura los canales de entrada de entrenamiento y asigna grupos de instancias a los canales mediante el
instance_group_names
argumento de sagemaker.inputs. TrainingInputclase. El argumento instance_group_names
acepta una lista de cadenas de nombres de grupos de instancias.En el siguiente ejemplo, se muestra cómo configurar dos canales de entrada de entrenamiento y cómo asignar los grupos de instancias creados en el ejemplo del paso anterior. También puedes especificar las rutas de los buckets de Amazon S3 al argumento
s3_data
para que los grupos de instancias procesen los datos para sus fines de uso.from sagemaker.inputs import TrainingInput training_input_channel_1 = TrainingInput( s3_data_type='
S3Prefix
', # Available Options: S3Prefix | ManifestFile | AugmentedManifestFile s3_data='s3://your-training-data-storage/folder1
', distribution='FullyReplicated
', # Available Options: FullyReplicated | ShardedByS3Key input_mode='File
', # Available Options: File | Pipe | FastFile instance_groups=["instance_group_1
"] ) training_input_channel_2 = TrainingInput( s3_data_type='S3Prefix
', s3_data='s3://your-training-data-storage/folder2
', distribution='FullyReplicated
', input_mode='File
', instance_groups=["instance_group_2
"] )Para obtener más información sobre los argumentos de
TrainingInput
, consulte los siguientes enlaces.-
El hacedor de sabios. entradas. TrainingInput
clase en la SDKdocumentación de SageMaker Python -
El S3 DataSource API en la SageMakerAPIreferencia
-
-
Configure un SageMaker estimador con el
instance_groups
argumento tal y como se muestra en el siguiente ejemplo de código. El argumentoinstance_groups
acepta una lista de objetosInstanceGroup
nota
La función de clúster heterogéneo está disponible a través de las clases de estimadores SageMaker PyTorch
y TensorFlow Framework. Los marcos compatibles son la PyTorch versión 1.10 o posterior y la versión 2.6 o posterior. TensorFlow Para obtener una lista completa de los contenedores de framework, las versiones de framework y las versiones de Python disponibles, consulte SageMaker Framework Containers en el GitHub repositorio de AWS Deep Learning Container. nota
El
instance_type
par deinstance_count
argumentos y y elinstance_groups
argumento de la clase SageMaker estimadora se excluyen mutuamente. Para el entrenamiento de clústeres homogéneos, utilice el par de argumentosinstance_type
yinstance_count
. Para el entrenamiento de clústeres heterogéneos, utiliceinstance_groups
.nota
Para obtener una lista completa de los contenedores de framework, las versiones de framework y las versiones de Python disponibles, consulte SageMaker Framework Containers
en el GitHub repositorio de AWS Deep Learning Container. -
Configure el método
estimator.fit
con los canales de entrada de entrenamiento configurados con los grupos de instancias e inicie el trabajo de entrenamiento.estimator.fit( inputs={ 'training':
training_input_channel_1
, 'dummy-input-channel
':training_input_channel_2
} )
Opción 2: usar el nivel bajo SageMaker APIs
Si utiliza el AWS Command Line Interface o AWS SDK for Python (Boto3) y desea utilizar el nivel bajo SageMaker APIs para enviar una solicitud de trabajo de formación con un clúster heterogéneo, consulte las siguientes referencias. API