Então eu descreverei o set-up, então os requisitos exatos e então a lista de opções que eu tentei e então eu perguntarei se a abordagem deles é melhor ou a melhor opção entre as mencionadas.
Portanto, somos um grupo de pesquisadores em Aprendizado de Máquina, temos uma máquina de estação de trabalho muito poderosa e outras máquinas decentemente poderosas, uma para cada um de nós.
Requisitos:
O GPU é distribuído de forma eficiente ou igualmente entre todos os usuários ativos em um determinado momento, enquanto todos os usuários estão trabalhando na estação de trabalho simultaneamente. (Ram é grande o suficiente para não se preocupar e também não nos importamos em ter discos rígidos comuns) (Algum tipo de virtualização de GPU?)
Estamos à procura de uma abordagem em funcionamento em 2-3 dias.
O sistema operacional em funcionamento é o Ubuntu 16 em todas as máquinas
As propostas:
- Configurando várias VMs na estação de trabalho, uma por usuário e SSH
das nossas máquinas atuais. Executar uma VM sobre outro SO parece ser um
grande sobrecarga mais nós preferimos gastar em mais hardware do que
licenças de software. VMWare ESXI bare-metal parece ser um caminho a percorrer.
- A abordagem multiterminal permitiria vários usuários ao mesmo tempo
tempo, embora exija um conjunto de teclado, mouse e placa de vídeo
por assento, temos uma GPU muito poderosa dedicada apenas ao
exibir, mas novamente é apenas um e multi-sede requer um por
assento, enquanto há soluções lentas para operar com um único
placa de vídeo (xephyr) ainda precisaríamos alocar a GPU de computação
entre os usuários de forma eficiente.
- Vários usuários SSH em vários terminais virtuais. O múltiplo
Terminais Virtuais no Unix foram feitos no tempo em que os computadores
eram caros e um único computador seria compartilhado entre diferentes
usuários usando terminais. Ainda precisamos de uma maneira de virtualizar a GPU.
Mas se tudo der certo, ainda podemos trabalhar, já que são quatro
usuários e duas GPUs de computação, para que pudéssemos executar dois programas ao mesmo tempo
associar cada um a uma GPU manualmente através do código (Tensorflow), mas
se há uma abordagem para virtualizar as duas GPUs físicas em 4
GPUs virtuais seria melhor (exceto Nvidia vGPU).
- rCUDA, enviaram um formulário de solicitação. Esperando.
- Algum sistema de gerenciamento de cluster, como o Apache Mesos. Desde solteiro
ou vários computadores um CMS não se importa e é feito para virtualizar
e alocar seus recursos eficientemente entre seus clientes.
- LTSP, não olhou muito para isso.
Agora sei que posso parecer ingênuo em muitas das sugestões acima, então, por favor, dê uma sugestão de acordo com seu conhecimento. No caso de qualquer coisa na pergunta parecer vaga, por favor, aponte para ela e eu limparia tudo.