主营产品:贴片铝电解电容、插件铝电解电容、贴片固态电容、插件固态电容、叠层固态电容

立迈电子

专注电容器行业十多年
立迈电子阿里巴巴
24小时服务电话
13336555866
13632675169
电容资讯

电解电容你的出产型ML复现不了,大概是事情流程出了问题

时间: 2021-04-10 浏览次数:
选自maiot blog 作者:Benedikt Koller 呆板之心编译 编辑:Panda、张倩 在呆板进修社区,越来越多的人开始接头研究的可复

选自maiot blog
作者:Benedikt Koller
呆板之心编译
编辑:Panda、张倩
在呆板进修社区,越来越多的人开始接头研究的可复现性,但这些接头大部门范围于学术情况。如何确保出产情况的ML可复现?克日,呆板进修开拓处事提供商 maiot.io 的 CTO Benedikt Koller 宣布一篇博客文章,先容了他基于自身履历总结的开拓可复现出产级呆板进修所要留意的 12 个要素。
已往二十年来,我们对软件开拓的领略有了大幅晋升。个中一大部门原因是 DevOps 观念的呈现及其在软件开刊行业的遍及应用。
领先的软件公司都遵循着同样的模式:首先是在软件开拓进程中快速迭代,然后举办一连集成、一连交付、一连陈设。每个特性都要颠末测试,看其提供代价的本领如何,并且软件始终要处于停当的状态,而且通过自动化要领举办陈设。
呆板进修这个规模虽差异于传统的软件开拓,但我们也能从软件开刊行业罗致许多实用的履历教导。已往几年里,我们一直在开拓出产型呆板进修项目。我们的方针并不可是观念验证,而是与软件开拓一样的可复现本领(reproducibility)。因此,我们构建了一套流程协调器、强大的自动化本领并成立了一套用于实现该方针的事情流程。
为什么不直接利用 Jupyter Notebook?从新开始构建一组包括所有处理惩罚步调的条记需要多长时间?为团队纳入新成员的难易水平如何?你此刻可以复现两个月前的功效吗?能以多快的速度复现?你能将本日的功效和汗青功效举办比拟吗?你能在练习进程中存眷到数据的出处吗?假如你的模子过期了又会产生什么?
我们碰着过所有这些问题。此刻,我们将这些履历举办了归纳总结,获得了乐成构建出产型呆板进修的 12 个要素(雷同于软件开拓中的十二要素应用/12 factor app)。
1. 版本节制
对软件工程师来说,版本节制根基上是理所虽然需要做的,可是这一要领论还尚未被数据科学家遍及接管。让我引述一下 Gitlab 上一些人的说法:
版本节制可促进整个软件开拓团队之间的协调、共享和协作。版本节制软件让团队可以在漫衍式和异步情况中事情、打点代码和文件的修改和版本以及办理归并斗嘴和相关异常。
简朴来说,版本节制能让你安详地打点软件开拓中会变革的部门。
呆板进修其实是一种非凡的软件开拓,有着本身特定的要求。首先,呆板进修中会变革的部门不止一种,而是两种:代码和数据。其次,模子练习的方法是(快速)迭代,而且代码中的差别会很大(好比拆分、预处理惩罚、模子)。
只要数据产生变动,就需要生存一个版本,这样才气担保能复现功效以及反复执行尝试和练习模子。简朴粗暴的版本节制(硬拷贝)具有很大的改造空间,不外尤其是在团队共享的环境下,可以或许保持稳定的版本节制是至关重要的。
代码的版本节制还要越发重要。除了上面引述的内容,预处理惩罚代码不只在练习阶段很重要,并且在处事阶段也很重要,需要与模子有保持稳定的相关性。为了在数据科学家的事情流程和投入出产的要求之间成立一种中台,一种利便的要领是提供无处事器的成果。
总结:你需要对代码举办版本节制,也需要对数据举办版本节制。
2. 明晰的特征依赖干系
在抱负世界中,发生你的输入数据的对象应该老是会发生同样的数据,至少布局上是这样。但这个世界并不是完美的,你从上游处事获取的数据也是由人类构建的,因此大概会产生变革。最终,特征也大概产生改变。最好的环境是你的模子会直接妨碍报错,但尚有最坏的环境:你的模子暗暗继承事情,但获得的功效都是垃圾。
明晰界说的特征依赖干系可以或许尽快展现出失败案例。假如系统设计得好,还能在处事时举办一连练习,然后调解依赖干系并加以适应。
总结:明晰代码中的特征依赖干系。
3. 描写性的练习和预处理惩罚
优良的软件都有优良的描写和注释——让人无需阅读每一行代码就能轻松阅读和领略代码成果。
尽量呆板进修是一类非凡的软件开拓,但它并不勉励实践者背离已有的代码书写准则。在代码书写尺度中,最根基的一条是能让人在短时间内不艰辛地阅读。
预处理惩罚和模子的代码都应该遵循 PEP8 类型。代码中该当利用有意义的工具名并包括有助于领略的注释。遵循 PEP8 类型可晋升代码的可读性,低落巨大度并加速调试速度。SOLID 之类的编程范式提供了颠末深思熟虑的框架,可让代码在将来用例中的可维护性、可领略性和机动性都获得改进。
设置应该与代码疏散。不要将数据分派比例硬编码到代码之中,而是通过设置方法提供,以便在运行时修改。人们在超参数调理方面已经熟知这一点了:利用疏散的设置文件可以显著加速迭代速度,而且让代码库可以反复利用。
总结:晋升代码可读性而且将代码和设置分隔。
4. 练习功效的可复现性
假如你不能复现练习功效,那么这个功效就是不行信的。尽量这是本文的主题,但在可复现性方面有一些细节需要说明。不只是你本身需要能复现练习功效,你的整个团队都要能做到这一点。不管是在 PC 照旧在 AWS 虚拟机上,恍惚处理惩罚 Jupyter Notebook 中的练习功效都与可复现性南辕北辙。
通过设定练习的事情流程,整个团队都可以透明地会见已执行的尝试和已运行的练习。通过绑定可复用的代码库以及疏散的设置文件,每小我私家都可在任何时间乐成从头练习。
总结:利用管道式事情流程和自动化。
5. 测试
测试的形式有许多。举两个例子:
1)单位测试是原子层面上的测试——基于各自的尺度单独测试每个函数和成果。
2)集成测试则相反,是将代码库的所有元素都放到一起举办测试,同时还会测试上下游处事的克隆版本或模仿版本。
这两种范式都适应于呆板进修。预处理惩罚代码是预先确定的,直到测试阶段——这样的转换能在差异的输入下都获得正确功效吗?模子是集成测试的一个绝佳案例——在出产情况中提供处事时,你的模子的表示是否与评估时相当?
总结:测试你的代码,测试你的模子。
6. 偏移与一连练习
在出产场景中,任务产生偏移是公道存在的问题。只要数据存在变革的大概性,你就需要思量偏移的大概性。对付此问题的风险,有两种可以采纳的法子:
1)监控出产系统中的数据。成立自动化陈诉机制,在数据产生变革时通知团队,这种变革甚至大概高出明晰界说的特征依赖干系。
2)基于新输入的数据一连练习。精采自动化的管道化流程可以基于新数据反复运行,然后与汗青练习功效举办较量,展示机能变革环境以及将练习获得的模子快速投放到出产中,从而让模子表示更好。
总结:假如你的数据会产生变革,那就回收一种一连练习的管道化流程。
7. 跟踪功效
Excel 并非一种跟踪尝试功效的好要领。并且还不可是 Excel,任何分手的人工跟踪要领获得的信息都是不足权威的,也因此是不行信的。
正确的做法是以一种中心化的数据存储方法自动记录练习功效。自动化可以或许担保靠得住地跟踪每次练习,从而利便之后较量每次练习的功效。对功效举办中心化存储,能为团队提供透明,实现一连性阐明。
总结:通过自动化要领跟踪功效。
8. 尝试模子与出产模子
我们需要尽力才气领略数据集。凡是来说,我们会通过尝试来实现领略, ST贴片铝电解电容,尤其是当我们存眷的规模具备大量隐含规模常识时。建设一个 Jupyter Notebook,将部门/全部数据导入 Pandas Dataframe,举办几个小时无序研究,练习第一个模子,评估功效——任务完成。但幸运的是,现实并不如此。
在呆板进修的生命周期中,尝试有本身的目标。这些目标并不是模子,而是领略。基于摸索性 Jupyter Notebook 的模子是为了领略,而不是为出产开拓的制品。领略之后,还需要进一步开拓和适应,才气开始打造用于出产的练习流程。
不外,所有与规模特定的常识无关的领略都可以自动化。你可以基于你利用的每个数据版本生成统计信息,从而可以跳过那些你在 Jupyter Notebook 中做过的一次性的姑且摸索事情,然后直达第一个管道式流程。你在流程中尝试举办得越早,你就能越早地在中间功效长举办协作,也就能更早地实现可投入出产的模子。
总结:条记不能投入出产,因此要在流程中尽早尝试。
9. 练习和处事之间的要领差别
练习和实际处事之间往往存在要领差别,为了正确地将所有数据预处理惩罚进程都纳入到模子处事情况中,需要淘汰这些差别。这虽然是正确的,你也需要僵持这一原则。可是,这只是对这一问题的部门解读。
先来简朴看一段陈腐的 DevOps 汗青:2006 年,亚马逊的 CTO Werner Vogels 缔造了一个说法「You build it, you run it(你构建的对象你要运行)」。这是一个描写性的短语,意思是开拓者的责任不可是写措施,还需要运行它们。
呆板进修项目也需要雷同的机制——领略上游的数据生成以及下游的模子利用都在数据科学家的职责范畴内。你练习用的数据是通过什么体系生成的?它会出问题吗?该体系的处事级方针(SLO)是什么?这与实际处事的方针一致吗?你的模子的处事方法是奈何的?运行时情况是奈何的?奈何在处事时对函数举办预处理惩罚?这些都是数据科学家需要领略息争答的问题。
总结:正确地将预处理惩罚嵌入随处事之中,确保你领略数据的上下游。
10. 可较量性
从为项目引入第二个练习剧本开始,可较量性就成了将来事情的重要构成部门。假如第二个模子的功效无法与第一个模子的功效举办较量,则整个进程就挥霍了,个中至少有一个是多余的,甚至大概两个都多余。
按照界说,所有试图办理同一问题的模子练习都需要可以较量,不然它们就不是在办理同一问题。尽量迭代进程大概导致所要较量的对象产生变革,可是在技能上实现模子练习的可较量性需要一开始就作为首要成果内置于练习架构之中。
总结:构建你本身的管道式流程,以便轻松较量各个流程的练习功效。
11. 监控
大致地说,呆板进修的方针应该是通过进修数据来办理问题。为了办理这个问题,需要分派计较资源。首先是分派给模子的练习,然后是分派给模子的处事。认真在练习期间提供资源的不管是人照旧部分,都需要认真将这些资源转移给处事。模子在利用进程中大概呈现许多机能下降问题。数据可以偏移,模子大概成为整体机能的瓶颈,毛病也是一个真实存在的问题。
结果:数据科学家和团队认真监控他们建设的模子。他们并不必然要认真实施监控,尤其是当组织布局很大时,但他们必定需要认真监控数据的领略息争释。最低限度上,需要监控的内容包罗输入数据、推理次数、资源利用环境(CPU、RAM)和输出数据。
总结:同样,「You build it, you run it(你构建的对象你要运行)」。监控出产进程中的模子是数据科学的部门事情。
12. 模子的可陈设性
从技能层面讲,每个模子练习流程都需要获得可陈设到出产情况中的制品。毫无疑问,这些模子功效大概很糟糕,但它需要做成可以陈设到出产情况的形态。
这是软件开拓中的常见模式,也叫做一连交付(Continuous Delivery)。团队需要可以或许随时陈设他们的软件,为了满意这个方针,迭代周期需要足够快。
呆板进修也需要回收雷同的要领。这样才气迫使团队首先思量现实与期望之间的均衡。所有好处相关者都该当清楚,在模子功效方面,哪些功效是理论上大概的。所有好处相关者都该当在模子的陈设方法以及如何与更大的软件架构整合上告竣一致。可是, 东莞贴片铝电解电容厂家,这也大概需要自动化,也需要前文提到的一些要素。
总结:每个练习流程都需要获得可陈设的制品,而不「只是」模子。
原文链接:https://blog.maiot.io/12-factors-of-ml-in-production/
从算法到应用,入门声纹技能。
10月19日,第一讲:音频基本与声纹识别。谷歌资深软件工程师、声纹识别与语言识别团队认真人王泉老师将先容声纹识别技能相关基本常识,包罗成长过程、听觉感知和音频处理惩罚相关根基观念与要领、声纹规模最焦点的应用声纹识别等。
添加呆板之心小助手(syncedai5),备注「声纹」,进群一起看直播。
© THE END
转载请接洽本公家号得到授权
投稿或寻求报道:content@jiqizhixin.com喜欢此内容的人还喜欢
原标题:《你的出产型ML复现不了,大概是事情流程出了问题》

东莞市立迈电子有限公司

Copyright 2020© 东莞市立迈电子有限公司 版权所有 粤ICP备2020136922号-1
24小时服务电话:13336555866   邮箱:jimmy@limak.cn
公司地址:广东省东莞市塘厦镇东兴路162号振兴大厦   网站地图

  
电话
服务电话:
13336555866 梁先生 13632675169 方先生
Wechat

梁先生

方先生

Alibaba

点击到阿里巴巴