随着原本不相关的技术以令人兴奋的新方式融合在一起,数字融合正在我们周围发生。iPhone是一个完美的例子,将电话与计算机,相机和传感器结合在一起可提供出色的体验。
融合(Convergence)在嵌入式领域并不新鲜。嵌入式设备在传统上受到更严格的内存和处理的限制,并且已经接受了融合作为一种获得许多技术领域的最佳方式。因此,当我们刚刚开始不同规模的技术融合时,看似不同的技术有希望联合起来颠覆现有行业,并迎来引人注目的新机遇,嵌入式领域也将受益。一个新的融合是使用k-NN近邻(k-NN)与内存加速处理,为十亿规模的Elasticsearch操作提供接近实时的响应。
Elasticsearch是一个搜索引擎,它接受JSON请求进行文档搜索,并提供JSON数据作为结果。Elasticsearch的数据格式是一个用JSON编码的结构化数据的文档。Elasticsearch开始时是一个文本搜索引擎,但作为数据库它可以涵盖任何类型的数据,每个文档都有一个唯一的ID和一个数据类型。
由于该结构是“schema-free(无模式)”的,因此可以根据用户的需要定义文档。Elasticsearch数据库中的文档示例包括:
- 用于标识消费者搜索请求的图片。
- 网络数据日志,用于识别网络入侵,异常或负载不平衡。
- 产品收据用于识别客户的购买模式并改善库存管理。
- 用于自动共享和复制的网络体系结构。
- 用于查找特定文学作品实例的文本文档。
- 具有一对多映射的文本文档,用于计算机辅助翻译。
Elasticsearch是为分布式设计的。它在基础设施方面是可扩展的,并且可以灵活地用于本地服务器、远程服务器或基于云的操作。由于其开放性以及restful API结构,这个可扩展的搜索引擎可以轻松地与插件一起使用。GSI Technology就是其中一个这样的插件,它提供了许多好处,包括硬件加速的k-NN,将向量用于多模式搜索以及合并分数结果。
Elasticsearch依靠其分布式计算支持来实现可扩展性,对于百万规模的数据库搜索,可实现毫秒级别的惊人的速度。由于其分布式性质和分片支持,Elasticsearch允许数据以副本的方式使搜索并行化,并为大型数据库加速。以HTTP接口发布的分布式功能也允许一个嵌入式设备进行不同分辨率的多次搜索--一次在本地资源上,一次发送到上游资源。
核心Elasticsearch使用了计算量很大的穷举式匹配(match all),这使得它的速度变慢,或者在重复的硬件中相当昂贵,无法支持大规模的数据库搜索。一种可以用来增加数据集规模的技术是k-NN搜索。它的工作原理是首先寻找共同分组中的相似性,然后在这些一个或多个分组中进行最后的搜索。这种技术也允许大型数据集搜索运行于在边缘规模的服务器上,而不是在对延迟非常敏感的应用的基于云的计算集上进行。
计算上的挑战
虽然k-NN为Elasticsearch提供了一种支持非常大的数据库的方法,比如那些十亿级以上的条目,但它的计算量是很有限的。因此,由于在GPU或CPU核心之间移动数据的限制,k-NN的加速一直是一个挑战。
工作负载加速的最大限制之一是处理器和内存之间所需的数据交换的限制。现代处理器中使用的冯-诺依曼架构的一个主要缺点是处理器和存储之间的数据传输开销。CPU必须为它的每一个操作向外获取数据。
计算上具有挑战性的方法
尽管k-NN为Elasticsearch提供了一种支持非常大的数据集(例如,十亿级及以上条目的数据库)的方法,但它在计算上却比较弱。结果,由于在GPU或CPU内核之间移动数据库的限制,k-NN一直是加速挑战。
工作负载加速的最大限制之一是处理器与内存之间所需数据交换的限制。现代处理器中使用的冯·诺依曼体系结构的主要缺点是处理器与存储之间的数据传输开销很大。CPU必须走出去并为其执行的每个操作获取数据。
这种架构在卸载加速(offload acceleration)环境中的效率甚至更低。这种系统的性能受限于请求操作的主机和执行操作的计算引擎通过内存交换数据的速度。
目前正在研究减少来自内存的数据流的架构,以帮助缓解冯-诺依曼瓶颈。然而,在处理内存密集型的人工智能应用时,这个瓶颈尤其令人震惊。人工智能相关应用的运行取决于内存中大量数据的快速和有效移动。已训练数据集需要被加载到内存并矢量输入查询。接下来,它们需要被处理和加载,以便运行对比功能。
一项已经在市场上产生影响的成熟技术是关联处理单元(APU)。in-memory加速的好处是存储本身成为处理器。这不是一个旁边有高速缓存的大规模的处理核心阵列,而是一个在 read-line 架构中内置了计算单元的内存阵列。
因此,APU的不同之处在于它的内存阵列能够加速计算。这种类型的 "加速 "处理器已被证明可以将性能提高几个数量级,同时降低标准服务器的工作负载功耗。
Elasticsearch、k-NN和APU加速的融合提供了更少的延迟和每秒更多的查询。这也使得它有可能以比传统的只用CPU或GPU加速的系统更低的功率提供对十亿规模数据库搜索的支持。在嵌入式领域,Elasticsearch可以提供一种手段,在边缘设备上进行本地搜索,同时在网络上发送HTTP请求,进行更深入的搜索。不同的结果可以拼接在一起,形成一个越来越清晰的答案,也可以仅纳入新的例外情况。
一个极端的边缘设备可以应用其CPU资源在本地相关的数据库上做搜索,以提高速度。然后利用APU密度倍增器(APU density multiplier),让Elasticsearch网络请求在边缘服务器或聚合器上高效运行,而不是发送到云端。考虑可以做出自主决策但仍可以从上游更深入的搜索中获得备份验证或路线更正的机器人。考虑自动驾驶汽车,它们会根据规则集和当地条件做出即时决策,同时通过高速公路标志网关发送信息并获取上游道路信息和驾驶指令。
展望未来,看到这种融合将带来哪些新机遇将是令人兴奋的。