世界超市世界超市

避开这些坑 一个实用的机器学习框架就会诞生

机器学习是一种数据驱动实现人工智能的方式。在机器学习框架设计上,没有普世的最好框架,只有最适合自身应用场景的框架。设计一个实用高效的机器学习框架,要考虑哪些具体因素?目前那些总价值超过8000万美元的开源框架,能否满足企业需求?要回答这些问题,可以先从人工智能专家的过往踩坑经验谈起。从机器学习系统到成熟商用,有这7道门槛门槛1:有效数据量快速增长随着越来越多的数据被记录下来,大数据背景下的机器学习,计算效率成为核心问题之一。机器学习系统必须具备可扩展性,才能有效应对数据增长。门槛2:机器学习算法-No Free LunchNo Free Lunch是监督学习领域著名的定理,指的是没有可以解决所有问题的完美机器学习模型。不同目标场景要采用不同的机器学习算法。所以机器学习框架还需具备算法开发的友好性。门槛3:数据科学家的稀缺性人工智能需要对算法和业务问题都很精通的数据科学家,但好的数据科学家是稀缺的,因此机器学习解决方案要尽可能的智能化,降低对数据科学家对依赖。门槛4:机器学习计算和传统ETL计算的差异性1.计算对比于ETL相对简单的运算,机器学习算法对数据的运算更复杂,比如一些非线性模型需要密集的计算。所以实际中,不仅要考虑到不同计算资源的特性,同时还要调整计算模式,降低因分布式计算给通讯、同步、灾备等带来的overhead。2.通讯很多机器学习算法在计算过程中会频繁使用到全局或者其他节点的信息,对网络吞吐和通讯延迟的要求要远高于ETL任务。同时,很多机器学习任务对于一致性的要求要低于ETL任务,所以在系统的设计上可以使用放松的一致性要求。3.存储ETL处理的是各种来源不同的数据,其中反复迭代运算较少。而机器学习算法反复迭代运算很多,有大量不断擦写的中间数据产生,对存储的使用效率、访问效率有着更高的需求。4.灾备和效率的权衡与ETL计算任务不同,机器学习计算任务流程相对复杂,中间状态较多,在较细的粒度上进行容灾,会增加执行过程中的额外开销。因此在容灾策略和容灾粒度上,机器学习计算任务和ETL计算任务之间的权衡点不一样。门槛5:资源差异性相同的机器学习算法可能会在不同的资源、不同的环境下被使用,因此机器学习算法系统本身要能够做更好的抽象和设计,屏蔽底层资源的差异性,使开发部署更为方便。门槛6:系统的开放性机器学习系统要能够便于集成部署在实际业务系统中。同时,因为多种多样的ETL平台会产生机器学习所需要的数据,所以机器学习系统要能够开放地对接已有的业务ETL、决策系统。门槛7: 大规模分布式机器学习系统的复杂性大规模分布式机器学习系统涉及的环节很多,计算逻辑复杂,因此整个系统架构设计的清晰度、执行过程的可理解性、执行的可追踪性、实际系统的可运维性都是非常重要的。同时,要在不同的数据规模下,权衡分布式overhead和收益。当今巨头科技公司纷纷推出开源机器学习框架,很大程度上降低了人工智能的研究门槛。但目前这些备受追捧的开源框架,真能满足企业完成实际复杂业务的挑战吗?答案可能并不乐观。因为,从根本上来说,目前最为流行的计算框架如Hadoop、Spark,其重点任务大多是ETL类计算。前文提到过,机器学习的计算任务相比于ETL计算有很多不同之处。此外,一些算法框架比如tensorflow等,比较注重研究上的易用性,算法上偏重于深度神经网络一类算法,从而在效率上有所舍弃。而另外一些注重生产应用的算法框架,特别是分布式框架,在算法二次开发上又捉襟见拙。如何见招拆招,设计出实用的机器学习系统?那么,设计一个实用的机器学习系统究竟要怎么做呢?这里,我们以第四范式的大规模分布式机器学习框架GDBT(General Distributed Brilliant Technology)为例。它的设计目标可以概括为高效、智能、易开发、易部署、易运维、易扩展、覆盖场景广泛。1.高效计算根据计算硬件的不同特性,GDBT采用不同版本的本地计算,尽可能利用好加速指令。同时考虑到不适所有任务都需要分布式执行,所以同时对分布式、单机运行都尽可能做到最优。存储不同的存储设备的价格、速度和容量不一样,GDBT要能适应不同的存储配置、最优化存储访问速度、和存储使用效率。网络通过合理设计计算模式,调配网络通讯,GDBT最优化网络通讯延迟、网络使用效率。高效灾备因为机器学习算法中间状态很多,为避免overhead问题,GDBT的灾备更加偏重于机器学习算法的核心参数。同时基于不同计算规模,制定不同灾备策略。2.智能算法智能机器学习中特征工程和模型调参需要数据科学家对机器学习算法和实际业务有较深理解。因此,先进的机器学习系统需要提供自动或半自动特征工程,例如GDBT就提供包括自动特征生成、自动特征选择、特征自动组合在内的自动特征工程,以及自动模型调参。运行智能根据不同应用场景,GDBT可以自动适配运行方式,获得更高的运行效率。3.易开发GDBT提供工业级的开发者易用性,尽量对算法开发者屏蔽底层细节,提供对机器学习组件的良好包装,能够方便实现机器学习所需的各种分布式模式。在GDBT上,只需要数百行代码,就可以实现逻辑回归、矩阵分解等算法的分布式版本。4.部署&维护GDBT支持多种平台,例如Yarn,Hadoop MR、MPI等,并方便跨平台迁移。它能够实时监控运行状态和进度、方便调试与错误跟踪。5.覆盖广泛应用场景通过重新设计、深度整合现有模型和算法,合理设计计算模式和流程,GDBT能够提供更加高效的符合实际应用场景的算法,比如GDBT上的算法能够兼顾离散特征和连续特征,最优化I/O和计算资源的使用效率。

上一条:大朋E3的柔光护眼屏,为何一夜之间成了香饽饽?

相关推荐