DVC를 사용한 데이터 버전 관리
9348 단어 gitmachinelearningdvc
version control
와 관련하여 Git은 코드 버전을 관리하는 일반적인 도구입니다. 개발자가 코드 기록을 쉽게 유지할 수 있도록 도와줍니다.그러나 기계 학습 프로젝트에는 충분하지 않습니다. 재현 가능한 실험을 관리하는 것은 코드, 하이퍼 매개변수 및 데이터와 관련된 데이터 과학자에게 중요한 문제입니다.
코드와 하이퍼 매개변수는 Git으로 유지 관리하기 쉽습니다. 그러나 널리 사용되는 버전 제어 시스템About large files on GitHub의 파일 크기 제한으로 인해 데이터 버전 제어가 어렵습니다.
DVC는 데이터 버전 관리 문제를 해결하는 인기 있는 오픈 소스 도구 중 하나입니다. DVC의 도움으로 모든 버전의 데이터를 특정 원격 위치에 저장하고 Git은 데이터의 해시 값을 커밋합니다.
예시
DVC 설치
apt 및 brew와 같은 시스템 패키지와 함께 DVC를 설치하는 것이 좋습니다. 입력 오류를 최소화하는 자동 완성 기능을 제공합니다.
데비안/우분투에 DVC 설치:
sudo wget https://dvc.org/deb/dvc.list -O /etc/apt/sources.list.d/dvc.list
wget -qO - https://dvc.org/deb/iterative.asc | gpg --dearmor > packages.iterative.gpg
sudo install -o root -g root -m 644 packages.iterative.gpg /etc/apt/trusted.gpg.d/
rm -f packages.iterative.gpg
sudo apt-get update
sudo apt-get install dvc
MacOS에 DVC 설치:
brew install dvc
확인.
$ dvc version
DVC version: 2.11.0 (brew)
---------------------------------
Platform: Python 3.10.5 on macOS-12.4-arm64-arm-64bit
Supports:
azure (adlfs = 2022.4.0, knack = 0.9.0, azure-identity = 1.10.0),
gdrive (pydrive2 = 1.10.1),
gs (gcsfs = 2022.5.0),
webhdfs (fsspec = 2022.5.0),
http (aiohttp = 3.8.1, aiohttp-retry = 2.4.6),
https (aiohttp = 3.8.1, aiohttp-retry = 2.4.6),
s3 (s3fs = 2022.5.0, boto3 = 1.21.21),
ssh (sshfs = 2022.6.0),
oss (ossfs = 2021.8.0),
webdav (webdav4 = 0.9.7),
webdavs (webdav4 = 0.9.7)
자세한 설치 가이드는 https://dvc.org/doc/install 을 참조하십시오.
빈 Git 저장소 초기화
mkdir dvc-demo && cd dvc-demo
git init
Git 저장소 내에서 DVC 초기화
dvc init
$ git status
...
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: .dvc/.gitignore
new file: .dvc/config
new file: .dvcignore
git commit -m 'feat: init dvc'
데이터 생성
data
디렉토리를 생성하면 데이터가 이 디렉토리에 저장됩니다.mkdir data
난수로 이미지 파일을 만듭니다.
dd if=/dev/random of=data/data.img bs=1 count=0 seek=1024000
dvc add data/data.img
데이터 디렉토리에 두 개의 새 파일이 있습니다.
$ ls -a data/
. .. data.img data.img.dvc .gitignore
data/data.img.dvc:
.dvc
로 끝나는 파일은 데이터의 메타데이터를 설명합니다.$ cat data/data.img.dvc
outs:
- md5: 80ec129d645c70cf0de45b1a5a682235
size: 1024000
path: data.img
data/.gitignore: Git은
data.img
의 변경 사항을 추적하지 않습니다. 대신 data.img.dvc
의 변경 사항을 추적합니다.$ cat data/.gitignore
/data.img
다음으로 Git으로 변경 사항을 커밋합니다.
데이터 메타데이터 커밋
git add data/
$ git commit -m 'feat: add data/data.img'
[main badc237] feat: add data metadata
2 files changed, 5 insertions(+)
create mode 100644 data/.gitignore
create mode 100644 data/data.img.dvc
데이터를 원격 스토리지로 푸시
원격 저장소 위치를 설정합니다.
mkdir /tmp/dvc-remote/
$ dvc remote add --default myremote /tmp/dvc-remote/
Setting 'myremote' as a default remote.
git add .dvc/config
git commit -m "feat: update dvc remote"
데이터를 원격 저장소로 푸시합니다.
$ dvc push
1 file pushed
원격 저장소의 구조는 무엇입니까
$ tree /tmp/dvc-remote/
/tmp/dvc-remote/
└── 80
└── ec129d645c70cf0de45b1a5a682235
1 directory, 1 file
데이터 변경
dd if=/dev/random of=data/data.img bs=1 count=0 seek=1024
dvc status
로 데이터 상태를 확인하십시오.$ dvc status
data/data.img.dvc:
changed outs:
modified: data/data.img
dvc add data/data.img
Git은 데이터 메타데이터의 변경 사항을 관리합니다.
$ git diff -- data/data.img.dvc
diff --git a/data/data.img.dvc b/data/data.img.dvc
index e218f0c..556b929 100644
--- a/data/data.img.dvc
+++ b/data/data.img.dvc
@@ -1,4 +1,4 @@
outs:
-- md5: 80ec129d645c70cf0de45b1a5a682235
- size: 1024000
+- md5: 0f343b0931126a20f133d67c2b018a3b
+ size: 1024
path: data.img
git add data/data.img.dvc
git commit -m 'feat: update data/data.img'
새 데이터를 원격 저장소로 푸시합니다.
dvc push
원격 저장소의 구조를 다시 참조하십시오.
데이터의 모든 버전을 저장하므로 개발자가 버전 간에 전환할 수 있습니다.
$ tree /tmp/dvc-remote/
/tmp/dvc-remote/
├── 0f
│ └── 343b0931126a20f133d67c2b018a3b
└── 80
└── ec129d645c70cf0de45b1a5a682235
2 directories, 2 files
원격 저장소에서 데이터 검색
git checkout [<branch>]
dvc fetch -aT # download data from remote storage to the cache.
dvc checkout
Reference
이 문제에 관하여(DVC를 사용한 데이터 버전 관리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/huang06/data-versioning-with-dvc-22jd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)