文章/falconfs-for-deep-learning-pipelines

6 分钟阅读

FalconFS:面向大规模深度学习流水线的分布式文件系统

分析 FalconFS 面向深度学习流水线的无状态客户端架构。

FalconFS:一种采用无状态客户端架构、专为深度学习流水线优化的分布式文件系统。

原文

FalconFS 摒弃了客户端路径解析与缓存机制,转而通过混合元数据索引与惰性命名空间复制技术,在服务端高效完成路径解析。

AI 内容声明:本文为 DeepSeek-R1 翻译,笔者节选关键内容。

洞察

  • POSIX 接口与层级式目录结构并不适配分布式环境,导致诸多关键使用场景效率低下

    树状的层次结构要求分布式文件系统频繁执行路径解析,任何文件操作前,客户端必须解析完整路径以定位目标文件的 inode。在分布式文件系统中,单个文件操作会引发客户端与元数据服务器间的多次往返通信。

    image.png

  • 为降低路径解析开销,现有分布式文件系统采用客户端元数据缓存技术。即在客户端本地维护目录/文件元数据缓存以避免频繁的远程查找。

问题

有状态客户端对于深度学习训练工作负载来说,效率低下:

  • 深度学习训练工作负载会多次遍历庞大的目录树结构:在生产环境中这些目录树包含数十亿个子目录和数千亿个文件,且所有访问均呈现随机顺序特征。
  • 要么消耗大量客户端内存来缓存大型目录树,要么因请求放大效应导致性能严重下降

解决方案

本文提出无状态客户端架构,实现多数文件操作的单跳访问:将路径解析转移至服务端。

然而,仍需解决两个关键问题:

  1. 客户端需要一种定位文件 inode 对应的元数据服务器的方法
  2. 每个元数据服务器应具备本地路径解析能力,在处理客户端文件操作请求时无需额外网络跳转

对于 1. FalconFS 客户端通过文件名哈希将文件 inode 分配到元数据服务器。

对于 2. FalconFS 将文件系统的目录树结构复制到所有元数据服务器。为降低维护开销,系统采用惰性同步策略更新命名空间,并通过基于失效的机制(数据发生变化时,通过使相关缓存或副本失效)实现并发控制。

目录树结构包含路径解析所需的目录属性条目,但不包含文件属性。对于十亿量级的目录,每个元数据节点上命名空间副本的存储占用不足 100GiB,这一开销是可接受的。

深度学习管道中的工作负载模式

  1. 大量目录中存在众多小对象。单个文件大小从几 KB 到几 MB 不等,多数不超过 256KB。实际生产环境中,动态数据集规模可达数百 PB,由超过 3000 亿个小文件构成。
  2. 随机文件遍历。在训练阶段,任务以遍历和随机的方式访问数据集。具体而言,每个训练周期中每个文件仅被访问一次,且访问顺序是随机的
  3. 突发性文件访问。在标注阶段,推理任务以流水线方式从 FalconFS 读写文件,涉及海量小文件 IO 和目录列表操作
  4. 严苛的资源预算。CPU 和内存是计算节点的稀缺资源。训练任务在 CPU 上执行数据增强操作,会消耗大量 CPU 周期与内存资源。

一些有趣的现象、结论

  • 要实现最佳性能必须分配足够内存来缓存所有目录。否则,性能将随缓存容量减少而相应下降
  • 在生产环境中,缓存工作集目录带来难以承受的高成本。
    • 华为某生产集群,1000 个客户端节点,数十亿个目录
    • 每个目录缓存需占用 800 字节(其中 inode 占 608 字节,dentry 占 192 字节)
    • 缓存 10 亿个目录的 10%,则单节点需 80GiB 内存,总缓存需求达 80TiB
  • 对于突发请求,元数据服务器在读取操作期间会出现严重的负载不均衡
    • CephFS 倾向于将同一目录下文件的元数据集中存储,导致针对同目录文件的突发操作会使单个元数据服务器过载,从而形成性能瓶颈

架构

image.png

  • FalconFS 客户端模块是一个内核模块
  • 元数据节点(MNode)是搭载定制扩展的 PostgreSQL 数据库
  • 中央协调器(central coordinator)负责管理命名空间变更,跑负载均衡算法
  • 文件存储是分布式块存储系统,用于存储文件数据。文件块通过哈希文件 ID 结合块偏移量进行索引。

混合元数据索引

image.png

混合元数据索引在常规情况下采用文件名哈希。

  • 所有文件均依据文件名的哈希值进行存储。
    • 然而,文件名哈希无法保证文件在不同服务器间的均衡分布,可能导致负载不均问题。
    • 深度学习工作负载的大目录特性显著促进了文件名哈希效果,极大降低了负载不均衡的发生概率。根据大数定律,在此类大规模目录下,文件向元数据节点的分布将趋于均匀。
  • 某些情况下,文件名哈希可能导致文件分布不均
    • 热点文件名:应用程序的命名规范可能导致某些文件名出现频率高于其他文件名。
    • 哈希方差:唯一文件名的数量并未显著多于元数据节点数量
    • 为处理这些极端情况,FalconFS 采用选择性重定向作为补充机制,维护了一个共享异常表,用于指定哪些文件名应被重定向及重定向方式。
      • 路径遍历重定向。为放置具有热门文件名的文件,FalconFS 不仅根据文件名,还结合其父目录 ID 计算哈希值。
      • 强制覆盖重定向。当哈希偏差导致文件名在节点间分布不均时,FalconFS 可将选定文件名重新分配到指定节点,从而将负载从过载节点转移至利用率不足的节点。

负载均衡

相关阅读

文章阿里盘古性能导向的演进Memo通过 SSH 迁移 btrfs volumes文章PolarFS: An Ultra-low Latency and Failure Resilient Distributed File System for Shared Storage Cloud Database

讨论

邮箱用于身份识别和回复通知,并由 Waline 存储。