Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践
计算GPU 实现方面也做了很大年夜的投入,在原生多 GPU 的支撑下能产出惊人的单机机能。GPU 实现已经可以作为对应 CPU 设备的替代,无需懂得 CUDA API 就能发掘出 GPU 的机能。Faiss 支撑所有 Nvidia 2012 之后宣布的 GPU(Kepler,计算才能 3.5+)。

Facebook 开源的 Faiss(Facebook AI Similarity Search) 的项目,供给了一个类似性搜刮的类库,可以或许快速大年夜多媒体文档中搜刮出类似的条目。Facebook 人工智能实验室(FAIR)基于十亿级其余数据集构建了比来邻搜刮算法的实现,这比已知的最快算法还快大年夜约 8.5 倍,是以创造了新的记录,包含第一个基于十亿高维向量构建的 k 比来邻图。
Facebook 在本年 3 月份宣布了 Facebook AI 类似性搜刮(简称 Faiss)项目,该项目供给的类库可以大年夜多媒体文档中快速搜刮出类似的条目——这个场景下的挑衅是基于萌芽的传统搜刮引擎无法解决的。Facebook 人工智能实验室(FAIR)基于十亿级其余数据集构建了比来邻搜刮算法的实现,这比之前介绍的已知文献中在 GPU 上实现的最先辈且最快的 k-selection 算法还要快大年夜约 8.5 倍,是以创造了新的记录,包含第一个基于十亿高维向量构建的 k 比来邻图。
关于类似性搜刮
传统的数据库是由包含符号信息的构造化数据表构成。比如,一个图片集可以表示为一个数据表,每行代表一个被索引的图片,包含图片标识符和描述文字之类的信息;每一行也可以与其他数据表中的实体接洽关系起来,比如某个用户的一张图片可以与用户姓名表建立接洽关系。
如许一来我们就存眷到下面庞个指标:
像文本嵌入(word2vec)或者卷积神经收集(CNN)描述符如许经由过程深度进修练习出的 AI 对象,都可以生成高维向量。这种表示远比一个固定的符号表示加倍强大年夜和灵活,正如后文将解释的那样。然而应用 SQL 萌芽的传统数据库并不实用这些新的表示方法。起首,海量多媒体信息的涌入产生了数十亿的向量;其次,且更重要的是,查找类似实体意味着查找类似的高维向量,如不雅只是应用标准萌芽说话这将异常低效和艰苦。
若何应用向量表示?
向量化表示的另一个应用是分类。假设须要一个分类器,来剖断某个相册中的哪些图片属于菊花。分类器的练习过程众所周亲信给算法分别输入菊花的图片和非菊花的图片(比如汽车、羊、玫瑰、矢车菊等);如不雅分类器是线性的,那么就输出一个分类向量,其属性值是它与图片向量的点积,反竽暌钩了该图片包含菊花的可能性;然后分类器可以与相册中所有图片计算点积,并返回点积最大年夜的图片。这种萌芽就是“最大年夜内积”搜刮。
所以,对于类似性搜刮和分类,我们须要做下列处理:
- 给定一个萌芽向量,返回与该向量的欧式距离比来的数据库对象列表。
- 给定一个萌芽向量,返回与该向量点积最大年夜的数据库对象列表。
这就是类似性搜刮的用武之地了。图片的向量化表示旨在为类似的图片生成类似向量,这里类似向量定义为欧氏距离比来的向量。
一个额外的挑衅是,要在一个超大年夜范围比如数十亿向量上做这些运算。
软件包
现有软件对象都不足以完成上述数据库检索操作。传统的 SQL 数据库体系也不太合适,因为它们是为基于哈希的检索或 1 维区间检索而优化的;像 OpenCV 等软件包中的类似性搜刮功能在扩大性方面则严重受限;同时其他的类似性搜刮类库重要实用于小范围数据集(比如,1 百万大年夜小的向量);别的的软件包根本是为揭橥论文而输出的学术研究产品,旨在展示某些特定设置下的效不雅。

Faiss 类库则解决了以上提到的各种局限,其长处如下:
- 供给了多种类似性搜刮办法,支撑各类各样的不合用法和功能集。
- 特别优化了内存应用和速度。
- 为最相干索引办法供给了最先辈的 GPU 实现。
Faiss 应用 C++ 实现,并支撑 Python。只要大年夜 Github 下载源码并编译,然后在 Python 中导入 Faiss 模块即可开端应用。Faiss 还完全集成了 Numpy,并支撑构造 numpy(应用 float32)数组的所有函数。
一旦大年夜进修体系(大年夜图片、视频、文本文件以及其他处所)采掏出向量,就能预备将其用于类似性搜刮类库。
我们有一个暴力算法作为参考比较,该算法计算出了所有的类似度——异常精确和齐备——然后返回最类似的元素列表。这就供给了一个黄金标准的参考结不雅列表。须要留意的是,暴力算法的高效实现并不简单,一般依附于其他组件的机能。
如不雅就义一些精度的话,比如许可与参考结不雅有一点点误差,那么类似性搜刮能快几个数量级。举个例子,如不雅一张图片的类似性搜刮结不雅中的第一个和第二个交换了,可能并没有太大年夜问题,因为对于一个给定的萌芽,它们可能都是精确结不雅。加快搜刮速度还涉及到数据集的预处理,我们平日把这个预处理操作称作索引。
内存消费。该办法须要消费若干 RAM?比原始向量更多照样更少?Faiss 支撑只在 RAM 上搜刮,而磁盘数据库就会慢几个数量级,即就是 SSD 也是一样。
精确度。返回的结不雅列表与暴力搜刮结不雅匹配程度若何?精确度可以如许评估,计算返回的┞锋正比来邻结不雅在萌芽结不雅第一位(这个指标一般叫做 1-recall@1)的数量,或者衡量返回结不雅前 10 个(即指标 10-intersection)中包含 10 个比来邻结不雅的平均占比。
推荐阅读
Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践 按照区块链监管的请求,国内>>>详细阅读
本文标题:Facebook开源相似性搜索类库Faiss,超越已知最快算法8.5倍
地址:http://www.17bianji.com/lsqh/38866.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示