攀登数据科学家和数据工程师之间的隔墙
来源 | 数据派 THU
机器学习的教育和研究重点往往集中在数据科学过程的模型构建、训练、测试和优化等方面。要使这些模型投入使用,需要一套工程专长和组织结构,对于其中的标准尚不存在。有一个架构可以指导数据科学和工程团队相互协作,从而将机器学习模型部署到终端用户,这篇文章能让你了解更多关于这一方面的信息。
今天机器学习中最令人兴奋的事情之一,并不是深入学习或强化学习的前沿,至少我是这样认为。相反,更多有意思的事情是如何管理模型,以及数据科学家和数据工程师如何像一支团队般高效协作。朝这些方向前行可以引导组织更有效、可持续地应用机器学习。
可悲的是,“科学家”和“工程师”之间有一道鸿沟,可以说是一堵墙。Databricks的联合创始人兼产品副总裁Andy Konwinski等人,指出了近日一篇关于MLFlow的博客文章中存在一些关键障碍。Databricks说:“构建生产性机器学习应用程序具有挑战性,是因为没有标准的方法来记录实验、确保可重复运行以及管理和部署模型。”
当今应用机器学习的许多主要挑战(无论是技术上的、商业上的还是社会上的)的起因,是随着时间的推移,数据与机器学习部件的管理以及利用之间存在不平衡。一个模型可以表现得非常好,但是如果底层数据漂移、部件没有被用来评估性能,那么您的模型将无法很好地概括总结,也无法适当地更新。这个问题属于一个与数据科学家和工程师都相关的灰色地带。
换言之,问题的症结在于机器学习中缺少CI/CD的主体。如果您的环境发生了变化(如输入数据),并且模型没有在其构建目的的上下文中定期进行评估,从而导致模型随着时间的推移而失去相关性和价值,那么您是否能够创建一个真正好的“黑盒”模型并不重要。这是一个很难解决的问题,因为提供数据的人——工程师,以及设计模型的人——科学家,双方没有形成最令人愉快的组合。
这一挑战有一些具体的例子。想想有多少机器学习的笨蛋预言希拉里·克林顿将在大选中获胜。从自动驾驶汽车杀死无辜的行人,到有偏见的人工智能系统,都有一些重大的失误,我认为这些失误通常起因于数据科学和工程之间的灰色地带。
也就是说,无论是消极的还是积极的,机器学习都会影响到我们的社会。举一个更积极、更少商业化的例子,比如说electricity map使用机器学习来绘制全世界电力对环境的影响图;机器学习在癌症研究中目前正帮助我们更早、更准确地发现几种癌症类型;人工智能驱动的传感器为农业赋能,以满足全球粮食需求的飙升。
两者之间的隔墙
考虑到这一点,获得机器学习的成果,更具体点,模型管理是至关重要的。然而,回到正题,数据科学家和数据工程师并不总是能互相理解。
对于一个数据科学家来说,不了解他们的模型应该如何存在于一个不断吸收新数据、集成新代码、被终端用户调用、并可能不时地以各种方式(即在生产环境中)失败,这样的情况并不少见。另一方面,许多数据工程师对机器学习的理解不够,不足以使他们明白投入生产的内容以及对组织的影响是什么。。
尽管这两个角色占据了同一空间,但他们在操作时往往没有足够地考虑对方的那一方面。“那不是我的工作”不是正确的方法。要生产出可靠、可持续和适应性强的产品,这两个角色必须更有效地协同工作。
攀墙
理解对方的第一步是建立一个共同的词汇表——对语义学进行某种标准化,并因此讨论挑战或者说是相切合的挑战是怎样的。当然,其中充满挑战——只要问几个不同的人什么是数据湖,如果你得到的不是多个答案的话,至少也会得到是两个不同的答案。
我开发了共同的参考点,称之为ProductionML价值链和ProductionML框架。
我们将生产性机器学习的过程分解为五个重叠的概念,这些概念常常被单独考虑。虽然引入这样一个整体框架似乎会增加复杂性和相互依赖性——实际上,这些复杂性和相互依赖性已经存在——如果忽略它们的话只会把问题推到最后。
通过在生产性机器学习管道的设计中考虑相邻的概念,您将开始引入难以捉摸的可靠性、可持续性和适应性。
ProductionML 框架
ProductionML价值链是对操作数据科学和工程团队所需内容的高级描述,目的是将模型部署到终端用户。自然会有更为技术性和详细的理解——我称之为ProductionML框架(有些人可能称之为连续智能)。
ProductionML 框架
这个框架是在商业性MLOps工具、开源选项和内部PoC开发的几轮实验之后开发的。它旨在指导production ML项目的未来开发,特别是ProductionML中需要数据科学家和工程师输入的方面。
数据科学是橙色的,数据工程/DevOps是蓝色的。
如果您不熟悉这些方面,请参阅橙色标记的数据科学和蓝色标记的数据工程/DevOps。
如您所见,“训练性能跟踪”机制(例如,MLFlow)和管理机制位于该体系结构的中心。这是因为每个部件,包括度量、参数和图形,都必须在培训和测试阶段存档。此外,所谓的模型管理从根本上与利用这些部件的模型管理方式有关。
管理机制将部件和业务规则结合起来,提升优化合适的模型(或更确切地说,是估计器)以适应生产,同时根据用例特定的规则来标记其他模型。这也称为模型版本控制,但术语“管理”用于避免与版本控制混淆,并强调该机制在监督模型管理中的中心作用。
黄金枪?
我们都一起前行。我们都在努力攀登这堵墙。有很多很棒的工具进入市场,但迄今为止,没有人有一把黄金枪……
在我看来,MLFlow迈出了巨大的一步,它回答了关于模型管理和工件归档的某些问题。其他产品同样解决了相对特定的问题——尽管它们的优势可能在ProductionML价值链的其他部分。这些可以在Google Cloud ML引擎和AWS Sagemaker中看到。最近,GCP提供了AutoML Tables beta的beta版本,但即使如此,尽管它确实更接近了,但它也不能提供所需的所有现成的东西。
考虑到这种持续的差异,在科学家和工程师之间建立一个共同的词汇和框架是至关重要的。
这堵墙太高了吗?根据我的经验,答案是否定的,但这并不是说ProductionML不复杂。
詹姆斯·邦德:
M:所以如果我没听错的话,斯卡拉曼加逃走了——坐在一辆长出翅膀的车里!
Q:哦,那完全可行,先生。事实上,我们现在正在制造一辆。
也许你应该这样翻过那堵墙…
欢迎所有开发者扫描下方二维码填写《开发者与AI大调研》,只需2分钟,便可收获价值299元的「AI开发者万人大会」在线直播门票!
推荐阅读半小时训练亿级规模知识图谱,亚马逊AI开源知识图谱嵌入表示框架DGL-KE
中国顶尖的技术社区们在一个群里,会聊什么…京东智能内容创作算法的演进与实践:基于关键词自动生成摘要马化腾、马云并列成为中国首富;百度回应“将上线电商直播”;.NET 5 Preview 2 发布 | 极客头条程序员职场背锅甩锅指南警惕!新骗术出现:这些虚假二维码生成器已成功盗取 4.6 万美元!“出道” 5 年采用率达 78%,Kubernetes 的成功秘诀是什么?
你点的每个“在看”,我都认真当成了AI
相关文章:

js变量以及其作用域详解
2019独角兽企业重金招聘Python工程师标准>>> 一、变量的类型 Javascript和Java、C这些语言不同,它是一种无类型、弱检测的语言。它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变…
在A*寻路中使用二叉堆
在A*寻路中使用二叉堆 作者:Patrick Lester(2003年4月11日更新) 译者:Panic 2005年3月28日 译者序: 这一篇文章,是“A* Pathfinding for Beginners.”,也就是我翻译的另一篇文章A*寻路初探…
“Hey Siri” 背后的黑科技大揭秘!
作者 | Vishant Batta译者 | 苏本如,责编 | 伍杏玲出品 | CSDN(ID:CSDNnews)以下是译文: 如今苹果手机可随时检测并回答“Hey Siri”命令,有人可能会想,它是不是在随时记录我们的日常生活对话呢…

[ASP.NET4之旅]Circular file references are not allowed
将ASP.NET 2.0的项目升级到ASP.NET 4后,用VS2010编译站点,某些控件出现编译错误“Circular file references are not allowed”,比如: <% Control Language"C#"ClassName"NewsRight"%>解决方法…

IOS-XMPP
一、即时通讯技术简介 即时通讯技术(IM -- Instant Messaging)支持用户在线实时交谈。如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈的内容有许多的IM系统,如AO…

libcurl使用
官网:http://curl.haxx.se/libcurl/c/libcurl-tutorial.html #curl-config --libs 得到 -lcurl #cc libcurl_test.c -o libcurl_test -lcurl 所有的例子:http://curl.haxx.se/libcurl/c/example.html 例子: /***********************…

RH5.4下samba共享配置实例(3)
一、基于用户名的访问控制实例: 王乾大哥写的比较详细了,我是跟着他的教程学习的,按照他的教程走一边; 要求如下: 1、创建一个公共的交换文件夹,所有人都可以写入删除,但不能删除修改其他人的文…

《评人工智能如何走向新阶段》后记(再续21)
346.中国抗疫十大黑科技(以人工智能为主力的黑科技) 摘自数邦客(2020.3.30发布) 负压救护车 人工智能机器人:如送餐机器人、消毒机器人、服务型机器人,及机器人呼叫等呼吸道病毒核配检测试剂盒…

nagios npc安装后状态为off的解决方法
1、检查ndo2db的进程是不是二个 nagios 16825 0.0 0.1 6784 396 ? Ss 19:05 0:00 /usr/local/nagios/bin/ndo2db -c /usr/l nagios 17032 0.0 0.3 6784 1268 ? S 19:09 0:00 /usr/local/nagios/bin/ndo2db -c 2、检查nagios.log日志看…
C语言extern关键字定义外部变量--Redis源码extern使用
在Redis2.8中有networking.c,这个文件没有networking.h networking.c首先引入redis.h这个头文件 #include "redis.h" 在redis.c一开始就声明了全局变量 /* Global vars */ struct redisServer server; networking.c的createClient函数 redisClient *cr…
深度学习面试必备的25个问题
作者 | Tomer Amit译者 | 弯月,编辑 | 屠敏出品 | CSDN(ID:CSDNnews)在本文中,我将分享有关深度学习的25个问题,希望能够帮助你为面试做好准备。1.为什么必须在神经网络中引入非线性?答…

一分钟了解阿里云产品:先知计划
一、 概述 阿里云发布了各种各样的产品,今天让我们一起来了解下阿里云先知计划吧。 什么是先知计划呢? 先知计划是一个帮助企业建立私有应急响应中心的平台(帮助企业收集漏洞信息)。企业加入先知计划后,可…

C语言的HashTable简单实现
原文地址:http://blog.csdn.net/zmxiangde_88/article/details/8025541 HashTable是在实际应用中很重要的一个结构,下面讨论一个简单的实现,虽然简单,但是该有的部分都还是有的。 一,访问接口 创建一个hashtable. h…
GitHub标星2000+,如何用30天啃完TensorFlow2.0?
作者 | 梁云1991来源 | Python与算法之美(ID:Python_Ai_Road)天下苦tensorflow久矣!尽管tensorflow2.0宣称已经为改善用户体验做出了巨大的改进,really easy to use,但大家学得并不轻松。tensorflow2.0官方文档和tenso…

【Struts2学习笔记(1)】Struts2中Action名称的搜索顺序和多个Action共享一个视图--全局result配置...
一、Action名称的搜索顺序 1.获得请求路径的URI,比如url是:http://server/struts2/path1/path2/path3/test.action 2.首先寻找namespace为/path1/path2/path3的package,假设不存在这个package则运行步骤3;假…
大话卷积神经网络CNN,小白也能看懂的深度学习算法教程,全程干货建议收藏!...
来源 | 程序员管小亮本文创作的主要目的,是对时下最火最流行的深度学习算法的基础知识做一个简介,作者看过许多教程,感觉对小白不是特别友好,尤其是在踩过好多坑之后,于是便有了写这篇文章的想法。由于文章较长&#x…
频繁分配释放内存导致的性能问题的分析--brk和mmap的实现
现象1 压力测试过程中,发现被测对象性能不够理想,具体表现为: 进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70 2 用ps -o majflt,minflt -C program命令查看,发现majflt每秒增量为0&…

Linux 服务器日志文件查找技巧精粹
用来在日志文件里搜索特定活动事件的工具不下几十种,本文将介绍搜索日志文件时应该采取的策略。然后,通过几个具体示例介绍一些使用grep命令手动搜索日志文件的办法。接下来,我们将看到 logwatch工具和logsurfer工具的用法。最后,…

程序猿面试什么最重要?
程序猿面试一直是社区乐于讨论的热门话题。我自己从06年实习以来。先后经历了4家软件公司。所有是外企。当中有世界500强的通信企业,有从事期权期货交易的欧洲中等规模的金融公司,也有为大型汽车制造商开发Android智能汽车的新兴公司。跨入IT行业以来。我…

open的O_DIRECT选项
http://blog.chinaunix.net/uid-223060-id-2127385.html http://blog.csdn.net/hhtang/article/details/6605951 查看磁盘分区: #df -h #tune2fs -l /dev/mapper/VolGroup-lv_root 或者 #dumpe2fs /dev/mapper/VolGroup-lv_root|grep -i "block size"…
2020 年,AI 芯片内存哪家强?
目前多家公司都在开发网络边缘系统的AI芯片,本文作者详细分析AI边缘芯片遇到的问题和挑战,并给出一些新的内存技术解决方案。作者 | Mark LaPedus译者 | 弯月,责编 | 伍杏玲封图 | CSDN下载自视觉中国出品 | CSDN(ID:CSDNnews&…

Excel数字、文本混合列导入SQL Server出现的问题&解决办法
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://annie-out.blogbus.com/logs/60276495.htmlExcel文件:序号 姓名 内部电话 住址 1 小李 1234 …… 2 小王5678……3小张2345(国内长途)…………………………如上结构的…

ARM 位置无关代码(PIC)的分析理解
2019独角兽企业重金招聘Python工程师标准>>> PIC的特点是: 它被加载到任意地址空间都可以正确的执行。其原理是PIC对常量和函数入口地址的操作都是基于PC偏移量的寻址方式。即使程序被移动,但是PC也变化了,而偏移量是不变的&#…

Linux压缩/解压缩
整合资源,仅供自己参考:) TAR 命令名 tar - tar 档案文件管理程序的 GNU 版本。下面将逐个介绍其含义 总览 tar [ - ] A --catenate --concatenate | c --create | d --diff --compare | r --append | t --list | u --update | x -extract -…
为什么校招面试中总被问“线程与进程的区别”?我该如何回答?
作者 | 宇宙之一粟责编 | 徐威龙出品 | AI 科技大本营(rgznai100)进程与线程?(Process vs. Thread?)面试官(正襟危坐中):给我说说“线程”与“进程”吧。我(总…

Linux线程编程
1.编译 undefined reference to pthread_create问题解决 出现如下错误: undefined reference to pthread_create undefined reference to pthread_join 问题原因: pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread…

PHP引擎php.ini 和fastcti优化
1.1 php引擎缓存优化加速1)eaccelerator2)Zend3)xcache1.2 使用tmpfs作为缓存加速的的文件目录[rootLNMP ~]# mount -t tmpfs /dev/shm -o size256m[rootLNMP ~]# mount -t tmpfs /dev/shm/ /tmp/eaccelerator/提示:1、上传图片缩…
从*p++说指针,数组,结构和函数
说明文中*p和*s都是一个东西,不做字面上的统一了。 因为右结合性,*p 其实就是 *(p) 1.strlen的实现 #include <stdio.h> main(){char str[] "Abcde";printf("\n string %s length %d \n",str,str_length(str)); }int str…
8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
出品 | AI科技大本营(ID:rgznai100)在CVPR 2020上,商汤研究院链接与编译团队、高性能计算团队和北航刘祥龙老师团队合作提出了用于加速卷积神经网络训练过程的INT8训练技术。该工作通过将网络的输入、权重和梯度量化到8比特来加速网络的前向传…