人工智能系统在从项目立项,到数据收集、模型训练,再到模型部署上线并最终产生实际业务价值过程中会涉及各种角色的软件研发和运维人员。这些角色如下。
● 产品经理
● 数据科学家
● 数据工程师
● 机器学习工程师
● DevOps工程师
● IT运维工程师
注意,在实际工作中,有些角色承担多种职责。许多数据科学家在负责模型任务之外,还负责一些人工智能工程任务。在有的企业中,DevOps和IT运维是同义词,即同一个部门承担这两种角色的职责。另外,以上仅仅是常见的角色分类,在很多企业中还有其他的分类。
下面将从这些角色的职责、特长、关心点和工作内容进行分析。
产品经理一般是人工智能项目的发起人,可能挂着各种各样的职位名称,比如产品经理、产品总监、项目总监等。
(1)职责
产品经理或者直接作为项目经理,或者在专职项目经理的帮助下,指导团队生产出符合预期且给企业带来最终商业价值的人工智能模型,并最终成功部署上线以满足用户需求。
(2)特长
产品经理对用户需求和用户场景往往有最深刻的理解,知道如何评估项目的实际效果,了解如何度量项目最终产生的收益。
(3)关注点
产品经理最关心项目落地产生的效果和能带来的商业价值,并从项目研发和运维成本、收益两方面进行衡量。
(4)工作内容
产品经理定义用户场景,并给出评估项目落地收益的方式。
商业分析师也可以归为这类角色,他们承担着整个项目商业分析的职能,包括项目的商业价值、用户场景分析、项目成功条件定义等。
数据科学家又被称为AI科学家,是人工智能系统研发和运维中所特有的角色。传统的业务研发没有这类角色。
(1)职责
数据科学家从产品经理那里获得用户需求和用户场景后进行分析,针对具体的商业问题,找出数据驱动的解决办法。产出符合产品经理预期的人工智能模型是他们的主要职责。
(2)特长
数据科学家往往拥有硕士甚至博士学位,大学专业是数学、统计学、计算机科学、电子工程等,他们往往擅长数据收集、数据统计分析、数据可视化和构建人工智能模型。他们最常使用的工具是Python和Notebook(一种支持Python编程的集成式开发环境),擅长在Notebook中进行Python编程,完成数据抽取、数据转化、模型构建和训练等工作;但是,对于模型上线之后构建高吞吐、低延时的预测系统所使用的各种技术栈,例如C++和Java并不是太熟悉,同时对于底层分布式大数据存储、分布式计算系统、底层资源管理的容器编排系统,以及监控系统也不是太熟悉。
(3)关注点
数据科学家的大部分时间花在模型调优、寻找合适的数据以及对数据进行各种特征工程处理上,最关注模型的效果。
(4)工作内容
通常,他们会先针对需要解决的商业问题来分析已有的数据,然后通过构建人工智能模型来找出能解决该商业问题的规律。例如,对于用户推荐类问题,他们可能会从用户行为数据中找到有价值的用户分类规律,然后构建模型对这些用户进行分类,以便于根据用户分类提供差异化服务,更好地挖掘用户价值。如果已有的数据不足以训练出符合期望的模型,他们还会要求产品经理从第三方渠道获得更多数据,或者要求数据工程师提供更多的数据。
数据工程师和数据科学家配合工作,主要工作与数据相关。
(1)职责
数据工程师负责供给高质量的数据,一方面提供给数据科学家进行模型训练,另一方面提供给线上预测服务进行预测。
(2)特长
数据工程师擅长和各种分布式存储系统和分布式计算系统打交道,包括构建各种大数据底层系统,从各种数据源(日志、外部数据源、系统内部其他数据源等)得到各种原始数据,然后根据数据科学家的需求对原始数据进行各种处理。他们往往是工科背景,学历不需要像数据科学家那么高,擅长使用各种流行的服务端开发语言,在服务端开发和运维方面经验比较丰富。
(3)关注点
数据工程师主要关注从上游节点获取数据的流水线,然后分析做哪些ETL操作来满足数据科学家的需求,还关注线上服务所需要的数据特征的稳定性、延时、吞吐等指标。
(4)工作内容
数据工程师最主要的工作包括从上游节点获得数据(往往是从数据湖获取数据),之后进行数据清洗、加工和转换,以便后续使用。例如他们可能会调整图片的尺寸和格式,也会对结构化表格数据进行ETL操作。这样,数据科学家可以将精力集中在数据分析和数据建模上,而不是数据操作上。数据工程师往往需要编写很多程序脚本,定义各种数据处理流水线来完成这些与数据相关的工作。
机器学习工程师是一个相当新的角色。随着企业不断在企业内落地机器学习模型并实现商业价值,该角色变得越来越重要。数据科学家通过数据收集、数据探索和模型初步训练,得到一个可用的模型。这个模型往往是在规模较小的数据集上训练得到的。该模型要部署到线上,还需要在线下通过海量数据并消耗海量计算资源来完成训练。部分企业是先让机器学习工程师部署好Notebook的环境,让数据科学家在该环境中完成模型的训练。
(1)职责
机器学习工程师负责完成机器学习模型在真实环境的训练,并把训练好的模型部署到线上系统以提供稳定、可靠的服务。
(2)特长
机器学习工程师一般了解一些机器学习理论知识,但是并不像数据科学家那样了解的深入。他们负责对接数据工程师提供的海量数据并进行自动化模型训练、测试模型、验证效果,以及在生产环境中部署和监控模型。他们通常会为了满足线上预测服务高吞吐、低延时以及低成本的需求,重写数据科学家编写的大部分代码,例如将数据科学家在Notebook中用Python语言开发的脚本转换为用C++、Go、Java等编程。
(3)关注点
机器学习工程师主要关注线上环境中模型的构建、性能和效果。
(4)工作内容
机器学习工程师的日常工作是用真实的海量数据训练模型,并部署到线上环境;在线上构建高吞吐、低延时的预测服务,供应用开发者(例如各种App或者小程序的开发者)进行集成,最后带来商业价值。
在传统业务研发或Web研发流程中,DevOps工程师负责代码的持续集成和持续部署。在人工智能系统研发中,DevOps工程师将人工智能预测系统和业务系统连接起来,负责业务系统相关的持续集成和持续部署。
(1)职责
DevOps工程师负责完成集成模型预测服务到最终用户应用程序中的业务,并记录相应行为数据到后台系统,用于后续持续训练。
(2)特长
DevOps工程师擅长业务研发,熟悉各种业务系统常用的架构和编程工具、编程语言等,对人工智能模型构建原理、训练过程等并不是很了解。
(3)关注点
DevOps工程师关注最终用户应用程序的可伸缩性、稳定性和响应性。
(4)工作内容
DevOps工程师连接人工智能模型和最终用户应用程序,例如向Web应用程序发布新的推荐引擎,同时记录用户的各种点击行为数据,并通过日志文件消息队列将数据传到大数据平台。
很多企业有专门的IT运维团队,或者通过虚拟的团队来支持IT运维。
(1)职责
IT运维工程师负责人工智能线上系统的运维,保证线上系统的稳定运行。
(2)特长
IT运维工程师对线上系统十分熟悉,擅长建立各种业务监控系统,通过监控发现线上服务稳定性相关的问题并进行各种运维操作;同时对底层的云基础设施运作十分熟悉,包括资源扩容、资源缩容、流量调度等。
(3)关注点
IT运维工程师关注线上环境中系统的稳定性。
(4)工作内容
IT运维工程师会建立各种业务监控系统,来检测线上系统的可用性是否符合预期。如果出现报警,例如服务拒绝或者用户响应延时严重,他们需要第一时间介入,处理各种事故,降低事故带来的损失。当然,他们需要管理各种资源,比如CPU、内存、硬盘的扩容和缩容;还需要进行线上系统的安全管理,包括访问控制、防御DDoS攻击等。