分类目录: AI技术

3FS Usrbio 简介

3FS 是一个为 AI 训练设计的分布式文件系统,USRBIO 是其原生客户端的关键功能。研究表明,usrbio 允许用户态应用程序直接提交 I/O 请求,绕过内核和 VFS,提升性能。它使用 Iov 作为大型共享内存进行零拷贝读写,Ior 则像 Linux 的 io-uring,处理批处理 I/O 请求。USRBIO 通过零拷贝和异步 I/O 减少开销,特别适合高吞吐量场景,如 AI 数据处理。

传统的FUSE客户端与服务端的数据交互流程为:

图片源自:https://juicefs.com/zh-cn/blog/engineering/fuse-file-system-design

可以看到数据流在内核和用户态之间要反复拷贝才能传递到应用中。而3FS的USRBIO则卸载了数据流,直接通过3FS的SDK从远端拉取数据,结合RDMA等高效网络,做到了零拷贝。

图片来源:https://developer.volcengine.com/articles/7480397583173877797

总的来说,USRBIO 通过以下方式提升了 I/O 性能:

  1. 零拷贝 I/O:通过共享内存 Iov,数据无需在用户态和内核态之间拷贝,减少了内存拷贝开销。
  2. 批处理 I/O 请求:Ior 允许一次性提交多个 I/O 请求,减少系统调用次数。例如,设置 io_depth=1024 可以批处理 1024 个请求,显著降低上下文切换开销。
  3. 异步 I/O:应用程序可以继续执行其他任务,而不必等待 I/O 操作完成,提升了并发性能。
  4. 高性能网络支持:Iov 内存注册为 InfiniBand,支持 RDMA 等高性能网络传输,特别适合分布式 AI 训练场景。

这些特性使得 USRBIO 特别适合需要高吞吐量和低延迟的 AI 工作负载,例如处理 PB 级数据集的排序任务(如 GraySort 基准测试,3.66 TiB/分钟吞吐量)。

参考链接:
https://developer.volcengine.com/articles/7480397583173877797
https://zhuanlan.zhihu.com/p/30602759754
https://github.com/deepseek-ai/3FS/blob/main/docs/design_notes.md
https://github.com/deepseek-ai/3FS/blob/main/src/lib/api/UsrbIo.md

| 1 分2 分3 分4 分5 分 (5.00- 1票) Loading ... Loading ... | 同时归档在:存储技术, 架构设计, 软件技术 | 标签: , , , , , |

NVIDIA 为 CUDA 添加原生 Python 支持:开启 GPU 计算新篇章

引言

在最近的 GTC 大会上,NVIDIA 宣布为其 CUDA 工具包引入原生 Python 支持,这一举措可能彻底改变 Python 开发者使用 GPU 计算的方式。作为全球最流行的编程语言之一,Python 在数据科学、机器学习和科学计算领域的广泛应用促使了这一更新。NVIDIA 此举不仅降低了 GPU 编程的门槛,还可能进一步推动其在全球开发者社区中的普及,尤其是在印度和巴西等发展中国家。

背景

CUDA 是 NVIDIA 推出的并行计算平台,旨在加速各种计算任务。自 2020 年以来,CUDA 的用户数量从 200 万激增至 2023 年的 400 万,显示出其在开发者中的日益重要性。与此同时,根据 GitHub Blog: Octoverse 2024 Analysis 的数据,Python 在 2024 年超越 JavaScript,成为最受欢迎的编程语言。这一趋势为 NVIDIA 提供了契机,通过整合 Python 支持来吸引更多开发者,尤其是那些习惯使用 Python 进行数据分析和 AI 开发的群体。

CUDA Python 的新功能

NVIDIA 为 CUDA Python 引入了一系列新功能,旨在提升开发效率并简化 GPU 编程:

  • 即时编译(JIT Compilation)
    JIT 编译减少了代码的依赖性,使开发者能够更轻松地管理和部署项目。通过在运行时动态编译代码,这一功能还能提升性能,减少对预编译二进制文件的需求。
  • CUDA Core
    被描述为“Python 风格的 CUDA 运行时重新设计”,CUDA Core 为 Python 开发者提供了更直观的接口来管理 GPU 资源。这对于不熟悉传统 GPU 编程的用户来说尤为友好。
  • NVMath Python
    该组件统一了主机(CPU)和设备(GPU)的库调用,简化了跨架构的代码开发。对于需要在 CPU 和 GPU 之间切换的应用程序,这大大提高了开发效率。
  • cuPyNumeric
    cuPyNumeric 是 NumPy 的 GPU 加速替代品。根据 NVIDIA Developer: cuPyNumeric Overview 的介绍,开发者只需更改 import 语句,就能将现有的 NumPy 代码迁移到 GPU 上运行。这一功能基于 Legate 框架,支持从单 CPU 系统扩展到多节点多 GPU 集群,特别适合处理大规模数据集的研究人员和数据科学家。
  • CuTile
    CuTile 是一种专注于数组级处理的新编程模型,旨在简化 GPU 计算的编码和调试工作。目前它主要为 Python 开发,未来计划扩展到 C++,以覆盖更广泛的开发者群体。

技术细节与支持库

CUDA Python 还包括一些增强功能的组件:

  • cuda.core:提供对 CUDA 运行时和核心功能的 Python 风格访问。
  • cuda.bindings:为高级用户提供对 CUDA C API 的低级 Python 绑定。
  • cuda.cooperative:支持高效的并行算法,如排序、扫描、归约和变换。
  • cuda.parallel:为 Numba CUDA 内核提供 CUB 的块级和线程级原语。

此外,nvmath-python 提供了 CPU 和 GPU 的数学库支持,进一步丰富了科学计算的生态系统。

潜在影响

这一更新有望显著降低 Python 开发者使用 GPU 的门槛,尤其是在数据科学、人工智能和科学模拟等领域。cuPyNumeric 使 NumPy 代码无需大幅修改即可扩展到 GPU 集群,这可能彻底改变研究人员处理大规模数据问题的方式。例如,计算流体力学、机器学习模型训练和高能物理等应用都将受益于更快的处理速度。对于发展中国家而言,Python 的易用性结合 CUDA 的强大性能,可能推动高性能计算资源的普及。NVIDIA 的这一战略不仅提升了开发者的生产力,还可能在全球范围内激发更多创新。

结论

NVIDIA 为 CUDA 添加原生 Python 支持是对 Python 在计算领域日益增长需求的积极回应。通过引入 JIT 编译、CUDA Core、NVMath Python、cuPyNumeric 和 CuTile 等功能,NVIDIA 不仅简化了 GPU 编程,还扩大了其潜在用户群。这一发展有望赋能新一代开发者,尤其是发展中国家的技术人才,让他们能够利用 GPU 的强大能力开发尖端应用。随着生态系统的不断完善,例如 CuTile 未来对 C++ 的支持,GPU 计算的普及性和多功能性将进一步提升。

参考资料

| 1 分2 分3 分4 分5 分 (5.00- 1票) Loading ... Loading ... | 归档目录:AI技术 | 标签: , , , |