机器/深度学习Milvus、Annoy、Vearch、sk-dist介绍

以下为你介绍的机器学习/深度学习软件都可用在Linux系统上:Milvus(向量搜索引擎)、Annoy(求近似最近邻的库)、Vearch(分布式向量搜索系统)、sk-dist(PySpark中的分布式scikit-learn元估计器)。

1、Milvus(向量搜索引擎)

机器/深度学习Milvus、Annoy、Vearch、sk-dist介绍

Milvus,为海量特征向量的近似最近邻搜索(ANNS)而设计。相比 Faiss 和 SPTAG 这样的算子库,Milvus 提供完整的向量数据更新,索引与查询框架。Milvus 利用 GPU(Nvidia)进行索引加速与查询加速,能大幅提高单机性能。

Milvus 向量搜索引擎可以广泛地和各种深度学习模型进行整合,简化 AI 应用落地的难度。

目前Milvus已经得到了头部机器视觉公司的技术认可。我们正在构建广泛的技术社区,诚邀有兴趣的AI开发者加入。

开发语言:C++,SDK:C++/Python/Java/RESTful API

体验Milvus:

感兴趣的开发者可以根据以下教程,在自己的 PC(16GB内存)上轻松实现 1 亿级向量(数据来自SIFT1billion)搜索。 

Milvus 在单机 10 亿向量(SIFT1B 数据集)上的性能也是表现出色的。

Milvus索引类型:

IVF:Faiss IVF,Milvus 团队自研 IVF。

Graph:Milvus 团队实现的 NSG 索引。

Tree & Graph:集成微软 SPTAG。

IVF & Graph:Milvus 团队实现中。

软件需求:

Ubuntu 18.04或更高版本。

CMake 3.14或更高。

CUDA 10.0或更高。

NVIDIA驱动程序418或更高版本。

构建:

步骤1、安装依赖项

$ cd [Milvus sourcecode path]/core

./ubuntu_build_deps.sh

步骤2、建立

$ cd [Milvus sourcecode path]/core

$ ./build.sh -t Debug

or 

$ ./build.sh -t Release

构建完成后,运行Milvus所需的所有内容都将安装在[Milvus root path]/core/milvus下。

启动Milvus服务器:

$ cd [Milvus root path]/core/milvus

将lib/目录添加到LD_LIBRARY_PATH:

$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/milvus/lib

然后启动Milvus服务器:

$ cd scripts

$ ./start_server.sh

要停止Milvus服务器,请运行:

$ ./stop_server.sh

要在conf/server_config.yaml和conf/log_config.conf中编辑Milvus设置。

下载地址:https://github.com/milvus-io/milvus

2、Annoy(求近似最近邻的库)

机器/深度学习Milvus、Annoy、Vearch、sk-dist介绍

Annoy 是 Spotify 开源的高维空间求近似最近邻的库,在 Spotify 使用它进行音乐推荐。最邻近搜索(Nearest Neighbor Search, NNS)又称为“最近点搜索”(Closest point search),是一个在尺度空间中寻找最近点的优化问题。

Annoy 能够使用静态文件作为索引,意味着可以跨进程共享索引。它还创建了大量的基于只读文件的数据结构,这些数据结构被嵌入内存中,以便许多进程可以共享相同的数据。Annoy 的另一个好处是它试图最小化内存占用,因此索引非常小。

特性:

欧几里德距离, 曼哈顿距离, 余弦距离, 汉明距离或 点(内)积距离。

余弦距离等价于归一化向量的欧氏距离=sqrt(2-2*cos(u,v)。

如果你的维度不多(比如<100),效果会更好,即使达到 1000 个维度,它也表现得非常出色。

内存使用量小。

允许你在多个进程之间共享内存。

索引创建与查找是分开的(特别是在创建树后,就无法添加更多项目)。

原生 Python 支持。

在磁盘上生成索引,以便为不适合内存的大型数据集建立索引。

安装:

要安装,只需执行pip install --user annoy。

对于C++版本,只需克隆存储库并#include "annoylib.h"。

下载地址:https://github.com/spotify/annoy

3、Vearch(分布式向量搜索系统)

机器/深度学习Milvus、Annoy、Vearch、sk-dist介绍

注:以上为架构图。

Vearch 是一个分布式向量搜索系统,可以用来计算向量相似度,或用于机器学习领域,如:图像识别、视频识别或自然语言处理等各个领域。

本系统基于 Faiss 实现,提供了快速的向量检索功能。

提供类似 Elasticsearch 的 Restful API 可以方便地对数据及表结构进行管理查询等工作。

下载地址:https://gitee.com/vearch/vearch

4、sk-dist(PySpark中的分布式scikit-learn元估计器)

机器/深度学习Milvus、Annoy、Vearch、sk-dist介绍

PySpark中的分布式scikit-learn元估计器。

sk-dist是一个用于机器学习的Python模块,构建于scikit-learn之上,并在Apache 2.0软件许可下发布。sk-dist模块可以被认为是“分布式scikit-learn”,因为它的核心功能是将scikit-learn内置的joblib并行化的meta-estimator训练扩展到spark。

主要特点:

分布式训练 -  sk-dist使用PySpark将scikit-learn元估计器的训练并行化。这允许对这些估计器进行分布式训练,而不对任何一台机器的物理资源进行任何限制。在所有情况下,火花伪像会自动从拟合估算器中剥离。然后可以对这些估计器进行酸洗和未腌制以用于预测任务,在预测时间对他们的scikit-learn对应物进行相同的操作。支持的任务是:

网格搜索:分配超参数优化技术,特别是GridSearchCV和RandomizedSeachCV,使得每个参数集候选被并行训练。

多类策略:分布多类分类策略,特别是OneVsRestClassifier和OneVsOneClassifier,使得每个二进制问题都是并行训练的。

树集合:分布和回归的决策树集合,特别是RandomForest和ExtraTrees,是分布式的,以便每个树都是并行训练的。

分布式预测 -  sk-dist提供了一个预测模块,该模块使用拟合的scikit-learn估算器为PySpark DataFrames构建矢量化UDF。这分配了scikit-learn估计器的predict和predict_proba方法,通过scikit-learn实现大规模预测。

特征编码 -  sk-dist提供了一个名为Encoderizer的灵活的特征编码实用程序,它使用默认行为或用户定义的可自定义设置对混合类型的特征空间进行编码。它特别针对文本功能,但它还处理数字和字典类型的功能空间。

用户安装:

安装sk-dist的最简单方法是使用pip:

pip install --upgrade sk-dist

您还可以下载源代码:

git clone https://github.com/Ibotta/sk-dist.git

测试:

安装pytest后,您可以在本地运行测试:

pytest sk-dist

下载地址:https://github.com/Ibotta/sk-dist

注明

以上就是机器/深度学习Milvus、Annoy、Vearch、sk-dist的介绍内容,这些机器学习/深度学习软件都能使用在Linux操作系统中。

栏目相关文章