Revisar as configurações de instância de computação e de cluster

Neste documento, descrevemos as configurações no hipercomputador de IA que devem ser consideradas antes de criar instâncias e clusters do Compute Engine. Analisar as configurações disponíveis ajuda a otimizar o desempenho das cargas de trabalho, além de minimizar os tempos de inatividade e os problemas de desempenho.

Fatores de configuração para criação de instâncias de computação e clusters

Antes de criar instâncias de computação e clusters para executar suas cargas de trabalho, considere qual configuração usar:

  1. O modelo de provisionamento

  2. As ferramentas de implantação de cluster

  3. Se você usar o modelo de provisionamento vinculado à reserva, também precisará considerar os seguintes fatores:

Modelos de provisionamento

Com base na opção de consumo escolhida para criar instâncias ou clusters de computação, é possível usar um dos seguintes modelos de provisionamento para conseguir os recursos necessários para criar instâncias:

  • Vinculado à reserva: é possível reservar recursos com desconto para uma data e duração futuras. No início do período de reserva, é possível usar os recursos reservados para criar instâncias ou clusters. Você tem acesso exclusivo aos recursos reservados durante o período da reserva.

  • Início flexível: é possível solicitar recursos com desconto por até sete dias. O Compute Engine faz o possível para programar o provisionamento dos recursos solicitados assim que eles estiverem disponíveis. Você tem acesso exclusivo aos recursos obtidos durante o período solicitado.

  • Spot: com base na disponibilidade, é possível conseguir imediatamente recursos com grandes descontos. No entanto, o Compute Engine pode interromper ou excluir instâncias a qualquer momento para recuperar capacidade.

Modelo de provisionamento vinculado à reserva

O modelo de provisionamento vinculado à reserva vincula as instâncias de computação criadas à capacidade que você reservou anteriormente. Quando você reserva capacidade, o Compute Engine cria uma reserva vazia. Em seguida, no horário de início da reserva, ocorre o seguinte:

  • O Compute Engine adiciona o número reservado de instâncias à reserva. Você tem acesso exclusivo à capacidade reservada até o horário de término da reserva.

  • OGoogle Cloud cobra pela capacidade reservada até o final do período de reserva, quer você use a capacidade ou não.

Em seguida, é possível usar os recursos reservados para criar instâncias sem cobranças extras. Você só paga pelos recursos que não estão incluídos na reserva, como discos ou endereços IP.

Para especificar o modelo de provisionamento vinculado à reserva ao criar instâncias de computação ou MIGs, faça o seguinte:

  • No console do Google Cloud , na lista Modelo de provisionamento, selecione Vinculado à reserva.

  • Na Google Cloud CLI, inclua a flag --provisioning-model=RESERVATION_BOUND no comando.

  • Na API Compute Engine, inclua o campo "provisioningModel": "RESERVATION_BOUND" no corpo da solicitação.

Para mais informações sobre como definir esses parâmetros ao criar instâncias ou MIGs depois de reservar capacidade, consulte Visão geral da criação de instâncias de computação e clusters. Se você usar o Cluster Toolkit para implantar os clusters, o blueprint do cluster vai definir o modelo de provisionamento para você.

Modelo de provisionamento de início flexível

O modelo de provisionamento de início flexível permite criar VMs de início flexível independentes ou adicioná-las a um grupo gerenciado de instâncias (MIG) quando a capacidade solicitada estiver disponível. Quando você adiciona VMs flex-start a um MIG usando solicitações de redimensionamento, o MIG cria as instâncias de uma só vez. Essa abordagem ajuda a evitar cobranças desnecessárias pela capacidade parcial que o Compute Engine pode fornecer enquanto você aguarda a capacidade total necessária para iniciar a carga de trabalho. O modelo de provisionamento de início flexível provisiona recursos de um pool de capacidade seguro, o que ajuda a aumentar suas chances de conseguir recursos de alta demanda, como GPUs.

Para especificar o modelo de provisionamento de início flexível ao criar uma instância independente ou um modelo de instância para um MIG, faça o seguinte:

  • No console do Google Cloud , na lista Modelo de provisionamento, selecione Início flexível.

  • Na CLI gcloud, inclua a flag --provisioning-model=FLEX_START no comando.

  • Na API Compute Engine, inclua o campo "provisioningModel": "FLEX_START" no corpo da solicitação.

Para mais informações sobre como criar instâncias ou clusters que usam o modelo de provisionamento de início flexível, consulte os seguintes documentos:

Modelo de provisionamento spot

O modelo de provisionamento spot permite criar instâncias de computação com grandes descontos com base na disponibilidade. No entanto, o Compute Engine pode interromper ou excluir as instâncias criadas a qualquer momento para recuperar a capacidade. Esse processo é chamado de preempção.

Para especificar o modelo de provisionamento spot ao criar instâncias ou MIGs, faça o seguinte:

  • No console do Google Cloud , na lista Modelo de provisionamento, selecione Spot.

  • Na CLI gcloud, inclua a flag --provisioning-model=SPOT no comando.

  • Na API Compute Engine, inclua o campo "provisioningModel": "SPOT" no corpo da solicitação.

Para mais informações sobre como definir esses parâmetros ao criar instâncias ou MIGs, consulte Visão geral da criação de instâncias de computação e clusters.

Ferramentas de implantação de clusters

O Cluster Toolkit é uma ferramenta de implantação de código aberto recomendada para criar clusters acelerados por GPU. O Cluster Toolkit pode implantar clusters do Google Kubernetes Engine (GKE) ou do Slurm.

Como alternativa, é possível provisionar seus grupos de instâncias de computação usando um dos métodos a seguir e, em seguida, incorporar seu próprio programador de carga de trabalho, conforme necessário:

Tipos de implantação de blocos de reserva

Se você usar o modelo de provisionamento vinculado à reserva ao criar instâncias ou clusters de computação de GPU em cluster, as máquinas recebidas serão implantadas automaticamente em blocos de hosts densamente alocados. Essa implantação oferece os seguintes benefícios:

  • Rede sem bloqueio para conectividade de instância consistente de alta largura de banda e baixa latência usando a malha de rede de machine learning (ML) dinâmico do Google.

  • Acesso à topologia de rede que fornece uma visualização hierárquica da proximidade relativa entre as instâncias. Esse recurso é útil para casos de uso avançados de programação de jobs.

  • Posicionamento detalhado e com reconhecimento de topologia ao usar orquestradores.

  • Controle granular do usuário sobre as programações de manutenção para maximizar a programação de jobs e o tempo de atividade, além de minimizar os tempos de inatividade.

Modo operacional de reserva

Se você usar o modelo de provisionamento vinculado à reserva, o tipo de máquina reservado vai determinar o modo operacional da reserva para a capacidade reservada. Cada modo define como responder a erros de host ou relatórios de host com falha, bem como seu nível de visibilidade e controle sobre a infraestrutura da reserva.

Cada modo operacional de reserva define o seguinte:

  • Quem gerencia a recuperação: você ou o Google Cloud.

  • Qual capacidade você usa para recuperação: apenas a capacidade reservada ou a capacidade dentro ou fora das reservas.

  • Seu nível de controle de posicionamento: se você pode visualizar e iniciar a manutenção antes do horário planejado para sub-blocos de reserva específicos para um controle refinado.

Ao reservar capacidade para criar instâncias de computação ou clusters, é necessário escolher entre um dos seguintes modos operacionais de reserva: modo gerenciado ou modo de capacidade total.

Modo gerenciado

No modo gerenciado, o Google Cloud gerencia automaticamente o processo de manutenção e recuperação das instâncias de computação após erros de host ou relatórios de host com falha. Essa abordagem é ideal quando a carga de trabalho exige alta estabilidade e você prefere um processo automatizado para minimizar as inatividades.

O modo gerenciado tem as seguintes características:

  • Usar apenas a capacidade reservada para recuperação: o Compute Engine usa apenas a capacidade reservada para reiniciar instâncias. Se não houver capacidade disponível nas suas reservas, o Compute Engine só vai reiniciar as instâncias depois que você conseguir mais capacidade.

  • Reinicializações automatizadas de instâncias: Google Cloud processa todo o processo de recuperação de uma instância. Quando a manutenção do host é necessária, o Compute Engine migra automaticamente as instâncias em outras máquinas disponíveis na reserva e as reinicia.

  • Gerenciamento e visibilidade de blocos: é possível conferir a topologia, a integridade e o status de manutenção de reservas e blocos de reserva individuais. Também é possível receber notificações de manutenção e, se quiser, iniciar a manutenção antes do horário programado para esses recursos.

  • Possíveis limites de taxa de API: as chamadas para a API de relatório de host com falha podem ser limitadas por reserva.

Modo de capacidade total

Em todos os modos de capacidade, você é responsável por gerenciar um processo de recuperação de instância de computação. É necessário iniciar manualmente a manutenção após erros de host ou relatórios de host com falha. Ao contrário do modo gerenciado, também é possível visualizar e iniciar a manutenção dos sub-blocos de reserva. Esses recursos oferecem controle total e granular sobre o processo de manutenção e recuperação das instâncias.

O modo de capacidade total tem as seguintes características:

  • Usar capacidade reservada e não reservada para recuperação: é possível usar os recursos reservados, bem como todos os recursos disponíveis fora da reserva, para ajudar a migrar e reiniciar uma instância quando o host falhar.

  • Reinicializações manuais de instâncias: você é responsável pelo processo de recuperação de uma instância. Quando a manutenção do host é necessária devido a um erro ou relatório de host com falha, o Compute Engine interrompe a instância. Só é possível reiniciar a instância após a conclusão da manutenção.

  • Gerenciamento e visibilidade de blocos e sub-blocos: é possível visualizar a topologia, a integridade e o status de manutenção de reservas individuais, blocos de reserva e sub-blocos de reserva. Também é possível receber notificações de manutenção e, se quiser, iniciar a manutenção antes do horário programado para esses recursos.

  • Sem limites de taxa de API: não há limites de taxa quando você faz chamadas para a API de relatório de host com falha.

Tipos de programação de manutenção

Se você usar o modelo de provisionamento vinculado à reserva, o Cluster Director vai oferecer opções para programar a manutenção do host para as instâncias de computação em execução no cluster. Ao reservar capacidade, é possível especificar se as instâncias serão agrupadas e terão uma programação de manutenção sincronizada (agrupadas) ou se as instâncias poderão ser acoplado com flexibilidade e ter uma programação de manutenção independente (independentes).

Programação de manutenção agrupada

O tipo de programação de manutenção agrupada ajuda a alinhar todas as instâncias que executam a mesma carga de trabalho com a mesma frequência de manutenção planejada, não importa quando o Compute Engine provisiona uma instância de computação. Essa manutenção de acoplamento rígido permite otimizar o desempenho do job, oferecendo controle total sobre a capacidade usada e não usada.

Um tipo de programação de manutenção de grupo é útil nos seguintes casos:

  • Seu ambiente usa um programador de jobs, como o Slurm ou o GKE.

  • Você quer executar cargas de trabalho de treinamento ou outras cargas de trabalho de computação altamente paralelizadas.

Programação de manutenção independente

Esse tipo de programação de manutenção independente oferece às instâncias diferentes programações de manutenção. Essa configuração é ideal se você quiser executar inferência ou treinamento em escala limitada, em que as cargas de trabalho são executadas de maneira mais eficiente quando têm programações de manutenção separadas.

A seguir