您好!欢迎光临某某钣金加工有限公司网站!
钣金加工一站式制造供应商
设计定制、生产加工、整机装配、设备接线
客户咨询服务热线:
400-123-4567
HASH GAME - Online Skill Game ET 300不必追求极致性能?大模型时代我们需要什么样的存储系统
您的位置: 首页 > 新闻中心 > hashgames > HASH GAME - Online Skill Game ET 300不必追求极致性能?大模型时代我们需要什么样的存储系统

HASH GAME - Online Skill Game ET 300不必追求极致性能?大模型时代我们需要什么样的存储系统

作者:小编    发布时间:2025-02-12 12:59:30     浏览次数 :


  HASH GAME - Online Skill Game GET 300

HASH GAME - Online Skill Game GET 300不必追求极致性能?大模型时代我们需要什么样的存储系统

  以云上的数据湖为例,数据通常存储在对象存储服务(如 TOS)中,存在几个关键问题。首先是源数据问题,对象存储是一个扁平的元数据结构,当需要列出或查找文件时,它实际上是一个键值对(KV)扫描操作,性能相对较差。其次其 IO 效率并不高,包括读写吞吐量都受到限制。这不仅体现在账户级别的限流,还体现在单个对象的读写限流,这些都难以满足 AI 场景的需求。此外,对象存储的读取延迟大约为 10 毫秒,但在需要 0.1 毫秒延迟的极端场景下,这显然是不够的。

  常亮:自 2019 年开源以来,到目前 CubeFS 已经进入了 CNCF 毕业的最后阶段。以我们 OPPO 为例,面向大数据和 AI 等业务场景,面临的挑战之一是海量小文件的存储,可能达到百亿级别的单卷,这在元数据扩展性能方面,CubeFS 于 SIGMOD 曾发表过一篇论文,提出了强一致的可扩展的弹性元数据解决方案。此外,CubeFS 可以作为数据湖的存储底座,除了 POSIX,也兼容了一个名为 HDFS、S3 接口,可以与大数据对接,为 AI 的一站式的存储解决方案提供了基础,从代码开发到数据清洗、再到训练加速以及模型分发,都可以在 CubeFS 找到解决方案。

  苏锐:过去,高性能计算主要依赖 MPI 范式,这要求计算和存储之间频繁通信,对存储性能和网络稳定性要求极高。但随着 MapReduce 和 AI 的发展,我们开始采用更分布式的系统设计。在 AI 训练中,数据访问模式的变化也带来了新的存储需求。例如,早期的 CNN 模型需要多次迭代使用同一个数据集,可以通过缓存机制来优化数据访问。然而,对于大型语言模型,由于其训练过程中数据的随机抽样特性,传统的缓存策略可能不再有效,需要新的数据预热和存储策略来保证数据访问的低延迟和高吞吐。

  苏锐:文件存储服务的核心是客户端、元数据管理和数据管理。我们认为对象存储服务如 S3 已经非常成熟,因此我们决定在 S3 的基础上构建服务,将 S3 视为一个大硬盘。为了实现高可用性,我们使用 Raft 协议,通常以 3 节点模式运行,也支持扩展到 5 节点。对于处理大规模文件,我们采用子树分片方法,每个分片都是独立的 Raft group。在容错方面,我们采用全内存元数据管理,实现多副本,并且有额外的异地灾备,确保数据持久性高达 10 个 9 的水平。

  常亮:CubeFS 是一个一站式存储系统,适用于 AI 和存算分离等多种场景,注重读写性能,也认为利用 RDMA 硬件提升性能可以给 AI 的一站式服务带来收益,这种收益体现在用户的代码编辑、数据集导入、分布式缓存支持混合云训练、私有云 AI 存储计算服务过程。CubeFS 的元数据子系统是一个基于 RAFT 的强一致性系统,元数据是分片的、使用三副本策略来管理,以提高性能和可靠性。数据层面,我们提供了多副本和纠删码两种存储方案,以平衡成本和耐久性。数据耐久度有多方面的因素,除了副本算法,也涉及快速校验和修复机制,以增强数据的耐久度,我们追求至少 10 个 9 的数据耐久度,但也可以根据需求提供更高的耐久性,用户根据需求来选择。此外,CubeFS 支持跨 AZ 容灾功能,以支持在多个可用区部署数据,确保在某个 AZ 宕机时数据依然可用。

  在集群内部,我们通过心跳机制来监测节点状态。一旦发现某个节点宕机,系统会将对该节点的读请求重定向到其他健康的 data Server 上。与 HDFS 的 data NODE 不同,我们的 data Server 存储哪些数据块完全基于客户端的请求。客户端请求什么,data Server 就会根据内部的策略自主决定,包括批量处理策略和 LRU(最近最少使用)以及 LFU(最少频繁使用)算法来支持缓存决策。系统会根据请求来判断哪些数据应该被缓存。在可靠性方面,我们完全依赖于 TOS。

  我们的社区版支持多种元数据引擎,适合不同规模的需求。对于大规模文件存储,我们推荐使用分布式 KV 存储,如 TiKV,它能够处理高达数百亿的文件数量。企业版则是为大规模数据和高负载计算场景设计的,拥有自研的元数据引擎,支持元数据的横向扩展。我们采用了一种简单的分区方案,可以根据需要将目录树划分到不同的元数据分区。我们还开发了自动算法来平衡分区选择,以及手动调整接口,以便在线迁移和重新平衡负载,确保不影响业务运行。

  常亮:存储系统在元数据管理上一般采用了两种扩展算法:ALLOC 和哈希。ALLOC 算法支持水平扩展,而哈希算法需要处理键的分裂和迁移,也有两种算法的相互结合,例如先 ALLOC 再次哈希。为了应对元数据的海量存储、解决目录子树高负载热点问题,CubeFS 未使用亲和性组织划分,最终选择了打散形式的元数据管理,以保持使用上的均衡和减少热点问题。对海量大规模文件支持的更好办法是创建多个分区以充分利用资源。为了更好的解决元数据访问的性能问题,使用了内存化 B 树方式来管理元数据信息,同时,CubeFS 也支持基于 rocksdb 的元数据引擎,以节约成本并处理海量小文件。

  苏锐:在处理用户关于自动冷热分层的需求时,我们发现虽然文件系统层面尚未原生支持这一特性,但底层对象存储实际上具备这种能力,在 JuiceFS 可以直接利用,只是用户体验方面还有待提升。我一直在关注用户的需求,希望能够更好地理解他们的想法,并欢迎他们提供反馈。对于冷热分层,首先需要确定哪些数据是冷的,哪些是热的。这可以通过业务管理视角来实现,也可以期待存储产品能够自动提供这些信息。例如,JuiceFS 中的访问时间默认是关闭的,为了性能考虑,但我们可以通过元数据进行离线分析来帮助客户识别冷热数据。

  李经纶:我们目前面临的一个迫切需求是 Catalog 功能。对于大型模型公司而言,它们本身就是数据公司,运营着 APP 和传统数仓,因此对数据治理的需求是切实存在的。治理这些数据的首要任务是能够有一个统一的平台来查找、查看数据,并了解它们的访问情况,同时管理数据权限,这是至关重要的。其次,在 Catalog 层面,我们发现数据集还缺少类似 table formation 这样的功能,这种功能能够支持多版本的 Sidecar 数据。即使是非结构化数据集,也需要这样的管理能力。目前,我们的客户大多是自行开发系统来管理这些需求,但如果公有云或开源社区能够提供一个标准化的系统,我相信他们会非常愿意使用。

  李经纶:在当前的公有云环境中,对象存储已经成为一种事实上的存储标准。各种数据,无论是结构化的还是非结构化的,都趋向于汇集到对象存储中。然而,由于上层应用负载的多样性,对于存储的需求也变得越来越复杂。为了支持这些不同的负载,引入了一层透明的缓存层,如 Pro 层,来支持这些应用场景。这种缓存层最初是为了支持大数据场景而设计的,但现在已经发展到可以支持 AI 场景。这种解决方案可以提供更好的数据访问性能,同时降低延迟,提高数据处理的效率。