我想将我强大的 Windows 10 Pro 机器的访问权限授予外部人员(我完全信任的人)来运行 Python/PyTorch 程序,使用 GPU 进行计算。
关键是我想在该人运行计算负载时继续使用机器:据我所知,该要求不包括所有形式的 RDP/VNC,但我不确定(尤其是 RDP) : 你能确认/否认吗?
我正在考虑运行 SSH 服务器。那行得通吗?
我想将我强大的 Windows 10 Pro 机器的访问权限授予外部人员(我完全信任的人)来运行 Python/PyTorch 程序,使用 GPU 进行计算。
关键是我想在该人运行计算负载时继续使用机器:据我所知,该要求不包括所有形式的 RDP/VNC,但我不确定(尤其是 RDP) : 你能确认/否认吗?
我正在考虑运行 SSH 服务器。那行得通吗?
Windows 10 包含一个 OpenSSH 服务器作为标准功能。
要启用 OpenSSH 服务器:
这将在文件夹中安装 OpenSSH 服务器软件
C:\Windows\System32\OpenSSH
,其中将包含 SSH 客户端应用程序和以下服务器工具:sftp-server.exe
、ssh-agent.exe
、ssh-keygen.exe
和sshd.exe
配置文件sshd_config
。SSH 服务器配置为作为名为 的服务运行
sshd
。如果它没有自动启动,您需要手动配置它。要在 Windows 10 中配置内置 OpenSSH 服务器,您可以查看很多参考资料,包括 harrymc 的答案。我只是在这里添加一个指向官方文档的链接,以防万一。
但我并不确定仅此一项就足够了,或者仅对某些共享 GPU 的方法的要求,请参见下文。
分布式 RPC
为 PyTorch 共享 GPU 的一种选择是使用分布式 RPC(推荐使用 PyTorch v1.4)。该链接提供了一个教程,该教程“使用两个简单的示例来演示如何使用
torch.distributed.rpc
包构建分布式培训”。这里引用的时间比较长,甚至是一套基本的步骤。也可以看看
https://pytorch.org/docs/stable/rpc.html
https://discuss.pytorch.org/t/send-computation-to-a-remote-gpu/71739
您的朋友也可以使用您的计算机电源进行调试,如下所示。
RDP
至于通过 RDP 的 GPU,这里和这里都提到了,例如,可以通过组策略启用 GPU 渲染。我不确定这是否包括有关 PyTorch 计算的任何内容。
这是可能的,但那些计算负载会减慢机器的速度。如果您想优先考虑平稳运行,我肯定会将运行计算负载的进程的优先级设置为低于正常值。这意味着在计算加载之前,所有默认运行的进程将优先考虑可用的 CPU 时间,但另一种看待它的方式是,如果在同一台机器上运行具有正常优先级的许多其他进程,它们也使用了 100 CPU 的百分比,计算负载将几乎没有 CPU 时间。这可能是您想要的,并且您以 100% 使用 CPU(或有大量进程以某种方式为您运行)的可能性可能很低。
那是对的。来自 Starter/Student/Home/Pro 版本的 Windows 的 RDP 有意限制一次只能登录一次(企业版除外)。有一些超级阴暗的方法可以打破它,这样当其他人使用 RDP 远程登录时它不会让你退出,但我相信在 SuperUser 上讨论此类事情是不允许的,因此对话在这里消失了。
VNC/NX/Screensharing all 将接管您当前登录的会话并远程使用它,所以绝对不行。
是的!这肯定行得通,而且 Windows 10 默认内置了 SSH。您可以使用以下步骤激活它:
设置 > 应用程序,然后单击应用程序和功能下的“管理可选功能”。
单击已安装功能列表顶部的“添加功能”。如果您已经安装了 SSH 客户端,它将出现在此处的列表中。
向下滚动,单击“OpenSSH Server”选项,然后单击“安装”。
该人应该能够使用您希望为他们设置的用户帐户进行 SSH 连接,并在您物理登录到机器时发出命令行命令来运行进程。中提琴!
考虑到该用例特定于为 python/pytorch 程序获取计算能力,您应该使用 OpenSSH 在主机上设置一个 ssh 服务器。
尽管可以在 Windows 10 上设置 ssh 服务器,但由于限制,它不能用作功能齐全的 Windows 服务器,但它可能足以远程执行 python 程序。在您的笔记本电脑上设置 Windows 服务器将是另一种选择,具体取决于您是否为了长期和更广泛的使用而这样做。
ssh 上的 powershell 入门
如何在 Windows 机器上通过 SSH 远程运行 python 脚本
其他答案都是正确的(在撰写本文时)。但是,我想提请您注意内置 Windows SSH 服务器的替代方案:
您可能想要安装Cygwin,它已经存在了大约 20 年,得到很好的支持并不断更新,恕我直言,它非常稳定。它包含 OpenSSH,您可以轻松地将 Cygwin OpenSSH 服务器安装为服务。我使用这样的设置已经很多年了,并且早在微软考虑将 Linux 子系统或 SSH 集成到 Windows 之前就开始使用它。
如果您还没有听说过:Cygwin 主要是一个 DLL,它在 Windows 下提供大部分 Linux / Unix / Posix API,因此可以将大部分 Linux 用户空间实用程序移植到 Windows。不过,命名有点令人担忧,因为 Cygwin 也常用作 Linux“发行版”的名称,即借助 Cygwin DLL 移植到 Windows 的 Linux 软件,该软件在Cygwin 网站也是如此。
Cygwin 的优势在于它提供了 Linux 环境,包括 C 工具链、常用脚本语言、bash 等。这是否是优势取决于您朋友的背景。在每种情况下,由此产生的优势是您可以像在 Linux 中一样配置 OpenSSH 服务器 - 有很多教程涵盖了该主题。
Cygwin 的缺点是它的 OpenSSH 服务器(当然)不像内置的 SSH 服务器那样深入集成到 Windows 中。
关于访问方法:OpenSSH 服务器定期打补丁并且非常安全,恕我直言,因此(理论上)为路由器配置端口转发是安全的,这样您的朋友就可以通过 SSH 直接连接到您的 PC。然而,这被认为是糟糕的风格是有原因的。因此,我建议在您的朋友和路由器之间配置一个 VPN,使用两端可用的最强加密技术,并通过 VPN 运行 SSH 会话。
关于 TeamViewer 的最后一句话(因为您的赏金和一些评论提到了它):
这项服务由我个人信任的一家德国公司运营;他们必须遵守严格的数据保护法,如果有最轻微的嫌疑,甚至有证据表明他们记录甚至解密了会话,他们就会立即被毁掉。但是,由于他们服务的性质,所有通过 TeamViewer 会话的流量都通过他们的服务器路由,因此从理论上讲,嗅探会话对他们来说是可能的(顺便说一句,这对于所有竞争的类似服务/公司都是如此)以及)。
TeamViewer 多次保证会话是端到端加密的,这意味着流量通过他们的服务器,但从技术上讲,他们甚至无法解密它,即使他们想这样做。但是再一次,虽然我个人相信他们,但只要他们的软件不是开源的,没有人可以验证这一说法,或者他们是否正确实施了加密。
最后,正如其他人已经指出的那样,您的朋友将无法在不打扰您的情况下运行他自己的 TeamViewer 会话。TeamViewer 更像是一个屏幕共享解决方案:对方可以看到你在做什么,反之亦然。
因此,我总是更喜欢 SSH 或 VPN(基于开源软件)而不是 TeamViewer 和类似的服务。