论文状态:已完成

A Learned Cache Eviction Framework with Minimal Overhead

发表:2023/01/27
原文链接PDF 下载
价格:0.100000
价格:0.100000
已有 2 人读过
本分析由 AI 生成,可能不完全准确,请以原文为准。

TL;DR 精炼摘要

本文提出了一种名为MAT(Machine learning At the Tail)的缓存驱逐框架,通过将传统启发式算法作为“过滤器”,仅对即将驱逐的对象进行机器学习预测。此方法将每次驱逐中所需的预测次数从63次降至2次,同时保持与最先进的机器学习系统相当的低缺失率,这使其在高吞吐量环境中更具实用性。

摘要

Recent work shows the effectiveness of Machine Learning (ML) to reduce cache miss ratios by making better eviction decisions than heuristics. However, state-of-the-art ML caches require many predictions to make an eviction decision, making them impractical for high-throughput caching systems. This paper introduces Machine learning At the Tail (MAT), a framework to build efficient ML-based caching systems by integrating an ML module with a traditional cache system based on a heuristic algorithm. MAT treats the heuristic algorithm as a filter to receive high-quality samples to train an ML model and likely candidate objects for evictions. We evaluate MAT on 8 production workloads, spanning storage, in-memory caching, and CDNs. The simulation experiments show MAT reduces the number of costly ML predictions-per-eviction from 63 to 2, while achieving comparable miss ratios to the state-of-the-art ML cache system. We compare a MAT prototype system with an LRU-based caching system in the same setting and show that they achieve similar request rates.

思维导图

论文精读

中文精读

1. 论文基本信息

1.1. 标题

Machine Learning Over Heuristic: a Learned Cache Eviction Framework with Minimal Overhead (基于启发式算法之上的机器学习:一种具有最小开销的学习型缓存驱逐框架)

1.2. 作者

  • Dongsheng Yang (普林斯顿大学)
  • Daniel S. Berger (微软研究院 / 华盛顿大学)
  • Kai Li (普林斯顿大学)
  • Wyatt Lloyd (普林斯顿大学)

1.3. 发表期刊/会议

该论文发布于 ArXiv (预印本平台),从格式和内容来看,通常投稿于计算机系统领域的顶级会议(如 USENIX OSDI 或 NSDI)。 发表时间 (UTC): 2023-01-27

1.4. 摘要

近年来的研究表明,利用机器学习(ML)来预测对象未来的访问模式,可以比传统的启发式算法(如 LRU)更有效地降低缓存缺失率(Cache Miss Ratio)。然而,现有的最先进(SOTA)ML 缓存系统(如 LRB)为了做出一次驱逐决策,需要对大量对象进行预测,导致计算开销极高,难以应用于高吞吐量的生产环境。

本文提出了 MAT (Machine learning At the Tail) 框架。其核心思想是将传统的启发式算法视为一个“过滤器”(Filter)。MAT 仅对启发式算法即将驱逐的“尾部”对象(Tail Objects)进行 ML 预测。如果 ML 模型认为该对象未来很快会被访问,则将其保留;否则将其驱逐。实验表明,MAT 将每次驱逐所需的 ML 预测次数从 63 次降低到了 2 次,同时保持了与 SOTA ML 系统相当的低缺失率。在原型系统中,MAT 的请求处理吞吐量与简单的 LRU 系统相当。

1.5. 原文链接

2. 整体概括

2.1. 研究背景与动机

  • 缓存的重要性: 缓存系统(如内容分发网络 CDN、内存缓存、存储缓存)是现代计算基础设施的核心,旨在通过存储热点数据来减少后端负载和网络流量。
  • 现有方法的局限:
    • 启发式算法 (Heuristics): 传统的算法如 LRU (Least Recently Used,最近最少使用) 非常简单、高效,但在复杂多变的访问模式下,其缺失率 (Miss Ratio) 较高。
    • 机器学习算法 (ML-based):LRB (Learning Relaxed Belady) 这样的系统通过预测对象的“下一次访问时间”来做决策,能显著降低缺失率。但它们面临两大挑战:
      1. 计算开销巨大: 为了找到一个最佳驱逐对象,LRB 需要随机采样大量对象(如 64 个)并运行复杂的 ML 模型进行预测。
      2. 吞吐量瓶颈: 在高并发场景下,CPU 资源稀缺,繁重的 ML 推理会导致系统吞吐量大幅下降。
  • 核心动机: 能否结合两者的优点?即拥有 ML 的高决策质量(低缺失率),同时保持启发式算法的高执行效率(低开销)。

2.2. 核心贡献

  1. 理论洞察 (Key Insight): 作者发现,传统的启发式算法(如 LRU)虽然不完美,但它们是一个很好的“过滤器”。它们驱逐的大部分对象确实是应该被驱逐的,只有少部分是“错误驱逐”。因此,ML 不需要扫描整个缓存,只需要检查启发式算法决定驱逐的那一小部分对象。
  2. MAT 框架: 提出了“尾部机器学习”(Machine learning At the Tail)框架。该框架将 ML 模型集成在启发式算法的驱逐链路上,作为最后的守门员。
  3. 极低开销: 将每次驱逐所需的平均预测次数从 63 次降低到 2 次,开销降低了约 30 倍。
  4. 生产级性能: 在 8 个生产级工作负载上的评估显示,MAT 达到了与 SOTA ML 系统(LRB)相当的缺失率,且吞吐量与纯 LRU 相当。

3. 预备知识与相关工作

3.1. 基础概念

为了理解本文,初学者需要掌握以下概念:

  • 缓存驱逐 (Cache Eviction): 当缓存空间已满,而新数据需要写入时,系统必须选择并删除(驱逐)一个现有的对象。选择哪个对象删除的策略就是“驱逐算法”。
  • LRU (Least Recently Used): 最经典的启发式算法。它假设“最近被访问过的数据,未来被访问的概率也大”。它通常使用一个链表维护对象,新访问的对象移到头部,链表尾部(Tail)的对象就是“最近最少使用”的,会被优先驱逐。
  • Belady's MIN (Optimal Algorithm): 理论上的最优算法(Oracle)。它假设我们拥有上帝视角,知道未来所有的访问请求。策略是:驱逐那个在未来最长时间内不会被访问的对象
  • TTA (Time-To-next-Access): 下一次访问时间。这是 Belady 算法的核心指标,也是 ML 模型试图预测的目标。TTA 越大,说明该对象越不重要,越应该被驱逐。

3.2. 现有工作与技术演进

  • 启发式算法: 图 1 展示了传统算法(如 LRU, FIFO)如何通过优先队列维护对象排名。它们简单但缺乏适应性。

    Figure 1: Heuristic cache algorithms that maintain the rank of objects in a priority queue. 上图(原文 Figure 1)展示了启发式缓存算法通过优先队列维护对象排名,驱逐决策总是发生在队列尾部。

  • 基于 ML 的缓存 (LRB):

    • LRB (Learning Relaxed Belady): 这是本文的主要对比对象(Baseline)。

    • 工作原理: 如图 2 所示,LRB 不依赖队列顺序,而是从缓存中随机采样 64 个对象,用 ML 模型预测它们的 TTA,然后驱逐 TTA 最大的那个。

    • 缺点: 每次驱逐都要运行 64 次预测,这在高负载下是不可接受的。

      Figure 2: The state-of-the-art ML-based caching system, Learning Relaxed Belady (LRB). 上图(原文 Figure 2)展示了 SOTA ML 缓存系统 LRB 的流程:随机采样 -> 批量预测 -> 选择 TTA 最大的驱逐。

3.3. 差异化分析

本文(MAT)与 LRB 的核心区别在于候选对象的来源

  • LRB: 随机采样整个缓存,不仅计算量大,而且容易选中很多“显然应该保留”的热点对象进行无效预测。
  • MAT: 只看 LRU 的“尾部”。这里集中了所有“可能被驱逐”的嫌疑对象,ML 只需要从中挑出“被误判”的好对象救回即可。

4. 方法论

4.1. 核心洞察:启发式算法作为过滤器

作者首先回答了一个问题:启发式算法(如 LRU)到底有多糟糕? 通过对比 LRU 和理论最优的 Belady 算法,作者发现:

  1. LRU 驱逐的大部分对象,Belady 算法也会驱逐(即 LRU 的决定大部分是对的)。

  2. LRU 的主要错误在于它会驱逐一小部分未来很快会被访问的对象。

    如下图所示,阈值 TT 右侧是应当驱逐的对象(TTA 很大),左侧是不应驱逐的(TTA 很小)。LRU 虽然混入了一些左侧的对象(错误决策),但其驱逐的大部分还是右侧的。这证明 LRU 是一个高效的初筛过滤器。

    该图像是一个示意图,展示了不同缓存策略(LRU和Belady)在不同log(Time-To-next-Access)值下被驱逐对象的比例。图中标注了一个阈值\(T\),该阈值划分了“应当驱逐”和“应当不驱逐”的区域。LRU的被驱逐比例较高,而Belady在高时间值时表现优异。 上图(原文 Figure 3)展示了 LRU 与 Belady 算法驱逐对象的 TTA 分布。LRU 虽然会错误地驱逐一些 TTA 较短的对象(左侧),但大部分决策与最优算法一致。

4.2. MAT 架构设计

MAT (Machine Learning at the Tail) 的设计将 ML 模块挂载在启发式缓存的尾部。

该图像是一个示意图,展示了机器学习(ML)模块与传统启发式缓存系统之间的交互。图中显示了请求如何通过启发式缓存系统处理,并将候选对象发送到eviction线程进行逐出决策,同时训练数据通过训练线程实现模型的优化。 上图(原文 Figure 4)展示了 MAT 的架构:ML 模块从启发式算法的尾部获取候选对象,决定是驱逐它还是将其重新插入缓存。

4.2.1. 系统流程

  1. Heuristic Cache (主体): 正常运行(如 LRU),处理读写请求。
  2. RemoveFromTail (获取候选): 当需要腾出空间时,不直接删除尾部对象,而是将其取出交给 ML 模块,称为“候选对象”。
  3. ML Predict (预测): ML 模型预测该候选对象的 TTA (Time-To-next-Access)
  4. Decision (决策):
    • 驱逐 (Evict): 如果预测的 TTA 很大(不重要),则真实施行驱逐。
    • 重插入 (Re-insert): 如果预测的 TTA 很小(重要),说明 LRU 判错了。MAT 将其重新插入到 LRU 队列中(通常作为最近访问处理),给它一次“复活”的机会。

4.3. 驱逐算法详解 (Algorithm 1)

MAT 并不只是简单地看一个对象,它包含一个动态阈值机制来平衡计算开销和驱逐质量。

算法流程与公式解析:

  1. 输入:

    • kk: 目标平均预测次数(例如,我们希望平均每 2 次预测就能找到一个驱逐对象)。
    • TT: 判定是否驱逐的时间阈值(动态调整)。
    • LL: 最大尝试次数(防止死循环)。
  2. 循环查找 (While Loop): 系统尝试从尾部取出一个对象 obj,并预测其 TTAobj:=Heuristic.RemoveFromTail() \text{obj} := \text{Heuristic.RemoveFromTail()} TTA:=MLModel.Predict(obj) \text{TTA} := \text{MLModel.Predict}(\text{obj})

  3. 阈值判定:

    • 如果 TTAT\text{TTA} \ge T: 这意味着该对象未来很久才会被访问,可以驱逐。循环结束,执行驱逐。
    • 如果 TTA<T\text{TTA} < T: 这意味着该对象近期会被访问,不能驱逐。 执行 Heuristic.Insert(obj) 将其放回缓存。 计数器 rr 加 1,继续取下一个队尾对象。
  4. 动态阈值调整 (Dynamic Thresholding): 为了维持目标预测次数 kk,算法会根据实际查找的难度调整阈值 TT

    • 如果 r>kr > k (找了太多次才找到一个能驱逐的,说明当前阈值太严苛,容易把垃圾当宝): TT×(1δ) T \leftarrow T \times (1 - \delta) (降低阈值,让驱逐更容易)
    • 如果 r<kr < k (太容易就找到了,说明阈值太宽松,可能放过了本该保留的对象): TT×(1+δ) T \leftarrow T \times (1 + \delta) (提高阈值,让驱逐更谨慎)

为什么使用阈值而不是 Top-1? 如图 5 所示,Top-1 方法(LRB 使用的方法)是在 kk 个候选中选最差的一个。但如果这 kk 个全是好对象,Top-1 依然会杀掉其中一个。而 MAT 的阈值方法在这种情况下会将它们全部放回(Re-insert),直到找到真正该死的对象。

Figure 5: Why using dynamic threshold to select object to evict. (a) The best TTA threshold is continuously changing. (b) The dynamic threshold method reduces up to \(30 \\%\) misses of the Top-1 method. 上图(原文 Figure 5)解释了为什么动态阈值优于 Top-1 选择。(a) 最佳 TTA 阈值随时间变化。(b) 阈值方法能避免 Top-1 方法在所有候选均很重要时被迫驱逐其中之一的错误。

4.4. 机器学习模型实现

  • 模型: 使用 LightGBM (梯度提升决策树 GBDT)。相比深度学习,它在处理表格数据时速度极快且效果好。
  • 特征 (Metadata):
    • Deltas: 最近 ii 次访问的时间间隔 (Δ1,Δ2,...\Delta_1, \Delta_2, ...)。
    • EDC (Exponential Decayed Counter): 访问频率计数器,随时间衰减。
    • 静态特征: 对象大小、类型等。
  • 训练数据生成: MAT 的训练数据也经过了“过滤”。它只收集那些曾经到达过 LRU 尾部的对象作为训练样本。这大大减少了训练数据量,同时让模型专注于区分“尾部的难例”。

5. 实验设置

5.1. 数据集

实验涵盖了 8 个真实的生产级工作负载(Traces),分为三类:

  1. CDN (内容分发): CDN1, CDN2, CDN3, Wikipedia。特点是对象较大,请求量巨大。
  2. In-memory (内存缓存): Memcachier, InMem。特点是对象极小(KB 级别),对吞吐量要求极高。
  3. Storage (存储 I/O): IBM merged, Microsoft。特点是块级访问。

5.2. 评估指标

  • 字节缺失率 (Byte Miss Ratio): 衡量节省网络流量的核心指标。 Byte Miss Ratio=Size of Missed ObjectsSize of All Requested Objects \text{Byte Miss Ratio} = \frac{\sum \text{Size of Missed Objects}}{\sum \text{Size of All Requested Objects}}
  • 请求处理速率 (Request Processing Rate): 衡量系统吞吐量,单位通常是 requests per second (req/s)。
  • 软件开销 (Software Overhead): 包括平均每次驱逐所需的预测次数 (Predictions per eviction) 和 CPU 时间。

5.3. 对比基线

  • LRB (Learning Relaxed Belady): SOTA 的 ML 缓存算法。
  • LRU: 最基础的启发式算法。
  • 2Q, TinyLFU: 改进型的高级启发式算法。
  • Belady's MIN: 理论最优下界。

6. 实验结果与分析

6.1. 核心结果分析:预测次数与缺失率

实验最关键的结论是 MAT 在大幅减少计算量的同时,保持了极高的预测准确度。

下图(原文 Figure 6)展示了在不同数据集上,MAT(仅用 2 次预测)与 LRB(用 64 次预测)的字节缺失率对比。可以看到,两条曲线几乎重合,说明 MAT 仅用 LRB 1/32 的计算量就达到了相同的效果

该图像是一个对比不同缓存系统(如MAT、LRU等)在不同缓存大小下的字节失效率的折线图,展示了在各种工作负载下,MAT框架表现出的高效性和较低的失效率。 上图(原文 Figure 6)显示,MAT(2)(即每次驱逐平均 2 次预测)在大多数工作负载下的缺失率曲线与 LRB(64) 几乎完全重合,且显著优于 LRU。

6.2. 软件开销分析

下表展示了 MAT 与 LRB 在开销上的具体量化对比。结果令人印象深刻:

以下是原文 Table 3 的结果(Cache Size 256GB, Wikipedia workload):

Metric LRB MAT Reduction
Number of predictions (预测次数) 63.2 2.0 32 times (32倍)
Prediction time (预测时间) 240 us 6.4 us 38 times (38倍)
Feature building time (特征构建时间) 60 us 2.9 us 21 times (21倍)
Total time (总时间) 300 us 9.3 us 32 times (32倍)

分析: 总时间从 300 微秒降低到 9.3 微秒,这意味着 MAT 使得 ML 缓存算法终于有可能在实际的高性能系统中落地。

6.3. 原型系统吞吐量

作者在 Facebook 开源的 Cachelib 系统中实现了 MAT,并与默认的 LRU 实现进行了对比。

以下是原文 Table 5 的结果(Wikipedia & Memcachier workloads):

Trace Cache Size MAT Throughput LRU Throughput
Wikipedia 32 GB 23,787 req/s 24,465 req/s
128 GB 25,117 req/s 25,577 req/s
512 GB 30,258 req/s 31,181 req/s
Memcachier Infinite 52,883 req/s 51,380 req/s

分析: MAT 的吞吐量仅比纯 LRU 低 1%~3% 左右,在 Memcachier 负载下甚至略高(可能是因为更低的缺失率减少了其他开销)。这证明 MAT 的额外开销在端到端系统中几乎可以忽略不计。

6.4. 鲁棒性与启发式算法的选择

  1. 对启发式算法不敏感: 如图 7 所示,无论 MAT 后端接的是 LRU、2Q 还是 TinyLFU,MAT 都能将其性能提升到相似的高水平。这说明 MAT 具有很强的通用性。

    该图像是一个图表,展示了不同缓存策略(LRU、MAT-LRU、2Q、Tiny)在不同缓存大小下的字节失效率。图中包括四个子图,分别对应不同的工作负载(CDN1、CDN2、CDN3 和 Wikipedia),可视化了策略效果的对比。 上图(原文 Figure 7)展示了 MAT 在 LRU、2Q 和 TinyLFU 基础上均能显著降低缺失率。

  2. 对慢速预测的容忍度: 如图 8 所示,即使人为将 ML 预测变慢(Stall),MAT 的性能也是优雅降级(Gracefully Degrade)。当 ML 完全跟不上时,MAT 就会退化为普通的 LRU,而不会导致系统崩溃或阻塞。

    Figure 8: MAT with slow Predictions. When the ML model is slower, the miss ratio degenerates gracefully. 上图(原文 Figure 8)展示了当 ML 预测延迟增加时,MAT 的性能逐渐退化,但始终优于或等于基线 LRU。

7. 总结与思考

7.1. 结论总结

本文提出了 MAT 框架,成功解决了 ML 缓存算法“高精度但高开销”的难题。

  1. 机制创新: 利用启发式算法作为高效过滤器,只对“尾部”对象进行 ML 判决。
  2. 性能突破: 将 ML 预测开销降低了 30 倍以上,同时保持了 SOTA 级别的缓存命中率。
  3. 实用性: 实现了生产级原型,证明了该方法可以无缝集成到现有的高性能缓存系统中(如 Cachelib)。

7.2. 局限性与未来工作

  • 模型依赖: 尽管开销降低,MAT 依然需要维护一个在线训练和推理的 ML 管道,这比纯算法系统增加了运维复杂度。
  • Gap 依然存在: 尽管 MAT 追平了 SOTA ML 算法,但距离理论最优的 Belady 算法(图 6 中的 OPT 曲线)依然有差距。作者认为 MAT 极低的开销为未来使用更复杂、更强大的 ML 模型(如深度学习)来进一步缩小这一差距提供了空间。

7.3. 个人启发与批判

  • 工程与算法的完美结合: 这篇论文是系统研究的典范。它没有盲目追求“更复杂的模型”,而是利用系统架构的特性(LRU 的尾部特性)来优化 ML 的部署。这种“用传统算法做粗筛,用 AI 做精筛”的思路在很多领域(如数据库索引、推荐系统召回)都极具借鉴意义。
  • 动态阈值的智慧: 算法 1 中的动态阈值调整非常精妙。它本质上是一个反馈控制回路(PID Control 的简化版),能够让系统自适应地在计算资源和决策质量之间寻找平衡点。
  • 思考: 虽然 LightGBM 已经很快,但在超高并发(如每秒百万级请求)的场景下,任何微秒级的延迟都可能被放大。未来的工作可能会探索将这种推理逻辑下沉到网卡(SmartNIC)或 FPGA 上,以实现真正的零 CPU 开销。

相似论文推荐

基于向量语义检索推荐的相关论文。

暂时没有找到相似论文。