[ PROMPT_NODE_22308 ]
Distributed Training Deepspeed 教程
[ SKILL_DOCUMENTATION ]
# Deepspeed - 教程
**页面数:** 59
---
## DeepNVMe
**URL:** https://www.deepspeed.ai/tutorials/deepnvme/
**内容:**
- DeepNVMe
- 内容
- 要求
- 创建 DeepNVMe 句柄
- 使用 DeepNVMe 句柄
- 阻塞文件写入
- 非阻塞文件写入
- 并行文件写入
- 固定张量 (Pinned Tensors)
- 综合应用
本教程将展示如何使用 DeepNVMe 在持久存储与驻留在主机或设备内存中的张量之间进行数据传输。DeepNVMe 通过构建在非易失性内存主机控制器接口 (NVMe) 固态硬盘 (SSD)、Linux 异步 I/O (libaio) 和 NVIDIA Magnum IOTM GPUDirect® Storage (GDS) 之上的强大优化,提高了深度学习应用中 I/O 操作的性能和效率。
确保你的环境已正确配置以使用 DeepNVMe。首先,你需要安装 DeepSpeed 版本 >= 0.15.0。接下来,确保 DeepNVMe 算子在 DeepSpeed 安装中可用。任何 DeepNVMe 功能都需要 async_io 算子,而 gds 算子仅在 GDS 功能中需要。你可以通过检查 ds_report 的输出来确认每个算子的可用性,以检查兼容状态是否为 [OKAY]。下面是确认 async_io 和 gds 算子可用性的 ds_report 输出片段。
如果 async_io 算子不可用,你需要为你的 Linux 发行版安装适当的 libaio 库二进制文件。例如,Ubuntu 用户需要运行 apt install libaio-dev。通常,你应该仔细检查 ds_report 的输出以获取有用的提示,例如以下内容:
要启用 gds 算子,你需要通过查阅裸机系统或 Azure VM(即将推出)的适当指南来安装 NVIDIA GDS。
DeepNVMe 功能可以通过两个抽象来访问:aio_handle 和 gds_handle。aio_handle 可用于主机和设备张量,而 gds_handle 仅适用于 CUDA 张量,但效率更高。使用 DeepNVMe 的第一步是创建一个所需的句柄。aio_handle 需要 async_io 算子,而 gds_handle 同时需要 async_io 和 gds 算子。以下片段分别说明了 aio_handle 和 gds_handle 的创建。
为简单起见,上述示例说明了使用默认参数创建句柄。我们预计使用默认参数创建的句柄在大多数环境中都能提供良好的性能。但是,你可以在下面查看高级句柄创建。
aio_handle 和 gds_handl