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

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

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

我们将出格接头两个器材,MLFlow和DVC。虽然,尚有许多其他软件可以取得相同的结果。

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

呆板进修项目中的数据与模子存储

我们的接头可以归结为:

  • 跟踪每一轮实习呆板进修模子行使的数据文件
  • 跟踪实习后的模子和评估指标
  • 通过任何情势的文件共享体系与同事共享数据文件的简朴要领

总的来说,我们必要一个数据跟踪体系来透明地审计、可能复现功效。我们也必要一个数据共享体系来将项目团队扩展到多个同事。

就如我们先前接头的一样,行使Git或其他SCM(源代码打点体系)来存储呆板进修项目中行使的数据文件是不切现实的。

一些库提供了API来简化长途存储上的文件处理赏罚,并打点向长途存储上传或获取文件。固然这有利于长途数据集的共享会见,但却对我们面临的题目没有辅佐。

起首,它是嵌入式设置的一种情势,由于文件名被嵌入到软件中。在源代码中嵌入设置配置的任何措施在其他环境下都更难以被从头行使。其次,它没有将剧本版本和其行使的数据文件关联起来。

下面,然后我们看一下MLFlow的示例代码:

  1. mlflow.pytorch.load_model("runs:/<mlflow_run_id>/run-relative/path/to/model") 

这支持多种文件会见“方案”,包罗S3这样的云存储体系。这里的示例从“run”地区加载一个文件,在本例中是一个颠末实习的模子。每次执行一段代码时,MLFlow城市天生一个“run”。你必要设置一个存储“run”数据的位置,而且显然会为每个用于索引到数据存储地区的运行天生一个“run ID”。

这种方法有用地将数据与对应SCM源码打点库中的代码和设置文件的commit提交版本关联起来。另外,MLFLow API有多种实现说话,并不范围于 Python说话。

DVC回收的则是另一种方法。比拟上面将文件API集成到ML剧本中,你的剧本可以简朴地行使平凡文件体系的API实现输入和输出文件。譬喻:

  1. model=torch.load(‘path/to/model.pkl’) 

通过上述代码,路径名称将通过这条呼吁传入。你无需出格修改代码,由于DVC可以通过外部转达实习代码或验证模子代码必要的值。

DVC让这统统变得透明——数据文件版本与代码的Git版本是相匹配的。

通过下述呼吁,你可将文件或文件夹插手DVC的版本打点:

  1. $ dvc add path/to/model.pkl 

数据存储在你的事变目次中。赏识各项运行的功效也很简朴,只必要赏识你的Git汗青即可。查察特定功效就像git checkout一样简朴,DVC将被挪用,并确保将正确的数据文件毗连到workspace。

一个”DVC文件”将被建设,用于追踪每个文件及目次,并将被添加到workspace中。这样做有两个目标,一是可以追踪数据和模子文件,另一个则是记录事变流程中的呼吁。我们将在下一节中先容这部门。

这些DVC文件记录文件和目次的MD5总和校验码(MD5 checksum)。他们被提交到git workspace上,因此DVC文件记录了每次git提交的每个文件的总和校验码。DVC行使了“DVC缓存目次”来存储每个文件的多个实例。文件实例通过总和校验码举办索引,并行使reflinks或symlinks链接到workspace。当DVC相应git checkout呼吁时,它可以或许按照DVC文件中的总和校验码快速地重排链接文件。

DVC支持长途缓存目次,用于共享文件和模子。

  1. $ dvc remote add remote1 ssh://user@host.name/path/to/dir$ dvc push$ dvc pull 

DVC remote是一个存储池,可以举办数据共享。它支持很多存储处事,包罗S3、HTTP和FTP等。建设一个DVC remote很是简朴。dvc push和dvc pull呼吁高度模仿了git push 和git pull呼吁。dvc push用于将数据发送到长途DVC的缓存中,dvc pull用于从长途DVC缓存中拉取数据。

呆板进修项目中的事变流描写

接下来,我们将接头怎样更好地描写呆板进修项目标事变流。我们应该一股脑将全部对象堆成一个措施吗?照旧应该行使多种器材?

为了尽也许地缔造机动性,我们可以将事变畅通过pipeline或有向无环图(DAG),并回收呼吁行参数作为设置选项的方法来实现。这有点相同Unix哲学中的小而优良的器材——小巧但可以很好地协同事变。其举动可由呼吁行选项或情形变量指定,而且可以按照必要恣意搭配行使。

对比之下,许多ML框架回收差异的方法。他们编写单独的措施来驱动特定项目标事变流。措施第一步先将数据拆分为实习集和验证集,然后实习模子并验证模子。这种整套的单独措施可带来重用代码的机遇有限。

将ML项目构建pipeline可带来如下甜头

  • 打点伟大性:将这些步调作为单独呼吁实现可以进步透明度,并辅佐你越发齐集精神。
  • 优化执行:可以跳过那些没有修改且不必要返回值的步调。
  • 可重用性:在多个项目中可重用沟通的器材。
  • 可扩展性:差异的器材可由差异的团队成员独立开拓。

在MLFlow中,你必要编写一个“驱动措施”。这个措施包括了所需的执行逻辑,譬喻处理赏罚及天生呆板进修模子。在措施背后,MLFlow API发送哀求给MLFlow 处事器,通过该处事器天生指定的呼吁。

(编辑:湖南网)

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

热点阅读