数据驱动的算法工程落地!
Posted Datawhale
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据驱动的算法工程落地!相关的知识,希望对你有一定的参考价值。
↑↑↑关注后"星标"Datawhale
每日干货 & 每月组队学习,不错过
Datawhale干货
开源数据平台 格物钛 X Datawhale
导读:随着科技浪潮的演进,数据已然成为第五大生产要素,越来越多的企业开启数字化转型,然而目前企业的现状却是数据人才的储备远远不足,学生却求职内卷,所学与企业具体生产环境匹配极低。
本文邀请了雪湖科技算法专家张益兴、格物钛首席产品官王广宇带来分享:企业面临的数据问题是什么,以及企业实际工程落地的经验。分为三部分,第一部分是会先讲数据驱动算法目前的进展,第二部分是算法部门分工与招人痛点,第三部分聊聊数据管理的痛点问题。
01 张益新:数据驱动算法的进展
人工智能在国内2017年后才开始火热,资本市场也竞相追逐,但其实在 1950 年左右就出来了人工智能概念。但当时没得到很好的发展,出现了所谓第一次危机的,到了 60- 70 年代,又出现了第二次危机,明斯基等人工智能大拿论断说人工智能是无法实现的。直到布尔兹曼基的算法出现打破了这一论断,80 年代的时候,现在我们大家所熟知的图灵奖深度学习三巨头出现,终于在 2008 年开始有一些转机。吴恩达用 GPU 解决了数据集训练问题,才把我们目前使用的这种基于数据的方法训练这条路走通了。
我们现在还是处于弱人工智能时代,是有多少数据,就有多少智能,有多少人工就有多少智能。目前的人工智能分为机器感知、学习、语言、记忆、决策几个方向。现在我们能落地的大部分都属于感知层级。语音和自然语言处理等处理的数据类型不一样,但也属于基于数据驱动的类型。
在目前的弱人工智能阶段,是一个趋于数据驱动的过程。工程落地的大致流程步骤,其实就是我们基于深度学习的框架tensorflow等所架构的一套叫做生产环境部署的流程。从最初的提取和验证数据,到训练分析模型,最后部署到生产环境中,这是一套环环相扣的标准流程。只要把每一步操作都链接起来,有机会形成一个快速落地的工程,这是在算法落地中非常看重的一环。
举个例子,在我们做安防场景的实际过程中,第一步其实不是数据也不是算法,而是设备的安装。在一些特殊性的场景,不管是机场海关港口银行,还是传统的安防场景。我们都很关心摄像头的安装位置等所决定的最后带来的精度上限,是否满足客户需求,能够完成验收。现在做激光雷达这一块,还涉及到产品的选型,产品价格从六七千到十几万不等,要根据施工现场的限制和甲方的需求来。之后还需要把涉及到的交通局、城市管理局、城市规划局等各个部门拉到一起,去处理设计图纸等。
对于企业中来说,算法里的研究、出一个好的trick、训练一个好的模型,这块对于最后的工程落地可能只有10%的影响,在我所接触的客户范围内,其实前面提到的设备安装这部分就占了50%的比重。
设备安装后的数据采集,就各不相同了。有些可以远程采集,有些需要到本地去。比如银行等保密级别比较高的场景,没有外网就需要到现场采集。有了数据后面临数据清洗的问题,主要是剔除无效数据,之后将有效数据挑选得到高质量的数据。
在整个算法落地过程中,除了设备安装占50%外,第二大重要的就是数据标注了,占比可能要达到20%。这部分很多是管理性的问题,而不是技术性。数据验收之后会将结构化的数据送入模型进行训练,进行模型部署。
02 张益新:算法部门分工与招聘痛点
我们可以根据算法落地过程,将算法部门拆分为三块。分别是数据管理、算法研究和工程落地。数据管理部门会提供数据给研究人员,算法研究人员对应出不同的模型,让工程落地人员去部署在不同的GPU上。有些公司会将数据管理外包出去。
对算法部门中这三类人员的能力需求各不相同。
数据管理的人员需要完成从数据采集和标注到验收这一块,我们叫做“脏活累活”的工作。对于数据管理人员,会要求有较强的运营能力,编程能力也需要,但懂得基本操作就可以。
算法研究人员需要有创新研究能力。提出一些新的网络结构、新的训练方法、trick,或者把整体精度提到的方法。这背后需要一定的数学能力支撑,为什么这么设计有效?从哪个方向去才能达到需要的精度或速度?一个BN怎么去设计?如果要走在算法研究前列,这些都是必要的研究能力。
另外就是工程落地人员。我目前招聘了200人左右,只通过了2、3人。大部分所谓的算法人员,他们的工程能力都普遍偏弱。有一些好的想法,但自己实现不了,比如编程,除了Python,一般还需要C++的能力(Python很好也可以),需要自己可以用C++去把一些功能实现出来。
目前遇到的招聘痛点,对于数据管理人员来说,是人员的流动性较大,我们正在思考逻辑性解决的方案。对于算法研究人员,主要是数学能力不够,提不出新的结构等等。对于工程人员,则是他们的编程能力需要提高,要懂一些深度学习,了解目前使用的一些模型。
03 王广宇:企业的数据管理痛点
这部分由格物钛联合创始人、首席产品官王广宇解答。
Q
在公司数据采集的流程中,会遇到很多不同的数据格式,尤其是点云中的obj格式、pcd格式等,还有一些自定义的csv等等,这些一般怎么处理?
答:我们当时做数据平台也遇到了很多格式问题。过去的文件组织格式,是直接存储在文件夹里。比如可能是一个激光雷达的文件,里面再有一个描述文件去描述它的label等信息。如果有十万个一百万个,里面就去乘以十万或者一百万。尤其是当公司标准没有统一时,可能会出现一个灾难,就是A和B的存储格式完全不一样。我们提供了一个统一的数据存储方法,只要按照存储方法,我们会自动在平台上去组织这些文件。当读取文件时,读的是我们提供的一个对象。这样一来,工程师就会有一个统一的接口去调用这些信息,而不需要去感知数据的格式。
第二个是当可视化渲染或者读取数据时,有时候可能需要感知数据格式,将其解析出来。目前格物钛平台已经可以适配大部分格式,此外,未来也会将适配标准逐步开放出来,来应对未来自定义文件存储格式等场景。
第三个管理数据。不仅是数据存储,还有数据标注这个关键信息。大家都用过很多公开数据集,在用的过程中,每使用一个数据集,就要去了解一个数据格式。即使是目标检测也可能有不同的描述方法,激光雷达的描述方法就更多了。我们也在与一些企业和社区联合,尽量做一些适合应用的统一格式,希望在今后数据集的使用过程中,所有调用数据和读取标签的格式是一致的,这样就大幅增加数据的流通性,降低了使用门槛。
Q
从企业拿到第一手的原始数据,到最后变成数据集,过程中会有很多中间性数据,这些数据不确定是否有价值,该怎么处理?
答:这是一个要平衡的过程。如果使用频次很高,可以选择保存下来,因为高频使用每次抽取数据所耗费的时间和算力,远大于存储成本;如果很长时间采用一次,就丢弃掉。重要的是要把获取中间数据的方法保留下来,当想用的时候可以很快从数据中提取出来。
我们在平台上也遇到很多用户有这种需求,所以提供了一个自动化的能力,把数据的自动化处理流和数据本身绑在一起,作为一个版本。
Q
关于数据存储,我们所有项目全开的话,数据量会达到PB级,一直在本地买硬盘很难持续,这方面有什么建议?
答:当数据规模很大时,反而建议存储在云上。因为云上存储并不像我们想象的那么贵。PB级的数据中不是所有的都是高频的活跃的,可以把其中有价值的放在热存储里面,低频的放在冷存储里——冷存储是非常便宜的。另外,本地存储会需要运维团队去保证数据可靠性,甚至使用分布式存储等等,如果存放在云上,运维成本会指数级下降,可能一两个工程师就解决问题了。
关于云的可靠性问题,其实比很多人想象的要高,安全性是所有云厂商最在意的问题,它提供的账号等合规体质往往比本地更成熟,可靠性都在六个、七个9以上。我们目前采取的方式是一方面和云厂商合作,另一方面提供授权管理服务,面向整个人工智能开发团队提供版本管理、格式管理、可视化等等。当然,当数据上云时,可能算力也要上云,来避免传输成本,我的客户会有类似案例。
Q
关于这一点,我们目前的项目是外地采集数据,回到本地训练,想知道是否可以直接在云上进行?
答:有些客户是使用本地之前遗留下来的GPU做一些不紧急不耗时的任务,大规模的、并行的任务放在云上进行,采用这种混合方式。之前对接过一家美国无人车公司,是不需要数据工程师感知数据在哪里,要使用数据集训练时,会自动同步一份到云上,自然开启一个服务器跑起来,中间和GPU、算力、调度等的交涉都放在后台,不需要算法工程师考虑。
Q
我们目前交付给客户的主要是部署这一块,边缘性的内容可能覆盖不到,希望把从训练到数据整个流程都交付给客户,做一套管理平台,想知道这里的可行性。
答:我们目前对接的一家公司,算法负责人就有类似需求。他们需要用检测感知算法,配上GPU算力都部署到一些停车场,去检验货车或卡车停放得是否合规,人员是否在合规范围内行走。需求方的变动可能两三天就会变,比如过去识别工作服,只需要识别蓝色和灰色,突然有一天就多了个紫色的。这时如果没有一个很好的方案,成本会非常高。大概估算下来需要三个工程师一个月左右,快20万的成本。如果这件事可以做成自动化,比如捕捉这种case进入异常流程,积攒数据量到一定程度就生成一个数据集,自动发到标注平台,然后自动训练、优化再到应用。如果整个流程可以压缩到一周之内,他的产品将变得非常有竞争力。我认为这部分事情是可以自动化的,不能完全自动化的部分可以通过对客户的一些简单教学搞定。
现场问答
Q
对于技术面试官来说,对校招生做算法工程师看重的能力是什么?
张益新:我最近几年面试了200人,大概也就招了2、3个。首先深度学习的反向传播一定要会,自己要可以手推,最好能用Python、C++实现一遍,这个是基础。你要把整个CNN最起码 Batch Normalization(批量归一化)整明白,就是每一层的map 剪去均值除以方差,开了根号以后,阿尔法乘以 beta 这个公式为什么能这么推导,到这一步其实就差不多了。如果这些都会,可能会问为什么这么设计,BN背后的原理等,深度学习的基础知识和背后的逻辑关系、数学原理等。此外就是一些C++的内容,我们对工程能力的要求很高,算法能力我们这边会的人都可以叫,但写代码的能力怎么样是我最看重的,因为创业公司的性质是这样。此外最好有一些github上的开源项目、或提交了一些bug,说明是圈子里的人。
Q
对于医疗上的敏感数据,如何做数据管理?
王广宇:首先是对于身份证等人物标识进行脱敏处理,其次要提供一个明确的访问权限,谁可以访问数据、谁可以管理,谁可以使用,同时所有的操作记录都要保存下来,这是在合规上非常硬性的要求。
Q
数据分析师会参与数据管理工作吗?还是只有业务上在使用?
王广宇:如果把数据看成是机器学习的代码,不同于以往用于数据分析、数据决策的BI数据,数据在机器学习中更多是一种核心生产资料,相当于带功能的代码一样。如果把它看作是开发的流程,有很多人会参与。数据分析是也可能参与到其中,不是结构化数据的根系,可能是到底要加多少数据,加哪些数据会使模型迭代更好、更有效。
Q
企业在数据的收集、标注成本会很高,如何处理?
王广宇:在收集这一块,对于项目制的公司,可能会按照项目单独收集,这是不可避免的。有很多企业已有成熟的产品,这时候去收集数据不同于我们传统的模式,而是可能在很多场景的边缘布算法trigger,进行特定收集、人工检查后标注。这时候标注就有很多方式了,可以根据之前的训练模型进行预标注。这时候大量的标注成本是花在了质检上,来保证数据质量,如果标注团队不行,可能要花上几周甚至上月的时间去解决质检问题。
这部分是企业很需要的工程能力,如果有人可以提升质检效率,这个价值可能比写一个算法、或模型的价值还要大,因为大幅缩短了整个研发周期。
分享嘉宾:
整理不易,点赞三连↓
以上是关于数据驱动的算法工程落地!的主要内容,如果未能解决你的问题,请参考以下文章