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

机器学习是一种数据驱动实现人工智能的方式。在机器学习框架设计上,没有普适的最好框架,只有最适合自身应用场景的框架。

设计一个实用高效的机器学习框架,要考虑哪些具体因素?目前那些总价值超过8000万美元的开源框架,能否满足企业需求?要回答这些问题,可以先从人工智能专家的过往“踩坑”经验谈起。

机器学习到“成熟商用”,有这7道门槛

门槛1:有效数据量快速增长
随着越来越多的数据被记录下来,大数据背景下的机器学习,计算效率成为核心问题之一。机器学习系统必须具备可扩展性,才能有效应对数据增长。

门槛2:机器学习算法——No Free Lunch

No 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、高效

1.1   计算

根据计算硬件的不同特性,GDBT采用不同版本的本地计算,尽可能利用好加速指令。同时考虑到不适所有任务都需要分布式执行,所以同时对分布式、单机运行都尽可能做到最优。

1.2   存储 

不同的存储设备的价格、速度和容量不一样,GDBT要能适应不同的存储配置、最优化存储访问速度、和存储使用效率。

1.3   网络

通过合理设计计算模式,调配网络通讯,GDBT最优化网络通讯延迟、网络使用效率。

1.4   高效灾备

因为机器学习算法中间状态很多,为避免overhead问题,GDBT的灾备更加偏重于机器学习算法的核心参数。同时基于不同计算规模,制定不同灾备策略。

2、智能

1.1   算法智能

机器学习特征工程和模型调参需要数据科学家对机器学习算法和实际业务有较深理解。因此,先进的机器学习系统需要提供自动或半自动特征工程,例如GDBT就提供包括自动特征生成、自动特征选择、特征自动组合在内的自动特征工程,以及自动模型调参。

1.2   运行智能

根据不同应用场景,GDBT可以自动适配运行方式,获得更高的运行效率。

3、易开发

GDBT提供工业级的开发者易用性,尽量对算法开发者屏蔽底层细节,提供对机器学习组件的良好包装,能够方便实现机器学习所需的各种分布式模式。在GDBT上,只需要数百行代码,就可以实现逻辑回归、矩阵分解等算法的分布式版本。

4、部署&维护

GDBT支持多种平台,例如Yarn,Hadoop MR、MPI等,并方便跨平台迁移。它能够实时监控运行状态和进度、方便调试与错误跟踪。

5、覆盖广泛应用场景

通过重新设计、深度整合现有模型和算法,合理设计计算模式和流程,GDBT能够提供更加高效的符合实际应用场景的算法,比如GDBT上的算法能够兼顾离散特征和连续特征,最优化I/O和计算资源的使用效率。通过重新设计、深度整合现有模型和算法,合理设计计算模式和流程,GDBT能够提供更加高效的符合实际应用场景的算法,比如GDBT上的算法能够兼顾离散特征和连续特征,最优化I/O和计算资源的使用效率。

第四范式
第四范式

理论深度神经网络分布式计算监督学习机器学习
相关数据
逻辑回归技术

逻辑回归(英语:Logistic regression 或logit regression),即逻辑模型(英语:Logit model,也译作“评定模型”、“分类评定模型”)是离散选择法模型之一,属于多重变量分析范畴,是社会学、生物统计学、临床、数量心理学、计量经济学、市场营销等统计实证分析的常用方法。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

特征工程技术

特征工程是利用数据所在领域的相关知识来构建特征,使得机器学习算法发挥其最佳的过程。它是机器学习中的一个基本应用,实现难度大且代价高。采用自动特征工程方法可以省去采用人工特征工程的需求。Andrew Ng 说“挖掘特征是困难、费时且需要专业知识的事,应用机器学习其实基本上是在做特征工程。”

监督学习技术

监督式学习(Supervised learning),是机器学习中的一个方法,可以由标记好的训练集中学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。训练集是由一系列的训练范例组成,每个训练范例则由输入对象(通常是向量)和预期输出所组成。函数的输出可以是一个连续的值(称为回归分析),或是预测一个分类标签(称作分类)。

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

特征选择技术

在机器学习和统计学中,特征选择(英语:feature selection)也被称为变量选择、属性选择或变量子集选择。 它是指:为了构建模型而选择相关特征(即属性、指标)子集的过程。

分布式计算技术技术

在计算机科学中,分布式计算,又译为分散式運算。这个研究领域,主要研究分布式系统如何进行计算。分布式系统是一组电脑,通过网络相互链接传递消息与通信后并协调它们的行为而形成的系统。组件之间彼此进行交互以实现一个共同的目标。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

推荐文章
暂无评论
暂无评论~