专栏名称: InfoQ
有内容的技术社区媒体。
目录
相关文章推荐
新浪科技  ·  “宝妈、白领买得多”,#99元Labubu如 ... ·  2 天前  
36氪  ·  当了两年全职爸爸后,我抑郁了 ·  2 天前  
51好读  ›  专栏  ›  InfoQ

存储优化是 AI 算力瓶颈的破局之道吗?

InfoQ  · 公众号  · 科技媒体  · 2025-04-03 15:08

正文

请到「今天看啥」查看全文


大模型的出现,让人和机器之间的交互障碍逐渐消失,变得更加自然和流畅,并使得 AI 应用呈现井喷式增长。交互界面的简化降低了理解和使用成本,极大扩展了应用场景。近两年,AI 在编程和分析等领域的应用广泛,尤其是 AI 编程,它降低了用户写代码的门槛,可以通过自然语言生成代码,减少了人与机器之间的复杂交互。智能分析作为一个高门槛的应用,过去我们需要用 Excel 或专业软件进行数据分析,技术要求较高,但现在,借助 AI,只需简单的指令就能完成复杂的任务。这将大大降低分析的门槛,使得更多人能够轻松完成高阶分析任务。

赵健博:传统的数据预处理通常在计算层完成,但随着分布式存储技术的发展,越来越多的声音开始探讨将数据预处理下沉到存储层的可能性。那么,这种做法究竟是性能提升的捷径,还是架构复杂性的陷阱呢?

李飞: 将数据预处理和计算下放到存储层,实际上是实现存算一体化或者说存算协同。传统模式下,数据需要从存储层传输到计算层,然后进行处理,这会涉及大量的网络 I/O、序列化和反序列化操作。如果计算下放到存储层,数据移动的开销将大大减少。存储层本身具备分布式特性,能够增强并行处理能力,例如通过分片策略实现并行预处理,从而提升性能。此外,新型存储系统和硬件,如全闪存分布式存储,能够提供较高带宽,进一步加速计算过程。

但也有弊端,首先,存储层同时承担存取和计算任务,可能导致资源竞争,如何设计有效的路由和调度策略是一个挑战。其次,数据一致性问题。存储层缺乏像传统计算层中的容错机制,可能导致数据丢失或重复,这对分布式事务处理构成挑战。此外,将计算和存储能力下放到同一层,可能会增加开发和运维的复杂度和成本。

所以,必须根据场景进行权衡。例如,在 AI 高频场景中,像 KB 缓存管理等,存储层能够直接过滤无效数据,减轻计算层负担。此外,对于实时性要求较高的场景,比如银行的交易数据预处理,存算一体化也是一种有效的解决方案。对于结果一致性要求极高的场景,或是涉及复杂计算任务的场景,如多表关联和 ETL 等,存储层的计算能力可能无法满足需求。这类场景下,我们应根据具体需求谨慎选择是否下放计算到存储层。

李俊: 将数据预处理下放到存储层,可以提高性能,但也会带来架构上的复杂性挑战。首先,这种方式可以在数据读取时直接获取预处理后的数据,减少传输到应用层或计算层的延迟,是一种“以空间换时间”的方法。例如,在进行多维分析时,可能采用这种技术。

然而,这也增加了系统设计的复杂性,尤其是在硬件和数据链路设计方面。数据预处理下沉到存储层要求系统具备强大的计算能力,并支持预处理操作。同时,数据链路需要加入处理调度、校验、备份和恢复机制,这对系统设计提出了更高要求。

适合下沉存储层的数据预处理的场景需要灵活处理和优化的数据分析,尤其是多维分析和热点数据访问。例如,使用维度减少技术处理频繁访问的热点数据。在这些场景下,存储层处理可以有效提高效率。

张文涛: 将存储分为专有存储和通用存储两类,对于专有存储,卸载计算任务到存储层是可行的,在提升性能的同时还不会增加架构复杂度。在专有存储中,我们可以构建极简架构,专注于 AI 训练和推理的存储功能。DeepSeek 开源的 3FS 就是一个典型的专有存储案例。

然而,如果是面向通用存储的厂商,比如我们这样的第三方存储公司,情况就不同了。我们服务的用户涉及多种业务,不仅限于某一特定业务。此时将计算下沉到存储层会增加架构复杂度,因为存储协议通常是通用的,我们需要在专有协议和通用协议之间找到平衡。

此外,存储中的计算资源原本是为了应对峰值负载而预留的。如果将计算任务卸载到存储层,可能会影响存储性能。不过,解决方案也是存在的。比如,存储设备可以将计算任务转移到硬件中处理,如通过读卡或专用的计算单元(DPU)来加速计算。尽管如此,如果存储厂商不做这些工作,其他厂商就会先行一步,可能会形成行业壁垒。

因此,我们在设计架构时,必须谨慎考虑如何解耦专有计算能力。虽然不可能一个存储架构解决所有问题,但我们必须在架构设计上做出选择,这些选择通常是为了实现战略目标而做出的妥协。因此,是否进行计算下沉,如何选择架构设计,最终取决于用户的战略方向。

赵健博: 技术设计的最终决定往往依赖于业务需求发展的方向。关于计算下沉的技术已经提出一段时间了,并非特别新的概念。在大数据实时处理业务中,通常是从 Kafka 中获取数据进行处理,然而受限于 kafka 的行存储模式,在某些场景中不得不在客户端进行过滤,这不仅浪费计资源还带来了延迟的代价,所以针对这样的场景,计算(过滤)下沉到 kafka 通常是比较好的选择。

从通用方面看,我认为一些固定的计算任务,如压缩、加密、过滤等,适合下沉到存储层处理。而对于更复杂、更通用的计算,通常还是保持在计算层比较合适。此外,计算下沉到存储层,但还可能会带来稳定性问题。例如,大规模的数据扫描如果下沉到存储层,可能会导致存储服务节点过载;而同样的作业在计算层,可以做到隔离,且随时可以取消任务,这样可以更灵活地进行控制。







请到「今天看啥」查看全文