searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

ATC2023论文分享之“CXL-ANNS”

2023-09-26 02:42:49
232
0

Background & Motivation

大规模近似近邻搜索(ANNS)场景下的数据处理广泛应用于推荐系统,搜索引擎

这种应用的需求:搜索结果要求满足一定的精度要求,且时延低

应用优化的挑战在于:待搜索的数据集庞大,同时满足精度和时延要求下加速应用性能。

(图片源于:intel关于NeurlPS ANNS挑战赛)

一般的ANNS算法可以描述为Algorithm 1的样子,

其中查询对象与其他对象的相似度计算采用基于距离的相似度进行,具体计算可以用L2,也可以用Angular距离。

考虑到ANNS要处理大规模数据,目前的研究主要可以分为两类:基于压缩的方法(下图中(a))和基于层次化的方法(下图中(b))。

基于压缩的方法会损失精度,因为他通过将众多邻近的对象描述为独立对象进行“概括”,这样在实际的搜索中会丢失一些候选对象,所以精度较差。

基于层次化的方法会比较慢,这主要是因为他把数据集进行压缩,放置于本地内存,然后把数据全集放在SSD或者持久化内存中,这种介质的数据访问要远比本地内存要大。所以查询性能较慢。

也就是说,现存的两类方法在大规模数据集下无法同时满足精度与查询性能(时延)的要求。

为此,作者提出采用CXL内存池进行ANNS的应用性能优化。

Idea

作者搭建了如下图所示的CXL内存池架构,不过显而易见的是,仅仅这么使用内存,免不了CXL内存访问带来的性能劣化,毕竟这种内存访问时延要比本地内存访问大很多,那么如何加速呢?

作者对ANNS的业务进行了breakdown,如下图所示,可以发现距离计算部分的业务最耗时,基本上占据了80%,所以根据阿姆达尔定律,我们可以尝试在这里入手,这样加速最明显。

作者主要围绕四个方面进行加速:

(1)近存计算

(2)冷热分级

(3)访问预测

(4)精细化任务调度

下面我们一个一个展开。

Observations & Design 

冷热分级就是可以把ANNS在邻居搜索过程中频繁访问的节点放到本地内存中来,这样可以极大地加速。

近存计算就是由CXL EP就近对CXL内存中的数据进行距离计算,把计算结果送到本地内存中,这样减少数据传送。

访问预测就是预测搜索过程中的节点访问,然后对该节点的数据进行预取,形成overlap,减少数据等待开销。

精细化任务调度就是分解业务中的update操作,其实就是类似把原来业务上的大“原子”操作,拆分成小的“原子”操作,也有点CPU乱序的感觉,不过这里的性能提升不大。

这四个技巧中,最大的性能提升来自于近存计算。

Implementation  

下图是CXL-ANNS的软硬协同架构图。

挂了4个EP(每个含4个memory controller 挂一个dimm channel 256GB),DSA由CXL engine映射到Host 空间的寄存器获得command,对memory controller发送内存请求进行数据获取,然后进行计算。根据entry-point计算单源最短路径,然后按路径排序,优先放置节点在local DRAM,放满后放CXL DRAM。考虑到邻居数量是变长的,其对CXL内存采用buddy-like 分配器,Data vector采用stack-like分配器,通过跨arena 轮转分配,平衡EP的工作负载。最后,最终的协同是各个ep从Host-CPU侧的local dram获取搜索过程中的邻居节点信息,然后通过PE sharding并行计算取得distance送至local dram,这是最关键的性能提升部分。相当于一个map-reduce过程。

Evaluation

下面展示CXL-ANNS的性能提速效果,对比不同的数据集在相同recall精度要求下的QoS。

其中,

Comp代表压缩型ANNS的设计,其以中心向量代表cluster;

Hr-D代表DiskANN设计;

Hr-H代表混合内存的层次化设计:HM-ANN;

Orrl代表采用全部DRAM进行数据集存储,然后进行未优化的ANNS搜索;

Base代表采用CXL pool进行数据集存储,然后进行未优化的ANNS搜索,即只有CXL CPU进行计算;

EPAx代表开启DSA加速的方案;

Cache代表开启预取与relationship-aware放置的方案;

CXLA代表文章提出的包含所有优化特性的方案。

可以看出,不同数据集下以及不同query的配置下(选不同的K进行k-anns),CXLA可以同时保障精确度和性能。

通过breakdown,如下图,也可以看出CXLA可大幅缩小查询时延,其主要性能提升来自于Distance Calc(近存计算)

 

0条评论
0 / 1000
t****n
2文章数
0粉丝数
t****n
2 文章 | 0 粉丝
t****n
2文章数
0粉丝数
t****n
2 文章 | 0 粉丝
原创

ATC2023论文分享之“CXL-ANNS”

2023-09-26 02:42:49
232
0

Background & Motivation

大规模近似近邻搜索(ANNS)场景下的数据处理广泛应用于推荐系统,搜索引擎

这种应用的需求:搜索结果要求满足一定的精度要求,且时延低

应用优化的挑战在于:待搜索的数据集庞大,同时满足精度和时延要求下加速应用性能。

(图片源于:intel关于NeurlPS ANNS挑战赛)

一般的ANNS算法可以描述为Algorithm 1的样子,

其中查询对象与其他对象的相似度计算采用基于距离的相似度进行,具体计算可以用L2,也可以用Angular距离。

考虑到ANNS要处理大规模数据,目前的研究主要可以分为两类:基于压缩的方法(下图中(a))和基于层次化的方法(下图中(b))。

基于压缩的方法会损失精度,因为他通过将众多邻近的对象描述为独立对象进行“概括”,这样在实际的搜索中会丢失一些候选对象,所以精度较差。

基于层次化的方法会比较慢,这主要是因为他把数据集进行压缩,放置于本地内存,然后把数据全集放在SSD或者持久化内存中,这种介质的数据访问要远比本地内存要大。所以查询性能较慢。

也就是说,现存的两类方法在大规模数据集下无法同时满足精度与查询性能(时延)的要求。

为此,作者提出采用CXL内存池进行ANNS的应用性能优化。

Idea

作者搭建了如下图所示的CXL内存池架构,不过显而易见的是,仅仅这么使用内存,免不了CXL内存访问带来的性能劣化,毕竟这种内存访问时延要比本地内存访问大很多,那么如何加速呢?

作者对ANNS的业务进行了breakdown,如下图所示,可以发现距离计算部分的业务最耗时,基本上占据了80%,所以根据阿姆达尔定律,我们可以尝试在这里入手,这样加速最明显。

作者主要围绕四个方面进行加速:

(1)近存计算

(2)冷热分级

(3)访问预测

(4)精细化任务调度

下面我们一个一个展开。

Observations & Design 

冷热分级就是可以把ANNS在邻居搜索过程中频繁访问的节点放到本地内存中来,这样可以极大地加速。

近存计算就是由CXL EP就近对CXL内存中的数据进行距离计算,把计算结果送到本地内存中,这样减少数据传送。

访问预测就是预测搜索过程中的节点访问,然后对该节点的数据进行预取,形成overlap,减少数据等待开销。

精细化任务调度就是分解业务中的update操作,其实就是类似把原来业务上的大“原子”操作,拆分成小的“原子”操作,也有点CPU乱序的感觉,不过这里的性能提升不大。

这四个技巧中,最大的性能提升来自于近存计算。

Implementation  

下图是CXL-ANNS的软硬协同架构图。

挂了4个EP(每个含4个memory controller 挂一个dimm channel 256GB),DSA由CXL engine映射到Host 空间的寄存器获得command,对memory controller发送内存请求进行数据获取,然后进行计算。根据entry-point计算单源最短路径,然后按路径排序,优先放置节点在local DRAM,放满后放CXL DRAM。考虑到邻居数量是变长的,其对CXL内存采用buddy-like 分配器,Data vector采用stack-like分配器,通过跨arena 轮转分配,平衡EP的工作负载。最后,最终的协同是各个ep从Host-CPU侧的local dram获取搜索过程中的邻居节点信息,然后通过PE sharding并行计算取得distance送至local dram,这是最关键的性能提升部分。相当于一个map-reduce过程。

Evaluation

下面展示CXL-ANNS的性能提速效果,对比不同的数据集在相同recall精度要求下的QoS。

其中,

Comp代表压缩型ANNS的设计,其以中心向量代表cluster;

Hr-D代表DiskANN设计;

Hr-H代表混合内存的层次化设计:HM-ANN;

Orrl代表采用全部DRAM进行数据集存储,然后进行未优化的ANNS搜索;

Base代表采用CXL pool进行数据集存储,然后进行未优化的ANNS搜索,即只有CXL CPU进行计算;

EPAx代表开启DSA加速的方案;

Cache代表开启预取与relationship-aware放置的方案;

CXLA代表文章提出的包含所有优化特性的方案。

可以看出,不同数据集下以及不同query的配置下(选不同的K进行k-anns),CXLA可以同时保障精确度和性能。

通过breakdown,如下图,也可以看出CXLA可大幅缩小查询时延,其主要性能提升来自于Distance Calc(近存计算)

 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
1
1