通过网络直接从另一台计算机的内存中读取文件

Reading files directly from the memory of another computer over a network

本文关键字:计算机 一台 内存 文件 读取 网络      更新时间:2023-10-16
  1. 我正在做一个大规模的深度学习实验,涉及大约800GB的图像数据
  2. 计算服务器上的可用空间只有30 GB,无法扩展到匹配800 GB
  3. 目前,我通过使用Python将数据划分为30GB的块来解决这个问题,然后通过使用openssh复制来处理它们。每次我需要另一个区块时,我都会删除当前的区块,然后重复下一个区块的过程。在CNN训练的几个时代里,这个过程被重复了数百次
  4. 虽然我还没有进行基准测试,但我担心这是否是一个非常主要的性能瓶颈,因为CNN的训练本身需要数周的时间才能获得如此规模的数据。重复复制可能代价高昂
  5. 我从来没有机会面对这个问题,所以现在我在想,是否可以直接从存储服务器的内存中读取文件进行处理

具体来说,我的问题是:

  • 是否可以直接从另一个系统的内存中读取文件,就好像这些文件在同一个系统上一样,而不需要显式scp
  • 什么样的C++框架可以用来做这样的事情
  • 在这种资源受限的情况下,专业程序员通常使用什么技术

我不是计算机科学专业的学生,这是我第一次遇到以性能为中心的问题。因此,我几乎没有处理此类案件的实际经验。因此,一点启发或参考将是伟大的。

这听起来可能有点粗鲁,但您需要意识到您不能在计算器上进行任何形式的真实世界机器学习

如果你有一台使用10年的机器或拨号上网,你就无法分析大数据。事实上,您的服务器当时有30Gb的免费hdd空间,而您可以以低于200美元的价格轻松购买1Tb,这意味着这里确实出了问题。

许多机器学习算法在收敛之前多次迭代数据,因此任何需要多次下载/删除数据的解决方案都会明显(不切实际)慢一些。即使假设有一个非常快速稳定的200 Mb/s连接,下载整个数据也需要几个小时。现在再重复100次(神经网络在100次迭代后收敛几乎是不可能的),你就会看到你的情况有多糟糕。

这接近我的最后一句话-如果你想处理大数据,请升级你的机器以处理大数据

复制的显式成本,还是读取延迟数据的隐式和隐藏式成本,哪个成本更高?

作为一个数据点,谷歌刚刚宣布了TensorFlow的分布式版本。可以进行CNN培训。(请参见https://www.tensorflow.org/versions/r0.8/tutorials/deep_cnn/index.html详细信息。)在这种情况下,每台机器最终一次处理一大块数据。以一种与你已经在做的事情没有什么不同的方式。