机器学习应用设计阶段的 10 个陷阱和 11 个最佳实
译者 | Sambodhi
策划 | 刘燕
本文最初发表于 Toards Data Science 博客,经原作者 Bruce H. Cottman 授权,InfoQ 中文站翻译并分享。
本文主要介绍了在项目的最初设计阶段中,你可能会遇到的陷阱,并详细阐述如何避免这些陷阱的最佳实践。
图 1应用的迭代生命周期
你是否成功设计、训练和测试了一个应用(Machine Learning Application,MLA)?虽然经过了实验室的审核,但应用的表现却是不能令人接受的,甚至可能在生产中失败?
如果是这样,请继续阅读本文,我将详细介绍我的同事和我遇到过的陷阱。接下来我将详细讨论最佳实践,其中一些是我们已经开发的可避免这些陷阱的解决方案。
方 法
降低应用设计、开发和部署的高成本和负担,是 DataOps、DevOps、MLOps、GitOps、CloudOps......xOps 的方法论领域,其中,Ops 代表运营(Operations)。
我们认为,你应该按照这个顺序,先学会爬行,再学会行走,再学会跑步,然后也许是再学会飞行。
在我们看来,xOps 就相当于应用生命周期中的行走、跑步和飞行。
我们从爬行开始。
本文重点讨论项目启动时的陷阱和最佳实践应用设计阶段。
项目管理被描述为陷阱和最佳实践。
项目管理可以布置成一个步骤图(边和节点)。按特定顺序执行的任务就是瀑布式项目管理方法。一个例子是按设计、开发、测试和部署的顺序排列。
应用项目管理被想象成一种连续的任务循环图(参见图 1)。我们也可以把一个应用项目看作是一个任务清单,其中每个任务都是部分完成的。这些任务中有些可以并行执行,有些依赖于其他任务,有些重复执行,直到应用变成“垃圾箱”。
注我们建议你通过迭代和异步的方式来完成任务。
但愿以上就是我们需要讨论的关于应用项目管理方法的全部内容。从现在开始,我们将重点介绍一些在应用设计阶段所遇到的比较多的陷阱。这些陷阱来自于 40 多年的综合经验和大约 18 个应用项目。
对于本文所列举的任何陷阱,都会详细说明一种或多种最佳实践的变通办法或解决方案。每个最佳实践通常都是一个组件任务,它只有尽可能少的先验输入。你会注意到,有些任务有不可避免的启动依赖性。
在应用项目生命周期中,我们也陷入了开发和生产过程中的陷阱。我们(通常)用最佳实践来发现自我。
陷阱和最佳实践
陷阱 1寻找问题的解决方案
我们之所以把这个陷阱放在第一个位置,是因为作为一家咨询集团,主要是在 2016 年及更早的时候,在业务问题不需要解决方案的时候,我们常常将精力投入到方案。
对所有这些客户来说,他们想要说他们正在使用应用,无论他们是否需要,还是没有为做好准备。
陷阱 2没有数据,没有发现问题
请不要笑,但在 2017 年之前的早些时候,我们受雇于客户,却没有发现任何数据或问题。
我们发现,第 1 个陷阱和第 2 个陷阱都需要解决,然后才能继续。
最佳实践 1了解业务问题,定义应用解决方案
不要与那些不能或不愿意让你定义可行的解决方案的公司合作。
最佳实践 2低成本意味着低成功率
你的第一个项目应该增加功能,而不是替换和改进现有功能。
要证明的增值,要避免将应用于组织的遗留(现有)系统。说起来容易做起来难!
注你可能最终会理解组织或部门的业务流程以及该流程的系统实现。对于希望用解决的业务用例,系统实现将很少或完全不了解。
最佳实践 3查找并确定业务用例、流程和 / 或数据流图
关键绩效指标(Key Performance Indicators,KPI)被组织视为重要指标。组织可以衡量各部门、流程和项目的健康指标。
,对利益相关者进行调查,找出最让他们失望的地方。
举例来说,一家连锁酒店衡量房间的可用性,或者一家餐厅衡量桌子的可用性。可以根据过去的预订情况预测未来的预订情况。,更有价值的会降低可用性。
最佳实践 4每次只做一个应用
一旦确定了业务用例问题,就可以提出一个应用解决方案。在第一个应用取得可衡量的成功之后,你就可以启动其他的应用项目了。
最佳实践 5当第一个应用取得成功后,通过启动更多的应用项目来增加投资
这种最佳实践是突出的。但不那么明显的是,在第一个应用项目投入生产之前,你的赞助商可能希望启动更多的应用项目。
你的赞助者(或你)可能会因为实验室中训练、测试和验证的漂亮结果而非常兴奋。提醒自己和他们要对过去的灾难保持警觉。
陷阱 3设计单体架构
创建单体应用会导致瀑布式开发过程。不同的步骤和应用的各个部分是高度相关的。
最佳实践 6设计组件管道或微服务架构
将应用设计成组件或微服务的管道。在这种情况下,每个组件都是一个可分离的微服务。每个组件都是完全可执行的,彼此独立,需要明确定义的输入和输出。
技巧基于组件的架构能够让你的团队以异步的方式进行开发应用的不同部分。
最佳实践 7应用设计蓝图
设计的第一部分规定了应用的功能性和非功能性需求。确定的需求构成了应用的架构设计。,需求将决定生产策略,并对应用进行具体测试。
技巧制定并广泛分享应用架构蓝图,展示端到端集成应用管道中的各个逻辑组件。
最佳实践 8使用软件工程最佳实践
在中运用软件开发项目的经验。
由于输入数据和调整参数对随机的应用比确定性应用有更大的影响,就不同。,你将会发现你过去的大部分软件工程方法和最佳实践都适用于你的项目。
陷阱 4重新发明轮子
我们看到了很多因为前期工作研究不到位而不得不重新启动项目的例子。
能工摹形,巧匠窃意。(Good artists borro, great artists steal.)Pablo Ruiz Picasso(1881 年 10 月 25 日1973 年 4 月 8 日)
技巧一开始花点时间在 GitHub 上搜索一下,然后继续完成这个项目。
技巧我们的经验是,arvix. 上的好论文都是用代码实现的,并放在 GitHub 上。代码片段有助于启动项目。
陷阱 5解决方案太过简单
对于较小规模的项目,一个开箱即用的解决方案可能就足够了。不幸的是,为了确保在竞争中的领先优势,可能需要定制功能或多个模型组合。
最佳实践 9应用架构需要 Transformer
由于应用在近两年发生了显著的变化,我们决定在本文中加入孤立的最佳实践。
我们曾在 2017 年部署了基于 GLOVE 的应用 。2018 年出现了 BERT Transformer。通过两个关键的改进,BERT 带来了性能的大跃进
BERT 被预先训练在一个语料库大小至少 4 个数量级(10000 倍),比我们的基于 GLOVE 的模型更加巨大;
BERT 的模型参数的数量比我们基于 GLOVE 的 ML 模型大两个数量级(100 倍)。
[……] 扩展到极端规模的模型也会带来很大的改进 [……]
Devlin 等人,2018 年
陷阱 6不通报进展情况
无论应用有多成功,在项目过程中都会出现一些小问题。我们已经找到了一份提供给客户项目发起人和经理的 1~2 页的每周状态报告,即使他们没有要求这么做,但这可以消除项目中的大部分沟通错误。
故事有一次,我们被炒了鱿鱼,但幸运的是,在两天之后,当几次误解澄清之后,我们又被重新雇用了。从此以后,每周的状态报告就成了必需的最佳实践。
陷阱 7弄错了业务用例
无论你在项目中的位置如何,你的要求都是错误的,你需要停下来并重新评估。做好重新开始或者被解雇的准备。记录你新提出的解决方案。人生苦短,无法继续推出一个需要解决问题的应用解决方案。
陷阱 8 App 不能满足需求
陷阱 8 与陷阱 7 类似。由于你正确地处理了业务用例,所以我们把它列在这里,但目前业务需求的优先级不高,或者消失了。这样的话,你唯一能做的就是提出不同的需求,去满足它们。要做好走人的准备。
陷阱 9客户没有的经验或知识
早些时候,我们举办了《如何从中获益?》(Ho to benefit from Machine Learning?)课程。现在,我们将这些课程指向 Github、Coursera 和 Medium 博客上的 Aesome-X URL。
但我们不会放弃幻灯片,因为我们还是会经常用到它。
技巧为客户的开发人员提供实践的指导。
陷阱 10没有部署基础设施
对于“我们没有 ML 部署基础设施”这个问题,我们只有一个答案(可行的解决方案),那就是去获取一个云账户。
推出自己的基础设施是可以做到的。Apple、Amazon、Google、IBM、Zillo 和其他数十亿(或数万亿)的公司都已经做到了。我们的答案是去获取一个云账户。
最佳实践 10在云端中部署
Google Cloud Platform(GCP)是基于云端部署模型的主要选择之一。其他选择有 AWS、Microsoft Azure、Paperspace 等。
技巧我们最喜欢的是免费的 GCP Colab。
最佳实践 11定期审核解决方案
的最新进展正在发生,并且正在加速。你不想被另一个 BERT 类的事情蒙蔽双眼。
要及时掌握最新文献。你还可以向你的客户宣传全新的、优秀的项目。
结 语
我们是从外部顾问的角度为客户设计应用而写的本文。,如果你是负责设计应用解决方案的内部员工或团队,那么本文提到的所有陷阱和最佳实践都同样适用。
人工智能 1.0 行业的第一波浪潮在 20 世纪 80 年代末可以说是失败的。人工智能 1.0 行业由于难以推出强大的生产应用而夭折。
人工智能 2.0 行业之所以取得成功,是因为强大的生产应用的推广和日常使用。我们预计成功将会持续增长,人们在生活中使用,甚至都没有意识到这一点(尽管存在营销行为)。
但愿这些陷阱和最佳实践能帮助你设计应用,并使它们成功地投入到生产环境中。
我们将详述在项目生命周期的开发和部署阶段遇到的更多陷阱。,我们还将列出我们用来摆脱困境的最佳实践。我们在后续博文中完成这一任务。
作者介绍
Bruce H. Cottman,博士,物理学家、科学家、不断取得进步的软件工程师。热衷从新兴技术中推断未来。
https://toardsdatascience./10-pitfalls-and-11-best-practices-for-the-design-phase-of-a-machine-learning-application-project-66c3d599f87
机器人培训
- 达芬奇机器人献爱心 将主刀公益手术
- 亚马逊将在英国招聘2000多人 重点开发Alexa和无人
- 美、德、英、日、中5国机器人发展全景大盘点
- 国产机器人窗口期 不可错失制造2025弯道超车机会
- 一个小时,这只机械狗“自学”会了走路!
- 三穗长吉镇:无人机飞防作业 稳粮增豆保丰收
- 依靠静电着陆的新型机器人
- 工业机器人推广应用座谈会
- 在苹果的智能机器人软件公司是一种怎样的体验
- 四大家族之KUKA工业机器人应用案例分析
- 万事俱备只欠东风?机器人产业的东风到底在哪
- 欧洲 6 轮送货机器人开始在美国大学推广
- 芜湖:考核第一!6项冠军!
- 人工智能有望打破医疗资源不均衡
- 立讯精密:已进军新能源汽车市场,目标成为全
- 90后用机器人炒菜周入10万,炒菜机器人真的有可