这些 Python 库帮助你加速数据传输,通过 AWS Lambda 对大型计算工作做碎片化处理,并使用略低于 TensorFlow 的模型工作。
机器学习令人兴奋,但具体工作复杂而困难。通常它涉及很多手动提升——汇总工作流及传输渠道,设置数据源,以及在内部部署和云部署的资源之间来回分流。
用来提高工作效率的手头工具越多越好。庆幸的是,Python 是一个威力巨大的工具语言,在大数据和机器学习之中被广泛使用。下面是 5 个 Python 库,帮助你缓解来自交易提升的重负。
PyWren
地址:https://github.com/ericmjonas/pywren
PyWren,一个带有强大前提的简单包,能使你运行基于 Python 的科学计算工作量,以作为 AWS Lambda 函数的多个例子。项目 At The New Stack 的简介这样描述 PyWren: 把 AWS Lambda 用作一个巨大的平行处理系统,以处理那些可被切割成诸多小任务的项目,这些小任务的运行不需要占用很多内存或硬盘。
Lambda 函数的一个缺点是运行时间最长不能超过 300 秒。但是,如果你需要一个只花费几分钟就能完成的工作,并在数据集中需要运行数千次,那么 PyWren 也许是一个好选择,它可以一种用户硬件上不可用的规模平行化云端的工作。
谷歌的 TensorFlow 框架正迈入伟大时刻,因为刚发布了 1.0。人们通常会问一个问题:如何利用在上面训练的模型而无需使用 TensorFlow 本身?
Tfdeploy
地址:https://github.com/riga/tfdeploy
Tfdeploy 可以部分解决这个问题。将训练过的 TensorFlow 模型输出「一个简单的基于 Numpy 的可调用对象(callable)」,也就是说,借由 Tfdeploy,可以在 Python 中使用模型,而且 Numpy 的数学和统计库被作为唯一的依靠。几乎所有能在 TensorFlow 上跑的运行也能在 Tfdeploy 上跑,而且你可以通过标准 Python 隐喻方式来延伸库的行为(比如,超载一个类别)。
现在,坏的消息是:Tf 部署并不支持 GPU 加速,要是 Numpy 能克服那一点该多好。Tfdeploy 的创造者建议 gNumPy 项目是一个可行的替代。
Luigi
地址:https://github.com/spotify/luigi
编写成批作业通常只是处理海量数据的其中一步:你也不得不将所有这些工作串联起来,做成类似工作流程的东西。Luigi 是 Spotify 打造的,用于「解决所有通常与长期运行成批处理作业有关的管道问题。」
有了 Luigi,研发人员就可以从事几个很难、与数据无关的任务处理——「一个 Hive 询问,一个在 Jave 上完成的 Hadoop 任务,一个 Scala 上的 Spark 任务,一个从数据库中导出表格」——创造一个端到端运行它们的工作流。对任务的整个描述以及依存性被打造为 Python 模块,和 XML 配置文档或其他数据形式不同,因此,可以被组合到其他以 Python 为中心的项目中去。
Kubelib
地址:https://github.com/safarijv/kubelib
如果你采用 Kubernetes 作为完成机器学习工作的编排系统(orchestration system),你最不想要的就是它产生的问题比能解决的问题都多。Kubelib 为 Kubernetes 提供了一系列的 Python 接口,本来是用 Jekins scripting 作为帮助。但没有 Jenkins 的情况下也能够使用,它能够完成 暴露在 kubectl CLI 或者 Kubernetes API 中的所有事。
PyTorch
地址:https://github.com/pytorch/pytorch
不要忘记了最近发布的、引人注目的 Python 库新成员 Pytorch,这是 Torch 机器学习框架的一个工具。PyTorch 不仅为 Torch 添加了 Python 端口,也增加了许多其他的便利,比如 GPU 加速,共享内存完成多重处理(multiprocessing,特别是多核上隔离开的工作。) 最好的是,它们能为 Numpy 中的无加速功能提供 GPU 驱动的替代选择。
(资料来源:CSDN)