没有合适的资源?快使用搜索试试~ 我知道了~
计算存储技术在大规模AI应用中的应用与好处
ACM Transactions on Storage,Vol.号164、第二十一条。出版日期:2020年10月面向大规模AI应用的JAEYOUNG DO,微软研究院,美国维克多角FERREIRA,巴西里约热内卢联邦大学HOSSEIN BOBARSHAD和MAHDI TORABZADEHKASHI,NGD Systems,美国SIAVASH REZAEI和ALI HEYDARIGORJI,加州大学欧文分校,美国DIEGO SOUZA,Wespa智能系统布伦诺湾GOLDSTEIN和LEANDRO SANTIAGO,里约热内卢联邦大学MIN SOO KIM,加州大学欧文分校,美国PRISCILA M.诉LIMA和FELIPE M.G. 巴西里约热内卢联邦大学VLADIMIR ALVES,NGD Systems,美国在云端和边缘不断产生的数据量不断增长,这对大规模人工智能应用程序以及时有效的方式从数据中提取和学习有用信息提出了重大挑战。本文的目标是探索如何使用计算存储通过分布式近似数据处理来解决这些挑战。我们描述了纽波特,一个高性能和高能效的计算存储开发的存储处理的全部潜力。据我们所知,Newport是第一个可以配置为运行类似服务器的操作系统的商品SSD,极大地减少了创建和维护存储内运行的应用程序的工作量。我们通过在大型视觉数据集上运行复杂的AI应用程序(如图像相似性搜索和对象跟踪)来分析使用Newport的好处。结果表明,数据密集型人工智能工作负载可以有效地并行化和卸载,即使是一小组纽波特驱动器,也可以显著提高性能并节省能源。此外,我们还介绍了现有计算存储解决方案的全面分类,以及大批量生产的现实成本分析,为计算存储技术的经济可行性提供了一个很好的大画面。CCS概念:·信息系统→存储架构;·计算机系统组织→·计算方法学→人工智能;附加关键词和短语:计算存储,存储内处理,固态硬盘,相似性搜索,神经网络,对象跟踪这项工作得到了巴西Coordenação de Pessoal de Nível Superior(CAPES)-金融法001的部分支持。此外,本材料基于国家科学基金会资助的工作,资助号为1660071。作者microsoft.com费雷拉湾F.戈尔茨坦湖,加-地圣地亚哥,下午。V. Lima和F. M. G. França,里约热内卢联邦大学 , 巴 西 里 约 热 内 卢 ; H. Bobarshad 和 M. Torabzadehkashi , NGD Systems , Irvine , California; Rezaei , A.HeydariGorji和M.S. 加州大学欧文分校;Souza,Wespa Intelligent Systems,Rio de Janeiro,Brazil; V. Alves,NGDSystems,Irvine,California.允许免费制作本作品的全部或部分的数字或硬拷贝,以供个人或课堂使用,前提是制作或分发副本的目的不是为了盈利或商业利益,并且副本的第一页上有本声明和完整的引用。必须尊重作者以外的其他人拥有的本作品组件的版权。允许使用学分进行摘要。以其他方式复制、重新发布、在服务器上发布或重新分发到列表中,需要事先获得特定许可和/或付费。从permissions@acm.org请求权限。© 2020版权归所有者/作者所有。授权给ACM的出版权。1553-3077/2020/10-ART21 $15.00https://doi.org/10.1145/341558021ACM Transactions on Storage,Vol.号164、第二十一条。出版日期:2020年10月第二十一J. Do等人ACM参考格式:维克多·杜在义放大图片创作者:Kristan,Kristan,Kristan,Kristan,Kristan.放大图片创作者:Michael M.作者声明:a. G.弗兰萨和弗拉基米尔·阿尔维斯2020年。面向大规模AI应用的经济高效、节能高效且可扩展的存储计算ACM Trans.存储16,4,第21条(2020年10月),37页。https://doi.org/10.1145/34155801介绍在大数据时代,每天产生的大量数据对及时有效地从数据中提取有用的信息和知识2012年的一项研究显示,由于缺乏有效的管理方法,只有0.5%的数据得到了分析[24]。这个问题在处理视觉数据方面尤为突出,因为谷歌和Facebook等公司在照片和视频的生产方面正在经历前所未有的增长[1,5]。因此,可扩展的和强大的方法的发展是至关重要的,有效地搜索大量的视觉内容的索引和检索。此外,神经网络和深度学习方法的最新发展极大地推进了一种通过高度准确地理解视觉数据的上下文来解释视觉数据的方法例如,这使得能够在给定场景中跟踪多个感兴趣的对象,这对于自动驾驶车辆等自主系统至关重要[6,21,31,33,34,46,65,85]。相似性搜索:相似性搜索是分析大量视觉数据的有效方法其中基本的计算原语是当图像作为查询被给出时搜索相似的图像和视频帧。搜索的常见机制是通过采用一组机器学习技术将图像转换为高维实值向量。这种特征向量称为嵌入,通常是从预训练的图像分类网络(如DenseNet [35])获得的输入图像的密集表示(图1(a))。因为网络为相似的图像产生相似的向量,所以距离(例如,可以测量向量之间的向量(例如,欧几里得向量),因此,给定图像查询,找到k个最相似图像的问题通常用向量空间中的K-最近邻(KNN)算法[14,18,30,84]来解决。对象跟踪:对象跟踪是一种有效的方法,用于跟踪一个或多个对象通过大量的视频流(图2(a))。跟踪对象的一般过程包括选择在视频帧上跟踪的感兴趣区域(ROI),这可以通过几种机器学习技术来执行,例如相关滤波器[6,32],深度神经网络[31,58]或无权重神经网络[17,23,46]。与目标是在帧上找到指定对象的对象检测[7]相比然而,由于噪声、障碍物和其他误差的存在,开发快速、准确和通用的跟踪系统仍然具有挑战性。1.1问题和机会人工智能应用需要计算大量(结构化或非结构化)原始数据来“学习”,这使得计算能力很容易成为支撑人工智能革命的瓶颈。传统上用于解决此问题的一种方法是使用多个节点来实现更聚合的计算资源(例如高端CPU、GPU或FPGA)。不幸的是,不仅从购买和运营成本的角度来看,增加更多的服务器节点成本高昂,而且更重要的是,这种横向扩展方法可能会增加互连长度,经济高效、节能高效且可扩展的存储计算第二十一ACM Transactions on Storage,Vol.号164、第二十一条。出版日期:2020年10月图1.一、相似性搜索流水线:(a)从数据集中提取特征向量是离线执行的在搜索阶段,在从给定查询图像提取特征向量(b)在从传统闪存SSD移动向量之后在主机上或(c)在CSD内部执行许多高度可并行的距离计算这也增加了将大量数据从存储器移动到计算平面所需的时间和能量。鉴于令人兴奋的数据量继续以前所未有的速度生成(根据IDC [60],到2025年,世界数据的总和将超过175zettabytes),这种存储I/O带宽限制可能会此外,随着物联网和边缘部署的惊人增长,这个问题变得更加突出[75]。例如,当执行大规模相似性搜索时,存储带宽限制可能是显著的瓶颈。如图1(b)所示,在搜索阶段,必须将在前一阶段中已经创建并存储在存储器上的特征向量传输到主机内存待处理然而,由于大量的向量,常规存储系统的带宽可能无法跟上搜索所需的许多可并行距离计算的量。如果距离计算,这是内存密集型和计算简单,可以在存储器中的向量附近执行,那么从存储器传输到主机的数据量将通过仅返回搜索结果而显着减少,如图1(c)所示。减少数据移动还可以提高对象跟踪应用程序的性能。考虑到具有4 K或8 K分辨率的更大尺寸视频帧的趋势,整个帧集可能不适合主机内存(图2(b))。因此,在存储视频帧的存储设备上执行对象跟踪算法为了降低数据移动成本,可以对矢量进行编码(例如,乘积量化(PQ)[37])转换为更少的比特数,但这种数据减少伴随着精度损失的代价。第二十一J. Do等人ACM Transactions on Storage,Vol.号164、第二十一条。出版日期:2020年10月图二、 对象跟踪流水线:(a)当给出视频流时,对象跟踪算法利用属于该流的帧上的边界框来跟踪期望的对象。(b)对于传统SSD,在计算边界框之前,需要首先将潜在的非常大的视频帧集合传输到主机(c)然而,这种计算可以卸载到多个CSD并并行执行。不仅降低了移动数据的成本,而且还释放了主机资源,可用于在主机上运行的其他活动(图2(c))。在过去70年来一直使用的传统冯诺依曼架构中,存储设备只是用来存储数据。数据必须首先读取,然后在处理之前传输到主机。幸运的是,计算存储[16,70]是一种新兴技术,允许将计算能力直接放置在存储上(即,存储器内处理),以使数据能够在它们驻留的地方被处理。通过为存储介质本身带来智能,可以在将数据发送到主机之前进行数据缩减和鉴定,在系统的总吞吐量增加。除了加快处理速度外,这还可以更好地利用主机资源,并跨大量工作负载进行扩展,从而降低企业的成本。通过以下方式进一步提高成本效益降低的功率包络,以及通过降低对服务器内存和网络带宽资源的需求。现代闪存SSD结合了处理和存储组件来执行管理SSD所需的常规这些计算资源提供了运行通用用户定义程序的有趣机会,在过去的几年中,许多作品[15,28,39,41,43,67,76,77,78,79,80]都对这些程序进行了虽然先前的方法已经解决了各种问题和挑战以推进最先进的技术,但它们中的大多数缺乏足够专用的SSD内资源或以可扩展的方式执行各种应用程序以展示存储内处理的全部潜力所需的适当软件框架特别是,缺乏操作系统对存储处理的支持,限制了在许多这些系统中执行大规模复杂应用此外,还有一种风险,经济高效、节能高效且可扩展的存储计算第二十一ACM Transactions on Storage,Vol.号164、第二十一条。出版日期:2020年10月现有的大型应用程序可能需要大量的重新设计以利用存储器内处理,这需要大量的时间和精力。1.2我们的贡献在这篇文章中,我们介绍了纽波特,一个高性能和高能效的计算存储驱动器(CSD)开发的存储处理的全部潜力。纽波特配备了通用多核处理器和多GB的DRAM。据我们所知,Newport是第一款可以配置为运行类似服务器的操作系统(例如,Linux)。此功能使一般应用程序开发人员能够充分利用高级编程语言、现有工具和库,以最大限度地减少创建和维护在存储中运行的应用程序的工作量。这也允许应用程序开发人员轻松地将已经在主机操作系统上运行的大型应用程序移植到设备上,而无需更改代码(例如,通过使用Docker等容器技术[50])。Newport可配置为用作通用固态硬盘(Newport SSD)或能够原位处理数据的完整计算存储驱动器(Newport CSD)。设计和实施一个通用的可持续发展委员会是我们在这项工作中的首要贡献。我们将在文章的其余部分描述我们的工作我们在第2节中提供了有关SSD和CSD的背景。在第三节中,我们介绍了纽波特的硬件结构和软件框架第3节还详细讨论了Newport的设计和实现方面然后,我们将在第4节中探讨如何在存储设备级别有效地执行两种主要类型的AI应用程序,这些应用程序广泛使用大量视觉数据。另一个贡献是我们在第5节中对吞吐量和能效方面的性能进行了评估。结果证明了我们努力的有效性在第6节中,我们分析了最常见和最流行的商业CSD类型的成本,并在第7节中描述了相关工作以及研究原型和商业CSD的分类。最后,我们在第8节做一个简短的总结。2背景2.1闪存固态硬盘(SSD)固态驱动器(SSD)作为数据存储的主要方法广泛用于当今的计算机和存储系统。SSD提供比硬盘驱动器(HDD)高得多的顺序(随机)读(写)性能。此外,SSD可以采用更小的外形尺寸,具有更高的容量,消耗更少的静态功率,并且在冲击和振动方面具有更好的可靠性和性能。SSD的每比特成本仍然高于HDD,但差距正在迅速缩小,特别是随着四级单元(QLC)闪存的出现。QLC闪存单元每个单元存储4位值。每单元编码更多位增加了NAND闪存管芯的容量,而不增加芯片尺寸。负面影响是它通过误码率降低了可靠性。这些非凡的技术进步导致了SSD存储技术在私有云和公共云、企业数据中心,甚至消费者设备中的应用[36,52,73]。任何现代SSD都由两个主要组件组成:SSD控制器和非易失性存储介质-最常见的NAND闪存[12]。NAND闪存必须在写入数据之前进行擦除,并且在无法再使用之前只能承受有限次数的擦除。控制器运行固件来实现各种功能,以有效地管理NAND闪存在这些限制。例如,垃圾回收回收包含无效数据的块,以及确保闪存块均匀使用以延长SSD寿命的磨损均衡。闪存转换层第二十一J. Do等人ACM Transactions on Storage,Vol.号164、第二十一条。出版日期:2020年10月(FTL)将逻辑地址映射到物理地址,因此存储的逻辑视图与物理内存的内部管理分离存储介质通常被组织为以多个列或通道分组的NAND闪存管芯的二维阵列。闪存通道是用于SSD控制器和闪存芯片的子集(列)之间的通信的总线。芯片由多个块组成,每个块包含多个页面。擦除的单位是一个块,而读写操作都是在页面的粒度上完成的。为了从存储介质获得更高的I/O性能,通常采用通道和芯片级交织技术。当SSD控制器处理由主机发起的I/O请求时,它操纵用户数据和相关联的元数据,例如,加扰和解扰数据以提高误码率,实现诸如LDPC编码/解码的纠错码,以及添加端到端数据路径保护。多年来,SSD使用了不同类型的主机接口,从SAS和SATA等传统接口开始[20]。NVM Express(NVMe)是最新的标准主机接口协议,已被业界广泛采用NVMe是一种用于通过不同介质传输数据和优化NAND闪存存储的PCI Express(PCIe)目前是NVMe最常用的传输介质,而其他介质,如NVMe over Fabrics(例如,以太网),目前正在开发和标准化。NVMe协议为存储协议提供了一个高带宽和低延迟的框架-与传统的HDD相比,具有特定于闪存的改进。在选择适当的SSD技术时必须使用几个标准,例如价格,容量,性能,电源效率,数据完整性,可靠性和外形尺寸。这些标准的重要性将因目标应用程序和使用情形(客户端、企业、云、移动等)而异。目前,SSD行业面临着许多挑战。例如,SSD除了技术转向新的接口标准和存储介质的宏观力量之外,分离计算和存储的界限正在变得模糊,这要求开发新一代控制器。推动控制器技术变革的一些关键因素包括:NAND闪存单元密度在过去10年中从单级单元(SLC)、两级单元(MLC)、三级单元(TLC)和最近的四级单元(QLC)迅速增加[36,55]闪存技术从平面制造技术发展到3D制造技术,芯片密度增加到512 GB,最近达到1TB更高的NAND闪存接口速度ONFI 3/Toggle 2(400 MT/s)至ONFI 4/Toggle 3(800MT/s)更高的数据速率(例如,PCIe Gen4)和新协议(例如,以太网)更高的缺陷密度和更低的UBER(不可纠正的误码率)需要越来越强大的ECC引擎、复杂的RAID方案和端到端数据路径保护2.2计算存储驱动器(CSD)计算存储被定义为使数据能够在存储设备内处理而不是传输到主机服务器的中央计算元件的架构计算存储通过减少必须在存储平面和计算平面之间传输的数据量来减少输入和输出事务负载因此,它可以更好地服务于现代工作负载,如大容量大数据分析和人工智能任务,具有更快的性能和更好的数据中心基础设施利用率。·····经济高效、节能高效且可扩展的存储计算第二十一ACM Transactions on Storage,Vol.号164、第二十一条。出版日期:2020年10月计算存储的一个主要好处是更节能的数据处理和更高的系统范围吞吐量。计算存储从主机计算元素卸载工作,有利于将工作分散到存储驱动器上。在没有计算存储的情况下,例如在数据分析上下文中,主机发出的请求要求将来自存储设备的所有数据传输到它。然后,主机必须在执行其指定传递之前精简数据在计算存储方法中,存储介质在将数据移动到主计算层以进行处理之前采取使数据符合其与主机请求的相关性的初始步骤。为了进一步加快数据处理速度,CSD可以包括节能的多核处理器,它可以实现多线程或FPGA/ASIC硬件加速器。每个工作负载的主机计算指令减少意味着主服务器有更多的处理能力来支持其他工作负载。计算存储的另一个好处是,它使共享存储环境更有利于最需要性能的工作负载。通常,直接连接存储方法用于服务这些工作负载,以避免存储网络延迟,并通过将数据分散在许多设备上来增加吞吐量然而,这通常导致资源利用不足,并且还由于需要搜索更多设备以获得相关数据而引入进一步的延迟相比之下,计算存储允许应用程序同时移植到每个驱动器这提供了一个并行处理级别,以实现类似微服务的方法来跨所有单个驱动器运行这些应用程序这种同时处理数据的能力大大减少了定位数据和向主机提供所需结果的时间计算存储还可以帮助更长时间地利用现有网络基础设施,并真正扩展下一代网络。由于计算能力使存储能够首先处理更大的数据集,因此它利用了存储设备的更高I/O功能,并避免了网络对性能的限制。因此,网络互连对于计算存储来说不那么重要。因此,计算存储通过使多个应用的性能能够在相同的基础架构上加速而增加价值现代SSD具有专用的处理和存储器元件(例如嵌入式处理器、DRAM和闪存),以在用户数据上执行读取、写入和擦除命令,以及上述闪存管理功能。有了这些计算资源,一些项目[15,28,39,41,43,67,76]开始探索在存储设备本身内部运行用户定义和数据密集型计算任务(如数据库操作)的机会。虽然观察到一些性能和能源节省,但一些挑战阻碍了计算SSD的广泛使用和采用。首先,可用的处理能力受到设计的限制。低性能的32位实时嵌入式处理器和高延迟的存储DRAM需要格外小心的编程来运行用户代码,以避免性能限制。此外,需要灵活且通用的编程模型来容易地就地执行以高级编程语言(诸如C/C++)编写的用户代码该编程模型还需要支持多线程并发执行多个存储应用程序,使其成为复杂用户应用程序的高效平台。3纽波特CSD在本节中,我们将介绍一种新型的计算SSD,该SSD经过精心设计和解压缩,以克服传统SSD在存储处理方面的局限性。Newport(如图3所示)提供专用计算资源和完整的软件堆栈,用于用户应用程序的近数据执行。第二十一J. Do等人ACM Transactions on Storage,Vol.号164、第二十一条。出版日期:2020年10月图3.第三章。Newport CSD硬件采用2.5英寸外形规格。图四、Newport CSD的硬件架构3.1硬件架构存储内处理技术旨在用高效的处理引擎来增强存储设备尽管概念简单,但许多先前提出的CSD架构都无法提供令人信服的灵活性和效率。相比之下,Newport,一个基于ASIC的CSD architec-ture,提供了一个灵活的环境执行用户应用程序很少或没有修改。Newport支持本地处理,这意味着其控制器芯片除了实现企业级SSD功能所需的其他组件外,还包括一个专用的64位应用处理器子系统-所有这些都集成在单个ASIC芯片中。图4描述了描述Newport CSD控制器硬件架构的高级框图内部逻辑子系统可分为三组:经济高效、节能高效且可扩展的存储计算第二十一ACM Transactions on Storage,Vol.号164、第二十一条。出版日期:2020年10月前端子系统(FE):主机服务器经由高速串行主机接口(例如,SATA、SAS、PCIe/NVMe)。 Newport的FE子系统包括一个Gen34通道PCIePHY和控制器,为NVMe协议引擎提供支持。进一步向下的数据路径的AES-256 XTS加密/解密引擎,确保全磁盘加密功能性。 FE子系统使用四个32位嵌入式实时ARM ® M7处理器之一来执行FE固件。FE固件控制下的NVMe控制器接收、解包、检查完整性,并执行主机发送的NVMe命令然后将读写命令转换为对后端子系统的请求后端子系统(BE):其核心部件是一个运行BE固件的32位嵌入式实时ARM ® M7处理器,该固件主要包括闪存逻辑到物理地址转换层(FTL)、损耗均衡、垃圾收集和闪存可靠性管理[9,11,29,86]。硬件自动化快速释放缓冲区(FRB)收集和组织主机写入数据以优化写入延迟。相同的缓冲器用于收集和组织作为主机读取命令的结果从闪存介质读取的数据FRB架构确保全双工功能,以避免任何争用,并通过保持读写延迟恒定来保证QoSECC引擎用于检测和纠正闪存内或闪存芯片与SSD控制器之间的数据传输期间发生的错误,以满足数据存储可靠性要求。FE固件负责将主机数据分割成码字,码字还将包括校正码或奇偶校验。ECC提供的保护强度由编码速率决定,编码速率又转化为奇偶校验码的大小较低的码率提供更强的保护,但消耗更多的存储空间。这是一个重要的可靠性与为最终客户提供容量折衷通常使用的ECC算法是LDPC的变体[48,87],包括可变码率LDPC(VCR-LDPC)。内存接口控制器(MIC)是一个建立与闪存连接的模块存储介质被组织为闪存芯片阵列,每个闪存芯片包含多个设备-通常为4或8个,但对于最高密度产品多达16个。在该阵列中,每行连接到闪存通道。每个通道的连接通常是8位宽,其中一些实现方式选择控制器与闪存芯片之一之间的16位宽总线。数据和闪存命令都通过通道发送。连接到闪存通道的每个闪存管芯具有其专用的芯片使能(CE)信号。在每个通道中,总线将数据、地址和命令驱动到绑定到该通道的所有管芯。MIC逻辑相当复杂,包括两个ARM® M7处理器,每个处理器专用于8个闪存通道,总共16个闪存通道。决定通道数量时的典型权衡决定了最大驱动器容量与控制器芯片占用空间的关系。在这对嵌入式32位实时处理器中运行的固件转换BE固件发出的读写命令,并生成指向可编程有限状态机的低级命令,该可编程有限状态机在与TOGGLE或ONFI标准兼容的闪存接口处合成正确的控制信号[56]。计算子系统(CS):计算存储处理器子系统基于功能丰富的64位四核ARM® Cortex-A53(及其配套的ARM® quad NeonSIMD引擎),1 MB二级缓存,并支持高达16 GB的DDR4,2运行高达1.5 GHz。2注意,用于运行第5节中的实验的Newport CSD配备了8 GB DDR内存,其中6 GB仅用于运行用户应用程序。···第二十一J. Do等人ACM Transactions on Storage,Vol.号164、第二十一条。出版日期:2020年10月图五、Newport CSD的软件架构:(a)通过NVMe驱动程序的传统数据路径,用于通过PCIe总线访问非易失性存储介质。(b)PCIe总线上的TCP/IP隧道-主要用作控制路径。Newport架构中的所有子系统都通过高速互连总线连接,如图4所示。Newport CSD是一款企业级存储设备,符合行业标准规定的每种外形规格的功耗限制原位计算资源功率要求包括在由形状因子存储标准指定的功率包络中。相同的ASIC控制器用于开发符合不同外形规格的CSD,如M.2 22110、U.2和EDSSF E1. S,每种CSD都有自己的功率包络。例如,M.2 2210标准[57]要求最大功耗为8.25 W,而U.2形状因子可适应几种不同的功率包络(12 W,15 W和25 W)[27]。3.2软件栈图5所示软件栈的主要目的是实现无缝编程模型,该模型从在ARM®处理子系统上运行的64位操作系统(OS)开始。与复杂的嵌入式软件开发过程相比,Newport CSD使应用程序开发人员能够充分利用现有的工具,库和专业知识。Newport SSD/CSD与PCIe和NVMe标准100%兼容,并显示为标准PCIe设备(端点),然后在主机启动过程中显示为NVMe设备。Linux内核和根文件系统的配置决定了操作系统的功能集,就像在任何传统的基于Linux的计算系统中一样--不需要修改BIOS。软件堆栈层遵循标准开放系统互连(OSI)模型的推荐格式[8]。为了简单起见,我们只显示了一个连接到主机CPU的Newport CSD。在Newport CSD上,引导过程首先启动启用基本SSD功能的固件。这是通过将适当的代码加载到在整个控制器中嵌入少量32位实时处理器施行本经济高效、节能高效且可扩展的存储计算第二十一ACM Transactions on Storage,Vol.号164、第二十一条。出版日期:2020年10月嵌入式控制器(如图4所示)是为了实现固态驱动器的基本功能,例如,读和写命令、垃圾收集、损耗均衡以及许多其他关键功能-没有用户应用程序在这些处理器上运行。然后,固件初始化设置的一部分包括在应用处理器的存储器空间中加载Uboot模块和Linux OS映像并执行Uboot代码。Uboot代码使用所需配置引导Linux OS,包括用于访问闪存的块设备驱动程序模块和用于提供网络连接的TCP/IP隧道设备驱动程序模块。这些模块将在Linux操作系统引导时注册。在Newport CSD中,我们开发了一个TCP/IP Tunnel over NVMe/PCI协议,该协议将在CSD的Linux启动和运行时建立TCP/IP隧道连接的更详细说明将在本节后面提供。如图5所示,主机和Newport CSD都可以访问存储在NAND闪存上的数据。从主机侧,数据访问通过主机的NVMe设备驱动器、CSD的前端(PCIe phy和NVMe控制器)和CSD的后端组件发生NAND Flash媒体控制器和接口。该路径如图5(a)所示。从Newport CSD端,通过自定义块设备驱动程序提供数据访问,该驱动程序作为一个模块添加到Newport的操作系统内核中。块设备驱动程序通过两个邮箱直接与Newport的后端通信。这些邮箱是块设备驱动程序向SSD控制器后端发送闪存读取和写入命令的通信链路,也是后端发回完成命令的通信链路。为了达到最大的数据速率,我们的块设备驱动程序允许从后端到共享DDR存储器的基于分散如上文在引导过程的描述中所述,CSD软件栈的关键层是专有块设备驱动程序(参见图5),其与访问闪存介质的控制器内部硬件接口,并允许由操作系统或用户应用程序发起的基本读写操作。部署传统的块设备驱动程序允许在纽波特上运行的操作系统通过标准文件系统访问存储的数据。因此,应用程序可以在文件的概念中处理数据,这是最方便和最常见的编程方式。根据目标应用程序和使用情形,可以使用两种方法从主机和NewportCSD访问存储。一种简单的方法是将存储系统划分为两个(或多个)单独的分区,一个可用于主机,另一个可用于Newport的操作系统和文件系统。当不需要通过存储器在主机和纽波特之间共享或并发访问数据时,可以有效地使用这种方法。作为替代方案,可以使用集群和分布式文件系统,如GFS2 [72]和OCFS2 [22],允许主机和Newport共享相同的存储分区并同时访问它们,这要归功于文件系统提供的锁定机制。为了同步主机和Newport文件系统,分布式文件系统需要基于网络的通信链路来交换控制消息。除了主机和Newport文件系统之间的同步要求外,所提出的TCP/IP隧道还提供了灵活有效的方法来使用标准任务分发框架,如MPI [26],Hadoop [68]和OpenMPI [25]。TCP/IP网络连接还使用户能够通过“ssh”等协议直接访问Newport CSD的Linux操作系统。它提供了一种方便的机制,手动或使用脚本在Newport CSD上调用和运行应用程序。TCP/IP隧道将Newport CSD的本质改变为具有可远程访问的特定IP地址的独立处理节点(它可以是主机,甚至是网络中的其他计算机)。因此,可以将交叉编译的二进制文件发送到Newport CSD(甚至在Newport CSD内部编译源代码),然后运行二进制文件。Newport CSD具有通过TCP/IP隧道连接到互联网的能力。这允许用户使用标准Linux命令行下 载 或 安 装 任 何 应 用 程 序 。 TCP/IP 链 接 还 支 持 自 动 操 作 系 统 更 新 机 制 , 如dpkg.packaging.system或apt-get。第二十一J. Do等人ACM Transactions on Storage,Vol.号164、第二十一条。出版日期:2020年10月总而言之,主机和Newport CSD之间有两种通信机制(1)NVMe设备接口用于访问通过PCIe总线连接的非易失性存储介质-仅用作数据路径-以及(2)基于PCIe总线上的TCP/IP隧道的面向网络的连接-主要用作控制路径。为了更好地了解每种通信机制的效率,我们使用广泛使用的网络和存储I/O性能测量工具测量了它们的读写性能:FIO3用于NVMe接口,iPerf4用于TCP/IP连接。针对此测量进行了调整的Newport CSD在NVMe/PCIe总线上提供了约4,000 MB/s的峰值原始读/写性能和约1,600 MB/s的平均顺序读/写性能目前,TCP/IP隧道连接(控制路径)的运行速度约为210 MB/s。TCP/IP连接与NVMe路径相比的性能差异可以由两个因素来解释:(1)存在三个分组化层(PCIe、NVMe和TCP/IP),这共同增加了开销,以及(2)从位于Newport DDR存储器中的共享缓冲区复制数据的效率低下值得注意的是,我们目前正在优化各种软件堆栈组件,以减轻这种开销和效率低下。此外,CSD平台的灵活性为探索诸如以内容为中心的网络协议之类的其他通信协议打开了大门然而,尽管这种低效率,这种计算存储方法提供了一种可扩展的解决方案,增强了系统性能和能源效率,如第5节所述。3.2.1逐步运行应用程序 在本节中,我们将概述开发人员在Newport CSD上执行通用应用程序所需的步骤,以及对上面详细介绍的底层通信的一些见解。当主机打开时,Newport CSD开始引导自己的Linux操作系统。启动后,隧道应用程序启动,以允许主机和原位Linux操作系统之间的通信。这允许用户通过TCP/IP进行通信和发送数据(如有必要)。在这一点上,用户有许多关于如何执行应用程序的选项。重要的是要记住,对于原位执行,必须在设备上编译应用程序,或者如果主机架构与CSD不兼容,则使用某种类型的交叉编译技术应用程序有许多访问主机和原位文件的方法,如本节中明确说明的。如果需要,应用程序通信可以利用套接字、MPI和其他众所周知的库。在执行应用程序本身时,CSD类似于异构集群上的独立计算机。4应用4.1相似性搜索搜索类似的视觉内容可能是一项艰巨的任务,特别是在数据激增的情况下。相似性搜索是一个两步算法,能够分析这些大的数据集,以检索相似的内容,给定的输入查询。它利用深度神经网络的强大功能从数据中提取特征并将其存储到向量中。而不是从原始数据中找到类似的内容, 它在特征向量空间中应用K最近邻(KNN)算法。该算法的第一部分(图1(a)),标题为离线阶段,主要负责从一组图像中提取基本特征。这些特征通常表示为从深度神经网络的最后一个隐藏层收集的向量。一旦通过相似性搜索管道中的离线阶段获得了所有数据集图像的向量(图1(a)),3https://github.com/axboe/fio。4https://iperf.fr/。经济高效、节能高效且可扩展的存储计算第二十一ACM Transactions on Storage,Vol.号164、第二十一条。出版日期:2020年10月∈d∈下一步是进行搜索阶段以在多维向量空间中找到k个作为获得前k个最近向量的最直接的方法,我们可以使用一种强力方法,该方法精确且详尽地计算查询向量与数据集中每个其他向量之间的所有向量距离。然而,计算的难度向量距离的增长与数据的大小和维度成比例,这使得蛮力搜索的成本要高得多。作为一种避免在查询时计算到所有向量的距离的必要性的方法,多维空间被划分为多个单元,并以倒排文件索引(IVF)的形式呈现[69]其中属于同一单元的数据向量被存储为称为倒排表的平面数组。这个倒排索引结构(称为IVF-平面)保存指向所有倒排列表的指针,提供对其中任何一个的快速访问。一旦给出查询,就扫描与查询向量最相关的倒排列表以找到其最近的邻居向量。4.1.1问题陈述。给定d维查询向量xRd和基集向量的集合Y=[yi] i=1:n(yiRd),平面搜索方法计算查询向量和基集向量之间的完整成对L2距离,而不对它们进行编码;即,我们可以搜索x的k个最近邻居:LFlat=k-ar <$mini=1:nd<$x− yi<$2.(一)然而,由于向量之间的大量距离计算,这种蛮力方法可能非常昂贵。相比之下,本文中考虑的IVF-Flat索引并不复杂,因为我们仅计算查询与基于粗略量化器f的基集向量子集之间的距离,f定义为:f:Rd→C→Rd,(2)其中C是在离线阶段通过聚类基集向量获得的一组粗质心。 换句话说,d维向量空间被划分为|C|单元格,因此基集向量Y被分组为|C |IVF-Flat索引中的倒排列表。F=p-ar <$minc∈C<$x−c<$2 (3)LIV F−Flat = k-ar <$mini=1:nds. t. f(yi)∈LIV F<$x−yi<$2(4)探测参数p是我们在搜索过程中考虑的粗糙级质心的数量。利用IVF-平坦的相似性搜索在两个步骤中执行-首先选择相关单元(等式(3)),然后通过线性扫描属于所选单元的倒排列表来进行平坦搜索(等式(4))。因此,在计算期间执行的成对距离计算的数量搜索减少了p/|C|.4.1.2批量相似性搜索。实际上,在查询时,相似性搜索应用通常维护存储在存储器中的相应倒排列表中的数据向量。但是,随着数据集大小的增长,将所有相关数据保留在内存中变得极其困难一下子一个常见的解决方案是在闪存SSD上使用虚拟内存和分页来扩展可见内存的数量。虽然在经济上具有吸引力,但如果需要为不同的查询向量多次将相同的倒排列表加载到内存中,则该解决方案可能导致搜索吞吐量性能较差(有关更多详细信息,请参见第5.3.15计算矢量距离有许多不同的方法。规范距离度量是欧几里德距离(也称为,L2距离),与其他流行的,如余弦,曼哈顿,Jaccard和卡方度量。在这篇文章中,我们重点讨论了欧几里得度量。第二十一J. Do等人ACM Transactions on Storage,Vol.号164、第二十一条。出版日期:2020年10月−∈–一种更有效的方法是将数据集划分为更小的批次,并收集批次结果以生成最终结果。这种方法在下文中被称为批量相似性搜索(BSS)。它首先将整个数据集拆分为较小的批次,然后在离线阶段在一个批次上构建一个倒排索引结构(因此每个批次都可以适合内存)。如果我们假设基集Y被分成[Yj]j=1:b批,则等式(2)、(3)和(4)被重写为:fj:Rd→Cj<$Rd,(5)LIVFj=p-ar <$minc∈Cj<$x−c<$2,(6)LIV F−Flatj = k-ar <$mini=1:nds. t. f(yi)∈LIV Fj<$x− yi<$2。(7)在搜索阶段,一旦给定查询向量,就针对第一IVF-平坦执行相似性搜索。在从第一批中找到k个最近的邻居之后,将下一个IVF平台加载到存储器中,并且执行搜索以针对第二批找到另一组k个换句话说,BSS方法涉及在对每个批次执行相似性搜索之后更新k个最近邻居,并且最后,我们从整个数据集中获得k个最近邻居BSS方法的伪代码具有查询向量x和一组IVF-Flat索引I,b整个数据集的批次如算法1所示。算法1:批量相似性搜索输入:(x,I=[I1,.,Ib])输出:LIV F FLAT函数BBS(x,I):LIVF−FLAT={}对于每个Ij[I1,...,Ib] do负载(Ij)Lj=Sea
下载后可阅读完整内容,剩余1页未读,立即下载
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)