机器学习是件令人兴奋的事,但一系列工作是复杂和困难的。作为一名开发人员,要学习的工具实在是太多太杂了。幸运的是,Python是一种广泛应用于大数据和机器学习各类工具上的语言,使用范围极广。机器学习通常涉及大量手动提升的工作,组装工作流和管道、设置数据源以及在内部和云部署的资源之间来回分流。以下这五大Python库可帮助加快数据管道,例如,使用AWS Lambda可对计算量较大的作业进行碎片处理,使用TensorFlow模型可减轻TensorFlow的负载。
PyWren
一个具有强大前提的简单包,PyWren允许将基于Python运行的科学计算工作负载作为AWS Lambda函数的多个实例。The New Stack中项目的配置文件描述了PyWren使用AWS Lambda作为并行处理系统,主要处理不需要消耗大量内存或存储的小项目。
PyWren的一个缺点是lambda函数最多不能运行超过300秒。如果你的工作只需要几分钟,在数据集上运行几千次,PyWren可能是一个很好的选择,它能够以在用户硬件上不可用的规模平行化云端工作。
Tfdeploy
谷歌的TensorFlow框架在机器学习领域脱颖而出,现在已经有一个完整的1.0版本了。用户经常面临一个问题:如何在不使用TensorFlow本身的情况下,利用TensorFlow训练模型呢?
Tfdeploy是这个问题的部分答案。它将一个训练有素的TensorFlow模型导出为“一个简单的基于NumPy的可调用模型”,意味着该模型可以在Python中使用Tfdeploy和NumPy数学和统计库作为唯一依赖。在TensorFlow中可以执行的大多数操作也可以在Tfdeploy中执行,可以通过标准Python隐喻方式(例如重载类)来扩展库行为。
坏消息是:Tfdeploy不支持GPU加速,如果使用NumPy可克服这一点就好了。Tfdeploy的创建者建议使用gNumPy项目作为可能的替代品。
Luigi
批量处理通常只是数据堆处理的一部分,而且还必须将所有任务串在一起成为类似工作流程的东西。Luigi由Spotify创建,定位于“解决运行批处理过程相关的所有管道问题”。
使用Luigi,开发人员可以采取几个不同的、与数据处理不相关的任务——Hive查询,Java中的Hadoop任务,Scala中的Spark任务,从数据库中转储表——并创建一个端到端运行它们的工作流—结束。任务及其依赖关系的完整描述作为Python模块创建,而不作为XML配置文件或其他数据格式创建,因此可以集成到其他以Python为中心的项目中。
Kubelib
如果你使用Kubernetes作为机器学习任务的编排系统,***你想要的肯定是使用Kubernetes来解决更多的问题,而不是带来许多问题。Kubelib为Kubernetes提供了一组Pythonic接口,最初是用Jenkins script作为脚本。但是它可以在没有Jenkins的情况下使用,它可以完成kubectl CLI或Kubernetes API暴露出的一切事情。
PyTorch
不要忘记这个最近发布的、高调的Python新产品,一个实现Torch机器学习框架的工具。PyTorch不仅将Torch移植到了Python,而且增加了许多其他便利,如GPU加速和一个允许使用共享内存(用于跨多个内核分区作业)进行多处理的库。最重要的是,它可以为NumPy中的一些未加速功能提供GPU加速替换。