Comparthing Logo
机器学习缓存基础设施延迟优化云计算模特服务云和基础设施

机器学习系统中的缓存策略与按需计算

机器学习系统中的缓存策略存储预先计算的模型输出或中间数据,以加速重复查询,而按需计算每次都生成新的结果,以速度为代价换取简单性和更低的存储开销。

亮点

  • 对于频繁请求的预测,缓存可以将机器学习服务延迟从数百毫秒降低到亚毫秒级。
  • 按需计算消除了缓存失效的复杂性,但难以应对流量高峰和重复的冗余工作。
  • 特征存储使缓存层更容易访问,并将它们直接集成到现代 MLOps 工作流程中。
  • 无服务器按需平台引入了冷启动惩罚,这使得它们不适合对延迟敏感的实时机器学习应用程序。

机器学习系统中的缓存策略是什么?

预先计算模型输出、嵌入或中间张量的存储,以减少冗余计算。

  • Redis 和 Memcached 被广泛采用为生产机器学习管道中低延迟特征服务的内存缓存。
  • 对于检索增强生成 (RAG) 系统,嵌入缓存可以将延迟从数百毫秒降低到亚毫秒级。
  • 使用 TTL(生存时间)策略进行模型输出缓存有助于在底层数据分布发生变化时管理过时的预测。
  • Feast 和 Tecton 等特征存储系统集成了缓存层,以同步在线和离线特征计算。
  • 缓存失效仍然是机器学习系统中最棘手的问题之一,尤其是对于持续训练的模型而言。

按需计算是什么?

每当收到请求时,实时计算预测、特征或嵌入,无需预先存储结果。

  • 按需推理是大多数基于 REST API 的模型服务的默认模式,Flask 和 FastAPI 等框架就是很好的例子。
  • AWS Lambda 和 Google Cloud Functions 等无服务器平台天然适合按需计算和按使用量计费。
  • 对于大型深度学习模型,无服务器按需系统的冷启动延迟可能超过几秒钟。
  • 纯粹的按需方式避免了缓存一致性问题,但可能难以应对突发流量模式。
  • 许多生产系统实际上融合了这两种方法,仅在缓存未命中时才按需计算。

比较表

功能 机器学习系统中的缓存策略 按需计算
潜伏期特征 缓存命中时间:亚毫秒级到毫秒级 根据模型复杂度,耗时从毫秒到秒不等。
存储要求 较高;需要内存或磁盘空间来缓存数据。 极简设计;仅包含模型权重和代码
成本结构 基础设施基准成本较高 可变;随请求量变化
复杂 更高;需要缓存失效逻辑 较低;更简单的架构
负载下的可扩展性 非常好;缓存可以有效吸收流量高峰。 性能差;每次请求都会消耗计算资源。
预测新鲜度 如果没有适当的TTL(生存时间),可能会出现结果过时的风险。 始终使用最新版本
典型应用案例 高QPS推荐,搜索排名 批量处理、低流量 API、原型设计

详细对比

性能和延迟

当毫秒级的延迟至关重要时,缓存的优势就显现出来了。基于 Redis 的缓存可以预先存储计算好的嵌入向量或模型输出,响应时间可以低于一毫秒,而即使是轻量级的神经网络通常也需要 10-100 毫秒。然而,缓存未命中会带来双重开销:不仅需要支付缓存查找的成本,还需要支付全部的计算成本。按需计算虽然速度较慢,但性能可预测,而且不存在这种双峰延迟分布。

基础设施成本

成本构成会随着流量模式的变化而变化。缓存需要预先投资于内存优化实例或托管缓存服务,这些服务会持续运行。按需无服务器函数在低流量情况下似乎更便宜,但在持续高流量的情况下成本会变得很高。像 Netflix 这样的公司已经发表了大量文章,阐述了多层缓存如何使其服务成本比纯计算降低几个数量级。

运营复杂性

运行缓存会带来实实在在的运维负担。你需要缓存驱逐策略、预热程序、命中率监控,以及或许最为关键的模型重新训练时的失效策略。按需系统则以简化的部署方式取代了这种复杂性。许多刚开始使用机器学习服务的团队正是因为想要避免这些分布式系统的挑战,才选择按需方案,然后根据规模需求选择性地添加缓存。

模型新鲜度和准确性

过期的缓存会在机器学习中带来一些不易察觉的正确性问题。例如,基于昨天数据重新训练的推荐模型可能会产生与缓存版本不同的输出。基于生存时间 (TTL) 的过期机制虽然有所帮助,但却引入了新鲜度和延迟之间的权衡。按需计算自然地规避了这个问题,它始终调用当前模型。一些对正确性要求严格的金融和医疗应用,尽管会带来性能损失,但有时仍然倾向于选择这种保证。

混合架构

生产环境的实际情况很少与教科书上的模式完全吻合。大多数成熟的机器学习平台会在缓存层失效时采用按需计算作为备选方案,从而形成一种透明的混合模式。这种方法允许团队在保证正确性的同时,优化常见情况。挑战在于如何设计缓存键,既能捕获所有相关的输入变化,又不会大幅增加存储需求。

优点与缺点

机器学习系统中的缓存策略

优点

  • + 极低的延迟
  • + 能够平稳应对交通高峰
  • + 降低大规模计算成本
  • + 实现复杂的预计算

继续

  • 更高的基础设施成本
  • 缓存失效复杂度
  • 预测过时的风险
  • 需要进行热身程序

按需计算

优点

  • + 简单的架构
  • + 始终保持新鲜预测
  • + 降低基准成本
  • + 易于部署和调试

继续

  • 每个请求的延迟更高
  • 突发处理能力差
  • 冗余计算
  • 无服务器架构中的冷启动惩罚

常见误解

神话

缓存仅适用于简单的查找表,无法处理复杂的机器学习模型输出。

现实

现代机器学习缓存会存储词嵌入、注意力输出,甚至部分计算图。Transformer推理系统通常会缓存键值注意力状态,以加速自回归生成。

神话

按需计算总是更便宜,因为可以避免为闲置的缓存基础设施付费。

现实

在实际规模下,冗余计算的成本往往会超过缓存基础设施的成本。与预留缓存实例相比,云服务提供商按请求计费的按需推理成本可能会迅速累积。

神话

使用标准 TTL 策略,缓存失效问题已经得到解决。

现实

机器学习模型面临着独特的失效挑战。模型版本、特征模式和数据管道都在独立变化,这使得“过时”的定义变得困难。许多生产事故都源于不易察觉的缓存一致性错误。

神话

你必须在缓存和按需计算之间做出选择。

现实

混合架构已成为生产环境中的常态。例如,基于 Redis 的特性存储系统,可以按需回退冷缓存条目,从而透明地结合两种方法。

神话

无服务器按需功能适用于所有实时机器学习服务场景。

现实

冷启动延迟和容器生命周期限制使得无服务器架构不适用于对延迟敏感的应用。对于机器学习工作负载,预热容器或专用推理服务器的性能通常优于纯粹的无服务器架构。

常见问题解答

机器学习系统中的模型输出缓存是什么?
模型输出缓存会存储先前推理请求的预测结果,以便无需重新运行模型即可立即处理相同或类似的未来请求。这项技术对于具有重复输入的确定性模型尤为有效,例如分类 API 或嵌入服务,这些服务会频繁查询相同的文档。
按需计算如何应对突发的流量高峰?
除非经过专门架构设计,否则很难实现自动扩展。纯粹的按需系统通过添加计算实例来扩展,这需要时间。如果没有自动扩展或预配置容量,流量高峰会导致请求排队、超时或性能下降。这正是为什么通常会添加缓存层作为保护缓冲的原因。
实现机器学习缓存的常用工具有哪些?
Redis 和 Memcached 仍然是内存缓存的热门选择。Feast、Tecton 和 SageMaker Feature Store 等特征存储系统都内置了缓存功能。对于嵌入相关的特定用例,Pinecone、Weaviate 和 Milvus 等向量数据库则可用作相似性搜索结果的专用缓存。
我应该何时使我的机器学习缓存失效?
失效应在模型重新训练、特征管道更新、模式变更或监控检测到预测漂移时触发。许多团队采用版本化的缓存键而非真正的失效机制,只是简单地将数据路由到新的缓存命名空间,而旧条目则通过 TTL(生存时间)自然过期。
缓存技术能否与个性化机器学习推荐系统配合使用?
是的,但这需要精心设计缓存键。用户专属推荐可以按用户 ID 进行缓存,但这会成倍增加存储需求。常见的策略包括全局缓存热门商品,然后将其与实时个性化信号相结合,或者在功能级别而非最终推荐级别进行缓存。
按需机器学习服务中的冷启动问题是什么?
冷启动是指无服务器函数或容器在处理请求之前必须进行初始化,包括将大型模型权重加载到内存中。对于深度学习模型,这可能需要几秒钟的时间,因此尽管无服务器架构操作简单,但它并不适合同步的面向用户的应用程序。
特征存储与缓存策略有何关系?
特征存储是一种专门为机器学习特征设计的组织化缓存层。它同时维护用于低延迟服务的在线存储和用于保证训练数据一致性的离线存储。通过集中化特征计算和存储,特征存储减少了纯粹按需系统原本会执行的冗余工作。
缓存的机器学习预测是否存在反馈循环的风险?
没错。如果缓存的预测结果影响下游数据收集,而这些数据随后又用于重新训练模型,就会形成自我强化的循环。缓存的推荐系统可能会过度展示某些项目,收集有偏差的交互数据,然后重新训练模型以强化这种偏差。监控和定期刷新缓存有助于缓解这种情况。
对于机器学习,如何选择边缘缓存还是集中式缓存?
边缘缓存将结果放置在更靠近用户的位置,从而降低地理位置分散的应用程序的网络延迟。然而,它会使失效机制和数据一致性问题变得复杂。集中式缓存管理起来更简单,但会增加网络跳转次数。内容分发网络和分布式 Redis 集群则提供了折衷方案。
对于机器学习缓存层,我应该跟踪哪些指标?
命中率、未命中率和命中延迟是关键指标。此外,还要跟踪缓存新鲜度(自计算以来的时间)、失效延迟以及每次命中节省的计算成本。这些指标有助于判断您的缓存配置是否真正提升了系统性能,还是仅仅增加了复杂性。
按需计算有可能超越缓存吗?
在特定情况下,答案是肯定的。对于高度独特、不重复且重叠极少的查询,缓存命中率会下降,缓存管理的开销就会变成纯粹的成本。同样,当模型更新非常频繁时,缓存的过期时间可能不可接受。一些流式应用程序也有严格的单次处理要求,而缓存会违反这些要求。
缓存和按需方式下,GPU 利用率有何不同?
按需GPU推理在低流量时段往往利用率不足,而在流量高峰时段则会出现排队现象。缓存通过吸收原本需要推理的请求来降低GPU负载,从而实现更合理的资源利用规划。一些组织专门利用缓存来缩减GPU集群规模,同时保持吞吐量。

裁决

当延迟和吞吐量是您的主要需求时,尤其是在高流量的推荐和搜索应用中,应选择缓存策略。如果简单易用、降低基础设施开销或保证预测结果的新鲜度比单纯的速度更重要,则应选择按需计算。大多数生产系统最终都会演进为一种能够平衡这些优先级的混合模式。

相关比较