Python 分布式机器学习

数据挖掘 机器学习 Python 神经网络 分散式
2021-10-13 16:22:39

我偶尔会为我的研究训练神经网络,它们通常需要很长时间才能运行(尤其是当我在笔记本电脑上工作时)。

我正在寻找一种在任何计算机上构建模型并将其发送到服务器进行训练并让它返回图形/精度/权重等的方法。我知道有为此付费的解决方案,但我正在寻找一个分布式解决方案我可以自己运行。

我在家里设置了一台服务器,即将升级 CPU 和 GPU。我希望能够对其进行设置,以便当我在 LAN 上工作时,或者当我在笔记本电脑上远程工作时,我可以将代码发送到服务器并让它训练模型并返回给我结果(如果发送方机器关闭,则保存结果)

是否有任何现有的解决方案来完成这样的事情?我没有绑定到任何特定的库,但如果可能的话,我更愿意坚持使用 Python

2个回答

这不应该非常复杂。

大图

假设您的服务器上有 Linux:从您的工作笔记本电脑通过 SSH 连接到您的服务器,训练网络,接收结果(训练后的网络)。

细节

训练网络

如果你想坚持使用 Python,有两个我熟悉的基本选项。

第一个是PyBrain,一个专门为训练神经网络而构建的库。语法相当简单。数据集结构有点不寻常(特别是如果您习惯于在scikit-learn中使用 numpy 数组),但除此之外,它工作得相当好。但是,它不支持 GPU AFAIK,我不知道它的优化/速度如何。

第二个是谷歌的张量流如果您只想运行普通神经网络,这有点重,但语法也很容易绕过(尽管与PyBrain非常不同)。它也可能比您在 Python 中找到的任何其他东西都快。它还支持 GPU 训练。

取回结果

这取决于您选择的库(或者绝对取决于您编写自己的实现)。但是上面提到的两个库都可以让您返回训练后的权重,您可以将其保存为 csv 文件并在训练时下载。或者你可以腌制它们并以这种方式返回。此外,Tensor Flow 具有 Tensor Board 功能,可以让您可视化训练和网络结构,但我还没有尝试过,所以在这方面无能为力。

听起来您想要类似Apache Spark 及其 Python API 的东西。它被设计为在本地运行,或者在单个服务器上,或者以分布式方式运行,并且它的“分布式”尽可能地远离你。

它有一个很大的社区——我在 2015 年夏天与 80000 名参与者一起参加了这个MOOC ,这是对该主题的一个很好的介绍。它仍然开放招生,但没有由教师维护。