IBM Watson® Machine Learning Accelerator 的弹性深度学习功能设计用于大规模分布式深度学习工作负载。它将静态整体训练转换为动态过程,该过程可从故障中恢复,并在训练时自动缩放 GPU 分配。
数据科学家、深度学习开发者和管理员可以使用弹性深度学习功能来简化生产部署、提高运行时效率并交付服务水平协议 (SLA)。
弹性深度学习
在 TensorFlow 和 PyTorch 等框架上训练深度学习模型需要很长时间。GPU 等加速器技术有助于减少训练时间,但是随着模型和数据集越来越大,仍需数天或数周的时间进行训练。训练也是一个迭代的过程,而且会占用大量资源,因为您需要进行许多轮训练,调整参数,运行更多训练,再次调整参数,如此周而复始,所有这些都为了实现模型的高准确性。
在集群中横向扩展并运行分布式训练是缩短训练时间的典型方法,但是仍然存在许多挑战。当前的分布式训练方法往往很复杂、不灵活,并且必须作为整体训练。要求开发者理清集群和网络拓扑、数据采集和并行执行计划,并手动输入代码到模型中,这些会增加复杂性和开发时间。从开发到生产再到云,将模型逻辑与运行时控制混合在一起会带来可移植性挑战。
IBM Watson Machine Learning Accelerator 的弹性深度学习可以在此发挥作用。这项技术旨在解决诸多分布式训练挑战,包括:
动态分布式运行时管理:将特定于框架的数据采集和运行时配置替换为一个调度程序,该调度程序确定数据分区和批处理数量,并为每次迭代动态分配资源。高效率的调度引擎可确保必要的吞吐量,以充分利用所有分配的资源。
自动和动态模型缩放(扩展和缩减):此功能对模型代码透明,并且不影响正在进行的深度学习任务,它是一种动态资源分配,可以在资源可用时添加资源,加快训练速度,并在其他作业需要资源时删除资源。具有超参数意识的调度可确保资源调整不会影响训练的收敛性和准确性。
对故障和环境变化的适应能力:当主机发生故障或云资源消失时,正在运行的任务会自动在另一台主机上使用最新参数和权重重新运行。
自动服务质量 (QoS):每次迭代后根据策略和作业优先级动态重新均衡资源分配。现有工作负载将继续运行而不会中断。
将模型逻辑与运行时控制分离:向模型开发者隐藏资源分配、数据采集、配置和运行时控制的复杂性,从而减少了掌握底层集群或云资源、可用性和拓扑结构知识的需要。
在 TensorFlow 和 PyTorch 中支持原生模型(图形、神经网络定义):数据科学家或模型开发者可以专注于模型本身,而不是部署和生产运行时配置。
经过优化的高度准确的训练:通过使用可用资源而不只是固定数量,训练作业可以更快地完成。通过考虑模型约束和基础架构限制(例如 GPU 内存或网络带宽),可以通过针对速度和收敛性进行缩放来优化训练。
更好的投资回报率 (ROI):通过充分利用资源(例如 CPU、GPU 和网络带宽)并确保没有闲置资源,您可以最大程度地利用投资。通过启用多租户,多个开发者和业务部门可以共享公共资源,从而无需专用集群。
将弹性深度学习作业与典型训练作业进行比较可以发现,典型作业需要静态分配不间断的资源(例如,4 台机器上运行 2 周的 16 个 GPU)。这意味着典型作业无法利用空闲资源,也无法减少分配的资源数量(在不终止整个作业的情况下)来适应更高优先级的工作负载。深度学习框架使用类似于 MPI 的通信,因此单个硬件故障或等级降低会导致整个作业失败。如果作业已经运行了数天或数周,这尤其令人痛苦。而想在云和基于商品的集群中不出现变化或故障也是不现实的。
弹性深度学习在训练过程中使用弹性、动态、细粒度的控制,而不是使用静态资源分配策略。Watson Machine Learning Accelerator 负责分发训练任务(迭代),协调任务之间的同步并动态分配资源。
了解有关 IBM Watson Machine Learning Accelerator 的更多信息。
本文翻译自:Elastic Deep Learning in high performance multitenant cluster(2020-11-10)