我知道对于大量数据,有在线计算服务或超级计算机或 Beowulf 集群。对于少量的数据,一台好的计算机就足够了。
但有时,对于中等数量的数据,能够使用来自我同事的计算机的资源会非常好,例如在流离失所时或在夜间。
你知道这是否可能吗?我使用 python,我期待使用 Ray。对这种练习有任何反馈吗?
我知道对于大量数据,有在线计算服务或超级计算机或 Beowulf 集群。对于少量的数据,一台好的计算机就足够了。
但有时,对于中等数量的数据,能够使用来自我同事的计算机的资源会非常好,例如在流离失所时或在夜间。
你知道这是否可能吗?我使用 python,我期待使用 Ray。对这种练习有任何反馈吗?
这很有效,可能涉及为自己设置一个小型私有集群,访问这些其他机器。这在理论上是否可行将取决于您的网络以及管理您同事机器的人愿意给予您的权限。如果您有一系列 linux 机器,它们可以通过本地网络相互查看和 SSH,那么您已经做好了准备,并且会在网上找到多个演练,具体取决于所选的工具堆栈。如果这些都是防火墙严密的 Windows 机器,您没有管理员权限并且无法安装新软件,那么您可能不走运。
我个人没有使用过 Ray,但它似乎附带了可信的安装说明(请参阅此处的私有集群部分)。我在类似的情况下对Dask进行了实验,结果还可以。总体而言,尽管在“拥有”本地用户的多台机器上花费计算时间存在社交困难,但网络的速度往往不如专用集群上的快。在许多情况下,通过 SSH 连接到朋友的机器并运行一个令人尴尬的并行任务副本的低技术解决方案是一种更简单的解决方案。
您可能正在寻找运行作业队列或自动化软件,例如Gearman、Minion或Jenkins 。这些工作通过让客户(比如礼貌地在您同事的机器上运行)联系您的自动化服务器以完成并响应他们的工作。Apache Spark项目旨在为纯计算执行此操作。其中很多都有 Python 库,或者能够为您运行独立的 Python 脚本。诀窍在于移动数据,我认为 Spark 的核心就是这一点。
从长远来看,另一种可能性是考虑具有并发性的语言,例如Go或Raku。CPU 并没有变得更快,它们只是增加了更多的内核,因此性能提升将来自利用这一点的语言。一个附加功能是 Raku 可以使用其NativeCall接口从其他语言的库中调用例程,从而允许您重用现有代码。