注:
Pipeline机翻为管道,实际为流水线,流程的意思
INTRODUCTION
因为在先进设备上运行的百万兆级计算实验,数据压缩对于科学研究越来越重要了。例如最近的气象研究,以1km*1km为分辨率进行气候模拟,每16秒产生260TB的数据。当产生的数据进入并行文件系统或辅助存储系统来确保长期存储访问时,有限的存储容量以及IO带宽会带来很大的挑战。
科学家们的目标时大幅减少它们的数据大小来缓解这个问题,他们也担心数据压缩的质量。一般的数据压缩方式,包括传统的基于小波的方法以及新提出的基于神经网络的方法,被广泛应用于图像处理领域,可能会导致重要科学现象的丢失,因为他们没有关注重构数据的可量化误差范围
过去十几年,有损压缩已经被提出与应用于减少实验数据的同时控制数据失真。依靠于原始数据的去相关方式,现有的压缩器可以被分为基于预测的以及基于转换的压缩器。这些压缩器可以允许用户在压缩过程中去确定一个误差边界,保证原始数据与解压缩后的数据之间的误差严格限制在这个边界之下。在这篇文章中,主要关注于基于预测的方式,因为基于转换的方法可以通过相应变化转变为预测的方式
必要性与困难
虽然现有的基于预测的方法,如SZ[6],[20],[21]是通用的,可以应用于各种场景,但在给定特定的数据集或误差边界要求时,它们可能无法达到最佳的质量和性能。最佳拟合压缩方法从来都不是通用的,即使对于相同的数据集也是如此,因为压缩效率也会受到所需误差范围的影响。例如,带有Lorenzo预测器的SZ-1.4[21]在低误差范围内显示出非常好的压缩比,但它存在低质量和高误差范围的伪像的问题,其中基于回归的预测器[6]或基于插值的预测器[8]的方法已被证明效率更高。同样,GAMESS量子化学包[22]生成的数据显示出周期性的缩放模式,其中基于模式的预测器在压缩速度和压缩比方面都有明显的改进[23]。因此,允许自定义基于预测的错误有界有损压缩模型的松耦合压缩框架对于在实践中为用户优化压缩质量和性能至关重要
开发一个模块化错误控制的压缩框架,可以适应不同的科学数据集是非常具有挑战性的。首先,现有的压缩器有不同的设计,很难统一,因此设计这样的框架需要对它们的算法和底层实现进行深入的理解和分析。其次,统一压缩框架中的阶段应该提供不同的变化,以允许对不同的压缩方法进行泛化,这对设计相应的接口提出了挑战。第三,在提供通用性和模块化的同时,很难保留性能,因为优化通常来自特殊性。最后但并非最不重要的一点是,为应用程序编写有效的压缩器具有挑战性,因为现有的压缩器已经得到了很好的优化,其中一些是专门设计的(例如,GAMESS 数据的 SZPastri)
做出的工作
在本文中,我们提出了一个模块化和可组合的框架——SZ3——它可以很容易地按需创建新的错误有界有损压缩器。SZ3 对基于预测的压缩管道进行了模块化抽象,以便可以独立开发和采用模块。具体来说,用户可以通过精心设计的模块自定义压缩管道中的任何阶段,包括预处理、预测、量化、编码和无损压缩。基于这些自定义模块,SZ3 允许用户组合自己的压缩器(或压缩管道)以适应不同的数据特征和要求,从而以最小的努力实现高压缩质量和性能。这种可组合的设计能够提供各种有用的支持,包括逐点相对误差边界(基于对数变换的预处理器[24])、特征保持压缩(元素量化器[25])和速度比权衡(模块旁路)。尽管 SZ3 专为笛卡尔网格中的数据设计,但通过应用将数据重新排列为一维阵列的线性化,SZ3 也可以处理非结构化网格中的数据。我们总结了我们的贡献如下
1我们设计并开发了第一个通用的基于预测的误差有界有损压缩框架——SZ3。考虑到模块化和自适应性,SZ3 可以轻松创建和定制各种基于预测的误差有界有损压缩器,这些压缩器可以在不同的用例中获得高压缩质量。这对于科学数据压缩器的开发人员和用户至关重要,因为这些压缩器有望处理具有不同特征的科学数据,并在实践中满足不同的用户需求。
2.我们为 GAMESS 量子化学包生成的数据开发了一个使用 SZ3 的新压缩器。具体来说,我们提出并实现了一个量化器,它显着减少了不可预测数据的存储开销。由该量化器和新添加的无损压缩阶段组成,与现有的最佳方法相比,所开发的压缩器在压缩比方面提高了 18%。
3.我们使用 SZ3 开发了一个有效的压缩器,用于从高级 Photon 源仪器收集的数据。注意到最佳拟合压缩管道与目标误差要求不同,我们组合了一个自适应压缩管道,可以在任何比特率下获得最佳的速率失真。
4.我们以低开销提供高可用性的方式实现 SZ3。通过利用高级模板编程和编译时多态性,SZ3 在提高可持续性和功能的同时显着缩小了 SZ2 的代码库。我们还提出并开发了一种管道映射技术,将组合管道映射到优化的实现。SZ3 的有效性通过对六个不同的科学数据集的广泛实验得到验证,这表明与现有技术相比,由 SZ3 组成的压缩器实现了可比的压缩比和吞吐量
SZ3 的目标最终用户包括压缩专家和非专家。对于前者,SZ3 允许重用难以实现的压缩模块(例如 Huffman 编码器)和效用函数(例如多维迭代器),使得压缩专家只需要实现模块的子集来开发新的压缩器。例如,我们通过仅实现一个新的量化器来开发 GAMESS 数据的新压缩器,大多数实现重用现有代码。对于后者,SZ3 既可以用作对多个广泛使用的内置压缩管道的引用,也可以与 OptZConfig [26] 等高级工具配对,以自动选择或建议适当的模块实例集。因此,我们将 SZ3 设想为一个非常有用且实用的工具,具有广泛的用户。
本文的其余部分安排如下。在第 2 节中,我们讨论了相关工作。在第 3 节中,我们介绍了 SZ3 框架的设计和模块。在第 4 节和第 5 节中,我们描述了如何利用所提出的框架为 GAMESS 和 APS 数据创建有效的压缩器。在第 6 节中,我们展示了对不同管道的可持续性和评估的比较。在第 7 节中,我们总结了未来工作的愿景。
相关工作
随着更强大的高性能计算 (HPC) 系统和高分辨率仪器,科学数据的体积和生成速度近年来经历了前所未有的增长,导致数据存储、传输和分析问题。与计算资源的快速演化相比,I/O 系统的开发严重不足,在大多数情况下仍然存在瓶颈。数据压缩被认为是缓解这种瓶颈的直接方法,文献中提出了许多方法来解决这个问题。
无损压缩器[27]、[28]、[29]、[30]、[31]确保压缩过程中没有丢失信息。尽管无损压缩器在许多领域取得了成功,但由于几乎随机分布的尾数,无损压缩器在浮点科学数据上压缩比较低。以前的工作 [32] 表明,当直接应用于大多数浮点科学数据集时,最先进的无损压缩器可以导致仅 2 的压缩比,而科学应用程序通常需要对其数据减少 10 以上 [33]。
有损压缩器[2]、[3]、[4]、[5]、[34]、[35]为高压缩比权衡数据质量提供了灵活性,但它们可能会导致比用户的期望更高的失真。无界失真可能导致事后数据分析甚至错误发现中的意外行为,导致信任解压缩数据的分析结果的风险
与传统的有损压缩相比,误差有界有损压缩已迅速发展,通过减少科学数据的大小,同时保证可量化的误差边界来填补空白。基于预测和变换的模型是设计误差有界有损压缩器最流行的模型。ZFP使用近正交变换对数据进行去关联,并使用嵌入编码对变换后的系数进行编码。MGARD [15]、[16] 是另一种依赖于基于变换的模型的压缩器。它利用小波理论和L2投影进行数据去相关,然后进行线性缩放量化、可变长度编码和无损压缩。它进一步用于在保留某些派生量 [17]、[36]、[37] 的同时压缩数据。在最近的压缩器[38]中,利用高阶奇异值分解(HOSVD)来提高低精度情况下的压缩比,但由于分解昂贵,计算开销大几个数量级。
根据最近的研究[39],SZ[6]、[20]、[21]被认为是科学计算界领先的基于预测的有损压缩器之一。SZ 遵循 4 步管道来执行压缩,即数据预测、量化、霍夫曼编码和无损压缩。已经做出了重大努力来实现基于该管道的新特征或功能。例如,在[24]中,预处理步骤中使用对数变换将逐点相对误差界压缩问题转化为绝对误差界压缩问题,然后由SZ压缩管道求解。在[25]中,作者根据提取临界点的方式推导出元素误差边界,并利用SZ压缩管道和元素量化来确保这些临界点保留在解压缩数据中。在[23]中,作者通过使用基于模式的预测器来调整管道,以更好地利用数据中的相关性和预定义的固定霍夫曼树进行更快的编码。还尝试使用 ZFP 中的近正交变换作为管道 [19] 中的预测器。然而,上述所有工作都是在紧密耦合的设计中开发的,因此压缩管道不能按需调整,因此不能依次适应用户的不同要求或不同的用例。相比之下,所提出的 SZ3 框架提供了一个突破、灵活、模块化的框架,可用于非常有效地适应不同的用例。此外,SZ3 可以作为构建块,有利于开发具有更复杂工作流程的新压缩器,包括在线选择 [40]、参数调整 [7] 和配置搜索 [26]
尽管已经花费了许多努力来抽象有损压缩,但它们中的大多数都专注于实现对现有压缩器的自适应选择。例如,SCIL [41] 尝试跨压缩器抽象,并作为元压缩器,为各种现有算法提供后端。LibPressio [42] 为不同的压缩器提供了一个通用的 API,以允许以可扩展的方式轻松集成有损压缩。相反,SZ3 在基于预测的压缩模型中分离和抽象阶段,允许以细粒度轻松创建新的压缩器,而不是选择现有的压缩器。据我们所知,这是第一次尝试构建一个通用框架,允许用户根据自己的实际需求轻松定制自己的压缩器。
SZ3设计概述:图的左侧显示了具有SZ3模块的基于预测的压缩管道的抽象和关键功能;图的右侧显示了这些模块的常见实例,以及五个领先的压缩器是如何由这些实例组成的
就是数据预处理,预测,量化,编码,字典压缩后成为压缩数据
SZ3模式化压缩框架
在本节中,我们将介绍SZ3的设计和实现。考虑到模块化,SZ3以最小的开销轻松定制基于预测的压缩管道
3.1设计概述
图1说明了SZ3的设计概述。压缩过程抽象为五个阶段(显示为虚线框),每个阶段作为一个单独的模块。橙色框描绘了每个模块的关键功能,绿色框说明了几个相应的实例。压缩器是通过识别由每个模块的实例组成的压缩管道来实现的。该图展示了为不同目的设计的五个领先的压缩器,即FPZIP[14]、SZ1.4[21]、SZ2[6]、SZ-Pastri[23]和cpSZ[25],使用这种抽象组成(见实线),这表明了抽象的通用性。例如,FPZIP 压缩管道绕过预处理器并利用 Lorenzo 预测器进行数据去相关,然后进行残差编码,以确保误差控制和算术编码以减少大小。在下面的文本中,我们将详细介绍 SZ3 中的模块化设计以及模块的示例实例。
3.2模块化
在本节中,我们将讨论 SZ3 中的五个模块,即预处理器、预测器、量化器、编码器和无损压缩器,模块实例已被证明对科学数据集有效。开发人员可以编写自己的模块实例并将它们插入到压缩管道中,为他们的数据集设计基于预测的误差有界有损压缩。由于空间限制,我们为每个模块只展示了最重要的函数和几个具有代表性的实例。每个模块的详细接口在附录 A 中列出,可在 http://doi.ieeecomputersocietyorg/10.1109/TBDATA.2022.3201176。 的计算机学会数字图书馆中找到。
预处理器
预处理器(参见附录 A.1,可在在线补充材料中找到):预处理器用于处理输入数据集,以便在执行实际压缩之前实现高效率或多样化的要求。预处理器中的关键函数,即预处理,以原始数据和压缩配置作为输入,然后以就地方式转换数据并相应地更改压缩配置。如果用户想要保持原始数据,而预处理器需要更改数据,则需要一个单独的缓冲区来执行预处理。基于实际设计,后处理函数要么反转预处理过程,要么被省略
实例:
错误有界有损压缩器的典型预处理器是用于启用逐点相对误差边界的对数变换 [24],其中数据被转换为对数域并用从逐点相对变换的绝对误差界进行压缩。此外,对于基于模式的预测器,SZ-Pastri [23] 可能需要预处理步骤来识别适当的参数,例如如果没有提供块大小和模式大小。在第 5 节中,我们进一步利用预处理器来改变数据的布局以获得更好的压缩比。这是基于我们观察到,当被视为 2D 或 1D 数据集(稍后将详细介绍)时,一些 3D 数据集将具有更好的压缩比。
预测器
(参见附录 A.2,可在在线补充材料中找到):预测器是基于预测的压缩器的关键组成部分,它根据数据去相关的不同模式执行值预测。预测器界面有两个重要的功能,即预测和保存/加载。预测函数使用多维迭代器根据底层预测器的特征输出预测值(详见第 6.1 节)。有关预测器的必要信息,例如回归预测器[6]、[7]的系数将在保存函数中记录。在解压缩过程中,将调用加载函数来重建预测器。
实例:
Lorenzo预测器[43]及其高阶变化[21],它根据每个数据点的邻居数据点对每个数据点进行多维预测,是SZ[21]和FPZIP[14]等有损压缩器中使用的经典而强大的预测方法。在[6]中,提出了一种基于回归的预测器来构造超平面,并使用超平面上的点作为预测值,当用户指定的误差界较高时,显著提高了预测效率。我们进一步实现了一个继承自该接口的复合预测器实例,该实例可以由使用不同预测算法的多个预测器组成。这需要每个预测器的误差估计函数,该函数将用于确定给定数据块的最佳拟合预测器。[6]和[18]中的统计方法被推广为SZ3中的估计准则。利用复合预测器,可以很容易地实现具有多个预测器的多算法设计
量化器
(参见附录 A.3,可在在线补充材料中找到):量化器用于近似由具有较小可数集的预测器生成的预测误差,以减少它们的熵,同时尊重误差界限。作为压缩管道中引入错误的唯一模块,量化器决定了解压缩数据中的最终错误是如何控制的。量化函数是量化器中最重要的函数,其中预测误差根据原始数据值及其预测值进行量化。在解压缩过程中,解压缩后的数据值由恢复函数计算,该函数反转量化函数中的步骤。量化器模块还负责编码/解码不可预测的数据,即数据落在可数集中。这是在保存/加载函数中实现的。
实例:
线性缩放量化器[21]是一种广泛使用的量化器,可以在有损压缩中实现绝对误差控制。特别是,这个量化器构造了一组大小相等的连续 bin,每个 bin 的长度误差界是两倍。然后,预测误差将被翻译成包含它的 bin 的索引。超出范围的预测误差被认为是不可预测的,将分别编码和存储。此外,对数尺度量化器[44]用于调整箱的大小,以获得更集中的误差分布,元素量化器[25]用于为每个数据点提供细粒度的误差控制。
编码器
(见附录 A.4,可在在线补充材料中找到):编码器是一种无损方案,用于减少量化器生成的整数索引(或符号)的存储。编码器模块涉及两个基本功能——编码和保存/加载。编码函数将量化的整数从量化器转换为压缩的二进制格式;与其他模块类似,编码器模块有一个解码函数,在解压缩过程中执行反向过程。该模块还具有保存/加载函数来存储/恢复元数据,例如 Huffman 树。
实例:
霍夫曼编码器 [45] 是一种经典的可变长度编码算法,它使用更少的位来表示更常见的符号。该编码器首先使用贪心算法根据输入数据的频率构建霍夫曼树,根据树生成码本,然后使用码本压缩数据。SZ-Pastri [23] 中使用的固定 Huffman 编码器是 Huffman 编码器的变体,它使用预定义的 Huffman 树而不是动态构建树以消除树构建和存储的成本。算术编码器是另一种广泛用于数据压缩的编码器,它将当前信息表示为范围,并将整个数据编码为单个数字。
无损压缩器
(参见附录 A.5,可在在线补充材料中找到):无损压缩器用于进一步缩小编码器产生的压缩二进制格式的大小,因为基于熵的编码器可能会忽略数据中的重复模式,从而导致次优压缩比。SZ3 中的无损压缩器模块主要充当最先进的无损压缩库的代理。该模块调用外部库来压缩来自编码器模块的输出,该模块具有压缩和解压缩接口。
实例:
我们在 SZ3 中提供了便携式接口,以与最先进的无损压缩器集成,包括 ZSTD [28]、GZIP [27] 和 BLOSC [31]。由于无损压缩器是附加到前一阶段的备用模块,因此包含和集成新的无损压缩例程也相当容易
3.3压缩管道组合
在SZ3中,压缩管道可以通过识别模块的实例并将它们放在一起来组合。
算法 1 显示了如何使用给定的预处理器、预测器、量化器、编码器和无损压缩器的通用错误有界有损压缩器的算法。此外,SZ3 采用编译时多态性(参见第 6.1 节),以便用户可以切换实例而无需同时修改压缩函数。这使得 SZ3 对不同的用例具有高度适应性,在压缩器开发方面的努力显着减少。
使用通用压缩器的算法,压缩开发人员或用户可以通过设置管道中的每个组件轻松定制自己的压缩器。我们说明了如何利用SZ3实现三个现有的压缩器,即图2a、2b和2c中的SZ-pwr[24]、SZ-2.1[6]和SZinterp[8]。我们进一步展示了如何使用 SZ3 来实现具有不同特殊性的定制压缩器。图 2d 由一个定制的压缩器组成,只有线性缩放量化器和算术编码器。通过跳过当目标比特率为中等或高时计算成本较高的预测和无损压缩阶段,该压缩器可以以压缩比为代价产生更高的压缩吞吐量。图 2e 中的压缩器利用了二阶 Lorenzo 预测器 [21],当目标比特率相对较高时,它显着提高了预测精度(同时引入更多的计算)。它还排除了提供较小尺寸缩减的无损压缩器,同时带来了较高的计算开销。因此,它通常会导致更好的速率失真,压缩吞吐量较低。基于转换的压缩器如图 2f 所示,以证明我们框架的通用性。这种压缩器广泛应用于图像处理和某些特定科学领域,因为它保留了在某些事后数据分析(如功率谱)中很重要的转换系数。如这些示例所示,用户可以通过简单地定义所需的组件并在组合压缩器时使用它们来重用或替换 SZ3 中的任何阶段。
4 为 GAMESS设计一个SZ3
在本节中,我们将介绍如何使用 SZ3 创建一个新的压缩器,从而提高从现实世界科学模拟 GAMESS [22] 生成的数据的压缩比。在下面的文本中,我们首先介绍 GAMESS 数据及其当前的压缩器——SZ-Pastri [23],然后介绍我们对量化整数和新定制方法的表征。最后,我们根据 GAMESS 中的三个代表性数据字段评估压缩比和速度。
4.1 GAMESS数据和SZ-Pastri
CompressorQuantum化学研究人员通常需要通过求解涉及所有化学系统信息的Schr€odinger微分方程来获得波函数。波函数需要由两个电子排斥积分(ERI)构造,这需要太大的内存容量才能在模拟中在运行时保持。一个简单的解决方案是在模拟过程中在需要时复制 ERI 数据集,尽管由于生成 ERI 数据的成本相当昂贵,这将显着延迟模拟。在我们之前的工作中,我们开发了一种高效的误差有界有损压缩器,称为SZ-Pastri[23],它可以在内存中压缩ERI数据,并在模拟的每次迭代中解压缩它。这种方法可以有效地避免 ERI 重新计算成本,从而提高整体性能。SZ-Pastri 利用 GAMESS 数据集中存在的周期性模式,因为 ERI 值是按顺序计算的,并且依赖于电子云的形状和距离。具体来说,SZ-Pastri 识别周期性模式并将其用作每个块的缩放系数,以实现准确的数据预测。使用图 3,我们给出了一个例子来进一步说明 GAMESS ERI 数据集的缩放模式数据特征。
请注意,化学壳具有特定的名称,例如,s;p;d;f,取决于总角动量,示例中soðddjddÞ 表示由 d、d、d、d 壳形成的 ERI 块。如图所示,相邻数据值在整个数据集中根本没有平滑。然而,在将整个数据集拆分为许多小块(每个小块有 36 个数据点)后,我们注意到不同的块可以根据缩放系数很好地重叠。也就是说,我们只需要记录一个数据块,因为它们恰好出现,然后使用它们预测所有其他具有计算缩放系数的数据块。与现有的严重依赖相邻数据点平滑度的通用压缩器 [6]、[13] 相比,这会导致显着的性能提升。在绝对方面,SZ-Pastri 实现了比现有最佳压缩器 2:3 的压缩比,同时保持科学家所需的精度 [23]
4.2数据表征和管道定制
我们首先描述了SZ-Pastri的量化整数,这是最终压缩比影响最大的因素。为了实现正确的解压缩,SZ-Pastri需要量化和存储周期模式和块尺度的信息。因此,SZ-Pastri 中的量化整数由三个组件组成,这些组件分别由数据、模式和尺度计算。如图 5a 所示,基于模式的预测器的量化整数分布以 0 为中心,这表明预测精度非常高,压缩比高。然而,量化整数的很大一部分(数据 20%)落在量化范围(在此设置中为 64)之外,这些数据被称为“不可预测”。这些数据需要额外的存储机制,以便在解压缩过程中正确恢复。在 SZ-Pastri 的原始设计中,它们直接被截断和存储基于用户指定的错误,这未能利用数据中的相关性来实现高压缩,尽管获得了相对较快的压缩率。
基于这些观察结果,我们利用专门的量化器来处理不可预测的数据,提高了SZ-Pastri的压缩效率。受广泛应用于基于变换的压缩器[13]、[46]的嵌入编码方法的启发,我们以位平面的顺序存储数据,而不是直接应用截断。位平面表示对应于数据二进制表示中给定位位置的一组位。由于小数据值仅在不太重要的位平面上具有有意义的位,因此由于连续的 0s,相对显着的位面将产生良好的压缩比。与[13]类似,我们首先将不可预测的数据预测差异的指数与将浮点数据转换为整数的误差界的指数对齐。然后按照位面的顺序记录这些整数,即从最重要的位面到最不重要的位面。与直接截断相比,这种编码方法在这个阶段不会改变编码的大小;然而,当采用无损压缩时,其压缩编码格式将有望获得更好的压缩比。由于这个量化器特别注意不可预测的数据存储,我们在整篇论文中将其命名为 Unpred-aware Quantizer。为了利用这种方法,我们还在组合压缩管道中添加了一个无损阶段,如图 4 所示。这个新压缩器称为 SZ3-Pastri,因为它使用 SZ3 框架优化 SZ-Pastri。
4.3评估结果
我们评估了我们的方法,并使用 GAMESS 中的三个代表性字段将其与 SZ-Pastri 及其变体(配备无损压缩的 SZ-Pastri)进行比较。除非另有说明,本文中的所有实验都是在 Argonne 国家实验室的 Bebop 超级计算机 [47] 上进行的。Bebop有664个Broadwell节点,每个节点都配备了两个Intel Xeon E5-2695v4处理器,共包含36个物理核,DDL4内存128 GB。
比特率等于bits/cr,其中bits是原始数据表示中的位数(例如,单精度为32,双精度浮点数据为64),cr为压缩比。PSNR与对数尺度下解压缩数据和原始数据的均方误差成反比。较低的比特率和更高的 PSNR 表明更好的压缩质量。根据该图,SZ3-Pastri 在几乎所有比特率上都导致最佳率失真。例如,与 SZ-Pastri 及其无损变化相比,ðffjffÞ 数据集上压缩比的改进通常分别为 40% 和 20%。我们还在表 1 中展示了三种方法在所需的绝对误差容差(根据领域科学家为 1E10)下的精确压缩比和速度。与原始 SZ-Pastri 相比,SZ3-Pastri 在要求下显着提高了压缩比。然而,它的性能下降,这是由于嵌入在不可预测的数据(即 Unpredaware Quantizer,它提高了压缩比)和最终无损压缩造成的。
5用SZ3来给APS数据压缩
使用 SZ3 为 APS 数据扩展有效的压缩器,然后我们利用我们的 SZ3 框架为高级 Photon 源 (APS) 获得的 X 射线断层扫描数据创建自适应压缩管道。与上一节类似,我们首先介绍APS数据,然后是数据表征和压缩管道定制以及评估
5.1 APS data
x射线层析成像是主要的高分辨率成像技术,它利用了同步源提供的相干性。然而,与传统的微观技术相比,这种显微成像计算方法需要更大的数据量和计算资源。即将到来的APS升级提供的相干通量中大约3个数量级的革命性增加将加剧数据传输和存储的负担。因此,一种新的压缩比压缩策略是高度利用ptychography。为了表示大多数样本场景,分别从计算机芯片柱(隔离样本)和整个平面芯片(扩展样本)的子区域中获取两个ptychgraphic数据集。在这两种情况下,使用Dectris Eiger检测器(514 1030像素)获取衍射图,作为跨样本扫描的x射线束,沿时间维度保存2D衍射图像,形成3D矩阵阵列(芯片柱为1500 514 1030,平面芯片为16800 514 1030)。在数据分析中,领域专家通常只裁剪包含 X 射线信号的衍射图案的中心区域(该区域之外的大部分零)。为了公平地评估我们的压缩策略而不给出高估压缩比,我们只裁剪中心 256 256 256 像素。
5.2数据特征与管道
我们基于以下分析为APS数据设计了一种自适应压缩管道。首先,多维 Lorenzo 预测器引入了更高的噪声,因为更多的解压缩数据值用于预测 [6],即使它通常通过利用多维相关性优于一维值。其次,虽然APS数据具有三个维度(例如,芯片柱样品的19500 256 256),但它实际上是沿时间维度的二维图像的堆栈,空间相关性相对较低。当空间相关性不高时,使用多维 Lorenzo 预测器的好处可能无法弥补更高噪声的成本。此外,考虑到时间通常与空间区域的相关性较高,沿时间维度压缩数据可能更有效,即将数据视为 256 256 256 个一维时间序列。另一方面,应该包括基于多维回归的预测器,因为它利用了多维相关性而不受到解压缩噪声的影响 [6],当误差界限相对较高时,这会产生良好的性能。这需要基于误差界切换预测器:使用传统的多算法预测器,该预测器涉及对高误差边界进行回归,并使用转置预处理器定制一维 Lorenzo 预测器,该预测器沿时间维度重新组织数据以获得低误差边界。在我们的实现中,当用户指定的绝对误差界限小于 0.5 时,我们切换到后者和量化 bin 宽度 2,因为此设置生成无损压缩。在这种情况下,由于量化 bin 和嵌入编码原理的限制,使用解压缩数据引入的噪声减少到 0,当使用 Unpred 感知量化器时。