Update overview.md

This commit is contained in:
Luo Mai
2023-03-30 08:49:12 +01:00
parent de85a90eb6
commit d526cb8660

View File

@@ -4,14 +4,14 @@
分布式训练系统主要为了解决单节点的算力和内存不足的问题。
![对比机器学习模型参数量增长和计算硬件的算力增长](../img/ch09/ch10-computation-increase.png)
:width:`800px`
:label:`ch10-computation-increase`
#### 算力不足
单处理器的算力不足是促使人们设计分布式训练系统的一个主要原因。一个处理器的算力可以用**每秒钟浮点数操作**Floating Point Operations Per SecondFLOPS来衡量。:numref:`ch10-computation-increase`分析了机器学习模型对于算力的需求以及同期处理器所提供算力在过去数年中变化。其中,用千万亿运算次数/秒—天Petaflop/s—day )这一指标来衡量算力。这个指标等价于每秒$10^{15}$次神经网络操作执行一天,也就是总共大约$10^{20}$次计算操作。如图所示根据摩尔定律Moore's Law中央处理器的算力每18个月增长2倍。虽然计算加速卡(如GPU和TPU)针对机器学习计算提供了大量的算力。这些加速卡的发展最终也受限于摩尔定律增长速度停留在每18个月2倍。而与此同时机器学习模型正在快速发展。短短数年机器学习模型从仅能识别有限物体的AlexNet一路发展到在复杂任务中打败人类的AlphaStar。这期间模型对于算力需求每18个月增长了56倍。解决处理器性能和算力需求之间鸿沟的关键就在于利用分布式计算。通过大型数据中心和云计算设施可以快速获取大量的处理器。通过分布式训练系统有效管理这些处理器可以实现算力的快速增长从而持续满足模型的需求。
![对比机器学习模型参数量增长和计算硬件的算力增长](../img/ch09/ch10-computation-increase.png)
:width:`800px`
:label:`ch10-computation-increase`
#### 内存不足
训练机器学习模型需要大量内存。假设一个大型神经网络模型具有1000亿的参数每个参数都由一个32位浮点数4个字节表达存储模型参数就需要400GB的内存。在实际中我们需要更多内存来存储激活值和梯度。假设激活值和梯度也用32位浮点数表达那么其各自至少需要400GB内存总的内存需求就会超过1200GB即1.2TB。而如今的硬件加速卡如NVIDIA A100仅能提供最高80GB的内存。单卡内存空间的增长受到硬件规格、散热和成本等诸多因素的影响难以进一步快速增长。因此我们需要分布式训练系统来同时使用数百个训练加速卡从而为千亿级别的模型提供所需的TB级别的内存。