首页 > 编程语言 >数据驱动的算法工程落地!

数据驱动的算法工程落地!

时间:2022-10-20 12:31:41浏览次数:50  
标签:存储 落地 算法 数据管理 格式 驱动 数据 标注


导读:随着科技浪潮的演进,数据已然成为第五大生产要素,越来越多的企业开启数字化转型,然而目前企业的现状却是数据人才的储备远远不足,学生却求职内卷,所学与企业具体生产环境匹配极低。

本文邀请了雪湖科技算法专家张益兴、格物钛首席产品官王广宇带来分享:企业面临的数据问题是什么,以及企业实际工程落地的经验。分为三部分,第一部分是会先讲数据驱动算法目前的进展,第二部分是算法部门分工与招人痛点,第三部分聊聊数据管理的痛点问题。

01 张益新:数据驱动算法的进展

人工智能在国内2017年后才开始火热,资本市场也竞相追逐,但其实在 1950 年左右就出来了人工智能概念。但当时没得到很好的发展,出现了所谓第一次危机的,到了 60- 70 年代,又出现了第二次危机,明斯基等人工智能大拿论断说人工智能是无法实现的。直到布尔兹曼基的算法出现打破了这一论断,80 年代的时候,现在我们大家所熟知的图灵奖深度学习三巨头出现,终于在 2008 年开始有一些转机。吴恩达用 GPU 解决了数据集训练问题,才把我们目前使用的这种基于数据的方法训练这条路走通了。

数据驱动的算法工程落地!_人工智能

我们现在还是处于弱人工智能时代,是有多少数据,就有多少智能,有多少人工就有多少智能。目前的人工智能分为机器感知、学习、语言、记忆、决策几个方向。现在我们能落地的大部分都属于感知层级。语音和自然语言处理等处理的数据类型不一样,但也属于基于数据驱动的类型。

数据驱动的算法工程落地!_python_02

在目前的弱人工智能阶段,是一个趋于数据驱动的过程。工程落地的大致流程步骤,其实就是我们基于深度学习的框架tensorflow等所架构的一套叫做生产环境部署的流程。从最初的提取和验证数据,到训练分析模型,最后部署到生产环境中,这是一套环环相扣的标准流程。只要把每一步操作都链接起来,有机会形成一个快速落地的工程,这是在算法落地中非常看重的一环。

数据驱动的算法工程落地!_算法_03

举个例子,在我们做安防场景的实际过程中,第一步其实不是数据也不是算法,而是设备的安装。在一些特殊性的场景,不管是机场海关港口银行,还是传统的安防场景。我们都很关心摄像头的安装位置等所决定的最后带来的精度上限,是否满足客户需求,能够完成验收。现在做激光雷达这一块,还涉及到产品的选型,产品价格从六七千到十几万不等,要根据施工现场的限制和甲方的需求来。之后还需要把涉及到的交通局、城市管理局、城市规划局等各个部门拉到一起,去处理设计图纸等。

对于企业中来说,算法里的研究、出一个好的trick、训练一个好的模型,这块对于最后的工程落地可能只有10%的影响,在我所接触的客户范围内,其实前面提到的设备安装这部分就占了50%的比重。

设备安装后的数据采集,就各不相同了。有些可以远程采集,有些需要到本地去。比如银行等保密级别比较高的场景,没有外网就需要到现场采集。有了数据后面临数据清洗的问题,主要是剔除无效数据,之后将有效数据挑选得到高质量的数据。

在整个算法落地过程中,除了设备安装占50%外,第二大重要的就是数据标注了,占比可能要达到20%。这部分很多是管理性的问题,而不是技术性。数据验收之后会将结构化的数据送入模型进行训练,进行模型部署。

02 张益新:算法部门分工与招聘痛点

我们可以根据算法落地过程,将算法部门拆分为三块。分别是数据管理、算法研究和工程落地。数据管理部门会提供数据给研究人员,算法研究人员对应出不同的模型,让工程落地人员去部署在不同的GPU上。有些公司会将数据管理外包出去。

对算法部门中这三类人员的能力需求各不相同。

数据管理的人员需要完成从数据采集和标注到验收这一块,我们叫做“脏活累活”的工作。对于数据管理人员,会要求有较强的运营能力,编程能力也需要,但懂得基本操作就可以。

算法研究人员需要有创新研究能力。提出一些新的网络结构、新的训练方法、trick,或者把整体精度提到的方法。这背后需要一定的数学能力支撑,为什么这么设计有效?从哪个方向去才能达到需要的精度或速度?一个BN怎么去设计?如果要走在算法研究前列,这些都是必要的研究能力。

另外就是工程落地人员。我目前招聘了200人左右,只通过了2、3人。大部分所谓的算法人员,他们的工程能力都普遍偏弱。有一些好的想法,但自己实现不了,比如编程,除了Python,一般还需要C++的能力(Python很好也可以),需要自己可以用C++去把一些功能实现出来。

数据驱动的算法工程落地!_大数据_04

目前遇到的招聘痛点,对于数据管理人员来说,是人员的流动性较大,我们正在思考逻辑性解决的方案。对于算法研究人员,主要是数学能力不够,提不出新的结构等等。对于工程人员,则是他们的编程能力需要提高,要懂一些深度学习,了解目前使用的一些模型。

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,进行特定收集、人工检查后标注。这时候标注就有很多方式了,可以根据之前的训练模型进行预标注。这时候大量的标注成本是花在了质检上,来保证数据质量,如果标注团队不行,可能要花上几周甚至上月的时间去解决质检问题。

这部分是企业很需要的工程能力,如果有人可以提升质检效率,这个价值可能比写一个算法、或模型的价值还要大,因为大幅缩短了整个研发周期。

分享嘉宾:

数据驱动的算法工程落地!_算法_05

数据驱动的算法工程落地!_编程语言_06


数据驱动的算法工程落地!_编程语言_07


标签:存储,落地,算法,数据管理,格式,驱动,数据,标注
From: https://blog.51cto.com/u_15699042/5779845

相关文章

  • 图像去模糊算法代码实践!
    作者:陈信达,上海科技大学,Datawhale成员1.起源:GAN结构与原理在介绍DeblurGANv2之前,我们需要大概了解一下GAN,GAN最初的应用是图片生成,即根据训练集生成图片,如生成手写数字图像......
  • 代码随想录算法训练营第八天 | 344.反转字符串 541. 反转字符串II 剑指Offer 05.替
    344.反转字符串对字符串的基本操作。双指针一个指头一个指尾,交换后向中间移动即可。对于考察基本操作的题目,不要使用库函数。交换操作,如果需要自己实现,有两种办法,一是使......
  • 都是推荐系统,广告算法和推荐算法有啥区别?
     Datawhale干货 作者:知乎KingJames,伦敦国王大学导读:广告和推荐算法的技术框架比较相似,却在很多公司中分属两个团队,两者的区别在哪里?这里从两者在实际业务中运用的角度,聊......
  • 通俗易懂谈强化学习之Q-Learning算法实战
     Datawhale干货 作者:KingJames,伦敦国王大学前言:上篇介绍了什么是强化学习,应大家需求,本篇实战讲解强化学习,所有的实战代码可以自行下载运行。本篇使用强化学习领域经典的P......
  • #1369 : 网络流一·Ford-Fulkerson算法 模板题
    ​​http://hihocoder.com/problemset/problem/1369?sid=1108721​​别人都说先学网络流再学二分图,但是我先学了二分图的,感觉网络流好高端啊。首先对于原图,e[u][v],找到一条......
  • JDBC-快速入门和DriverManager注册驱动
    JDBC-快速入门步骤:1.导入驱动jar包(依赖也可以)<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.......
  • 九鼎RK3399笔记三:测试迅为电子的杂项设备驱动
    Linux三大设备驱动字符设备:IO的传输过程是以字符为单位的,没有缓冲。比如I2C,SPI都是字符设备。块设备:IO的传输过程是以块为单位的。跟存储相关的,都属于块设备,比如TF卡。......
  • 驱动开发:内核枚举ShadowSSDT基址
    在笔者上一篇文章《驱动开发:Win10枚举完整SSDT地址表》实现了针对SSDT表的枚举功能,本章继续实现对SSSDT表的枚举,ShadowSSDT中文名影子系统服务描述表,SSSDT其主要的作用是管......
  • 算法 - 线段树学习笔记
    前言:此文章为线段树基础知识可供学习参考咳咳,进入正题:我们在做题的时候可能会遇到给定一个数组同时给出一个值进行修改或是区间性的操作这里以单点修改和区间查询......
  • 排序算法
    排序算法一、简介sort排序是计算机中重要的一种操作,作用是讲一个数据元素重新排列成一个有序的序列。排序算法在数据结构中相当重要。二、算法复杂度1.时间复杂度时间......