管理、技术、商业层面来看:应该买一个?还是自己建一个机器学习系统?

在决定要引入机器学习专案的时候,第一个要思考的问题就是,这个服务应该要从外面买?还是要自己建一个?(buy or build)。这个问题从管理层面、技术层面与商务层面切分。

管理层面

从管理层面出发,思考的则是(1)有没有团队(2)团队的能力是否足够(3)优先顺序。

这三点通常会在一开始,就帮这个问题定下清楚的界线。
(1)有没有团队
除了资讯产业的公司之外,许多传统产业、媒体、法律、房地产等产业,不见得都有自己的技术团队。也有一些公司,只雇用商业以及行销人员,做最核心的决策,将所有技术工作都外包到合作厂商身上。那这样这一题的答案就会很清楚的归向:购买。

(2)团队的能力是否足够
在有资讯团队的状况下,内部也需要权衡几项事情。专案展开的急迫性有多高,相关资料、人力(devops、资料科学团队)是否都已经准备好可以展开专案。相对应的决策,有可能会需要展开招募,有可能需要做内部训练等等。这时候,专案的优先顺序,和团队的扩展择依照各公司而定了。

(3)优先顺序
ML专案对公司来说的急迫性,跟想要执行的原因是为什麽?因为竞争对手已经开始了,所以要跟进?因为想让自己的公司保持在业界的领先位置?不管是基於甚麽原因,跟公司内部的专案比起来,ML的专案是立即性的会展开吗?且目前的开发团队是否有其他更重要、影响力更大的专案在身上,这些专案的优先顺序是短期内可以更换的吗?这些问题可能都带领到下两个层面去做思考。

技术层面

上可以切分成3个层面(1)系统面(2)服务底层架构面(3)模型与资料面。

(1)系统面
你可以跟一个软件服务商购买推荐系统。公司提供使用者跟公司产品的相关数据,对方的API将自动回传适合的推荐品项ID,让你可以用在系统上。又或是你自己建一个推荐系统的服务,让这些使用者跟产品互动的数据留在自家。

(2)服务底层架构
你可以自己公司有一个机房跟主机群,建立一个自己的工作集群,将服务部署在上面。抑或者选择托管服务,将工作负载放在云服务上。可以省去管理这些机器、附载、安全性等问题的力气。

(3)模型与资料层面
可以考虑是要(A)使用别人已经预先训练好的模型(完全不用展开任何训练,直接用模型结果)、(B)迁移学习(使用别人的模型架构,并固定模型大部分的参数,只训练少部分的参数)、(C)重新训练(使用别人的模型架构,不使用里面的所有参数,重新训练所有的参数)、又还是(D)自己设计模型架构(从模型架构开始重新架构,当然参数也重新训练)。

商务层面

除了这3点技术考量之外,做出此决定的主要标准是“新系统对公司的价值”和“企业愿意对其进行的投资”这两项的比较,也就是大家常听到的ROI。在这样的大方向之下,则可以去把整个流程切为四个阶段:

*图片来源:Machine Learning — Build vs. Buy (or Sell and Optimize)

(1)购买:各种云和 SaaS 提供商提供了许多 API服务,例如图片分类、文本处理、语音识别、机器翻译等。这些 API 基於非常庞大的资料集以及计算资源所建构。一方面相对单一公司来说很难构建,另一方面,这些服务的情境大多是通用的,不会因为所在的产业而有很大的变动,即便因为产业跟领域的独特性,也是可以在一开始透过这些通用API达成大方向的效益。在这个图表上也显示,当购买的时候,对公司来说内部的报酬是有限的,因为自己处於一个服务使用者的角色。

(2)建构:那什麽时候开始适合建构自己的模型呢?当通用的API让公司开始了解,如何与一个ML产品合作之後,自然会发现(A)通用模型可能在自己的领域上表现不是这麽完美,在同一个使用情境上,想用自己的资料,训练出一个更专注於这个领域的模型(B)公司想要展开更多的ML专案,而这个专案跟通用的使用情境可能是不同的。这时候就必须建构自己的模型。

(3)获利:在购买以及建构的阶段之後,公司也已经跟ML产品有了多次的迭代。甚至可以将如何在某某产业中使用某某ML产品这样的经验、服务卖出去。从自己公司的核心业务出发,这些商业的核心问题是模型或系统是否可以推广以满足各种的客户问题。

(4)优化:不管最後这个产品是对内、对外,都可以在ML的使用情境上面优化。对内,替公司加速拉开与其他对手公司的距离。对外提供服务给使用者,也让自己的服务在使用者的心占率中提高。

结论

也因此,公司是要买一个,还是建构一个。一方面取决於,公司的人力资源配置。一方面取决於公司的资料状况。一方面也取决於ML专案与公司的商业模型合作之後,会是在市场的哪一个阶段,想要执行的动机有哪些。希望这篇文章看完,能够让你对於buy or build有更清楚的方向。

[1]. Machine Learning — Build vs. Buy (or Sell and Optimize)


<<:  Day 14 Introducing Serial Communication

>>:  Day14 - 结果今天只做小蛇,小蛇还不贪

邦帮忙乾净无广告自干版

安装 stylebot 进入 邦帮忙 打开 Stylebot 开启代码页 输入以下代码 .head...

XACML 是支持基於属性的访问控制 (ABAC) 实现的理想候选者

XACML 是支持基於属性的访问控制 (ABAC) 实现的理想候选者。XACML 的策略决策点 (P...

android studio 30天学习笔记-day 1 - 前言

Hi大家好,很高兴参加这次铁人赛,身为大学生的我接触android已经快过一年了,在这期间学习许多,...

[Day17] CH10:排序大家族——插入排序法

今天第三天要登场的是插入排序法(Insertion Sort),我自己在玩扑克牌的时候,都是使用这种...

Day15-Overloading

函式多载(overloading),今天顺着蚂蚁书的顺序先讨论函式多载(overloading)与样...