适用于分布式训练的工具

Spark 是一个开源集群运算框架,也是现在大数据领域热门开源软件之一( https://spark.apache.org/mllib/ )。
由于 Spark 使用了内存内运算技术,它在内存上的运算速度比 Hadoop MapReduce 的运算速度快上 100 倍;这也使得 Spark MLlib 分布式计算框架运行非常高效、快速。它可以实现大部分机器学习,如:聚类、分类、回归等算法,并允许将数据加载至集群内存,多次对其进行查询,所以非常适合用于机器学习算法。
GitHub 地址:https://github.com/apache/spark
Mahout 是一个分布式线性代数框架,用于快速创建可扩展的高性能机器学习应用程序(http://mahout.apache.org/ )。
Mahout 框架长期以来一直与 Hadoop 绑定,但它的许多算法也可以在 Hadoop 之外运行。它允许多种算法可以跨越分布式 Spark 群集上运行,并且支持 CPU 和 GPU 运行。
GitHub 地址:https://github.com/apache/mahout
这是由 Uber 开源的一个跨多台机器的分布式深度学习的 TensorFlow 训练框架,可以使分布式深度学习快速且易于使用。
据介绍,Horovod 让开发人员只需几行代码就可以完成任务。这不仅加快了初始修改过程,而且进一步简化了调试。考虑到深度学习项目的高度迭代性,这也可以节省大量时间。除此之外,它还结合了高性能和修补低级模型细节的能力,例如:同时使用高级 api,并使用 NVIDIA 的 CUDA 工具包实现自己的自定义操作符。
GitHub 地址:https://github.com/horovod/horovod
当开发者需要并行化到多核时,可以用 Dask 来将计算扩展到多个内核甚至多个机器。
Dask 提供了 NumPy Arrays,Pandas Dataframes 和常规列表的抽象,能够在无法放入主内存的数据集上并行运行。对大型数据集来说,Dask 的高级集合是 NumPy 和 Pandas 的替代方案。
GitHub 地址:https://github.com/dask/dask
Ray 是一个高性能分布式执行框架,它使用了和传统分布式计算系统不一样的架构和对分布式计算的抽象方式,用于快速而简单的构建和运行分布式应用程序。
Ray 按照典型的 Master-Slave 进行设计。其中,Master 负责全局协调和状态维护,Slave 执行分布式计算任务。不过和传统的分布式计算系统不同的是,Ray 使用了混合任务调度的思路,性能更强。
GitHub 地址:https://github.com/ray-project/ray
适用于自动建模的工具

TPOT 是一个 Python 编写的软件包,利用遗传算法行特征选择和算法模型选择,仅需几行代码,就能生成完整的机器学习代码。
在机器学习模型开发图中,TPOT 所完成的即通过利用遗传算法,分析数千种可能的组合,为模型、参数找到最佳的组合,从而自动化机器学习中的模型选择及调参部分。
GitHub 地址:https://github.com/EpistasisLab/tpot
它使用了高效神经架构搜索( ENAS,https://arxiv.org/abs/1802.03268 ),只需使用 pip install autokeras 就能快速轻松地安装软件包,然后就能用自己的数据集来执行自己的架构搜索构建思路。
相比谷歌 AutoML,两者构建思路类似,但不同的是,AutoKeras 所有代码都已经开源,可供开发者无偿使用。
GitHub 地址:https://github.com/keras-team/autokeras
这是一个用于自动化特性工程的开源 python 框架( https://www.featuretools.com/ )。
它可以帮助开发者从一组相关数据表中自动构造特征。开发者只需要知道数据表的基本结构和它们之间的关系,然后在实体集( 一种数据结构 )中指明。然后在有了实体集之后,使用一个名为深度特征合成( DFS )的方法,在一个函数调用中构建出数千个特征。
NNI 是由微软发布的一个用于神经网络超参数调整的开源 AutoML 工具包,也是目前较为热门的 AutoML 开源项目之一。
最新版本的 NNI 对机器学习生命周期的各个环节做了更加全面的支持,包括:特征工程、神经网络架构搜索(NAS)、超参调优和模型压缩,开发者都能使用自动机器学习算法来完成,即使是开发小白也能轻松上手。
GitHub 地址:https://github.com/microsoft/nni
AdaNet 是由谷歌开源的一个轻量级的基于 TensorFlow 框架( https://adanet.readthedocs.io/en/v0.8.0/ )。
AdaNet 易于使用,并能创建高质量的模型,为 ML 实践者节省了用于选择最佳神经网络架构的时间,实现了一种将学习神经架构作为子网络集合的自适应算法。
GitHub 地址:https://github.com/tensorflow/adanet
