加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

还在用Github管理机器学习项目?你早该了解这些更专业的新工具!

发布时间:2019-07-04 08:13:13 所属栏目:建站 来源:大数据文摘
导读:大数据文摘出品 编译:钱天培、胡笳 太伟大了!呆板进修(ML)项目其实太伟大了! 听到这种诉苦,认识软件开拓的小搭档们每每是嗤之以鼻的。 呆板进修,不外是和数据和软件打交道。那就应该是是运行代码、迭代算法的简朴题目呀?一段时刻后,我们就能拥有一个完
副问题[/!--empirenews.page--]

还在用Github打点呆板进修项目?你早该相识这些更专业的新器材!

大数据文摘出品

编译:钱天培、胡笳

“太伟大了!呆板进修(ML)项目其实太伟大了!”

听到这种诉苦,认识软件开拓的小搭档们每每是嗤之以鼻的。

呆板进修,不外是和数据和软件打交道。那就应该是是运行代码、迭代算法的简朴题目呀?一段时刻后,我们就能拥有一个美满的实习有素的ML模子。

有什么伟大的?

然而,卖力正着手起呆板进修项目,你就会发明:工作可没有那么简朴!

在项目举办了一段时刻后,你的实习数据或者已经被变动或删除,而你对实习剧本的领略也许也已经异常恍惚。

回过甚看你实习好的模子,你也许也记不得每一个模子是怎么实习出来的了;再可能,你想要查察先前实习好的模子,却发明模子早已被包围。

更可骇的是团队协作,你想要把你的事变分享给你的同事们,他们却怎么也无法复现你的功效,更别提参加协作了。

别慌!本日,文摘菌就来带各人体系地进修一下,怎样正确地打点呆板进修(ML)项目。

正如一样平常的软件开拓项目一样,你必要更好地打点代码版本和项目资产。在软件开拓项目中,人们也许必要从头审阅项目先前的状态。在呆板进修项目中,我们该怎样实现相同的检察呢?与Pull Request相对应的又是什么呢?

就我小我私人而言,我才方才开始打仗呆板进修器材。在进修进程中,我寓目了一些教程视频。先生们提到的一些题目会让我想起我在软件工程职业生活早期遇到的困难。譬喻,在1993到1994年,我是一个开拓电子邮件用户署理的团队首席工程师。我们没有任何源代码打点(SCM)体系。天天我城市咨询其他团队成员,看看他们那天做了哪些改变,也就是在他们的源树和主源树之间运行一个diff操纵,然后手动变动代码。稍后,团队成员从主源树手动更新他们的源树。

在我们发明早期的SCM体系(CVS)之前,这真是一团糟。SCM器材使项目运行得越发顺遂。

当我相识到呆板进修和数据科学项目中行使的器材时,我发明呆板进修进程就如上边所说的那样。纵然在本日,呆板进修研究职员偶然会将尝试(数据,代码等)存储在并行目次布局中,以便于举办diff检察,就像我在1993年所做的那样。

那么,抱负中的呆板进修项目打点应该是怎么样的呢?

ML项目打点原则

让我们从一些扼要的ML项目打点原则提及。

在任何ML项目中,措施员们城市举办很多尝试,为方针场景开拓最佳的实习模子。尝试一样平常包括:

  • 代码和设置:尝试中行使的软件,以及设置参数
  • 数据集:任何输入数据的行使——这可所以千兆级别巨细的数据,好比语音辨认、图像辨认项目中所用到的数据
  • 输出:实习后的ML模子和尝试的任何其他输出

呆板进修项目本质也就是软件运行。可是,与同事共享文件或复制功效,并实时回首以评估项目凡黑白常坚苦。我们必要更全面的打点器材。

办理方案必要涵盖以下几点(从Patrick Ball的题为《原则性数据处理赏罚》的演讲中摘录):

(1) 透明性:利便搜查ML项目标方方面面

  • 行使什么代码、设置和数据文件
  • 工程项目回收什么工序,工序的序次是什么

(2) 可考核性:利便搜查pipeline的中间功效

(3) 可复现性:在开拓的任何阶段准确地从头执行项目标手段,以及同事准确地从头执行项目标手段

  • 记录处理赏罚步调,以便任何人都可以自动从头运行这些步调
  • 在项目举办进程中记录项目标状态。“状态”暗示代码、设置和数据集
  • 可以或许在项目汗青的任何时辰从头建设可用的准确数据集

(4) 可扩展性:支持多个同事同时处理赏罚一个项目标手段,以及同时处理赏罚多个项目标手段

还在用Github打点呆板进修项目?你早该相识这些更专业的新器材!

为什么不在呆板进修项目中行使通例的软件工程器材?

诚然,在通例软件工程项目中行使的很多器材也许对呆板进修研究职员有效。

在通例的源代码打点体系(如Git)中可以轻松地打点代码和尝试设置,而且可以行使pull request之类的技能来打点对这些文件的更新。CI/CD(Jenkins等)体系乃至可以用于自动化项目运行。

可是,ML项目还有差异之处,使得平凡的软件开拓器材无法满意全部的需求。下面是几个重要的差异点:

  • 怀抱尺度驱动(metrics-driven)的开拓与特征驱动(feature-driven)的开拓:在通例软件工程中,“是否宣布”这一决定基于团队是否达完成了一些特性。对比之下,呆板进修研究职员研究的是一种完全差异的丈量要领——天生的呆板进修模子的猜测值。研究职员将迭代地天生几十个(或更多)模子,丈量每个模子的精确性。因为方针是找到最准确的模子,因此项目由每个尝试中实现的怀抱指标来指导。
  • 呆板进修模子必要大量的资源来实习:一个通例的软件项目将文件组织在一路编译一个软件产物,而呆板进修项目则实习一个描写AI算法的“模子”。在大大都环境下,编译一个软件产物只必要几分钟,很是快速,因此很多团队遵循一连集成(continuous integration)的计策。实习一个呆板进修模子则必要很长时刻。除非须要,最好停止一连集成。
  • 复杂的数据集和实习好的模子:呆板进修开拓阶段险些老是必要复杂的数据集,另外,实习过的模子也也许是庞大的。平凡的源代码打点器材(Git等)不能很好地处理赏罚大型文件,并且Git- lfs之类的附加组件也不得当ML项目。
  • 事变流(pipelines):呆板进修项目是一系列步调——如下载数据、筹备数据、将数据疏散到培训/验证集、培训模子和验证模子。很多人行使pipelines这个词来描写整个进程,意思是用每个步调的离散呼吁来结构呆板进修项目,而不是把全部对象都塞进一个措施中。
  • 专用硬件:软件开拓商可以将其软件基本办法托管在任何范例的处事器装备上。假如他们想要一个云陈设,他们可以从他们喜好的云计较提供商哪里租用VPS。然而,呆板进修研究职员有庞大的计较需求。高机能GPU不只可以加快视频编辑,还可以让ML算法加快“飞”起来,大大收缩了实习ML模子所需的时刻。

此刻,我们已经有了一个呆板进修项目开拓的原则列表,并相识了ML项目和平凡软件开拓项目标差异之处。

接下来,让我们看看有哪些开源软件可以辅佐我们实现这些原则。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读