机器学习在云平台中的优化
吕艺 517021910745
近年来,机器学习在许多方面都取得了巨大成功。由于机器学习需要大量的数据支持,它所需要的
计算资源和存储资源都是比较大的。而云平台的可伸缩性为机器学习的训练提供了很好的平台。现在,越
来越多的机器学习训练被移植到了云平台上。然而,如何提高机器学习在云平台上的效率成了时下云计算
研究的热点问题。
随着手机、传感器等终端设备的快速发展和用户群体的急速扩大,终端用户产生的信息量指数型上
升。为了满足用户对于数据的需求,减少数据访问的延时性,微型云出现了。为了减少中心云服务计算平
台的负载,并且加快用户访问数据的速度,用户产生的信息大部分都被保存在本地的微型云中,由微型云
戴维管理存储。然而由于各地的微型云基础设施配置不同,各个微型云之中的局域网资源往往受限于当时
正在运行的应用数,运行配置环境较为复杂,它们并不常被使用于机器学习模型训练这种计算和网络资源
密集型应用。因此,他们往往将数据上传至中心服务器后由中心服务器代替微型云进行模型训练,再将模
型训练好的结果返回到微型云中供用户使用。
显而易见,这样的传输消耗的时间成本非常大,如何解决不同微型云计算平台之间差异性并将他们
组织起来训练模型成为了一个很实际的课题。来自Minnesota的研究团队提出了他们的解决思路。首先针对
各个微型云计算平台的计算资源不同,他们提出了基于计算能力分配数据量的方法,即基于微型云计算能
力等比例分配数据量。在网络资源分配方面,他们提出了基于每个微型云计算平台实时网络情况改变数据
传输的方法。他们提出改变数据传输的方面主要有:什么时候传输数据,传输所有数据还是部分数据,与
所有计算节点传输数据还是只与部分节点传输数据以及是同步传输数据还是异步传输数据。
从云计算的角度上看,他们把对不同微型云的计算能力和网络资源进行调度,提高了每个微型云资
源的利用率。他们提出的系统根据实时空余的计算资源和网络资源为不同微型云计算平台动态分配负载进
行模型的训练,从而在一定程度上解决了微型云平台之间的差异带来的难以分配调度问题,实现了在云计
算终端的“边缘云”中训练计算网络资源密集型的神经网络,从而加快了模型训练的速度。
而来自美国的Wisconsin大学的研究团队则从减少计算节点计算过程的重复性考虑,从而加快模型
的训练速度。他们发现在模型训练的时候,很重要的一步就是训练参数。然而在调试模型参数时,研究者
往往需要同时跑训练好几个模型,然而每个模型对于数据的预处理却是独立的。这就意味着,那些从数据
库中读出数据耗时很长的I/O操作在每个计算节点上都需要被重复计算一遍。这样所需要的时间成本无疑是
巨大的。为了解决这一问题,他们将每个计算节点的数据导入和数据预处理过程提取出来形成单一的数据
导入层,从而可以使每次数据导入和预处理后的结果得以保存下来,从而大大提高计算的速度。因此他们
设计了OneAccess数据导入层来为各个不同的机器学习模型任务采样数据并进行数据预处理。