openlake: 针对 GPU 工作负载的高吞吐量分布式对象存储,绕过主机 CPU 和内核
openlake: 针对 GPU 工作负载的高吞吐量分布式对象存储,绕过主机 CPU 和内核
它解决了什么问题
OpenLake 旨在通过减少从存储到 GPU 显存移动数据的时间来消除 AI 基础设施中的瓶颈。它解决了由主机 CPU、页缓存(page caches)和多个用户空间副本引起的开销,这些开销通常会减慢训练和推理集群的速度。
工作原理
OpenLake 是一个使用 Rust 和 io_uring 构建的分布式对象存储,采用 thread-per-core 架构。它采用了几种高性能技术:
- 零拷贝数据移动:使用 GPUDirect Storage 和 RDMA 将数据直接从网络接口卡 (NIC) 移动到 GPU VRAM,绕过主机内存和内核。
- 绕过内核:HTTP 前端和存储引擎运行在同一个线程上,以防止请求跨越核心边界。
- 高效存储:使用 SIMD Reed Solomon 纠删码来降低存储成本,同时保持高吞吐量。
- 拥塞控制:实现 PacedRDMA,一种基于信用的系统,用于处理请求突发并最小化尾部延迟。
适用对象
它适用于构建 AI 基础设施的开发人员和工程师,特别是那些管理用于训练和推理的高吞吐量 GPU 工作负载的人员。
亮点
- 高性能:提供超过一百万的 IOPS,延迟低于 1ms。
- S3 兼容性:可以使用任何标准的 S3 客户端进行交互。
- 基于 Rust:使用 Rust 语言构建,旨在实现安全性与内存效率。
- 硬件加速:利用 GPUDirect Storage 和 RDMA 实现最大吞吐量。
Sources
- undefinedopenlake-project/openlake