dvc pipeline——模型流程版本管理

一:什么是pipeline

dvc实际是专门面向ML项目的,它管理大体积的数据的功能只是冰山一角。除了这个功能,dvc还可以对模型流程版本进行管理,也就是pipeline。

一个ML工程项目一般由四部分组成,数据dataset、众多组成训练模型的脚本script、用来后期微调以测试模型性能的超参数params、用来测试的evalutions。

上述四个部分组成了pipeline,而dvc可以全权管理它们,一条龙运行。当然还有许多别的优势,且看下文。

二:教程

具体可参考DVC官方文档,这里只讲述我的一些理解。

【1】一条龙运行

我们先将工程文件夹进行以下操作:

git init
dvc init 
dvc stage add...

workspace中就会生成一个dvc.yaml文件,里面是人类可读的流程信息,这个文件其实是整个pipeline的核心!!dvc就是根据该文件进行的autonomously running。

随后进行dvc repro,pipeline正式运行,结束又会生成一个dvc.lock文件夹,人类不可读,里面都是记录cache中的mdk5的hash值,其实就类似于.dvc文件。

所以,在运行后其实dvc add了pipeline中的生成数据(比如-o后面的一些定义文件)。其他的dvc.yamldvc.lockparams.yaml文件dvc不跟踪,交给git进行版本管理。最后dvc push这些生成数据。

【2】Smart
当我们只修改了众多文件中的一个文件中的一个小参数,那么dvc repro时只会rerun被改动的脚本以及后面的依赖脚本。这一切都依赖于cache缓存,对于没有更改的stage只需要调用存好的数据即可。

对于正在workspace上新创流程的来说,cache肯定是有的,新生成的数据文件肯定也是有的。但是对于一个git clone的新项目来说,还没有cache和中间文件,那么肯定不能smart,只能从头开始跑。

那怎么办呢?这就是之前dvc push的目的了,直接dvc pull就行了。中间数据和文件直接完美拷贝,二次利用。

【3】Visualization
dvc还可以可视化不同版本间的metrics,通过dvclive.Live().log_plot画出的图像,似乎会自动保存文件。dvclive.Live().log方法似乎是在最后的evaluation.json中添加内容?(暂待证实)同时,对如下图的evalute进行特别讲解:
在这里插入图片描述

在这里插入图片描述

cache:false的目的就是不希望它们被dvc跟踪,而是用来被git跟踪。–M和–plots-no-cache其实也都是新输出的文件,和之前stages的-o类似罢了。列出一些可视化命令和版本比较命令:

dvc metrics show 

dvc plots modify evaluation/plots/precision_recall.json \
                   -x recall -y precision								#第一次可视化需要配置坐标轴
                   ...
dvc plots show 


#比较命令,将当前workspace下的pipeline和last commit的metrics进行比较
#比如修改了params.yaml中的某个参数
dvc repro
dvc params diff
dvc metrics diff
dvc plots diff

(具体效果图见官方文档)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值