Agendamento de alto desempenho
CCE integra Volcano para suportar computação de alto desempenho.
Volcano é um sistema de processamento em lote nativo do Kubernetes. Volcano fornece uma plataforma universal, escalável e estável para executar trabalhos de Big Data e IA. É compatível com estruturas de computação gerais para IA, Big data, sequenciamento de genes e tarefas de renderização. A excelência de Volcano no agendamento de tarefas e no gerenciamento heterogêneo de chips torna a execução e o gerenciamento de tarefas mais eficientes.
Cenário de aplicação 1: implementação híbrida de vários tipos de trabalhos
Vários tipos de estruturas de domínio são desenvolvidos para suportar negócios em diferentes setores. Essas estruturas, como Spark, TensorFlow e Flink, funcionam de forma insubstituível em seus domínios de serviço. Elas não estão trabalhando sozinhos, pois os serviços e as empresas estão se tornando cada vez mais complexos. No entanto, o agendamento de recursos se torna uma dor de cabeça à medida que os clusters dessas estruturas crescem e um único serviço pode ter cargas flutuantes. Portanto, um sistema de agendamento unificado está em grande demanda.
Volcano abstrai uma camada básica comum para computação em lote baseado em Kubernetes. Ele complementa o Kubernetes no agendamento e fornece abstrações de job flexíveis e universais para estruturas de computação. Essas abstrações (Volcano Jobs) são implementadas por meio de modelos de multitarefa para descrever vários tipos de trabalhos (como TensorFlow, Spark, MPI e PyTorch). Diferentes tipos de trabalhos podem ser executados juntos, e o Volcano usa seu sistema de agendamento unificado para realizar o compartilhamento de recursos do cluster.
Cenário de aplicação 2: otimização de agendamento em cenários de multi filas
O isolamento e o compartilhamento de recursos geralmente são necessários quando você usa um cluster do Kubernetes. No entanto, o Kubernetes não suporta filas. Ele não pode compartilhar recursos quando vários usuários ou departamentos compartilham uma máquina. Sem o compartilhamento de recursos baseado em fila, os trabalhos de HPC e Big data não podem ser executados.
Volcano suporta múltiplos mecanismos de compartilhamento de recursos com filas. Você pode definir o weight de uma fila. O cluster aloca recursos para a fila calculando a proporção entre o peso da fila e o peso total de todas as filas. Você também pode definir a capability do recurso de uma fila para determinar o limite superior de recursos que podem ser usados pela fila.
Por exemplo, na figura a seguir, a fila 1 é alocada 40% dos recursos de cluster e 60% para a fila 2. Desta forma, duas filas podem ser mapeadas para diferentes departamentos ou projetos para usar recursos no mesmo cluster. Se uma fila tiver recursos ociosos, eles poderão ser alocados para trabalhos em outra fila.
Cenário de aplicação 3: várias políticas de agendamento avançadas
Os containers são programados para nós que atendem aos requisitos de recursos de computação, como CPU, memória e GPU. Normalmente, haverá mais de um nó qualificado. Cada um pode ter um volume diferente de recursos disponíveis para novas cargas de trabalho. O Volcano analisa automaticamente a utilização de recursos de cada plano de programação e ajuda você a alcançar os melhores resultados de implementação com grande facilidade.
A figura a seguir mostra como o Volcano scheduler agenda recursos. Primeiro, o agendador carrega as informações do pod e do PodGroup no servidor de API para cache de agendador. Em uma sessão do agendador, Volcano passa por três fases: OpenSession, chamada de action e CloseSession. Na OpenSession, a política de agendamento que você configurou no plug-in de agendador é carregada. Na chamada de action, as ações configuradas são chamadas uma a uma e a política de agendamento carregada é usada. Na CloseSession, as operações finais são executadas para concluir o agendamento.
O Volcano scheduler fornece plugins para suportar várias actions de agendamento (como enqueue, allocate, preempt, reclaim e backfill) e políticas de agendamento (como gang, priority, drf, proportion e binpack). Você pode configurá-las conforme necessário. As APIs fornecidas pelo agendador também podem ser usadas para desenvolvimento personalizado.
Cenário de aplicação 4: agendamento de recursos de alta precisão
O Volcano fornece políticas de agendamento de recursos de alta precisão para trabalhos de IA e Big data para melhorar a eficiência da computação. Tomemos TensorFlow como exemplo. Configurar afinidade entre ps e worker e anti-afinidade entre ps e ps, de modo que ps e worker para o mesmo nó. Isso melhora o desempenho de interação de rede e dados entre ps e worker, melhorando assim a eficiência de computação. No entanto, ao agendar pods, o agendador padrão do Kubernetes verifica apenas se as configurações de afinidade e anti-afinidade desses pods entram em conflito com as de todos os pods em execução no cluster, e não considera pods subsequentes que também podem precisar de agendamento.
O algoritmo task-topology fornecido pelo Volcano calcula as prioridades de task e node com base nas configurações de afinidade e anti afinidade entre tasks em um job. As políticas de afinidade e anti-afinidade de task em um job e o algoritmo task-topology garantem que as tasks com configurações de afinidade sejam preferencialmente agendadas para o mesmo node, e os pods com configurações anti afinidade sejam agendados para diferentes nós. A diferença entre o algoritmo task-topology e o agendador padrão do Kubernetes é que o algoritmo task-topology considera os pods como agendados como um todo. Quando os pods são agendados em lotes, as configurações de afinidade e anti afinidade entre os pods não agendados são consideradas e aplicadas aos processos de agendamento dos pods com base nas prioridades.
Benefícios
A execução de containers em servidores de nuvem acelerados por GPU de alto desempenho melhora significativamente o desempenho da computação de IA em três a cinco vezes. As GPUs podem custar muito e compartilhar uma GPU entre containers reduz muito os custos de computação da IA. Além das vantagens de desempenho e custo, o CCE também oferece clusters totalmente gerenciados que ocultarão toda a complexidade na implementação e gerenciamento de suas aplicações de IA para que você possa se concentrar no desenvolvimento de alto valor.
Vantagens
Ao integrar o Volcano, o CCE tem as seguintes vantagens na execução de tarefas de computação de alto desempenho, Big data e IA:
- Implementação híbrida de tarefas de HPC, Big data e IA
- Agendamento otimizado de multi filas: várias filas podem ser usadas para compartilhamento de recursos de vários locatários e planejamento de grupo com base em prioridades e períodos de tempo.
- Políticas de agendamento avançadas: gang scheduling, agendamento justo, preempção de recursos e topologia de GPU
- Modelo de multitarefa: você pode usar um modelo para definir várias tarefas em um único Volcano Job, além do limite de recursos nativos do Kubernetes. Volcano Jobs pode descrever vários tipos de job, como TensorFlow, MPI e PyTorch.
- Plug-ins de extensão de tarefa: o Volcano Controller permite configurar plug-ins para personalizar a preparação e limpeza do ambiente em etapas como envio de trabalhos e criação de pods. Por exemplo, antes de enviar uma tarefa MPI comum, você pode configurar o plug-in SSH para fornecer as informações SSH dos recursos do pod.
Serviços relacionados
GPU-accelerated Cloud Server (GACS), Elastic Load Balance (ELB) e Object Storage Service (OBS)