文献综述(或调研报告):
1、为什么选择Ray及Ray简介
分布式框架是整个服务的中心及重点,需要具备任务调度、资源分配、快速相应、高容错等功能,现有的分布式处理框架如Spark[1]、Hadoop[2]都具有此特点,但是对于这几种框架而言,具有以下缺点:较高的学习成本以及性能浪费。较高的学习成本是指相较于大数据处理而言,对于专注与人工智能或者说深度学习的人来说,需要重新学习一种语言或者重新掌握一种框架才能布置上线自己训练好的模型,如:Hadoop需要学习该系统的安装配置命令以及数据接收等问题,而Spark则需要学习Scala语言来使用,相对而言的学习成本较高;即使Spark现在有了一些其他语言的API,比如Java、Python,但其逻辑以及使用中多是利用一些中介进行语言间的转化,比如需要将Python数据格式转化为Scala可用的数据格式,中间数据转化的开销是极大的、特别是对于一些流处理的任务,这些开销是不被容忍的,且对于性能而言造成了极大的浪费。
所以我们采用了一个由python语言构成的、简单易用的分布式框架—Ray[3]。Ray是一个由UC Berkeley RISE Lab推出的一个开源的、基于Python的分布式机器学习框架,其目的就是可以快速、简单的实现分布式计算,使得大家可以方便的实现、开发各种机器学习的应用。Ray实现了统一的接口,既可以进行并行任务的计算,也可实现基于执行者(Actor)的计算,这些都是基于一个简单的动态执行引擎[4] 。Ray还实现了一些库来帮助用于机器学习任务:Tune(一个可扩展的超参调整工具),RLlib(一个专注于强化学习的上层API库),RaySGD(一个应用于分布式训练的上层API库)等。
2、推理(inference)、分布式的意义
推理,即利用训练好的模型进行预测,在现实应用中的数量一直在上升,例如Facebook每天需要上万亿的应用推理请求[5]。而推理性能的提升的两个关键点在于吞吐量与延迟,理想的推理应该达到大吞吐量、且低延迟的效果,这对于现实应用中具有很大的意义,比如高铁入口的人脸识别,需要保证稳定性、准确性以及非常大的吞吐量,但是延迟还是一定存在的,不过是在可接受的范围内,可以想象如果延迟进一步降低,对于人们的出行会更加的方便,使用的体验会更加的好。而吞吐量,对于高铁进站系统的需求是非常巨大的,类似南京南站,北京南站等枢纽而言,一天的客流量巨大,同时进站的人数极多,吞吐量的保证是极为关键的。
分布式,具有许多优点如:资源共享、计算速度的加快,可靠性较高等特点[6]。对于许多公司及研究机构而言,分布式的方法也是非常经济的,可以利用多台不同的计算机的资源来进行任务的处理,比重新布置新的高性能的服务器要来的经济实惠得多。而且,分布式还需要具有可扩展性,比如现在常用的Google Kubernetes[7]来管理不同的容器,一个容器即可看作一台计算机,那么一个分布式系统的扩展只需要再加入一个Pod即可。
3、常见的分布式框架
Hadoop:
Hadoop是一个分布式处理的软件框架,由Apache组织开发。Hadoop的重要组成部分有:HDFS,即分布式文件系统(Hadoop Distributed File System);MapReduce,即一种在2002年由Google提出的模型,一般用于大数据的并行计算。Hadoop具有高可靠性、高扩展性、高容错性等特点[8]。同时,Hadoop生态圈还提供了许多辅助工具,如HBASE分布式数据库,Zookeeper分布式协助服务,HIVE数据仓库等等,这一些应用都是非常实用的
课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。