V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Olament
V2EX  ›  问与答

请问深度学习数据集存储有什么好的解决方案,外置硬盘或者 NAS?

  •  
  •   Olament · 2019-12-03 11:11:49 +08:00 · 3500 次点击
    这是一个创建于 1816 天前的主题,其中的信息可能已经有所发展或是发生改变。
    需求:本人是初级深度学习炼丹师,主要做计算机视觉方向的。现在已经有 1TB 左右的数据了而且在未来还会不断增加。数据主要是图片的形式,每个图片几百 KB 左右。因为现在用的电脑没有预留机械硬盘盘位置,所以不考虑加装硬盘。

    我在网上大致浏览了一下,发现两个不错的解决方案。第一种是类似于 WD MyBook 的外置硬盘。第二种是 NAS 方案。我目前比较倾向于外置硬盘方案,因为 NAS 虽然管理比较方便,但是配置和噪声可能是潜在的问题。对于外置硬盘,比较担心数据丢失和读写性能的问题。训练模型的时候硬盘 IO 这块可能存在瓶颈吗?

    如果有遇到过相关问题的朋友,希望能够分享你们的解决方案。
    25 条回复    2019-12-04 10:41:05 +08:00
    imn1
        1
    imn1  
       2019-12-03 11:41:05 +08:00   ❤️ 1
    1.硬盘箱,不熟悉的情况下,不要用阵列,真出问题时个人完全难以拯救
    2.USB3 + 7200rpm 的不会太差,注意不要多盘同时写就好
    3.瓶颈肯定是 CPU 的,如果数据只有 1T,还不如用 SSD,HDD 只作为备份

    粗略算你的数据量是几百万张,虽然不算巨大,但
    建议花点时间分类 /分目录,挤在一起的话 HDD 寻址可能比读取字节更费硬盘,所以工作用 SSD 更好
    Olament
        2
    Olament  
    OP
       2019-12-03 12:32:20 +08:00
    @imn1 感谢回复,我现在用的就是 SSD 来存放数据集,但是最近开始做视频方面的工作了,所以未来数据的大小肯定辉成倍增长的。所以您觉得 WD MyBook 是一个不错的方案吗?
    ZRS
        3
    ZRS  
       2019-12-03 12:41:28 +08:00 via iPhone
    机械硬盘性能肯定不够 建议分层存储 机械盘放冷数据 需要用的放 SSD

    不推荐 WD MyBook 叠瓦盘性能可靠性都很差 建议买 HGST 的企业级 8T 空气价格也很厚道
    imn1
        4
    imn1  
       2019-12-03 12:45:28 +08:00
    首先,我是基本不买西数的,你可以认为这是个人偏见也没所谓
    我一般选择是硬盘+盒子或箱子,盒子比盘需要更慎重购买,我个人 3 寸用优越者,2 寸用 SSK

    PS:我觉得深度学习写盘并不频繁啊,还比不上要经常写 log 的程序,只是读取频繁而已,你是中间结果需要 dump 到盘上么?
    ipwx
        5
    ipwx  
       2019-12-03 12:52:01 +08:00 via Android
    窃以为 ssd 存数据集毫无意义。你真训练起来,只要把读取图片放到后台线程就行了。基本上复杂的 cnn,单个 batch 的运行时间都是秒级的,一秒还不够你一个后台线程机械硬盘读完一个 batch 的嘛?
    Olament
        6
    Olament  
    OP
       2019-12-03 12:52:22 +08:00
    @imn1 新增长的数据不是深度学习产生的数据,是我们新采集的数据集。所以平常的确是主要以读取数据为主。
    imn1
        7
    imn1  
       2019-12-03 13:00:02 +08:00
    @ipwx
    他可能不单止是识别,还有训练样本,训练样本视乎数量级,极可能是小时级的运算时长
    Olament
        8
    Olament  
    OP
       2019-12-03 13:00:54 +08:00
    @ipwx 对的我也是这么想的。只是想知道有没有人这么实践过
    lsylsy2
        9
    lsylsy2  
       2019-12-03 13:03:26 +08:00
    看起来大部分数据是冷数据?
    我个人是比较旁门左道的方案:大型台式机机箱+二手硬件
    家用主板
    +i3i5 级别配置
    +SATA 扩展卡 /SAS 直通卡,只用来扩展接口,不用高级的 RAID 等功能
    +snapraid+mergerfs,适合冷数据,可以达到类似 raid6 效果的冗余度

    目前成果是 3000RMB 整套方案,20T 裸容量( 2T*10 ),14T 可用容量( 10 盘里任意坏 3,不会丢数据)。
    加 500 可以配个好的 UPS,加几百可以上万兆或多个千兆口聚合
    feather12315
        10
    feather12315  
       2019-12-03 13:05:38 +08:00 via Android
    @ZRS #3 my book 8T+是 hgst 降级的氦气盘
    tomczhen
        11
    tomczhen  
       2019-12-03 13:15:29 +08:00 via Android
    捡垃圾,组 ceph。
    ipwx
        12
    ipwx  
       2019-12-03 13:52:44 +08:00   ❤️ 1
    @Olament 我们实验室的集群是我搭起来的。

    文件系统和数据库:两台 Xeon E5 做 MooseFS/MongoDB Master,三台 48T (共 144T )做数据存储。MooseFS 是 goal=2 的双倍存储,MooseFS 是 Master/Slave*2 的三倍存储。当然,这些都是偏向于读写速度的配置。写入速度显然不如单机。

    交换机:3 台 Cisco 24 口全千兆 + Ciso 专有的互联接口,这个互联接口好像是 48Gbps 的。

    CPU 集群:10 台 E5。

    GPU 集群:3 台,其中一台 10 卡,另两台各 4 卡。
    - - - -

    实验数据和结果都存在文件系统和数据库服务器上。Home 目录也是 MooseFS 的。计算节点不保存任何数据,开放 Docker。用户系统是 LDAP 服务器。运行良好。
    ipwx
        13
    ipwx  
       2019-12-03 13:55:44 +08:00
    @Olament 哦对,文件系统和数据库服务器,四个千兆网口做了 LACP Bonding。其他计算节点做了双网口的 Bonding。
    Olament
        14
    Olament  
    OP
       2019-12-03 14:15:25 +08:00
    @ipwx 感谢分享!不过这个硬盘主要是我自己平时炼丹用的。我们实验室有另外的配置。
    qping
        15
    qping  
       2019-12-03 14:25:59 +08:00
    @ZRS #3 京东上搜不到官方的 hgst 呢,在哪能买?
    ZRS
        16
    ZRS  
       2019-12-03 14:30:07 +08:00
    @feather12315 谢谢指正 我再了解一下 不过我还是很推荐国行的 HGST 毕竟有五年的质保

    @qping 淘宝几家大店应该都可以 前些日子看 HUS728T8TALE6L4 已经做到 1.1K 左右了
    ryd994
        17
    ryd994  
       2019-12-03 15:12:23 +08:00 via Android
    @ZRS my book 就是氦气盘,西数收购的日立的产品。早期还是日立标。现在换成白标了。实际就是降速企业盘。
    希捷才搞叠瓦技术

    质保对数据安全没有任何用。坏了给你换一块,就这么简单。无非是自己出钱买还是保修出钱买。保修换来的还未必是新盘。搞不好是返修的。

    @qping hgst 被西数收购了。西数的大容量企业盘目前都是 hgst 的生产线。

    @lsylsy2 冷数据别用消费级主板。ECC 强烈推荐。否则数据坏了都不知道怎么坏了。
    lsylsy2
        18
    lsylsy2  
       2019-12-03 15:20:58 +08:00
    @ryd994 我用的 snapraid 实质是定时对各个盘的内容进行同步(而不是实时读写) 也有 scrub
    ryd994
        19
    ryd994  
       2019-12-03 15:26:04 +08:00 via Android
    @lsylsy2 问题是没有 ECC 的话 scrub 的结果都是错的。
    无论是否 scrub,都应该用 ECC
    反正是捡垃圾,洋垃圾服务器主板加 ECC 内存比消费级硬件便宜多了。
    lsylsy2
        20
    lsylsy2  
       2019-12-03 15:38:12 +08:00
    @ryd994 这里指的是在哪里发生了数据损坏?
    snapraid 本身读写的时候其实相当于 JBOD,并没有做数据切块之类的操作,不会像 ZFS 那样严重依赖内存内的索引,而且本身就从我自己(没 ECC )的台式机过一遍,NAS 多个 ECC 并没有明显降低风险的感觉
    lsylsy2
        21
    lsylsy2  
       2019-12-03 15:38:40 +08:00
    @ryd994 然后说来可能比较菜,我用的是 150 的 J2900 板 U 套装……
    hchechao2
        22
    hchechao2  
       2019-12-03 23:54:05 +08:00 via Android
    上次解压个几十万张图片就把我的 p300 弄坏了
    ryd994
        23
    ryd994  
       2019-12-04 03:08:50 +08:00 via Android
    @lsylsy2 但是数据永远是要经过内存的。不存在磁盘直接到网络。如果 buffer 刚好是坏的内存的话,那数据就坏了。而且全部都会坏。然后 scrub 来回倒一下,又坏一次。
    内存坏还是小事,至少有迹可循,死个明白。数据量大了还要考虑宇宙射线造成的位翻转。就一次,都不知道怎么死的。
    你台式机坏,那也就坏一次,不会来回倒腾。
    不来回倒也不行,因为磁盘上会有冷错误,必须定期校验。
    aheadlead
        24
    aheadlead  
       2019-12-04 08:32:48 +08:00 via iPhone
    @ryd994 不如直接一步到位 zfs
    lsylsy2
        25
    lsylsy2  
       2019-12-04 10:41:05 +08:00
    @ryd994 我的理解是 我的工作平台(台式机、笔记本)一样没有 ECC,NAS 上 ECC 只是把初始概率降低了一半 /三分之一而不是降到 0,并且增加的成本过高(我主板 CPU 内存一共 300RMB );而硬盘冷错误这个就靠 scrub 解决,ecc 没有非常明显的优势。
    在不使用硬件 RAID,不使用 ZFS 的情况下,偶发的坏内存 /位翻转只会影响当前读写的单个文件,不会拖垮整个文件系统,我觉得这个风险可以承受。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1051 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:03 · PVG 07:03 · LAX 15:03 · JFK 18:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.