机器/深度学习Kubeflow、Turi Create、MatchZoo、XLearning介绍

以下为你介绍的机器学习/深度学习软件都可用在Linux系统上:Kubeflow(基于 Kubernetes 的机器学习工具库)、Turi Create(苹果开源机器学习框架)、MatchZoo(深度文本匹配工具)、XLearning(深度学习调度平台)。

1、Kubeflow(基于 Kubernetes 的机器学习工具库)

机器/深度学习Kubeflow、Turi Create、MatchZoo、XLearning介绍

Kubeflow 是谷歌发布的一个机器学习工具库,Kubeflow 项目旨在使 Kubernetes 上的机器学习变的轻松、便捷、可扩展,其目标不是重建其他服务,而是提供一种简便的方式找到最好的 OSS 解决方案。该库包含包含的清单用于创建:

用于创建和管理交互式 Jupyter notebook 的 JupyterHub。

可配置为使用 CPU 或 GPU,并通过单一设置调整至单个集群大小的 TensorFlow 训练控制器(Tensorflow Training Controller)。

TF 服务容器(TF Serving container)。

该文档详述在可运行 Kubernetes 的任何环境中运行 kubeflow 项目的步骤。

Kubeflow 目标:

其目标是通过发挥 Kubernetes 的特长,从而更便捷地运用机器学习:

在不同的基础设施上实现简单、可重复的便携式部署(笔记本<-> ML 装备 <-> 训练集群 <-> 生产集群)。

部署和管理松散耦合的微服务。

根据需求进行扩展。

由于机器学习从业者可供使用的工具非常多,所以核心目标是你可以根据需求自定义堆栈,并让系统处理无赖的东西」。虽然我们已开始使用少许技术,但我们正在与很多不同项目展开合作,以涵盖更多额外的工具。最终,我们希望给出一组简单的清单,只要在 Kubernetes 已运行的地方便能轻松使用 ML 堆栈,并可根据部署的集群实现自我配置。

设置:

该文档假设你已经有一个可用的 Kubernetes 集群。对于具体的 Kubernetes 安装,可能需要额外的配置。

Minikube:

Minikube 是一个让我们在本地运行 Kubernetes 更方便的工具。Minikube 会在笔记本的虚拟环境中运行一个单结点 Kubernetes 集群,从而令用户可以在该环境中试验它或执行日常的开发工作。下面的步骤适用于 Minikube 集群,本文档当前使用的是最新版 0.23.0,我们必须配置 Kubectl 才能访问 Minikube。

谷歌 Kubernetes 引擎:

谷歌 Kubernetes 引擎是一个可用于部署容器化应用的托管环境。它融合了提高开发生产力、有效利用资源、自动化运维和开源灵活性方面的最新创新技术,能够加快模型进入市场以及迭代的时间。

谷歌在容器中运行生产工作负载的经验已超过 15 年,他们将在此期间学到的经验知识融入到了 Kubernetes 中。因此,Kubernetes 是行业领先的开源容器协调系统,为 Kubernetes Engine 提供技术支持。

如果读者正在使用谷歌 Kubernetes 引擎,在创建清单前,我们应该先授予自己所要求的 RBAC 角色,因而才能创建或编辑其它 RBAC 角色。

kubectl create clusterrolebinding default-admin --clusterrole=cluster-admin --user=user@gmail.com

下载地址:https://github.com/kubeflow/kubeflow

2、Turi Create(苹果开源机器学习框架)

机器/深度学习Kubeflow、Turi Create、MatchZoo、XLearning介绍

这一框架应该会让开发者更容易构建机器学习模型。Turi Create 简化了定制机器学习模型的开发。你不需要成为一个机器学习专家,也可以在你的应用中添加建议、对象检测、图像分类、图像相似性或活动分类。

Turi Create 的设计意图是简单易用,具有视觉界面,灵活和快速。此外,它还可以部署在 iOS、macOS、watchOS 和 tvOS 上面。

特性:

易于使用:专注于任务而不是算法。

可视化:内置的流媒体可视化技术探索你的数据。

灵活:支持文本、图像、音频、视频和传感器数据。

快速和可扩展:在一台机器上处理大型数据集。

准备部署:将模型导出到 Core ML,用于 iOS、macOS、watchOS 和 tvOS 应用。

示例:带有几行代码的图像分类器

如果您希望您的应用识别图像中的特定对象,则可以只用几行代码来构建自己的模型:

import turicreate as tc

# Load data 

data = tc.SFrame('photoLabel.sframe')

# Create a model

model = tc.image_classifier.create(data, target='photoLabel')

# Make predictions

predictions = model.predict(data)

# Export to Core ML

model.export_coreml('MyClassifier.mlmodel')

支持平台:

Turi Create支持:

macOS 10.12以上、Linux(含glibc 2.10+)、Windows 10(通过WSL)。

系统要求:

Turi Create要求:

Python 2.7/3.5/3.6/3.7(仅限macOS)、x86_64架构、至少4GB RAM。

下载地址:https://github.com/apple/turicreate

3、MatchZoo(深度文本匹配工具)

MatchZoo 是中科院开源的一个文本匹配工具包。它着重于让大家更直观地了解深度文本匹配模型的设计、对比和共享。

架构:

机器/深度学习Kubeflow、Turi Create、MatchZoo、XLearning介绍

MatchZoo 有三个主要模块,分别为数据预处理、模型构建 和 训练与评测。它基于 Keras 开发,支持 TensorFlow、CNTK 及 Theano,并能在 CPU 与 GPU 上无缝运行。

基准测试:

下面,以 WikiQA 数据集来举例说明 MatchZoo 的用法。

以 DRMM 为例,运行:

python main.py --phase train --model_file models/wikiqa_config/drmm_wikiqa.config

在测试时可运行:

python main.py --phase predict --model_file models/wikiqa_config/drmm_wikiqa.config

十个模型的比较结果如下:

机器/深度学习Kubeflow、Turi Create、MatchZoo、XLearning介绍

loss 训练曲线图如下:

机器/深度学习Kubeflow、Turi Create、MatchZoo、XLearning介绍

MAP 性能测试曲线图如下:

机器/深度学习Kubeflow、Turi Create、MatchZoo、XLearning介绍

安装:

MatchZoo取决于Keras和Tensorflow,以下是两种安装MatchZoo的方法。

1]、从Pypi安装MatchZoo:

pip install matchzoo

2]、从Github源码安装MatchZoo:

git clone https://github.com/NTMC-Community/MatchZoo.git

cd MatchZoo

python setup.py install

下载地址:https://github.com/NTMC-Community/MatchZoo

4、XLearning(深度学习调度平台)

XLearning 是奇虎 360 开源的一款支持多种机器学习、深度学习框架调度系统。基于 Hadoop Yarn 完成了对 TensorFlow、MXNet、Caffe、Theano、PyTorch、Keras、XGBoost 等常用框架的集成,同时具备良好的扩展性和兼容性。

架构设计:

机器/深度学习Kubeflow、Turi Create、MatchZoo、XLearning介绍

XLearning 系统包括三种组件:

1]、Client:XLearning 客户端,负责启动作业及获取作业执行状态。

2]、ApplicationMaster(AM):负责输入数据分片、启动及管理 Container、执行日志保存等。

3]、Container:作业的实际执行者,负责启动 Worker 或 PS(Parameter Server)进程,监控并向 AM 汇报进程状态,上传作业的输出等。对于 TensorFlow 类型作业,还负责启动 TensorBoard 服务。

功能特性:

1]、支持多种深度学习框架

支持 TensorFlow、MXNet 分布式和单机模式,支持所有的单机模式的深度学习框架,如 Caffe、Theano、PyTorch 等。对于同一个深度学习框架支持多版本和自定义版本。

2]、基于 HDFS 的统一数据管理

训练数据和模型结果统一采用 HDFS 进行存储,用户可通过 --input-strategy 或 xlearning.input.strategy 指定输入数据所采用的读取方式。目前,XLearning 支持如下三种 HDFS 输入数据读取方式:

Download:AM 根据用户在提交脚本中所指定的输入数据参数,遍历对应 HDFS 路径下所有文件,以文件为单位将输入数据平均分配给不同 Worker。在 Worker 中的执行程序对应进程启动之前,Worker 会根据对应的文件分配信息将需要读取的 HDFS 文件下载到本地指定路径。

Placeholder:与 Download 模式不同,Worker 不会直接下载 HDFS 文件到本地指定路径,而是将所分配的 HDFS 文件列表通过环境变量 INPUT_FILE_LIST 传给 Worker 中的执行程序对应进程。执行程序从环境变量 os.environ["INPUT_FILE_LIST"] 中获取需要处理的文件列表,直接对 HDFS 文件进行读写等操作。该模式要求深度学习框架具备读取 HDFS 文件的功能,或借助第三方模块库如 pydoop 等。

InputFormat:XLearning 集成有 MapReduce 中的 InputFormat 功能。在 AM 中,根据 “split size” 对所提交脚本中所指定的输入数据进行分片,并均匀的分配给不同 Worker。在 Worker 中,根据所分配到的分片信息,以用户指定的 InputFormat 类读取数据分片,并通过管道将数据传递给 Worker 中的执行程序进程。

同输入数据读取类似,用户可通过--output-strategy或xlearning.output.strategy指定输出结果的保存方式。XLearning 支持如下两种结果输出保存模式:

Upload:执行程序结束后,Worker 根据提交脚本中输出数据参数,将本地输出路径保存文件上传至对应 HDFS 路径。为方便用户在训练过程中随时将本地输出上传至 HDFS,XLearning 系统在作业执行 Web 界面提供对输出模型的当前状态主动保存的功能。

OutputFormat:XLearning 集成有 MapReduce 中的 OutputFormat 功能。在训练过程中, Worker 根据指定的 OutputFormat 类,将结果输出至 HDFS。

3]、可视化界面

作业运行界面大致分为三部分:

All Containers:显示当前作业所含 Container 列表及各 Container 对应信息,如 Contianer ID、所在机器(Container Host)、所属类型(Container Role)、当前执行状态(Container Status)、开始时间(Start Time)、结束时间(Finish Time)、执行进度(Reporter Progress)。其中,点击 Container ID 超链接可查看该 Container 运行的详细日志。

View TensorBoard:当作业类型为 TensorFlow 时,可点击该链接直接跳转到 TensorBoard 页面。

Save Model:当作业提交脚本中“--output”参数不为空时,用户可通过Save Model按钮,在作业执行过程中,将本地输出当前模型训练结果上传至 HDFS。上传成功后,显示目前已上传的模型列表。

如下图所示:

机器/深度学习Kubeflow、Turi Create、MatchZoo、XLearning介绍

4]、原生框架代码的兼容性

TensorFlow 分布式模式支持 “ClusterSpec” 自动分配构建,单机模式和其他深度学习框架代码不用做任何修改即可迁移到 XLearning 上。

下载地址:https://github.com/Qihoo360/XLearning

注明

以上就是机器/深度学习Kubeflow、Turi Create、MatchZoo、XLearning的介绍内容,这些机器学习/深度学习软件都能使用在Linux操作系统中。

栏目相关文章