- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
146|数据科学团队必备的工程流程三部曲
2018-08-20洪亮劼来自北京
《AI技术内参》
今天,我们继续来聊一聊数据科学团队的一些基础构建思路,讨论一些日常的在“工程流程”
方面所需要注意的问题。和我们上一次分享的项目管理不一样,工程流程没有很多可以直接借
鉴的经验,需要从业人员进行更多的思考和创新。
什么是工程流程
我们首先来看一看什么是“工程流程”。一般来说,工程流程指的是我们有什么制度或者说是
策略来保障所做的项目能够达到一定的质量标准。
那工程流程和项目管理流程有什么区别呢?我们说,项目管理流程是从宏观上把握项目的进
展,而工程流程则主要是在微观上,定义和掌控具体的每一个步骤上的输入、输出和过程。从
另外一个角度来说,这两者之间并不存在一个必然的关联关系,一个项目在细节的工程流程上
成功与否和一个项目自身的最终成功与否,并不能完全划等号。
你是不是有疑问,既然如此,那我们为什么还要关注工程流程呢?原因是虽然一个好的工程流
程并不一定带来项目的成功,但是可以增加成功的可能性或者说是概率。同时,一个好的工程
流程可以帮助一个团队在日常的运作中减少问题的发生,从而能够达到事半功倍的效果。
那么,工程流程究竟包含哪些方面呢?
我们在今天的分享里讲三个方面。第一,代码管理的流程;第二,开发部署环境的流程;第
三,数据管理的流程。这三个流程可以说是涵盖了一个人工智能项目发展和成功所必不可少的
三个重要方面。
代码管理流程
人工智能项目一个很重要的环节就是开发代码。然而,因为数据科学、人工智能项目的一些特
殊性,从业人员对于代码的管理普遍存在不够重视的情况。
我们在上一期的分享里提到过,数据科学和人工智能的很多项目,往往会被当作学术界的研究
项目来进行开发。如果是研究项目,代码开发有哪些特点呢?我简单归纳了两大特点。第一,
代码的主要目的是完成学术文章发表所需要的实验结果;第二,在绝大多数情况下,代码很容
易变成无人维护和不能继续更新的情况。如果是当作研究项目来开发,那研究人员很可能并不
在意代码的可读性、可维护性以及可扩展性等软件工程非常重视的方面,那么这样开发出来的
代码就无法真正扩展为一个大型项目的代码库。
那么,对于一个人工智能项目的代码管理,我们需要去关注哪些因素呢?
第一,所有的代码一定要保存在代码版本管理工具中(而不是某一个数据科学家或者工程师自
己的电脑上),这也是一个先决条件。在当今的软件开发的工具中,Git(或者是企业级的
GitHub)已经成为了一个标准的工具,用于代码版本管理、追踪和分享。任何项目以及任何
人只要开始进行开发,都需要把所有的代码,包括核心的文档存放在代码版本管理工具中。这
保证了代码能够被追踪并得到及时的备份。
第二,如果我们利用Git或者类似的代码版本管理工具,代码的开发一定要尽量遵循这个版本
管理工具所提倡的某种流程。比如,我们有两个工程师在同一个项目中一起工作,在这样的情
况下,大部分的代码版本管理工具都可以允许这两个工程师在不同的“分支”(Branch)进
行开发。这两个分支和项目当前的“主分支”(Master)又不同,因此,项目目前代码的运
行不会受到这两个分支的影响,而这两个分支之间也不会互相影响。尽管进行分支开发已经算
是软件开发的一个标准流程了,但是在人工智能项目中,依然有很多开发人员不遵循这个方法
来进行代码不同开发进度之间的隔离。
开发部署环境流程
了解了代码版本管理的重要性之后,我们来看一看开发环境流程的控制。
从代码到可以被运行和部署的软件包,成为一个大型互联网产品或者人工智能产品中的一个组
成部分,往往还有很多路要走。
首先,开发部署环境中一个重要的组成就是流畅的从代码到部署软件包的“直通流程”。目前
在软件开发领域,有诸如“持续集成”(CI,ContinuousIntegration)和“持续交付”
(CD,ContinuousDelivery)这样的方法,来帮助工程师能够相对方便地对代码进行包装和
部署。我们在这里并不去展开讨论CI/CD的内涵,但是要意识到,对于人工智能项目,我们
也需要有能够流畅部署的思想。
那么,具体来说,哪个部分需要有流畅部署的思想呢?如果我们从大的角度来看,一个数据科
学项目最需要动态更新的部分,往往是模型的产生,也就是说我们希望能够用最新的数据来训
练和测试模型,让模型能够考虑到最新的用户行为。因此,就可以说,只要是对模型的产生流
程有影响的步骤,都需要能够达到流畅部署。假如我们更新了模型产生的代码,这些代码必须
能够快速地反应到生产系统中。
除了
您可能关注的文档
- 073-现代推荐架构剖析之一:基于线下离线计算的推荐架构【萌萌家】.pdf
- 074-现代推荐架构剖析之二:基于多层搜索架构的推荐系统【萌萌家】.pdf
- 075-现代推荐架构剖析之三:复杂现代推荐架构漫谈【萌萌家】.pdf
- 078-基于深度学习的推荐模型之三:利用深度学习来扩展推荐系统【萌萌家】.pdf
- 081-广告回馈预估综述【萌萌家】.pdf
- 085-LinkedIn的广告点击率预估模型【萌萌家】.pdf
- 089-广告的竞价策略是怎样的?【萌萌家】.pdf
- 093-聊一聊“程序化直接购买”和“广告期货”【萌萌家】.pdf
- 094-归因模型:如何来衡量广告的有效性【萌萌家】.pdf
- 098-LDA变种模型知多少【萌萌家】.pdf
文档评论(0)