本文重点关注了基于无服务器计算的机器学习的最新研究进展,并通过四篇研究论文表明了无服务器 ML 框架在执行机器学习任务时性能远优于经典的基于粗粒度的 VM 集群的ML框架。
一、机器学习和无服务器学习
1.1、机器学习(ML)在应用场景中遇到了什么问题?
近年来,机器学习(Machine Learning,ML)在图像识别、文本和语音处理等领域中广泛应用,改变了人们工作、生活的方式,带来了巨大的便利性。但同时,ML 用户也面临着几个巨大的挑战,这些挑战极大地阻碍了 ML 的生产力和效率。首先,用户通常需要手动配置许多系统级参数,例如工作服务器 / 参数服务器的数量、内存分配、cpu 数量、物理拓扑等。其次,用户需要指定大量与 ML 相关的参数,如学习率、学习算法、神经网络结构等,这些参数与系统级参数之间还存在各种交互作用。第三,ML 工作流通常由多个阶段组成,包括预处理、训练、超参数搜索等等,每个阶段都有 ML 用户必须考虑的不同计算需求。
由于 ML 的这些特点,在实际应用中经常会导致两个问题:
一是,ML 工作流中不同任务的异构性导致了训练工作流执行过程中资源的严重不平衡。ML 用户需要单独考虑每个阶段的异构资源需求,常常会导致资源过度配置(Resource Overprovisioning)。当前的 ML 框架通常是基于粗粒度的 VM 集群的,而这些集群并不具备 ML 相关工作负载所需的灵活性。CPU 总利用率低至 20% 的情况并不少见[1]。在实践中,开发人员在工作流的不同阶段反复使用不同的 ML 参数进行实验会进一步加剧资源过度配置的问题;
二是,ML 用户需要应对复杂的管理问题,他们面临着为每个 ML 工作负载提供、配置和管理这些资源的挑战。利用 VMs 进行机器学习工作负载的系统通常需要用户重复执行一系列繁重的任务,表 1 中展示了一些任务。这种管理复杂性阻碍了交互和迭代用例,降低了用户生产力和模型的有效性。
在实践中,过度资源调配和显式资源管理负担这两个问题是紧密耦合的:ML 用户在遇到工作流不同阶段所需资源精确分配所带来的难度和人工成本的问题时,通常会采用过度资源调配的方式来应对。
那究竟用什么办法应对 ML 在实践中应用的这些问题呢?在这篇文章中我们一起来探讨一个目前广泛应用且获得了非常好效果的办法:无服务器计算(Serverless Computing)。