Melhor maneira de compartilhar os recursos de uma poderosa estação de trabalho entre vários usuários?

0

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:

  1. 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.
  2. 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.
  3. 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).
  4. rCUDA, enviaram um formulário de solicitação. Esperando.
  5. 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.
  6. 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.

    
por Saransh 29.01.2018 / 19:07

1 resposta

0

A melhor e mais simples solução alternativa foi: Jupyter Notebook (para executar o código em outra máquina) + SSH (acesso + usando protocolo de transferência de dados) + usando TF para atribuir GPUs.

    
por 15.02.2018 / 12:41