Modifique seu script de treinamento para atribuir grupos de instâncias - SageMaker IA da Amazon

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á.

Modifique seu script de treinamento para atribuir grupos de instâncias

Com a configuração de cluster heterogêneo nas seções anteriores, você preparou o ambiente de treinamento e as instâncias do SageMaker para seu trabalho de treinamento. Para atribuir ainda mais os grupos de instâncias a determinadas tarefas de treinamento e processamento de dados, a próxima etapa é modificar seu script de treinamento. Por padrão, o trabalho de treinamento simplesmente cria réplicas de scripts de treinamento para todos os nós, independentemente do tamanho da instância, e isso pode levar a perda de desempenho.

Por exemplo, se você combinar instâncias de CPU e instâncias de GPU em um cluster heterogêneo enquanto passa um script de treinamento de rede neural profunda ao argumento entry_point do estimador do SageMaker, o script entry_point será replicado para cada instância. Isso significa que, sem a atribuição adequada de tarefas, as instâncias de CPU também executam o script inteiro e iniciam o trabalho de treinamento projetado para treinamento distribuído em instâncias de GPU. Portanto, você deve fazer alterações nas funções de processamento específicas que deseja descarregar e executar nas instâncias da CPU. Você pode usar as variáveis de ambiente do SageMaker AI para recuperar as informações do cluster heterogêneo e permitir que processos específicos sejam executados adequadamente.

Quando seu trabalho de treinamento começa, seu script de treinamento lê as informações do ambiente de treinamento do SageMaker que incluem a configuração heterogênea do cluster. A configuração contém informações como os grupos de instâncias atuais, os hosts atuais em cada grupo e em qual grupo o host atual reside.

Você pode consultar informações do grupo de instâncias durante a fase de inicialização de uma tarefa de treinamento do SageMaker AI das maneiras a seguir.

(Recomendado) Lendo as informações do grupo de instâncias com o kit de ferramentas de treinamento do SageMaker

Use o módulo de módulo Python fornecido pela biblioteca do kit de ferramentas de treinamento do SageMaker. A biblioteca do kit de ferramentas está pré-instalada nos contêineres da estrutura do SageMaker para TensorFlow e PyTorch, portanto, você não precisa de uma etapa adicional de instalação ao usar os contêineres pré-criados. Essa é a forma recomendada de recuperar as variáveis de ambiente do SageMaker AI com menos alterações de código em seu script de treinamento.

from sagemaker_training import environment env = environment.Environment()

Variáveis de ambiente relacionadas ao treinamento geral do SageMaker e aos clusters heterogêneos:

  • env.is_hetero - Retorna um resultado booleano, independentemente de um cluster heterogêneo estar configurado ou não.

  • env.current_host - Retorna o host atual.

  • env.current_instance_type - Retorna o tipo de instância do host atual.

  • env.current_instance_group - Retorna o nome do grupo de instâncias atual.

  • env.current_instance_group_hosts - Retorna uma lista de hosts no grupo de instâncias atual.

  • env.instance_groups - Retorna uma lista de nomes de grupos de instâncias usados para treinamento.

  • env.instance_groups_dict - Retorna toda a configuração heterogênea do cluster do trabalho de treinamento.

  • env.distribution_instance_groups: exibe uma lista de grupos de instâncias atribuídos ao parâmetro distribution da classe de estimador do SageMaker AI.

  • env.distribution_hosts: exibe uma lista de hosts pertencentes aos grupos de instâncias atribuídos ao parâmetro distribution da classe de estimador do SageMaker AI.

Por exemplo, considere o exemplo a seguir de um cluster heterogêneo que consiste em dois grupos de instâncias.

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)

A saída do exemplo env.instance_groups_dict de cluster heterogêneo deve ser semelhante à seguinte:

{ "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) Lendo as informações do grupo de instâncias do arquivo JSON de configuração do recurso

Se preferir recuperar as variáveis de ambiente no formato JSON, você poderá usar diretamente o arquivo JSON de configuração do recurso. Por padrão, o arquivo JSON em uma instância de treinamento do SageMaker está localizado em /opt/ml/input/config/resourceconfig.json.

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