首先我们观察下图,这是模拟数据下的深度学习模型训练速度,所谓模拟数据的意思就是这个测试中没有 IO 的影响。从这个图中我们可以得到两个发现:
-
GPU 硬件升级的加速效果显著。从单卡的算力看,pascal 架构为代表的 P100 一秒钟只能处理 300 张图片,而 volta 架构的 v100一秒钟可以处理 1200 张图片,提升了 4 倍。
-
分布式训练的也是有效加速的方式。从单卡 P100 到分布式 32 卡 v100,可以看到训练速度提升了 300 倍。
而从训练时间来看,同样的数据,同样的训练目标,单卡 P100 需要 108 个小时,4 天半的时间。而 V100 的 32 卡分布式训练只需要 1 小时。而从成本上来看,单卡 P100 的成本是接近 1400 元,而 8 卡 V 100 是 600 元,不到一半。
可以发现,更新的 GPU 硬件不但会更高效,实际上也会更省钱。这也许就是黄教主说的买的越多,省的越多。从云资源的角度来说还是有道理的。
但是之前的测试结果实际上是做了一些前提假设,就是没有数据延时的影响。而真实的情况下,模型训练是离不开海量数据的访问。而实际上:
-
强大的算力需要与之匹配的数据访问能力,不论是延时还是吞吐,都提出了更高的需求。下面的图可以看到,在云盘的数据读取的情况下,GPU 的训练速度直接降为了原来的三分之一。GPU 的使用率也很高。
-
在云环境下,计算和存储分离后,一旦没有了数据本地化,又明显恶化了 I/O 影响。
-
此时如果能够把数据直接加载到计算的节点上,比如ossutil把数据拷贝到 GPU 机器是不是可以满足计算的需求呢。实际上也还是不够的,因为一方面数据集无法全集控制,另一方面AI场景下是全量数据集,一旦引入驱逐机制,实际上性能影响也非常显著。因此我们意识到在 K8s 下使用分布式缓存的意义。
==============================================================