windows下dvc的使用(data version control)

news/2024/11/15 2:36:45/

新建文件夹 : basic

在文件夹中打开terminal,初始化git

git init

安装

pip install dvc

初始化dvc

dvc init

新建文件夹data

mkdir data

从dvc官方github获取demo数据源头,获取方式是通过http

dvc get https://github.com/iterative/dataset-registry \
get-started/data.xml -o data/data.xml

查看是否已经获取demo数据

ls -lh data

使用dvc来管控demo数据

dvc add data/data.xml

使用git来管控dvc的版本指向文件

git add data/.gitignore data/data.xml.dvc

使用git记录和提交本次操作

 git commit -m "Add raw data"

查看dvc版本指向文件的内容

outs:
- md5: a304afb96060aad90176268345e10355path: data.xml```

这里使用上传至公司服务器器为例子

建立远程连接

dvc remote add -d -f storage ssh://172.20.8.10/home/hairou/algorithm-dvcdvc remote modify storage user hairoudvc remote modify storage port 22dvc remote modify storage password hairou

然后上传指向文件

dvc push

当把数据文件删除之后,依旧可以从服务器端获取

dvc pull

假设我们的数据文件发生了改变,要如何处理,比如往里添加内容

vim data/data.xml

用dvc来管控文件的变化

dvc add  data/data.xml
git add 'data\data.xml.dvc'

同时也要用git来管控变化的 .dvc 文件

git add data/data.xml.dvc
git commit -m "Dataset updates"

都管理好变化之后,将有变动的文件上传至服务器来管理

dvc push

image.png

如果想要回到上一个版本的数据源,也可以用常规的git命令

git checkout HEAD^1 data/data.xml.dvc

注意!git 跟踪管理的不是数据文件,而是数据文件的映射文件 .dvc
git checkout 完了之后,还得

dev checkout

因为已经回退到上一个版本了,所以要记录一下这个操作

git commit data/data.xml.dvc -m "Revert dataset updates"

我们把刚才的启动dvc和git来管理的项目,上传到github作为一个项目
image.png
image.png
image.png
image.png
这样直接回到github,就看到东西已经在github同步了
image.png

在ML中使用dvc

数据文件及ml脚本 ;

https://github.com/elleobrien/wine

当数据集或者程序或者模型发生了改变,dev要如何管控

dvc init
dvc run -n get_data \-d get_data.py \-o data_raw.csv \--no-exec \ python get_data.py

参数说明:
-n : --name : 要执行的名称
-d : dependencies 所依赖的
-o : --output 输出的结果叫做 data_raw.csv

当使用dvc run的时候不想马上执行命令,可以用 --no-exec

如果是命令行的形式,也可以使用类似

dvc run -n my_stage "./my_script.sh > /dev/null 2>&1"
dvc run -n my_stage './my_script.sh $MYENVVAR'

image.png

image.png
image.png

#把所有程序都执行,且把所有输入输出等都列出来
stages:get_data:cmd: python get_data.pydeps:- get_data.pyouts:- data_raw.csvprocess:cmd: python process_data.pydeps:- process_data.py- data_raw.csvouts:- data_processed.csvtrain:cmd: python train.pydeps:- train.py- data_processed.csvouts:- by_region.pngmetrics:- metrics.json:cache: false
#再执行以下命令则可以整个过程一次性执行
dvc repro

image.png
如果使用同一套FS,但替换不同的数据文件和配置,改怎么做
要修改文本啥的,然后repro

案例
image.png
image.png
image.png
dvc run -d 要執行的程式或要輸入的檔案 -o 要輸出的檔案 python 要執行的程式

$ dvc run -d script/split_train_test.py \-d script/config.py \ -d dataset/annotation.csv \-o dataset/train.csv \-o dataset/test.csv \python script/split_train_test.py #最后的这个应该是需要执行的主程序 
dvc run -d script/evaluate.py  \-d script/config.py \-d dataset/test.csv \-d model/model.pth \-M log/eval.txt \# -M 指定檔案路徑,因为DVC 後續會去追蹤這份檔案,讓我們能夠快速地去		  做成效的比較-f Dvcfile \  # -f 是因为后面如果dvc repro没有指定档案,就读取默认档案,这里就会		把上面的这些-d 放到Dvcfilepython script/evaluate.py

如果修改了一些文件或者配置,但其他都不变,则

$ git checkout -b epochs51
$ vi script/config.py  # 將epochs = 21 改為 epochs = 51
$ dvc repro

官方案例

git clone https://github.com/iterative/example-versioning.git
cd example-versioning#一次性导入即将需要的各个模块
pip install -r requirements.txt#获取第一个版本的代码模型
dvc get https://github.com/iterative/dataset-registry \tutorial/ver/data.zip
unzip -q data.zip
rm -f data.zip#类似git status
dvc status -c

常用场景解决

1.同一个分支使用不同的数据

即针对新开发出来的一个算法,需要使用不同的数据集来模拟验证和对比不同场景的效率

1.1 串行模拟

1.1.1 本地模拟器

#把模拟器dvc 初始化
dvc init#配置远端数据源获取渠道
dvc remote add -d -f DataSet ssh://172.20.8.10/home/hairou/algorithm-benchmark
dvc remote modify DataSet user hairou
dvc remote modify DataSet port 22
dvc remote modify DataSet password hairou#获取数据源,比如想要WY项目的,则
cp ../dataStore/*.dvc data/ 
cd data/ & dvc pull 
rm -f data/*.dvc
mv data/*.yaml config/#使用命令行执行程序
dvc run -n run_haiq "cd cmake-build-release ; nohup ./run_haiq ../config/*.yaml > /dev/null 2>&1 &"#用git管理dvc的process
git add dvc.lock dvc.yaml
git commit -m "Add dvc.yaml"#当程序跑完之后,存储结果
cd statistic/script ; bash +x clean_log.sh#删除原有的不同的数据集并拉取新的数据集
cd ../../ ; rm -rf  data/*/ ; rm -f config/*.yaml
cp ../algorithm-benchmark/WY*.dvc data/ 
cd data/ & dvc pull 
rm -f data/*.dvc
mv data/*.yaml config/#直接
dvc repro

1.1.2 服务器的模拟器

#若没有安装dvc,需要安装
pip install dvc 
或者
snap install --classic dvc#把模拟器dvc 初始化
dvc init#配置远端数据源获取渠道
dvc remote add -d -f storage ssh://172.20.8.10/home/hairou/algorithm-dvc
dvc remote modify storage user hairou
dvc remote modify storage port 22
dvc remote modify storage password hairou#获取数据源,比如想要WY项目的,则
cp ../algorithm-benchmark/WY*.dvc data/ 
cd data/ & dvc pull 
rm -f data/*.dvc
mv data/*.yaml config/#使用命令行执行程序
dvc run -n run_haiq "cd build ; nohup ./run_haiq ../config/*.yaml > /dev/null 2>&1 &"#当程序跑完之后,存储结果
cd statistic/script ; bash +x clean_log.sh#删除原有的不同的数据集并拉取新的数据集
cd ../../ ; rm -rf  data/*/ ; rm -f config/*.yaml
cp ../algorithm-benchmark/WY*.dvc data/ 
cd data/ & dvc pull 
rm -f data/*.dvc
mv data/*.yaml config/#直接
dvc repro

1.2 并行模拟

1.2.1 本地模拟器

#若没有安装dvc,需要安装
pip install dvc 
或者
snap install --classic dvc#把模拟器dvc 初始化
dvc init#配置远端数据源获取渠道
dvc remote add -d -f storage ssh://172.20.8.10/home/hairou/algorithm-dvc
dvc remote modify storage user hairou
dvc remote modify storage port 22
dvc remote modify storage password hairou#准备好所需要的数据,这里采用JDKA及WY为例
cp ../../algorithm-benchmark/*.dvc data/ 
cd data/ & dvc pull 
rm -f data/*.dvc
mv data/*.yaml config/#创建执行脚本 multiConfig.sh
#!/bin/bash
for file in config/*
doif [ $( basename `pwd` ) = "cmake-build-release" ]thennohup ./run_haiq ../$file > /dev/null 2>&1 &echo "Begin to run $file"elsecd cmake-build-releasenohup ./run_haiq ../$file > /dev/null 2>&1 &echo "Begin to run $file"fi
done#使用命令行执行程序
chmod +x multiConfig.sh
dvc run -n run_haiq "./multiConfig.sh > /dev/null 2>&1"#当程序跑完之后,存储结果
cd statistic/script ; bash +x clean_log.sh

1.2.2 服务器模拟器

#若没有安装dvc,需要安装
pip install dvc 
或者
snap install --classic dvc#把模拟器dvc 初始化
dvc init#配置远端数据源获取渠道
dvc remote add -d -f storage ssh://172.20.8.10/home/hairou/algorithm-dvc
dvc remote modify storage user hairou
dvc remote modify storage port 22
dvc remote modify storage password hairou#准备好所需要的数据,这里采用JDKA及WY为例
cp ../algorithm-benchmark/*.dvc data/ 
cd data/ & dvc pull 
rm -f data/*.dvc
mv data/*.yaml config/#创建执行脚本 multiConfig.sh
#!/bin/bash
for file in config/*
doif [ $( basename `pwd` ) = "build" ]thennohup ./run_haiq ../$file > /dev/null 2>&1 &echo "Begin to run $file"elsecd buildnohup ./run_haiq ../$file > /dev/null 2>&1 &echo "Begin to run $file"fi
done#使用命令行执行程序
chmod +x multiConfig.sh
dvc run -n run_haiq "./multiConfig.sh > /dev/null 2>&1"#当程序跑完之后,存储结果
cd statistic/script ; bash +x clean_log.sh

2.不同分支使用相同或不同的数据源

*即针对新开发出来的一个算法,对比改版前后的算法效果

2.1 并行模拟-相同数据源

区别 : 需要同样的数据源,不同的分支

TO DO : 使用相同的数据源,并行跑模拟输出的日志除了时间不一样之外,识别所使用的项目名称是一样的

2.1.1 本地模拟器

#若没有安装dvc,需要安装
pip install dvc 
或者
snap install --classic dvc#把模拟器dvc 初始化
dvc init#配置远端数据源获取渠道
dvc remote add -d -f storage ssh://172.20.8.10/home/hairou/algorithm-dvc
dvc remote modify storage user hairou
dvc remote modify storage port 22
dvc remote modify storage password hairou#准备好所需要的数据,这里采用WY为例
cp ../algorithm-benchmark/WY*.dvc data/ 
cd data/ & dvc pull 
rm -f data/*.dvc
mv data/*.yaml config/#使用命令行执行程序
dvc run -n run_haiq "cd cmake-build-release ; nohup ./run_haiq ../config/*.yaml > /dev/null 2>&1 &"#切换程序
gco only_used_by_dev_test_v2#执行程序
dvc repro

2.1.2 服务器模拟器

服务器切换分支都需要重新编译,耗时久也麻烦。如果涉及两个及以上的分支模拟。

那就下载两个或多个FastSimulation-G2


http://www.ppmy.cn/news/910478.html

相关文章

快速入门DVC(二):安装及ML项目初始化

在上一篇文章快速入门DVC(一):简介中概述了 DVC ,DVC(数据版本控制)是一种数据和机器学习实验管理工具,它有效利用了您已经非常熟悉的现有工程工具集(如Git、CI/CD 等)。…

深度学习视频压缩1—DVC: An End-to-end Deep Video Compression Framework

本文是第一篇端到端使用神经网络来进行视频压缩的论文, github地址:GitHub - GuoLusjtu/DVC: DVC: An End-to-end Deep Video Compression Framework, CVPR 2019 (Oral) 论文地址:https://arxiv.org/pdf/1812.00101.pdf 各个领域的第一篇&…

PA-DVC-D24-1000 PA-SVC-D24-1500最大输出电流可调比例放大器

控制不带电气位移反馈的单双电磁铁比例线圈; 输入电压为差动输入; 高精度,低温度漂移; PWM调制,负反馈恒流控制; 非对称斜坡时间(上升和下降时间独立可调);调制频率可调; 共信号地和电源地。 保护电路齐全(电源反接保护&…

论文笔记24 -- (视频压缩)【CVPR2019】DVC: An End-to-end Deep Video Compression Framework

《DVC: An End-to-end Deep Video Compression Framework》 论文:点这里 原作代码:点这里 TensorFlow开源实现:OpenDVC Guo Lu, Wanli Ouyang, Dong Xu, Xiaoyun Zhang, Chunlei Cai, Zhiyong Gao CVPR 2019 (Oral) DVC是首个端到端的深度学…

Python 和 DVC 进行 git 版本控制

大家好,我是Mr数据杨,设想我们正准备上演一出《三国演义》,需要设置工作环境。就像古代的诸侯需要配置自己的军队和物资。在数据的世界里需要准备数据和代码,这就如同筹备兵马和粮草。 跟踪文件并上传,就像各诸侯的斥…

DVCS

http://www.idnovo.com.cn/zhizao/2012/0724/article_13495.html http://www.gongkong.com/company/solution/2012062510034000001.htm http://www.chuandong.com/publish/application/2012-6/20467.html

DVC 官网教程-中文版

为什么选择 DVC? 即使我们今天在机器学习方面取得了巨大的成功,特别是在深度学习及其在商业中的应用方面;但是,数据科学家仍然缺乏组织项目和有效协作的最佳实践。 这是一个关键挑战:虽然 ML 算法和方法不再是部落知识…

AcWing 106. 动态中位数—对顶堆

问题链接 AcWing 106. 动态中位数 问题描述 分析 推荐b站董晓算法视频讲解对顶堆 这道题应该用树状数组、平衡树也能解决,这里用对顶堆来做,对顶堆能够用维护第K位置的数,K是固定的,在这道题中,维护两个堆&#xff…