通过网络直接从另一台计算机的内存中读取文件
Reading files directly from the memory of another computer over a network
- 我正在做一个大规模的深度学习实验,涉及大约800GB的图像数据
- 计算服务器上的可用空间只有30 GB,无法扩展到匹配800 GB
- 目前,我通过使用Python将数据划分为30GB的块来解决这个问题,然后通过使用openssh复制来处理它们。每次我需要另一个区块时,我都会删除当前的区块,然后重复下一个区块的过程。在CNN训练的几个时代里,这个过程被重复了数百次
- 虽然我还没有进行基准测试,但我担心这是否是一个非常主要的性能瓶颈,因为CNN的训练本身需要数周的时间才能获得如此规模的数据。重复复制可能代价高昂
- 我从来没有机会面对这个问题,所以现在我在想,是否可以直接从存储服务器的内存中读取文件进行处理
具体来说,我的问题是:
- 是否可以直接从另一个系统的内存中读取文件,就好像这些文件在同一个系统上一样,而不需要显式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详细信息。)在这种情况下,每台机器最终一次处理一大块数据。以一种与你已经在做的事情没有什么不同的方式。
相关文章:
- 我的 SDL2 程序需要哪些二进制文件,以便它在另一台未安装 SDL2 的计算机中工作
- 在另一台 PC 上执行程序时加载 SDL2 共享库时出错
- 另一台电脑上的Visual Studio C++项目无法生成
- Homebrew OS X OpenCV - 在另一台Mac上运行时寻找dylib
- 当我在支持 avx2 的机器上编译并在另一台仅支持 avx 的机器上运行二进制文件时会发生什么?
- 如何在另一台未安装 Visual Studio 的计算机中使用由 Visual Studio 生成的 dll
- 在另一台计算机中运行 GTKMM 代码时未定义的符号
- 将Visual Studio C 构建的中间文件移至另一台计算机
- 为什么我的Glreadpixels程序在另一台计算机中不起作用
- 在另一台计算机MFC C++上不进入while循环
- 我可以将TokenPrivileges数组从一台计算机复制到另一台计算机吗
- 从另一台计算机运行opencv可执行文件
- 通过网络直接从另一台计算机的内存中读取文件
- fwrite在一台计算机上浮动,在另一台计算机中浮动
- 在C++中使用 zeromq 将序列化的 Mat 对象发送到另一台计算机
- 一台计算机中出现 msvs 2013 错误 C2057,另一台计算机中没有错误。这是怎么回事?
- 使用蓝牙将陀螺仪数据传输到另一台计算机
- 使用脉冲编码调制从一台计算机到另一台计算机的数据传输
- 如何在另一台计算机(linux)上使用OpenCV运行c++库
- 在局域网上选择一台计算机作为服务器