View a markdown version of this page

Políticas - 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á.

Políticas

A governança de SageMaker HyperPod tarefas da Amazon simplifica a forma como os recursos do cluster Amazon EKS são alocados e como as tarefas são priorizadas. Veja a seguir informações sobre as políticas de cluster do HyperPod EKS. Para ter informações sobre como configurar a governança de tarefas, consulte Configuração da governança de tarefas.

As políticas são divididas em priorização da computação e alocação da computação. Os conceitos de política abaixo serão organizados no contexto dessas políticas.

A priorização da computação, ou política de cluster, determina como a computação inativa é tomada emprestada e como as tarefas são priorizadas pelas equipes.

  • A alocação de computação inativa define como a computação ociosa é alocada entre as equipes. Ou seja, como a computação não utilizada pode ser tomada emprestada das equipes. Ao escolher uma alocação de computação inativa, você pode escolher entre:

    • Primeiro a chegar, primeiro a ser atendido: quando esta opção é aplicada, as equipes não são priorizadas umas em relação às outras e cada tarefa recebida tem a mesma probabilidade de obter recursos acima da cota. As tarefas são priorizadas com base na ordem de envio. Isso significa que um usuário poderá usar 100% da computação ociosa se a solicitar primeiro.

    • Compartilhamento justo: quando esta opção é aplicada, as equipes tomam emprestada a computação ociosa com base no peso atribuído ao compartilhamento justo. Esses pesos são definidos em Alocação de computação. Para ter mais informações sobre como isso pode ser usado, consulte Exemplos de compartilhamento de recursos de computação ociosos.

  • A Priorização de tarefas define como as tarefas são colocadas em fila à medida que a computação se torna disponível. Ao selecionar uma Priorização de tarefas, você pode escolher entre:

    • Primeiro a chegar, primeiro a ser atendido: quando esta opção é aplicada, as tarefas são enfileiradas na ordem em que são solicitadas.

    • Classificação de tarefas: quando esta opção é aplicada, as tarefas são enfileiradas na ordem definida pela respectiva priorização. Se essa opção for escolhida, você deverá adicionar classes prioritárias com os pesos de acordo com os quais elas devem ser priorizadas. Tarefas da mesma classe prioritária serão executadas por ordem de chegada. Quando habilitada em “Alocação de computação”, as tarefas de maior prioridade dentro da equipe são antecipadas em relação às de menor prioridade.

      Quando cientistas de dados enviam trabalhos ao cluster, eles usam o nome da classe prioritária no arquivo YAML. A classe prioritária está no formato priority-class-name-priority. Para ver um exemplo, consulte Envie um trabalho para uma fila e um SageMaker namespace gerenciados por IA.

    • Classes prioritárias: essas classes estabelecem uma prioridade relativa para tarefas ao tomar capacidade emprestada. Quando uma tarefa está sendo executada usando uma cota tomada emprestada, outra tarefa de maior prioridade pode ter precedência sobre ela, se não houver mais capacidade disponível para a tarefa de entrada. Se a opção Preempção estiver habilitada em Alocação de computação, uma tarefa de maior prioridade também poderá ter precedência sobre as tarefas dentro da própria equipe.

  • O compartilhamento de recursos não alocados permite que as equipes emprestem recursos computacionais que não estão alocados a nenhuma equipe por meio da cota de computação. Quando ativada, a capacidade não alocada do cluster fica disponível para que as equipes emprestem automaticamente. Para obter mais informações, consulte Como funciona o compartilhamento de recursos não alocados.

A alocação de computação, ou cota de computação, define a alocação de computação de uma equipe e qual peso (ou nível de prioridade) é atribuído a uma equipe para a alocação justa de computação ociosa.

  • Nome da equipe: o nome da equipe. Um namespace correspondente será criado, do tipo hyperpod-ns-team-name.

  • Membros: membros do namespace da equipe. Você precisará configurar um controle de acesso baseado em funções (RBAC) do Kubernetes para usuários de cientistas de dados que desejam fazer parte dessa equipe, para executar tarefas em clusters orquestrados com o Amazon EKS. HyperPod Para configurar um RBAC do Kubernetes, use as instruções em Create team role.

  • Peso com compartilhamento justo: esse é o nível de priorização atribuído à equipe quando o compartilhamento justo é aplicado para alocação de computação ociosa. A prioridade mais alta tem peso 100 e a mais baixa tem peso 0. Um peso maior permite que uma equipe acesse mais cedo recursos não utilizados dentro da capacidade compartilhada. Um peso 0 significa a menor prioridade, o que implica que essa equipe sempre estará em desvantagem em comparação com outras equipes.

    O peso do compartilhamento justo oferece uma vantagem comparativa a essa equipe ao competir com outras pelos recursos disponíveis. A admissão prioriza tarefas de agendamento de equipes com os pesos mais altos e menos tomadas de empréstimo. Por exemplo, se a Equipe A tivesse um peso de 10 e a Equipe B tivesse um peso de 5, a Equipe A teria prioridade no acesso a recursos não utilizados, pois teria trabalhos agendados para uma data anterior aos da Equipe B.

  • Preempção de tarefas: a computação é assumida por uma tarefa com base na prioridade. Por padrão, a equipe que empresta computação ociosa antecipará as tarefas de outras equipes.

  • Empréstimos e tomadas de empréstimo: como a computação ociosa está sendo emprestada pela equipe e se a equipe pode tomar emprestado de outras equipes.

    • Limite de empréstimo baseado em porcentagem: o limite de computação ociosa que uma equipe pode emprestar, expresso como uma porcentagem de sua cota garantida. Uma equipe pode emprestar até 10.000% da computação alocada. O valor que você fornece aqui é interpretado como uma porcentagem. Por exemplo, um valor de 500 será interpretado como 500%. Essa porcentagem se aplica uniformemente a todos os tipos de recursos (CPU, GPU, memória) e tipos de instância na cota da equipe.

    • Limite absoluto de empréstimo: o limite de computação ociosa que uma equipe pode emprestar, definido como valores absolutos de recursos por tipo de instância. Isso fornece controle granular sobre o comportamento de empréstimo para tipos específicos de instância. Você precisa especificar limites absolutos usando o mesmo esquema da cota de computação, incluindo contagem de instâncias, aceleradores, vCPU, memória ou partições do acelerador. Você pode especificar limites absolutos para um ou mais tipos de instância na cota da sua equipe.

Para ter informações sobre como esses conceitos são usados, como classes prioritárias e espaços de nome, consulte Exemplos de AWS CLI comandos de governança de HyperPod tarefas.

Exemplos de compartilhamento de recursos de computação ociosos

A cota total reservada não deve ultrapassar a capacidade disponível do cluster para esse recurso a fim de garantir o gerenciamento adequado da cota. Por exemplo, se um cluster inclui vinte instâncias ml.c5.2xlarge, a cota cumulativa atribuída às equipes deve permanecer abaixo de vinte.

Se as políticas de alocação de computação para as equipes permitirem emprestar e tomar emprestado ou emprestar, a capacidade ociosa será compartilhada entre essas equipes. Por exemplo, a Equipe A e a Equipe B têm a opção Emprestar e tomar emprestado habilitada. A Equipe A tem uma cota de seis, mas está usando apenas duas para seus trabalhos, e a Equipe B tem uma cota de cinco e está usando quatro para seus trabalhos. Um trabalho enviado à Equipe B exigindo quatro recursos. Três serão tomados emprestados da Equipe A.

Se a política de alocação de computação de qualquer equipe estiver definida como Não emprestar, a equipe não poderá tomar emprestada nenhuma capacidade adicional além de suas próprias alocações.

Como funciona o compartilhamento de recursos não alocados

O compartilhamento de recursos não alocados gerencia automaticamente o pool de recursos que não estão alocados em nenhuma cota de computação em seu cluster. Isso significa monitorar HyperPod continuamente o estado do seu cluster e atualizar automaticamente a configuração correta ao longo do tempo.

Configuração inicial

  • Quando você configura como IdleResourceSharing Enabled no seu ClusterSchedulerConfig (por padrão, éDisabled), a governança de HyperPod tarefas começa a monitorar seu cluster e calcula os recursos ociosos disponíveis subtraindo as cotas da equipe da capacidade total do nó.

  • O compartilhamento de recursos não ClusterQueues alocados é criado para representar o pool de recursos emprestáveis.

  • Quando você ativa pela primeira vez o compartilhamento de recursos não alocados, a configuração da infraestrutura leva vários minutos. Você pode monitorar o progresso por meio de políticas Status e DetailedStatus de entrada ClusterSchedulerConfig.

Reconciliação contínua

  • HyperPod a governança de tarefas monitora continuamente alterações, como adições ou remoções de nós e atualizações de cotas de filas de clusters.

  • Quando ocorrem alterações, o compartilhamento de recursos não alocados recalcula a cota e as atualizações. ClusterQueues A reconciliação normalmente é concluída em segundos.

Monitoramento

Você pode verificar se o compartilhamento de recursos não alocados está totalmente configurado verificando o compartilhamento de recursos não alocados: ClusterQueues

kubectl get clusterqueue | grep hyperpod-ns-idle-resource-sharing

Quando você vê ClusterQueues com nomes comohyperpod-ns-idle-resource-sharing-cq-1, o compartilhamento de recursos não alocados está ativo. Observe que ClusterQueues podem existir vários compartilhamentos de recursos não alocados, dependendo do número de variações de recursos em seu cluster.

Elegibilidade do Node para compartilhamento de recursos não alocados

O compartilhamento de recursos não alocados inclui somente nós que atendem aos seguintes requisitos:

  1. Status Node Ready

    • Os nós devem estar em Ready status para contribuir com o pool de recursos não alocados.

    • Os nós em NotReady ou outros estados não prontos são excluídos dos cálculos de capacidade.

    • Quando um nó se tornaReady, ele é automaticamente incluído no próximo ciclo de reconciliação.

  2. Status programável do nó

    • Os nós com spec.unschedulable: true são excluídos do compartilhamento de recursos não alocados.

    • Quando um nó se torna programável novamente, ele é automaticamente incluído no próximo ciclo de reconciliação.

  3. Configuração MIG (somente nós de GPU)

    • Para nós de GPU com particionamento MIG (Multi-Instance GPU), o nvidia.com/mig.config.state rótulo deve ser exibido success para que o nó contribua com perfis MIG para o compartilhamento de recursos não alocados.

    • Esses nós serão repetidos automaticamente quando a configuração do MIG for concluída com êxito.

  4. Tipos de instância compatíveis

    • A instância precisa ser um tipo de SageMaker HyperPod instância compatível.

    • Veja a lista de tipos de instância compatíveis no SageMaker HyperPod cluster.