As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Configure um trabalho de treinamento com um cluster heterogêneo no Amazon AI SageMaker
Esta seção fornece instruções sobre como executar um trabalho de treinamento usando um cluster heterogêneo que consiste em vários tipos de instância.
Verifique o seguinte antes de começar:
-
Todos os grupos de instâncias compartilham a mesma imagem do Docker e o mesmo script de treinamento. Portanto, seu script de treinamento deve ser modificado para detectar a qual grupo de instâncias ele pertence e bifurcar a execução adequadamente.
-
O recurso de cluster heterogêneo não é compatível com o modo local de SageMaker IA.
-
Os fluxos de CloudWatch log da Amazon de um trabalho de treinamento de cluster heterogêneo não são agrupados por grupos de instâncias. Você precisa descobrir nos logs quais são os nós que estão em qual grupo.
Opção 1: usar o SDK do SageMaker Python
Siga as instruções sobre como configurar grupos de instâncias para um cluster heterogêneo usando o SDK do SageMaker Python.
-
Para configurar grupos de instâncias de um cluster heterogêneo para um trabalho de treinamento, use a classe
sagemaker.instance_group.InstanceGroup. Você pode especificar um nome personalizado para cada grupo de instâncias, o tipo de instância e o número de instâncias para cada grupo de instâncias. Para obter mais informações, consulte sagemaker.instance_group. InstanceGroupna documentação do SDK do SageMaker AI Python. nota
Para obter mais informações sobre os tipos de instância disponíveis e o número máximo de grupos de instâncias que você pode configurar em um cluster heterogêneo, consulte a referência da InstanceGroup API.
O exemplo de código a seguir mostra como configurar dois grupos de instâncias que consistem em duas
ml.c5.18xlargeCPU-only instâncias nomeadasinstance_group_1e uma instância deml.p3dn.24xlargeGPU nomeadainstance_group_2, conforme mostrado no diagrama a seguir.
O diagrama anterior mostra um exemplo conceitual de como os processos de pré-treinamento, como o pré-processamento de dados, podem ser atribuídos ao grupo de instâncias da CPU e transmitir os dados pré-processados para o grupo de instâncias da GPU.
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) -
Usando os objetos do grupo de instâncias, configure canais de entrada de treinamento e atribua grupos de instâncias aos canais por meio do
instance_group_namesargumento. O argumentoinstance_group_namesaceita uma lista de strings de nomes de grupos de instâncias.O exemplo a seguir mostra como definir dois canais de entrada de treinamento e atribuir os grupos de instâncias criados no exemplo da etapa anterior. Você também pode especificar caminhos de bucket do Amazon S3 para que os grupos de instâncias processem dados para fins de uso.
from sagemaker.train.configs import InputData from sagemaker.core.shapes import Channel, DataSource, S3DataSource training_input_channel_1 = Channel( channel_name='training', data_source=DataSource( s3_data_source=S3DataSource( s3_data_type='S3Prefix', s3_uri='s3://your-training-data-storage/folder1', s3_data_distribution_type='FullyReplicated', # Available Options: FullyReplicated | ShardedByS3Key instance_group_names=["instance_group_1"], ) ), input_mode='File', # Available Options: File | Pipe | FastFile ) training_input_channel_2 = Channel( channel_name='dummy-input-channel', data_source=DataSource( s3_data_source=S3DataSource( s3_data_type='S3Prefix', s3_uri='s3://your-training-data-storage/folder2', s3_data_distribution_type='FullyReplicated', instance_group_names=["instance_group_2"], ) ), input_mode='File', )Para obter mais informações sobre os argumentos de
InputData, consulte os seguintes links:-
O sagemaker.train.configs. InputData
classe na documentação do SDK do SageMaker Python -
A S3DataSource API na referência da API SageMaker AI
-
-
Configure um objeto de treinamento de SageMaker IA com o
instance_groupsargumento, conforme mostrado no exemplo de código a seguir. O argumentoinstance_groupsaceita uma lista de objetosInstanceGroup.nota
O recurso de cluster heterogêneo está disponível por meio da SageMaker IA PyTorch
e TensorFlow ModelTrainer das classes. As estruturas suportadas são PyTorch v1.10 ou posterior e TensorFlow v2.6 ou posterior. Para encontrar uma lista completa de contêineres de estrutura, versões de estrutura e versões de Python disponíveis, consulte Contêineres do SageMaker AI Framework no GitHub repositório de contêineres de aprendizado AWS profundo. PyTorch
from sagemaker.trainimportModelTrainerfrom sagemaker.train.configs import SourceCode from sagemaker.core import image_uris training_image = image_uris.retrieve( framework="pytorch", region=region, version='x.y.z', # 1.10.0 or later py_version='pyxy', instance_type='ml.p3dn.24xlarge', image_scope="training" ) model_trainer =ModelTrainer( ... source_code=SourceCode(entry_script='my-training-script.py'), training_image=training_image, job_name='my-training-job-with-heterogeneous-cluster', instance_groups=[instance_group_1,instance_group_2] )TensorFlow
from sagemaker.trainimportModelTrainerfrom sagemaker.train.configs import SourceCode from sagemaker.core import image_uris training_image = image_uris.retrieve( framework="tensorflow", region=region, version='x.y.z', # 2.6.0 or later py_version='pyxy', instance_type='ml.p3dn.24xlarge', image_scope="training" ) model_trainer =ModelTrainer( ... source_code=SourceCode(entry_script='my-training-script.py'), training_image=training_image, job_name='my-training-job-with-heterogeneous-cluster', instance_groups=[instance_group_1,instance_group_2] )nota
O
instance_typepar deinstance_countargumentos e e oinstance_groupsargumento da ModelTrainer classe SageMaker AI são mutuamente exclusivos. Para um treinamento de cluster homogêneo, use o par de argumentosinstance_typeeinstance_count. Para treinamento de clusters heterogêneos, useinstance_groups.nota
Para encontrar uma lista completa de contêineres de estrutura, versões de estrutura e versões de Python disponíveis, consulte Contêineres do SageMaker AI Framework
no GitHub repositório de contêineres de aprendizado AWS profundo. -
Comece o trabalho de treinamento com os canais de entrada de treinamento configurados com os grupos de instâncias.
model_trainer.train( inputs={ 'training':training_input_channel_1, 'dummy-input-channel':training_input_channel_2} )
Opção 2: usar as APIs de baixo nível SageMaker
Se você usa o AWS Command Line Interface ou AWS SDK for Python (Boto3) e quer usar SageMaker APIs de baixo nível para enviar uma solicitação de trabalho de treinamento com um cluster heterogêneo, consulte as referências de API a seguir.