问题描述
我有一个由大约 100 万个以上的文件组成的大型 S3 数据集,每个文件的大小为 5-6 MB,我尝试将其导入 AWS FSx for Lustre。所有文件都是 Numpy 数组文件(.npy 文件),我有一个程序将每个 NumPy 数组作为内存映射文件读取,以便它只将每个数组的特定段从磁盘加载到内存中。>
当我们使用常规 EBS 卷和本地实例存储 NVME SSD(例如某些 EC2 实例类型中提供的那些)时,这可以正常工作。但是,当切换到使用 AWS FSx Lustre 时,FSx 始终加载和传输整个 NumPy 数组文件,而不仅仅是我们的应用程序通过内存映射提取的段,这可以从监控文件系统的吞吐量指标中明显看出。>
所以,我想问一下像 Lustre 这样的 NFS 是否支持通过内存映射仅从文件系统加载特定文件段的用例。例如,我可以通过在 Python 中执行以下操作来加载带有内存映射的 NumPy 数组文件:
import numpy as np
mmapped_arr = np.load("<path to a .npy file>",mmap_mode="r")
segment = mmapped_arr[0:15]
segment = np.array(segment)
在上述代码片段的最后一行中,使用 EBS 和本地实例存储时,仅将切片段从磁盘加载到内存中。但是在使用 FSX 时,整个阵列都是从磁盘加载的,不必要地消耗了文件系统的吞吐量。
我不确定这是否是使用带有内存映射文件的网络文件系统的限制,所以我想在这里问一下。提前致谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)