论文阅读-高效构建检查点

论文标题:On Efficient Constructions of Checkpoints

摘要

高效构建检查点/快照是训练和诊断深度学习模型的关键工具。在本文中,我们提出了一种适用于检查点构建的有损压缩方案(称为LC-Checkpoint)。LC-Checkpoint同时最大化了压缩率并优化了恢复速度,假设使用SGD来训练模型。LC-Checkpoint使用量化和优先级提升来存储SGD恢复所需的最关键信息,然后使用霍夫曼编码来利用梯度尺度的非均匀分布。我们广泛的实验证明,LC-Checkpoint相对于最先进的算法(SCAR),实现了高达28倍的压缩率和高达5.77倍的恢复加速。

1.引言

高效构建检查点(快照)对于深度学习研究变得越来越重要。在开发更准确的模型的竞争中,研究人员利用更重的计算基础设施并开发更深层次、更大型的模型。没有适当的基础设施支持,研究过程不可避免地变得脆弱。例如,分布式计算不时失败,导致过多需要重新训练模型(Qiao等,2018b)。诊断深度学习模型也逐渐演变成一个复杂的过程,部分原因是社区对深度学习模型有了更好的理解,并为“调试”它们制定了更多规则。一些常见的错误包括梯度爆炸(Goodfellow等,2016)、“除以零”(Ioffe&Szegedy,2015)和死激活。这就需要构建“断点”,类似于调试计算机程序中使用的那些,以便研究人员可以方便地跳转到模型“崩溃”之前的状态。

频繁产生检查点使训练过程失败时能够在最小的时间浪费下重新启动,并作为调试模型的断点。到目前为止,构建检查点的标准做法还比较原始。最常见的做法是直接保存模型状态,依赖于后端系统足够健壮,以便这个操作不成为瓶颈(Baylor等,2017)。也有尝试部分存储模型状态的作品(Qiao等,2018b),但这些作品通常侧重于恢复速度,而不是直接解决系统问题。这里最突出的技术挑战是深度模型通常很大,因此频繁生成检查点会给I/O和存储带来难以管理的负担,即使在现代分布式平台下(Abadi等,2016;Li等,2014;Low等,2012)。因此,这引出了我们的问题:

研究问题:我们如何压缩模型检查点?

我们特别旨在设计一种有损压缩方案,同时满足两个标准。首先,像标准压缩问题一样,我们需要最大化压缩率。其次,该方案需要针对训练的下游应用进行优化。当一个模型从我们的有损检查点重新启动时,它需要有效地恢复到最近的状态(例如,从失败的过程重新启动或到达崩溃之前的状态)。

模型状态的压缩是一个新的技术问题,需要解决信息论、学习算法和系统设计中的交叉约束。我们需要利用模型状态中编码的统计模式,并考虑模型状态与学习算法的交互方式(更具体地说,在深度学习设置中的随机梯度类型算法)。这意味着标准有损压缩算法和最近开发的模型压缩算法(Han等,2015a;Courbariaux等,2015;Hong等,2016;Leng等,2018;Lin等,2016)都不适用于我们的设置。标准有损压缩算法旨在最小化重建误差,但我们的最终目标是使学习算法能够“快速恢复”。模型压缩技术旨在将(静态)模型转换为一个更简单的模型,同时确保预测不受太大影响,而在我们的设置中,我们需要一种可靠的编码方案,它在整个学习动态过程中都能很好地运行,这是一个相互独立且可能更具挑战性的目标。此外,我们的算法必须高效且可扩展,以便可以频繁执行。

我们的解决方案。为了实现我们的目标,我们专注于一种增量编码方案(Mogul等,1997),仅跟踪两个检查点之间的差异信息。在这种方案下,我们要考虑是否可以从模型状态中剔除对训练最无用的信息,并确保剩余信息适合压缩。这里可能令人惊讶的信息是,“delta”的L2-范数重建误差似乎是减少恢复时间的无效度量。相反,我们的算法首先删除所有具有微不足道更新的参数,然后对剩余信息进行量化。这些策略类似于分布式训练中旨在最小化通信成本的策略(Alistarh等,2017)。在我们获得部分参数更新的最重要信息之后,我们将它们以适当的格式表示并应用霍夫曼编码进一步压缩这些位,从而使压缩率能达到信息论限制。这个策略类似于最近的模型压缩技术(Han等,2015a;Wu等,2016;Park等,2017;Zhou等,2017;Rastegari等,2016)。

本文的贡献包括:

  • 对于压缩模型状态以用于训练恢复的基础研究问题的提出。
  • 基于我们开发的一个风格化模型,表征一系列压缩方案,可以有效跟踪学习过程。
  • 设计一个具有高压缩率的有损编码方案,将传统压缩技术和最近为分布式学习和模型压缩开发的技术结合起来。
  • 优化训练系统,最小化即时生成检查点的开销。

我们广泛的评估表明,通过同时利用分布式训练和模型压缩技术,我们的算法提供了一种解决方案(称为LC-Checkpoint,LC代表有损压缩),具有高达28倍的压缩率和优越的恢复时间——相对于最先进的算法(SCAR),实现了高达5.77倍的恢复加速。

2.我们的方法

我们现在描述我们的压缩框架。我们引入一个风格化模型来促进学习过程的分析,以便分析系统设计的权衡。然后我们解释我们的设计原则,这些原则由风格化模型和我们广泛的实验确定。

我们的模型。一个“高维”向量表示模型状态。一个迭代算法(例如,随机梯度下降)被用来逐步将模型状态向量移向局部最优点。设为第t轮的模型状态。在我们的风格化模型中,我们假设执行一个(漂移的)随机漫步,收敛到。具体地,我们使用以下过程来建模的轨迹。设

其中η和L共同建模算法的收敛速率,而是一个随机噪声项,反映了随机梯度下降的随机性质。当η设为一个小常数时,该模型描述了具有线性收敛速率的算法。当η = (1 - 1/L)时,该模型描述了那些收敛速率为1 - 1/t的算法(Boyd & Vandenberghe, 2004)。虽然我们的模型没有捕捉到许多随机梯度下降算法的细节,因为不同的随机梯度下降算法具有不同的收敛速率,设计一个突出设计权衡的统一模型需要我们进行简化假设。

我们的设计原则。接下来我们描述我们的设计原则。

P1. 最小化对随机梯度下降的影响。

当我们设计有损压缩方案时,不可避免地会丢失一部分信息,从而导致学习算法性能下降。我们发现,不能简单地使用L2范数的重构误差来衡量 SGD 的退化。这可以通过风格化模型最好地说明。为简单起见,令 ,因此 。我们想要压缩的增量项是 。当我们使用有损压缩时,相当于添加一个关于 的附加噪声项。因此,在压缩方案下,新的学习过程变为 。观察到只要,并且 所主导(小于),那么收敛质量将保持不变,这是根据随机逼近的标准结果(Lai, 2009; Kushner & Yin, 2003)。

这里的IE表示求平均期望,|表示条件,Var表示求方差。

有许多构造满足期望和方差约束条件。让我们考虑一个例子,通过使用标准的随机舍入(Alistarh et al., 2017)来保留 的最重要位。由于舍入算法的特性,期望值为 0。此外,由于保留了最重要位,舍入中的信息丢失不会大于 ,在一个温和的假设下,即 的标准差随时间按比例缩放到 。因此,这种舍入方案不会影响训练算法的性能。一般来说,1 位编码是量化的特殊情况。广泛的量化方案将满足期望和方差约束。我们的算法将探索这种权衡。

还需注意的是,当我们最小化 L2范数 重构误差时,这相当于保留 中最大的 k 个条目。

P2. 最大化残差信息中的冗余性。我们的压缩方案还需要确保我们保留的信息具有大量的冗余性,即熵的度量。这将使我们能够利用传统编码方案,如赫夫曼编码,在信息论极限下压缩数据。

P1和P2之间的相互作用突显了我们压缩问题的独特结构。最好通过一个名为TOPN的压缩方案来说明这一点。这种压缩方案保留了中的最大元素。我们观察到:(i)虽然这种方案最小化了L2范数的重构误差,但恢复时间并不优越。许多其他具有上述特性的压缩方案在恢复速度上同样快,正如我们风格化模型所暗示的。(ii)对于TOPN方案来说,进行压缩是困难的。TOPN方案通常需要跟踪中所有条目的10%才能有效。跟踪这些元素位置的开销令人惊讶地高。部分原因在于向量不够稀疏,因此稀疏矩阵表示并没有帮助。

另一方面,我们的解决方案认真遵循P1,并避免了跟踪我们保留条目的位置的需要,从而实现了更高的压缩率。

P3. 不要使用随机投影和/或草图。值得注意的是,我们发现基于草图的随机投影技术(例如Woodruff等人(2014年))会损害压缩效果。粗略地说,草图通过将多个数字投影到一个单元格中来压缩信息。虽然这可能加快查询时间,但在我们的情境中,它只会干扰梯度下降算法。考虑一个简单例子,其中,最佳点。假设是当前状态,梯度沿着方向(-1, 1)。当我们应用草图(比如CountMin草图)时,它将方向(-1, 1)压缩成一个点0。在进行查询时,两个坐标的梯度是不正确的。草图在梯度向量中的条目是异质的,并且需要以“线速率”回答查询时更有用(例如,不会减慢训练,参见Ivkin等人(2019年))。在这里,当模型需要从检查点中恢复时,时间并不那么紧迫。因此,即使我们面临异质参数,更有效的方法是仔细区分关键信息和不重要信息,而不是使用任意的随机投影。

3.LC-基于检查点的随机梯度下降算法

我们现在描述我们的解决方案 LC-Checkpoint(LC 指的是损失压缩)。参见图 1 中的一个工作示例和算法 1 中的工作流程。为简单起见,我们假设我们的系统为每个迭代维护一个检查点 。我们稍微滥用 来同时指代压缩数据和它所代表的真实向量。我们可以简单地对我们的操作进行降采样,以便每隔 k 个迭代构建一个检查点。我们的解决方案由两个主要组成部分组成。

C1. 通过增量编码进行近似跟踪。在每一步中,我们的系统维护一个对于真实状态的近似值 u˜t。我们简单地设置 ,其中 u0 是模型的初始状态。我们的系统在后台持续维护和更新 (算法 1 中的第 7 行)。我们的主要压缩任务是正确地跟踪近似状态与真实状态之间的“增量”。具体来说,第 t 次迭代的压缩任务是 。请参见图 1 中的 3。

C2. 量化和霍夫曼编码。这个组件通过两个步骤压缩 δt,步骤 1. 两阶段量化。我们首先执行基于指数的量化,然后进行优先级提升操作。这个操作智能地丢弃两个连续状态之间的不重要信息。步骤 2. 通过霍夫曼进行无损压缩。最后,量化的距离向量进一步使用霍夫曼编码进行压缩。

可以看出,要从检查点重建第 t 次迭代的模型状态,我们可以简单地计算 ut = 。 接下来,3.1 节讨论 C2,3.2 节讨论额外的系统级优化。

3.1. 量化和霍夫曼编码

3.1.1. 两阶段量化

LC-Checkpoint 使用一种新颖的两阶段流水线来量化 δt,包括两个主要子步骤:基于指数的量化和优先级提升。

基于指数的量化。回想一下,一个浮点数 v 被表示为 ,其中 s 是符号,m 是尾数,e 是指数。回想一下, 是我们要编码的高维向量。我们的基于指数的量化工作如下:首先,根据 e 和 s 将 δ 中的条目分成多个桶,即将具有相同指数和符号的元素分配到同一个桶中。我们从广泛的实验中关键观察到,ut 中的条目通常朝着同一个方向漂移,因此 δt 通常具有相同的符号。接下来,我们的算法通过每个桶中最大值和最小值的平均值来表示每个桶。

图 1 中显示了一个示例,在该示例中,δt 被量化为五个桶(用五种不同的颜色标记)。每个桶中的所有条目都被一个唯一值表示。索引 k 个桶需要 log2 k 位。因为 δt 包含 n 个浮点数,每个浮点数使用 b(例如,b ∈ {32, 64})位,所以压缩率为

例如,在图 1 中,δ 有 10 个元素(即 n = 10),每个元素由一个单精度浮点数表示(即 b = 32)。因此,原始的 δ 共有 nb,即总共 320 位。基于指数的量化使用 5 个桶(即 k = 5)。因此,在量化之后,δ 共有(10×log 5+5×32 = 190)位。因此,压缩率(r)为 1.68(即,320/190)。

控制桶的数量 k 以实现最佳压缩比是至关重要的。幸运的是,基于指数的桶化可以控制单精度浮点数元素的 k ≤ 2^9,并控制双精度浮点数元素的 k ≤ 2^12。我们的评估结果(第 4.3 节)证实通常 k < 2^5 就足够了。图 2(a) 绘制了 AlexNet 最后一个卷积层中所有元素指数部分的分布。

AlexNet 最后一个卷积层中所有元素的指数部分的分布。当指数部分等于 -127 时,元素值为 0。横轴表示指数部分数值,纵轴表示具有该数值的元素计数。

优先级提升。我们通过限制桶的数量并采用优先级提升方法进一步提高压缩比。我们的关键观察是,当 与 0 非常接近时(即, 接近 ),批处理更新更加有效(即,不更新 δt 的第 i 个条目直到其变得显著)。还要注意,这在概念上与最小化构造错误不同。最小化构造错误意味着准确跟踪 δt 中最重要的条目,而我们既删除过小的条目又量化大的条目(就像前一步骤中所做的)。具体来说,我们提出 x 位优先级提升。它仅保留具有较大 e 的 2^x − 1 个桶,并将其余桶合并为一个,其唯一值为 0。换句话说,优先级提升将 更新为与 的距离更大的值,并赋予更高的优先级。它将桶的索引限制在 x 位内。

图 1(优先级提升)使用 2 位优先级提升来控制桶的数量不超过 4。它将绿色和紫色桶合并为一个红色桶,其表示值为 0。对这些桶的索引只需要 2 位。图 2(b) 给出了 AlexNet 最后一个卷积层的 3 位优先级提升的一个实际示例。

3.1.2. 霍夫曼编码

最后,观察到大多数学习过程中每个桶中元素的数量高度不均匀,我们使用霍夫曼编码(Van Leeuwen,1976)进一步压缩这些桶。例如,图 2(a) 绘制了 AlexNet 最后一个卷积层中所有元素指数部分的分布。该分布显示出倾斜行为,因此更适合霍夫曼编码。我们的关键观察是,优先级提升进一步加剧了这种分布的不均匀性(图 2(b)),因此将量化与霍夫曼编码结合产生了“部分之和”以上的好处。我们后续的评估验证了这一点(第 4.3 节)。

3.2. 系统优化

LC-Checkpoint 还包括几项新颖的系统级优化,如下:

  • 异步执行:因为 LC-Checkpoint 的第一步仅依赖于模型状态,其余步骤可以与 SGD 计算的下一次迭代同时运行。这种异步(非阻塞)执行显著减少了检查点开销,并减轻了模型执行的阻塞。
  • 检查点合并:为了进一步减少恢复时间,LC-Checkpoint 使用一个辅助过程定期将多个检查点合并成超级步骤。在任何系统崩溃的情况下,LC-Checkpoint 使用这些超级步骤检查点进行恢复。
  • 霍夫曼编码表缓存:桶的数量可能在一个迭代到另一个迭代保持不变,特别是在优先级提升之后。因此,在不进行任何重建的情况下,可以在不同迭代之间重复使用霍夫曼编码表(仅需根据每个桶中条目的数量进行简单排序)。LC-Checkpoint 包括一个轻量级缓存,用于存储每个桶计数的霍夫曼编码表。

4.实验

本节通过三个基准数据集对四个典型的机器学习应用进行了LC-Checkpoint的评估,并将其与之前的工作(SCAR Qiao等人(2018b)和第二节提到的TOPN机制)在恢复(返工)成本、压缩比和执行开销方面进行了比较,展示了LC-Checkpoint的优越性。

4.1 方法论

评估目标:此次评估有四个主要目标:(1)与以往工作相比,比较LC-Checkpoint的恢复(返工)成本;(2)评估不同方法带来的压缩效益;(3)具体验证优先级提升的有效性;(4)通过实验案例研究确认LC-Checkpoint引入的开销较低。我们的工作主要与两项最新的工作相比较:SCAR(Qiao等人,2018b)和一个TOPN机制。SCAR通过分区参数并在每次迭代中更新一个分区来减小检查点大小。TOPN机制只更新与上一次迭代距离最大的前n个参数。TOPN检查点以压缩稀疏行(CSR)格式存储。

机器学习应用和数据集:在四个典型的机器学习应用上评估LC-Checkpoint:多项式逻辑回归(MLR)、LeNet-5(Lenet)(LeCun等人,1998)、AlexNet(Krizhevsky等人,2012)和矩阵分解(MF)。前三个应用训练在MNIST(LeCun等人,1998)和FashionMNIST(Xiao等人,2017)数据集上。最后一个,MF训练在Jester(Goldberg等人,2001)和MovieLens10M(Harper & Konstan,2015)上。

平台和评估配置:我们的实验在一台多核服务器上进行,该服务器配备了Intel Xeon Gold 6138 Skylake CPU,拥有40个核心,每个核心运行频率为2.0 GHz,以及192 GB DDR4内存。训练在一台配备16GB高带宽内存(HBM)的Tesla P100 GPU上进行。

4.2 恢复/返工成本比较

本节评估LC-Checkpoint的恢复(或返工)成本,特别是将其与SCAR(Qiao等人,2018b)和一个TOPN机制进行比较。

为了公平地评估它们的返工成本,我们为所有三种方法使用相同的检查点大小(更新大小)。测试了两种检查点大小:全检查点大小的5%和10%。这些检查点大小可以直接为SCAR和TOPN设置。然而,LC-Checkpoint的大小由数据分布决定,因此会动态变化。为了解决这个问题,LC-Checkpoint采用了2位和3位优先级提升来控制其检查点大小分别为5%和10%。图4报告了更多关于LC-Checkpoint的检查点大小信息。

图3比较了三种方法的返工成本,SCAR、TOPN和LC-Checkpoint,显示LC-Checkpoint在所有机器学习应用和数据集中的返工成本都是最低的。对于5%检查点测试案例,LC-Checkpoint的性能分别比SCAR高出2.88×-5.77×,比TOPN高出2.17×-4.06×。在10%检查点大小下,LC-Checkpoint的性能分别比SCAR高出1.9×-4.82×,比TOPN高出1.52×-2.17×。

此外,比较两种检查点大小(5%对比10%),LC-Checkpoint在检查点大小减小时结果更稳定。例如,将检查点大小从10%减小到5%,LC-Checkpoint在LeNet与MNIST(图3(b))和AlexNet(图3(c), 3(g))上的返工成本增加可以忽略不计。其他案例没有任何返工成本变化。相比之下,SCAR和TOPN在检查点大小从10%变为5%时,返工成本平均增加了1.6×。

LC-Checkpoint、SCAR和TOPN之间的重做成本比较。横轴表示压缩检查点大小与完整检查点大小之间的比例。纵轴显示重做迭代次数。误差棒表示95%置信区间,通过50次重复试验计算得出。

4.3 LC-Checkpoint压缩效果分解

本节评估和分析之前提到的不同方法的压缩效果,包括指数基量化(E)、优先级提升(P)和哈夫曼编码(H)。图4报告了采用2位和3位优先级提升的压缩比。采用所有压缩方法,最终检查点大小(E+P+H)都低于未压缩全检查点的5%(使用2位)和10%(使用3位),即压缩率分别高于20×和10×。

使用不同压缩方法的压缩比例。横轴表示优先级提升中使用的比特计数,纵轴是压缩后检查点大小与压缩前大小之间的比例。其中,E、P、H 分别表示“基于指数的量化”、“优先级提升”和“霍夫曼编码”。

指数基量化平均产生85%的压缩比。这证明了所有参数中δ的指数部分跨越了可以由单精度浮点数表示的所有值的一个小范围。15%还表明桶号k<2^5,因为平均桶号可以估计为k=2(32×15%=4.8),其中32是单精度浮点数的宽度。优先级提升平均为2位带来了9.26%的额外压缩比,为3位带来了6.23%。在大多数情况下,除了MF(图4(d), 4(h))外,较小位数的优先级提升为哈夫曼编码带来了更多好处。这是因为MF的参数是稀疏的,因此哈夫曼编码可以在没有激进优先级提升的情况下达到足够的压缩比。在所有模型(和数据集)中,哈夫曼编码平均带来了2位优先级提升的2%额外压缩比,和3位的1.6%。

4.4 优先级提升的有效性

本节进一步讨论了优先级提升的有效性。其目的是证明优先级提升能够保存大多数高优先级参数。我们通过显示指数桶导致的模型状态影响更大(即,当桶代表的唯一值离0更远时,即e更大)来证明这一点。

假设δ是从一个状态uθ到另一个状态经过m次迭代计算得出的。然后,通过将第i个指数桶中的参数设置为0来创建δim。地面真相计算为,其中L(x)表示损失函数。然后计算相对误差:

图5报告了MLR与m=10n, n∈[1, 6]的结果。两个数据集(MNIST和FashionMNIST)在不同的m上证明了具有最大距离的前n个桶中的元素对模型影响更大(当桶代表的值设置为0时,表示为更高的相对误差)。此外,只需少量的索引位就可以保留所有重要的桶。例如,使用2位优先级提升(最后一个桶存储0的4个桶)可以轻松保留最重要的桶,使用3位(8个桶)可以保留所有有效的桶。这个结果解释了为什么优先级提升可以在几乎不损失准确性的情况下压缩检查点。

对每个指数桶的优先级进行评估。 横轴表示被删除的指数桶的ID。 纵轴显示相对误差与基准值之间的关系。

4.5. LC-Checkpoint的开销案例研究

本节通过一个案例研究,即在MovieLens25M(Harper & Konstan, 2015)数据集上训练MF,评估了LC-Checkpoint的执行开销和对模型执行的整体影响。每次迭代平均耗时91秒。LC-Checkpoint采用3位优先级提升,导致检查点大小低于10%(未压缩完整检查点大小)。默认方法每10次迭代创建一个完整检查点。在第7次迭代触发故障。

图6报告了结果。LC-Checkpoint与正常执行相比只多产生一次额外迭代,且与完整检查点方法相比节省了6次迭代,即节省了546秒的执行时间。LC-Checkpoint每次迭代仅引入不到4秒(即约4%)的开销,可以忽略不计。

在 MovieLens25M 数据集上的矩阵分解。横轴表示迭代次数,纵轴是模型的 RMSE(均方根误差)。

5.相关工作

容错是机器学习系统的关键基础支持。Li等人(Li et al., 2014)提出了一种用于恢复的运行时参数复制方法。Tensorflow(Abadi等人,2016)采用周期性检查点保存模型状态。类似的努力,如(Harlap等人,2017;Qiao等人,2018a),旨在支持强一致性语义。相反,我们的工作基于机器学习应用程序的自我校正行为,放宽了检查点的一致性保证。通过一组有损压缩机制,我们的工作可以承受高频检查点,从而降低重做成本并实现精细的模型状态恢复。同样,Qiao等人(Qiao等人,2018b)也提出了一种基于弱一致性的容错解决方案(我们评估中的SCAR),通过部分更新参数来实现。根据我们的评估,SCAR有潜力在检查点期间存储冗余信息,我们的工作旨在通过选择性地保存两个状态之间的距离来消除这种冗余。模型压缩旨在减少模型存储空间并加快模型执行时间。权重剪枝和权重量化是模型压缩的两个重要类别。

一些与我们的工作密切相关的流行权重剪枝技术总结如下。Guo等人(Guo等人,2016)提出了一种动态网络手术方法,通过即时连接剪枝来降低网络复杂性。Dai等人(Dai等人,2019)将生长和剪枝阶段结合在训练中,生成紧凑的DNN架构。Han等人(Han等人,2015b)设计了深度压缩,一种通过剪枝、量化和霍夫曼编码相结合的模型压缩方法。Mao等人(Mao等人,2017)认真探讨了不同剪枝粒度对模型准确性的影响,并提出了一种粗粒度权重剪枝方法。以上所有努力的目标都是在不损害准确性的情况下剪枝模型权重。与它们不同,我们的工作通过设计一种可靠的编码方案,在整个学习过程中通过消除两个检查点之间的冗余并减少恢复过程中的重做成本。

权重量化也被广泛用于模型压缩。BinaryConnect(Courbariaux等人,2015)引入了二进制权重来替代乘法运算。二值化神经网络(Courbariaux等人,2016)也使用二进制权重和激活来加速计算。Park等人(Park等人,2017)提出了一种基于加权熵的聚类方法用于权重量化。Leng等人(Leng等人,2018)将量化形式化为一个优化问题,并通过ADMM来解决。我们的方法也利用量化来减少参数比特数,设计了一种新颖的基于指数的量化技术。此外,我们的方法强调使用新的优先级提升方法过滤参数。

6.结论和未来工作

本文提出了LC-Checkpoint,这是基于有损压缩的第一个检查点方案,旨在实现最大压缩率高效恢复。它采用了一种新颖的两阶段量化方法,包括基于指数的量化和优先级提升,以识别和存储SGD恢复所需的最关键信息,并利用Huffman编码进一步从梯度规模的非均匀分布中获益。我们的评估表明,LC-Checkpoint实现了高达28倍的压缩率和高达5.77倍的恢复加速,超过了最先进的算法(SCAR)。

未来,我们计划通过放宽对SGD的假设并使其具备根据模型和数据变化动态选择检查点压缩率的能力,推广LC-Checkpoint。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/718486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp开发android原生插件

一、下载原生开发SDK Android 离线SDK - 正式版 | uni小程序SDK (dcloud.net.cn)、 https://nativesupport.dcloud.net.cn/AppDocs/download/android.html 将开发uniappa原生android的插件解压到ben本地目录&#xff0c;目录结构如下&#xff1a; 接下就可以使用 UniPlugin-Hel…

【本科组冠名奖】2023年第八届数维杯数学建模挑战赛获奖感言

美国大学生数学建模竞赛已结束过半&#xff0c;现在又迎来了2024年第九届数维杯国赛&#xff0c;准备参加今年数维杯国赛的同学&#xff0c;今天我们一起看看去年优秀的选手都有什么获奖感言吧~希望能帮到更多热爱数学建模的同学。据说文末在看点赞的大佬都会直冲国奖呢&#x…

少儿编程 中国电子学会C++等级考试一级历年真题答案解析【持续更新 已更新82题】

C 等级考试一级考纲说明 一、能力目标 通过本级考核的学生&#xff0c;能对 C 语言有基本的了解&#xff0c;会使用顺序结构、选择结构、循环结构编写程序&#xff0c;具体用计算思维的方式解决简单的问题。 二、考核目标 考核内容是根据软件开发所需要的技能和知识&#x…

单词规律00

题目链接 单词规律 题目描述 注意点 pattern只包含小写英文字母s只包含小写英文字母和 ’ ’s不包含任何前导或尾随对空格s中每个单词都被 单个空格 分隔 解答思路 本题与上一次同构字符串类似&#xff0c;思路可以参照同构字符串 代码 class Solution {public boolean …

企业财务规划的未来:自动化智能化如何推动全面预算管理

随着自动化和智能化对企业的影响日益明显&#xff0c;了解和接受那些有可能改变企业财务规划的技术变得愈发重要。新兴技术是推动企业增长和业务生产的中坚力量。作为企业财务专业人员&#xff0c;熟悉技术能够帮助他们了解企业的未来价值&#xff0c;从而更好的领导团队。数智…

springboot支持的常用日志框架介绍

日志系统是计算机系统中用于记录和跟踪事件、错误和信息的软件组件。在软件开发和维护过程中&#xff0c;日志系统起着至关重要的作用。它可以帮助开发人员了解软件的运行情况&#xff0c;快速定位和解决问题。本文将从以下几个方面介绍日志系统&#xff1a;日志系统概述、Spri…

vscode——远端配置及一些问题解决

vscode——远端配置 安装Remote -SSH插件配置config本地变化一些问题缺失核心关闭vscode自动更新 尝试写入管道不存在hostname -I 查出来的ip连不上 我们之前大概了解了vscode的本地设置&#xff0c;我们之前提过&#xff0c;vscode是一款编辑器&#xff0c;在文本编辑方面有着…

程序员的金三银四求职宝典:如何在关键时期脱颖而出?

个人主页&#xff1a;17_Kevin-CSDN博客 随着春天的脚步渐近&#xff0c;程序员们的求职热潮也随之而来。在这个被称为“金三银四”的招聘季&#xff0c;如何从众多求职者中脱颖而出&#xff0c;成为了许多程序员关注的焦点。本文将为你提供一份全面的求职宝典&#xff0c;助你…

彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战

自主导航是机器人与自动驾驶的核心功能&#xff0c;而SLAM技术是实现自主导航的前提与关键。现有的机器人与自动驾驶车辆往往会安装激光雷达&#xff0c;相机&#xff0c;IMU&#xff0c;GPS等多种模态的传感器&#xff0c;而且已有许多优秀的激光SLAM与视觉SLAM算法。但是每种…

曲线生成 | 图解Dubins曲线生成原理(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 什么是Dubins曲线&#xff1f;2 Dubins曲线原理2.1 坐标变换2.2 单步运动公式2.3 曲线模式 3 Dubins曲线生成算法4 仿真实现4.1 ROS C实现4.2 Python实现4.3 Matlab实现 0 专栏介绍 &#x1f525;附C/Python/Matlab全套代码&#x1f525;课程设计、毕业设计、…

Foxmail快捷键设置问题

当快捷键设置错误时不会生效&#xff0c;原来的快捷键仍有效&#xff0c;即使禁用快捷键功能&#xff0c;原先快捷键仍有效。正确的快捷键&#xff1a; 1. 不能是空&#xff08;NULL&#xff09; 2. 应该设置按键值只有一个的键盘按钮。

【动态规划专栏】

动态规划基础知识 概念 动态规划&#xff08;Dynamic Programming&#xff0c;DP&#xff09;&#xff1a;用来解决最优化问题的算法思想。 动态规划是分治思想的延伸&#xff0c;通俗一点来说就是大事化小&#xff0c;小事化无的艺术。 一般来说&#xff0c;…

探索Hadoop的三种运行模式:单机模式、伪分布式模式和完全分布式模式

目录 前言一、 单机模式二、 伪分布式模式三、 完全分布式模式&#xff08;重点&#xff09;3.1 准备工作3.2 配置集群3.2.1 配置core-site.xml 文件3.2.2 配置hdfs-site.xml 文件3.2.3 配置yarn-site.xml 文件3.2.4 配置mapred-site.xml 文件 3.3 启动集群3.3.1 配置workers3.…

RK3568 android11 调试陀螺仪模块 MPU6500

一&#xff0c;MPU6500功能介绍 1.简介 MPU6500是一款由TDK生产的运动/惯性传感器&#xff0c;属于惯性测量设备&#xff08;IMU&#xff09;的一种。MPU6500集成了3轴加速度计、3轴陀螺仪和一个板载数字运动处理器&#xff08;DMP&#xff09;&#xff0c;能够提供6轴的运动…

Matlab|基于Logistic函数负荷需求响应

目录 1 基于Logistic函数的负荷转移率模型 2 程序示例 3 效果图 4 下载链接 负荷需求响应模型种类较多&#xff0c;有电价型和激励型等类型&#xff0c;本次和大家分享一个基于Logistic函数的负荷转移率模型&#xff0c;该模型属于电价型&#xff0c;由于该方法使用的较少&a…

亿道信息发布两款升级款全加固笔记本电脑

2022年5月19日&#xff0c;加固手持终端。加固平板电脑、加固笔记本电脑专业设计商和制造商&#xff0c;以及加固型移动计算机软硬件整体定制解决方案提供商亿道信息&#xff0c;宣布对其两款广受欢迎的加固笔记本电脑产品EM-X14U和EM-X15U进行重大升级。新发布的两款升级款全加…

《TCP/IP详解 卷一》第10章 UDP 和 IP 分片

目录 10.1 引言 10.2 UDP 头部 10.3 UDP校验和 10.4 例子 10.5 UDP 和 IPv6 10.6 UDP-Lite 10.7 IP分片 10.7.1 例子&#xff1a;IPV4 UDP分片 10.7.2 重组超时 10.8 采用UDP的路径MTU发现 10.9 IP分片和ARP/ND之间的交互 10.10 最大UDP数据报长度 10.11 UDP服务器…

Docker将本地的镜像上传到私有仓库

使用register镜像创建私有仓库 [rootopenEuler-node1 ~]# docker run --restartalways -d -p 5000:5000 -v /opt/data/regostry:/var/lib/registry registry:2[rootopenEuler-node1 ~]# docker images REPOSITORY TAG IMAGE…

基于React低代码平台开发:构建高效、灵活的应用新范式

文章目录 一、React与低代码平台的结合优势二、基于React的低代码平台开发挑战三、基于React的低代码平台开发实践四、未来展望《低代码平台开发实践&#xff1a;基于React》编辑推荐内容简介作者简介目录前言为什么要写这本书 读者对象如何阅读本书 随着数字化转型的深入&…

内核中的Kconfig文件

Kconfig解析 编译内核时用于配置的Kconfig文件 以内核中的ttyprintk.c为例&#xff0c;其位于/kernel-sources/dirver/char/ttyprintk.c 如何将其编译进内核&#xff1f; 在char目录下有Kconfig文件&#xff0c;其中有如下内容 tristate 表示该模块可以选择 Y N M(以.ko形…