Sharing my computer with someone to run heavy CPU/GPU compute while I continue to use it

Windows 10 includes an OpenSSH server as a standard feature.

To enable the OpenSSH server:

  • Open Settings > Apps > Apps & features
  • On the right, click Optional features
  • In the Optional features window, click Add a feature
  • In the list of features, locate "OpenSSH Server". The feature can be more easily found by typing "open" in the selection field (this is enough to find the feature).
  • Click on the entry and then on its "Install" button
  • Wait for it to finish and restart Windows 10.

enter image description here

This will install the OpenSSH Server software in the folder C:\Windows\System32\OpenSSH, which will contain SSH client apps and the following server tools: sftp-server.exe, ssh-agent.exe, ssh-keygen.exe, sshd.exe and the config file sshd_config.

The SSH server is configured to run as a service named sshd. If it doesn't start automatically, you need to configure it manually.


To configure the built-in OpenSSH server in Windows 10, you could check quite a few references out there, including the answer by harrymc. I am simply adding here a link to official documentation for this, just in case it helps.
But I am not certain that alone is enough, or only a requirement for some of the methods for sharing GPU, see the following.

Distributed RPC

One option for sharing GPU for PyTorch is to use Distributed RPC (PyTorch v1.4 is recommended). The link provides a tutorial that "uses two simple examples to demonstrate how to build distributed training with the torch.distributed.rpc package". It is quite long to be quoted here, even a set of basic steps.

See also

https://pytorch.org/docs/stable/rpc.html

https://discuss.pytorch.org/t/send-computation-to-a-remote-gpu/71739

Your friend could also debug using your computer power as shown here.

RDP

As for GPU via RDP, it is mentioned here and here, e.g., that GPU rendering can be enabled via Group Policies. I am not certain this includes anything about PyTorch computation.


The key is that I'd like to continue using the machine while that person runs compute loads on it

This is possible, but those compute loads are going to slow down the machine. I would be sure to set the priority of the processes running the compute loads to Below Normal if you want to prioritize your smooth operation. This means all default running processes will be prioritized for available CPU time before the compute loads, but another way to look at it is that if there are a LOT of other processes running on the same machine with Normal priority, that are also using up 100% of the CPU, the compute loads will get little to no CPU time. This is probably desired by you, and the odds that you're utilizing the CPU at 100% (or have a ton of processes running doing that for you somehow) are likely low.

As far as I know, that requirement excludes all forms of RDP/VNC, but I'm not sure about that (especially RDP): could you confirm/deny?

That is correct. RDP from Starter/Student/Home/Pro versions of Windows have the intentional limitation of only one login at a time (exceptions in Enterprise). There are some super shady ways to break that so that it won't boot you out when the other person logs in remotely using RDP, but I believe discussing such things is not allowed on SuperUser and so that conversation dies here.

VNC/NX/Screensharing all will take over your currently logged in session and use it remotely, so definitely a no go.

I was thinking of running a SSH server. Would that work?

Yes! This would definitely work, and Windows 10 has SSH built in by-default. You can activate it using the following steps:

  1. Settings > Apps and click “Manage optional features” under Apps & features.

  2. Click “Add a feature” at the top of the list of installed features. If you already have the SSH client installed, it will appear in the list here.

  3. Scroll down, click the “OpenSSH Server” option, and click “Install”.

The person should be able to SSH in using a User Account, which you will want to set up for them, and issue command line commands to run processes while you are physically logged into the machine. Viola!