clong 2020-10-31
本文转载自公众号“读芯术”(ID:AI_Discovery)。
虽然人工智能融合到商业具有很高的商业价值,但通常这个价值还不能抵消把模型应用到商业中所需的计算成本。机器学习和深度学习是计算密集型的学习,有人认为,除非云计算或本地计算成本降低,否则尽管具有空前的商业价值,也不值得付出这笔成本。
麻省理工学院的研究科学家兼《深度学习的计算极限》一书的作者尼尔·汤普森(Neil Thompson)在《连线》杂志上发表的文章中提到,Google、Facebook等众多组织已经建立了影响力广又能节约成本的模型,但由于计算成本高而导致这些模型无法盈利。
汤普森表示在最近的一些演讲和论文中表示,从事大型和前沿人工智能项目的研究人员开始抱怨,因为成本太高,他们无法测试多个算法设计,或者重新进行实验。
商业机构需要极大地完善计算效率的方法,以促进创新并提高人工智能工作的投资回报率。但是,高昂的计算成本以及人们对高效计算的关注并不应该就此背黑锅。
实际上,GPU加速基础架构和其他云供应商已经取得了重大的进步,极大提高了训练复杂人工智能网络的能力,这种速度是前所未有的。
2020年5月,DeepCube发布了基于软件的推理加速器,大大提高了所有现有硬件上的深度学习性能。换句话说,人们正在开发计算解决方案以满足机器学习和深度学习日益增长的需求。人工智能创新潜在的阻碍就是对现有计算利用不足,以及“计算债务”的成本不断增加。
什么是“计算债务”?
人工智能的领头羊或许会惊讶地发现,阻碍机器学习投资回报的主要因素之一是GPU,CPU和内存资源利用不足。
公司在计算上投资了数百万美元,这些计算有可能极大地加速人工智能工作的负载量并提高性能,但最终只利用其中的一小部分,有时只利用了20%的资源。计算分配和实际利用率之间的差距令人震惊,可能需要公司付出比想象中更高的成本。
计算、分配和利用率之间的差距可称为“计算债务”。指的是分配和能力之间的“浪费”。下图直观地对比了绿色所代表的平均利用率和黄色所代表的(当时的)分配。
当工作负载正在运行时,通常仅利用GPU的一部分,而另一部分则被其他潜在的工作负载所阻挡。灰色区域表示容量即GPU,CPU或内存可用的现有计算量,是所有闲置且未充分利用的计算区域。
资料来源:cnvrg.io
是什么导致了“计算债务”?
机器学习和深度学习是计算密集型的学习,管理起来很复杂,降低这种计算负担会更难。人工智能基础设施团队面临的最大挑战之一是知道如何提高利用率,并以最大化消耗的方式管理资源,提高机器学习项目的投资回报率。导致“计算债务”的主要原因包括:
(1) 基础设施团队缺乏人工智能项目可见性
机器学习项目的基础设施成本每年以两倍的速度增长,但是IT团队却缺乏正确管理、优化和预算机器学习资源的工具。大多数IT/DevOps领导者无法在给定时间了解GPU/CPU和内存的利用率、分配和容量。这导致无法控制消耗,无法提高效率。
(2) “计算债务”增长
随着人工智能计算需求变得越来越复杂,计算分配和实际利用率之间的差距也越来越大。通常来说,公司可能只消耗了全部资源的30%。这导致将近70%的计算资源闲置,浪费了公司几千甚至数百万美元。
(3) 无法识别效率低下的工作
基础架构团队无法轻松识别未充分利用GPU/CPU的工作负载。如果没有收集有关历史工作负载的数据,就无法分析和识别运行效率低下的工作负载。缺乏可见性导致难以提高利用率,也难以控制工作负载的优先级。
(4) 生产力中断
未充分利用的GPU被打断为其他工作让路,增加了数据科学家的等待时间。这导致在等待GPU上浪费了很多时间和资源。同时还包括资源处于闲置状态的问题,这些资源本来可以用于做其他工作的。
图源:unsplash
(5) 缺乏标准化和统一性
团队经常无法将一项工作与利用率指标关联起来。没有标准的可视化工具来查看特定时间点的工作分配、利用率和容量。这使得识别效率低下的工作变得十分困难,而且难以确定浪费的工作量。机器学习已经达到了成熟的阶段,为了成长,必须对人工智能基础架构进行战略化发展。
(6) 无法控制优化策略
有些团队能识别低效率并计划好优化的基础架构策略,却缺乏执行这些策略上的工具。IT / DevOps团队需要控制人工智能工作负载,以优化资源管理。如果没有办法确定工作的优先级、配置计算模板以及监视工作负载的分配和利用率,就无法做出重大改进。
减少“计算债务”的策略
这一问题没有明确的解决方法,但是有一些方法可以提高资源管理的效率。
(1) 投资最先进的具有GPU加速技术的人工智能基础设施
GPU加速技术已经取得了一些成就。硬件和软件深度学习加速解决方案已经出现,可提供前所未有的计算性能。研究最新的GPU加速解决方案,采用真正的现代人工智能基础架构。
(2) 采用混合的云基础架构
结合公共云、私有云和本地资源可在运行人工智能工作负载方面更加敏捷和灵活。由于人工智能工作负载之间的负载类型差异很大,因此公司搭建了混合云基础架构后,能够更灵活地分配资源和自定义大小。可以使用公共云降低资本支出,并提供高计算需求期间所需的可伸缩性。
如果一些公司有着严格的安全性要求,则必须添加私有云,随着时间的推移可降低运营支出。混合云可实现必要的控制和灵活性,以改善资源预算。
(3) 利用估算工具估算GPU / CPU内存消耗
根据Microsoft Research对Microsoft的4960个失败的深度学习任务的研究,8.8%的失败是由GPU内存耗尽导致的,这是所有深度学习故障中最主要的问题。当前已经开发出许多估算工具用以预估GPU内存消耗以减少这些故障。此外,如果能够收集利用率数据,则可以使用此历史数据更好地预测每个季度的GPU / CPU和内存需求。
图源:unsplash
(4) 规模化MLOps
引入可以简化机器学习工作流程,并标准化科学和工程角色之间转换的方法。由于IT和DevOps负责部署和管理工作负载,因此在执行不同的工作时拥有清晰的沟通渠道非常重要。适当的调度工具和对资源模板进行策略化可以改善人工智能工作负载的资源管理。
(5) 最大限度地提高利用率,减少“计算债务”
为了提高利用率,有必要将计算债务作为基础架构团队和数据科学团队的KPI。如果公司能减少计算债务并提高利用率,就可以在向人工智能的竞争中脱颖而出。
要想让基础架构团队最大限度地提高GPU/CPU的可见性和内存消耗从而提高利用率,基本上是没有万全之策。尽管业界正在迅速构建更高效的硬件和软件来解决计算债务的威胁,但仍然任重而道远。很多公司花费了几百万美元在计算上,而这些计算并未被充分利用。