加入收藏 | 设为首页 | 会员中心 | 我要投稿 孝感站长网 (https://www.0712zz.com.cn/)- 运营、云管理、管理运维、云计算、大数据!
当前位置: 首页 > 站长资讯 > 评论 > 正文

这些年被困扰过的 TS 问题

发布时间:2021-02-13 12:38:26 所属栏目:评论 来源:互联网
导读:我曾遇到过这么一个需求:要用 Redis 保存 5000 万个键值对,每个键值对大约是 512B,为了能快速部署并对外提供服务,我们采用云主机来运行 Redis 实例,那么,该如何选择云主机的内存容量呢? 我粗略地计算了一下,这些键值对所占的内存空间大约是 25GB(5000

我曾遇到过这么一个需求:要用 Redis 保存 5000 万个键值对,每个键值对大约是 512B,为了能快速部署并对外提供服务,我们采用云主机来运行 Redis 实例,那么,该如何选择云主机的内存容量呢?

我粗略地计算了一下,这些键值对所占的内存空间大约是 25GB(5000 万 *512B)。所以,当时,我想到的第一个方案就是:选择一台 32GB 内存的云主机来部署 Redis。因为 32GB 的内存能保存所有数据,而且还留有 7GB,可以保证系统的正常运行。同时,我还采用 RDB 对数据做持久化,以确保 Redis 实例故障后,还能从 RDB 恢复数据。

但是,在使用的过程中,我发现,Redis 的响应有时会非常慢。后来,我们使用 INFO 命令查看 Redis 的 latest_fork_usec 指标值(表示最近一次 fork 的耗时),结果显示这个指标值特别高,快到秒级别了。

这跟 Redis 的持久化机制有关系。在使用 RDB 进行持久化时,Redis 会 fork 子进程来完成,fork 操作的用时和 Redis 的数据量是正相关的,而 fork 在执行时会阻塞主线程。数据量越大,fork 操作造成的主线程阻塞的时间越长。所以,在使用 RDB 对 25GB 的数据进行持久化时,数据量较大,后台运行的子进程在 fork 创建时阻塞了主线程,于是就导致 Redis 响应变慢了。

看来,第一个方案显然是不可行的,我们必须要寻找其他的方案。这个时候,我们注意到了 Redis 的切片集群。虽然组建切片集群比较麻烦,但是它可以保存大量数据,而且对 Redis 主线程的阻塞影响较小。

切片集群,也叫分片集群,就是指启动多个 Redis 实例组成一个集群,然后按照一定的规则,把收到的数据划分成多份,每一份用一个实例来保存。回到我们刚刚的场景中,如果把 25GB 的数据平均分成 5 份(当然,也可以不做均分),使用 5 个实例来保存,每个实例只需要保存 5GB 数据。如下图所示:

 

数据点5:支持训练和推理阶段的需求。

在训练系统“看猫”的一个经典示例中,计算机执行数字游戏(或更确切地说是GPU)需要看到很多颜色各不相同的猫。由于包含大量并行文件读取的访问的性质,NVMe闪存通过提供超低的访问延迟和每秒的大量读取操作很好地满足了这些要求。在推理阶段,其挑战是相似的,因为对象识别通常实时进行,这是NVMe闪存还具有延迟优势的另一个用例。

数据点6:考虑并行文件系统和替代方案。

诸如IBM公司的SpectrumScale或BeeGFS之类的并行文件系统可以帮助有效地处理大量小文件的元数据,并通过在网络上每秒交付数万个小文件,从而使机器学习数据集的分析速度提高3到4倍。鉴于训练数据具有只读性,因此在将数据量直接提供给GPU服务器并通过Kubernetes之类的框架以共享方式共享数据时,也可以完全避免使用并行文件系统。

数据点7:选择正确的网络主干。

人工智能、机器学习、深度学习通常是一种新的工作负载,将其重新安装到现有的网络基础设施中,通常无法支持复杂计算和快速高效数据传输所需的低延迟、高带宽、高消息速率和智能卸载。基于RDMA的网络传输RoCE(融合以太网上的RDMA)和InfiniBand已成为满足这些新需求的标准。

数据点8:考虑四个存储系统的性价比杠杆。

(1)高读取吞吐量与低延迟结合在一起,这不会限制混合部署,并且可以在云平台或内部部署资源上运行。

(2)数据保护。人工智能、机器学习、深度学习存储系统通常比数据中心中的其他系统要快得多,因此在完全故障后从备份中恢复可能会花费很长时间,并且会中断正在进行的操作。深度学习训练的只读特性使它非常适合分布式擦除编码,在这种存储中,最高容错能力已经内置在主存储系统中,原始容量和可用容量之间的差异很小。

(3)容量弹性可适应任何大小或类型的驱动器,以便随着闪存介质的发展和闪存驱动器特性的扩展,数据中心可以在最重要的情况下最大程度地实现规模化的性价比。

(4)性能弹性。由于人工智能数据集需要随着时间的推移而增长,以进一步提高模型的准确性,因此存储基础设施应实现接近线性的缩放系数,在这种情况下,每增加一次存储都会带来同等的增量性能。这使得组织可以从小规模开始,并根据业务需要无中断地增长。

数据点9:设置基准和性能指标以帮助实现可扩展性。

例如,对于深度学习存储,一种度量标准可能是每个GPU每秒处理X个文件(通常为数千或数万个),其中每个文件的平均大小为Y(从几十个到数千个)KB。预先建立适当的度量标准有助于从一开始就确定架构方法和解决方案,并指导后续扩展。


(编辑:孝感站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读