HiveD é um agendador para cargas de trabalho de aprendizagem profunda.
Como um componente independente do Microsoft OpenPAI, o HiveD foi projetado para ser um Kubernetes Scheduler Extender para clusters de GPU multilocatários . Um cluster de GPU multilocatário pressupõe que vários locatários (equipes) compartilham o mesmo pool de GPU em um único cluster físico (PC) e fornece algumas garantias de recursos para cada locatário. O HiveD modela cada locatário como um cluster virtual (VC), para que um locatário possa usar seu próprio VC como se fosse um cluster privado, enquanto também pode usar recursos gratuitos de outros VCs com prioridade mais baixa.
O HiveD fornece vários recursos importantes para cargas de trabalho de aprendizagem profunda, como segue.
O recurso matador que distingue o HiveD é que ele fornece garantia de recursos para cada VC, não apenas em termos de quantidade, um valor numérico, mas também em termos de topologia , um requisito fundamental para trabalhos de treinamento baseados em GPU. Por exemplo, um agendador tradicional garante que um VC possa usar 8 GPUs. Porém, não conhece a topologia dessas 8 GPUs. É possível que um trabalho de treinamento de 8 GPUs que deve ser executado em um único nó não possa ser alocado mesmo que seu VC ainda tenha 8 GPUs livres. Isso ocorre porque essas 8 GPUs gratuitas podem pertencer a vários nós.
O HiveD protege os recursos dos VCs em termos de cell , um tipo de recurso definido pelo usuário que codifica a quantidade e outros tipos de informações, como topologia e tipo de hardware. No exemplo acima, um usuário pode definir um tipo de célula de nó de 8 GPU, e o VC pode receber uma dessas células. Então, o HiveD garantirá que sempre haja um nó de 8 GPU disponível para o VC , independentemente das outras cargas de trabalho no cluster.
O HiveD permite definições flexíveis de células para garantias de recursos refinadas. Por exemplo, os usuários podem definir células em vários níveis de topologia (por exemplo, switch PCI-e), para diferentes modelos de dispositivos (por exemplo, GPU NVIDIA V100, GPU AMD Radeon MI100, Cloud TPU v3) ou configurações de rede (por exemplo, domínio InfiniBand) . Um VC pode ter vários tipos de células e o HiveD garantirá todas elas.
O HiveD otimiza o desempenho do agendamento coletivo , um requisito de agendamento típico para trabalhos de treinamento de aprendizagem profunda, onde todos os contêineres devem ser alocados antes que o trabalho de treinamento possa começar. Múltiplos trabalhos agendados por gangues competindo pelo mesmo conjunto de recursos podem levar à fome, onde cada trabalho obtém apenas recursos parciais e tem que esperar indefinidamente.
O HiveD agenda todos os contêineres dentro de um trabalho de maneira transacional , ou seja, todos os requisitos desses contêineres serão concedidos ou negados como um todo, evitando assim a alocação parcial de recursos e a falta de recursos.
O HiveD oferece suporte a múltiplas prioridades de trabalho. Os trabalhos de prioridade mais alta podem substituir os trabalhos de prioridade mais baixa. O HiveD também introduz empregos oportunistas , ou seja, empregos com a prioridade mais baixa que podem usar recursos gratuitos de outros VCs quando possível (sem quebrar as garantias de recursos para outros VCs).
Multilocação: Cluster Virtual (VC)
Garantia refinada de recursos de VC: quantidade, topologia, tipo, recurso de VC fixado, etc.
Agendamento intra-VC flexível: reconhecimento de topologia, tipos de hardware flexíveis, recurso de VC fixado, personalização de política de agendamento, etc.
Fragmentação otimizada de recursos e menos fome
Prioridades, uso excessivo com baixa prioridade e preempção inter/intra-VC
Agendamento/preempção de grupo de trabalho (completo/parcial)
Tolerância a falhas, reconhecimento de hardware ruim, reconfiguração que preserva o trabalho
Um cluster Kubernetes, v1.14.2 ou superior, na nuvem ou no local.
Agendador de configuração
Executar agendador
Enviar carga de trabalho para o agendador
Manual do usuário
Demonstração de recursos
Projeto
Docker Hub
FrameworkController: um controlador de pod Kubernetes de uso geral, que pode facilmente aproveitar o HiveD para agendar trabalhos.
OpenPAI: Uma solução completa para plataforma de IA. O HiveD será mais fácil de usar ao trabalhar em conjunto com o OpenPAI.
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um Contrato de Licença de Colaborador (CLA), declarando que você tem o direito de nos conceder, e realmente nos concede, os direitos de uso de sua contribuição. Para obter detalhes, visite https://cla.opensource.microsoft.com.
Quando você envia uma solicitação pull, um bot CLA determinará automaticamente se você precisa fornecer um CLA e decorará o PR adequadamente (por exemplo, verificação de status, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios usando nosso CLA.
Este projeto adotou o Código de Conduta de Código Aberto da Microsoft. Para obter mais informações, consulte as Perguntas frequentes sobre o Código de Conduta ou entre em contato com [email protected] com perguntas ou comentários adicionais.
Por favor, cite o HiveD em suas publicações se isso ajudar em sua pesquisa:
@inproceedings {hived-osdi2020, author = {Hanyu Zhao and Zhenhua Han and Zhi Yang and Quanlu Zhang and Fan Yang and Lidong Zhou and Mao Yang and Francis C.M. Lau and Yuqi Wang and Yifan Xiong and Bin Wang}, title = {{HiveD}: Sharing a {GPU} Cluster for Deep Learning with Guarantees}, booktitle = {14th {USENIX} Symposium on Operating Systems Design and Implementation ({OSDI} 20)}, year = {2020}, isbn = {978-1-939133-19-9}, pages = {515--532}, url = {https://www.usenix.org/conference/osdi20/presentation/zhao-hanyu}, publisher = {{USENIX} Association}, month = nov, }