Gostaria de dar acesso à minha poderosa máquina Windows 10 Pro para alguém de fora (em quem confio totalmente) para executar programas Python/PyTorch, usando a GPU para computação.
A chave é que eu gostaria de continuar usando a máquina enquanto essa pessoa executa cargas de computação nela: até onde eu sei, esse requisito exclui todas as formas de RDP/VNC, mas não tenho certeza sobre isso (especialmente RDP) : você poderia confirmar/negar?
Eu estava pensando em executar um servidor SSH. Isso funcionaria?
O Windows 10 inclui um servidor OpenSSH como recurso padrão.
Para ativar o servidor OpenSSH:
Isso instalará o software OpenSSH Server na pasta
C:\Windows\System32\OpenSSH
, que conterá aplicativos cliente SSH e as seguintes ferramentas de servidor:sftp-server.exe
,ssh-agent.exe
,ssh-keygen.exe
esshd.exe
o arquivo de configuraçãosshd_config
.O servidor SSH está configurado para ser executado como um serviço chamado
sshd
. Se não iniciar automaticamente, você precisará configurá-lo manualmente.Para configurar o servidor OpenSSH integrado no Windows 10, você pode verificar algumas referências disponíveis, incluindo a resposta de harrymc. Estou simplesmente adicionando aqui um link para a documentação oficial para isso, apenas no caso de ajudar.
Mas não tenho certeza se isso é suficiente ou apenas um requisito para alguns dos métodos de compartilhamento de GPU, veja a seguir.
RPC distribuído
Uma opção para compartilhar GPU para PyTorch é usar RPC distribuído (PyTorch v1.4 é recomendado). O link fornece um tutorial que "usa dois exemplos simples para demonstrar como construir um treinamento distribuído com o
torch.distributed.rpc
pacote". É bastante longo para ser citado aqui, mesmo um conjunto de passos básicos.Veja também
https://pytorch.org/docs/stable/rpc.html
https://discuss.pytorch.org/t/send-computation-to-a-remote-gpu/71739
Seu amigo também pode depurar usando a energia do computador, conforme mostrado aqui .
RDP
Quanto à GPU via RDP, é mencionado aqui e aqui , por exemplo, que a renderização da GPU pode ser habilitada por Políticas de Grupo. Não tenho certeza se isso inclui algo sobre a computação do PyTorch.
Isso é possível, mas essas cargas de computação vão desacelerar a máquina. Certifique-se de definir a prioridade dos processos que executam as cargas de computação como Abaixo do normal, se você quiser priorizar sua operação suave. Isso significa que todos os processos padrão em execução serão priorizados pelo tempo de CPU disponível antes que a computação carregue, mas outra maneira de ver isso é que, se houver MUITOS outros processos em execução na mesma máquina com prioridade Normal, que também estão usando até 100 % da CPU, as cargas de computação terão pouco ou nenhum tempo de CPU. Isso provavelmente é desejado por você, e as chances de você estar utilizando a CPU em 100% (ou ter uma tonelada de processos em execução fazendo isso por você de alguma forma) provavelmente são baixas.
Está correto. O RDP das versões Starter/Student/Home/Pro do Windows tem a limitação intencional de apenas um login por vez (exceções no Enterprise). Existem algumas maneiras super obscuras de quebrar isso para que não inicialize você quando a outra pessoa fizer login remotamente usando RDP, mas acredito que discutir essas coisas não é permitido no SuperUser e, portanto, a conversa morre aqui.
VNC/NX/Screensharing todos assumirão sua sessão atualmente conectada e a usarão remotamente, então definitivamente não é possível.
Sim! Isso definitivamente funcionaria, e o Windows 10 tem SSH integrado por padrão. Você pode ativá-lo usando as seguintes etapas:
Configurações > Aplicativos e clique em “Gerenciar recursos opcionais” em Aplicativos e recursos.
Clique em “Adicionar um recurso” no topo da lista de recursos instalados. Se você já tiver o cliente SSH instalado, ele aparecerá na lista aqui.
Role para baixo, clique na opção “Servidor OpenSSH” e clique em “Instalar”.
A pessoa deve ser capaz de usar o SSH em uma conta de usuário, que você deseja configurar para ela, e emitir comandos de linha de comando para executar processos enquanto você está fisicamente conectado à máquina. Viola!
Considerando que o caso de uso é específico para obter poder de computação para o programa python/pytorch, você deve configurar um servidor ssh no host com OpenSSH.
Embora seja possível configurar o servidor ssh no Windows 10 , ele não pode ser usado como um Windows Server completo devido a limitações , mas pode ser suficiente para executar programas python remotamente. Configurar um servidor Windows em seu laptop seria outra opção, dependendo se você estiver fazendo isso para uso prolongado e mais amplo.
Introdução ao powershell no ssh
Como executar um script python remotamente via SSH em uma máquina Windows
As outras respostas estão todas corretas (no momento da redação deste artigo). No entanto, gostaria de chamar sua atenção para uma alternativa ao servidor SSH integrado do Windows:
Você pode querer instalar o Cygwin , que existe há cerca de duas décadas, é bem suportado e constantemente atualizado e é IMHO muito estável. Ele inclui o OpenSSH e você pode instalar facilmente o servidor Cygwin OpenSSH como um serviço. Estou usando essas configurações há muitos anos e comecei com elas muito antes de a Microsoft pensar em integrar um subsistema Linux ou SSH ao Windows.
Caso você ainda não tenha ouvido falar sobre isso: Cygwin é principalmente uma DLL que fornece a maior parte da API Linux / Unix / Posix no Windows, de modo que muitos dos utilitários de usuário do Linux podem ser portados para o Windows. A nomenclatura é um pouco preocupante, porém, porque Cygwin também é comumente usado como o nome da "distribuição" Linux, ou seja, o software Linux que foi portado para Windows com a ajuda da Cygwin DLL e que é oferecido no Site Cygwin também.
A vantagem do Cygwin é que ele fornece um ambiente Linux, incluindo cadeias de ferramentas C, as linguagens de script comuns, bash etc. Depende do histórico do seu amigo se isso for uma vantagem. Em todos os casos, uma vantagem resultante é que você pode configurar o servidor OpenSSH exatamente como no Linux - há muitos tutoriais que abordam esse assunto.
A desvantagem do Cygwin é que seu servidor OpenSSH (é claro) não está tão profundamente integrado ao Windows quanto o servidor SSH integrado.
Em relação ao método de acesso: o servidor OpenSSH é atualizado regularmente e IMHO muito seguro, portanto, seria seguro ( em teoria ) configurar seu roteador com encaminhamento de porta para que seu amigo possa se conectar diretamente ao seu PC via SSH. No entanto, o fato de isso ser considerado um estilo ruim tem suas razões. Portanto, recomendo configurar uma VPN entre seu amigo e seu roteador, usando a criptografia mais forte disponível em ambas as extremidades, e executar as sessões SSH na VPN.
Uma palavra final sobre o TeamViewer (já que sua recompensa e alguns comentários o mencionam):
Este serviço é administrado por uma empresa alemã na qual confio pessoalmente; eles têm que aderir a leis estritas de proteção de dados e seriam instantaneamente arruinados se houvesse a menor suspeita ou mesmo uma prova de que eles gravam ou mesmo descriptografam sessões. No entanto, devido à natureza de seu serviço, todo o tráfego que passa pelas sessões do TeamViewer é roteado por meio de seus servidores, portanto, as sessões de sniffing seriam teoricamente possíveis para eles (o que, a propósito, é verdade para todos os serviços / empresas similares concorrentes também).
O TeamViewer garantiu várias vezes que as sessões são criptografadas de ponta a ponta, o que significa que o tráfego passa por seus servidores, mas tecnicamente eles nem conseguem descriptografá-lo, mesmo que desejem. Mas, mais uma vez, embora eu pessoalmente acredite neles, desde que seu software não seja de código aberto, ninguém pode verificar essa afirmação ou se eles implementaram a criptografia corretamente.
Por fim, como outros já apontaram, seu amigo não poderá executar sua própria sessão do TeamViewer sem incomodá-lo. O TeamViewer é mais uma solução de compartilhamento de tela: a outra parte pode ver o que você faz e vice-versa.
Portanto, sempre prefiro SSH ou VPN (baseado em software de código aberto) ao TeamViewer e serviços semelhantes sempre que possível.