728x90

대용량 데이터를 체계적으로 관리하는 방안이 필요해져, 대표적인 두 가지 오픈소스를 비교해보았다.

Git LFS는 유료 서비스라는 점에서 조건미달이었기 때문에, 깊이 공부하지 않고 DVC를 선택하여 서비스를 구현하였다.

DVC 사용법 관련 포스팅은 추후 다른 게시글에서 자세히 다루어볼 예정이다.

 

Git LFS (Large File Storage)

Git LFS는 대용량 파일을 별도의 서버에 올리고, 원래 위치에는 포인터를 남긴다.

즉, 대용량 파일은 다른 서버에서 받아오고 있지만, 포인터가 설정되어 있기 때문에 사용자 입장에서는 Git, Push, Pull 등을 그대로 사용할 수 있다.

Git LFS는 실제 파일(다른 곳에 저장됨)에 대한 참조 역할을 하는 포인터 파일을 만든다.

GitHub는 저장소에서 이 포인터 파일을 관리한다.

저장소를 clone할 때, GitHub는 포인터 파일을 보고 큰 파일을 찾아온다.

사용중인 Git LFS version을 추적한 다음 파일의 고유 식별자(oid)를 추적한다.

Git LFS pointer 예시

version https://git-lfs.github.com/spec/v1
oid sha256:4cac19622fc3ada9c0fdeadb33f88f367b541f38b89102a3f1261ac81fd5bcb5
size 84977953

Price

github

gitlab

 

DVC (Data Version Control)

DVC는 Git을 기반으로 하는 새로운 유형의 데이터 버전 관리 무료 오픈소스이다.

DVC는 설치가 빠르고 특별한 인프라가 필요하지 않으며 API나 외부 서비스에 의존하지 않는 독립 실행형 CLI 도구이다.

Git으로 .gitignore(데이터파일이 git에 저장되는 것 방지)과 .dvc(dvc 정보)파일을 통해 데이터 버전 정보를 관리한다.

Git의 Tag/Branch 등을 이용해 dataset과 ML model을 versioning하고 관리

.gitignore : 대용량데이터폴더는 git에서 무시하도록 git ignore에 명시

/[대용량데이터폴더명]

.dvc/config : 등록된 원격저장소 정보 (실제 대용량 데이터 저장 위치)

[core]
    remote = datas
['remote "datas"']
    url = C:\Users\stone\seokhwa_practice\DVC\data-repo

[대용량데이터폴더명].dvc : [대용량데이터폴더]의 사이즈, 파일개수, 경로, 원격저장소 메타정보 위치

outs:
- md5: c6efae81ddbbf2a8a88d6d3790e60e61.dir
  size: 3980577
  nfiles: 185
  path: datas

DVC를 통해 실제 데이터를 관리

간단한 명령어를 통해 원격저장소(S3, Google Cloud, Azure, HDFS, SSH server 등)와 연결하여 데이터를 push 하거나 pull 할 수 있다.

dvc remote add -d datas C:\Users\stone\seokhwa_practice\DVC\data-repo

 

LFS vs DVC

두 가지 서비스 모두 사용법은 유사하다.

하지만 LFS 서버를 무료로 사용할 경우 데이터 사이즈 제약이 있고, DVC 의 경우 무료 > data 를 저장할 storage 만 설정해주면 된다.

 

참고 사이트

728x90

'AI > ML ops' 카테고리의 다른 글

Makefile을 이용한 빌드 자동화 스크립트  (0) 2024.04.21
DVC 기초 및 사용법  (0) 2022.11.02

+ Recent posts