Jae-Kyung Cho LLM Developers who was a Robotics engineer

MLOps study - Raviraja Week 3: DVC

Week 3는 DVC (Data Version Control) 에 대한 내용입니다. 일반적인 프로그래밍 코드들은 Git을 통해 관리됩니다. 그러나 ML 모델의 경우 전체 모델을 Git을 통해 관리하기에는 파일의 크기가 너무 큽니다. 따라서 아주 작은 metafile을 통해서 전체 모델을 표현함으로써 Git에서도 충분이 관리가 가능한 구조를 만들어 낸 것이 핵심입니다. 또한 커다란 파일들은 Google drive와 같은 remote storage servers를 통해서 따로 관리를 해 주게 됩니다.
Git과 DVC를 통해서 우리는 1) 버전을 관리하고 2) 커다란 파일들을 다루며 3) 프로젝트를 reproducible 하게 만들 수 있습니다.




Start DVC

python -m pip install dvc
dvc init

주의할 점은 dvc init을 수행할 때 가장 상위 폴더에 위치해야 한다는 점입니다. .git 폴더가 위치한 디렉토리에서 커맨드를 입력하면 되고, .dvc 폴더와 .dvcignore 파일이 생성되면 완료 된 것입니다!




Configuring remote storage

DVC는 Github이 아닌 별도의 remote storage를 이용해 model parameter나 데이터셋처럼 크기가 큰 파일들을 저장할 수 있습니다. Amazon server, Google drive 등 다양한 저장소가 사용될 수 있지만, 여기서는 ssh 방식을 이용해 사용하는 서버에 직접 파일을 저장하는 방법을 알아보겠습니다.

우선 DVC에서 SSH 저장소를 이용하기 위해서는 dvc-ssh 모듈이 필요합니다. 이후 ssh에 대한 정보들을 저장해 주면 됩니다. 중요한 것은 password는 –local 옵션을 부여해야 한다는 것입니다. 안했다가는 git에 내 서버 비밀번호가 공개되는 수가 있으니 주의!!

python -m pip install dvc-ssh
dvc remote add -d storage ssh://xxx.xxx.xxx.xxx/<data_dir>
dvc remote default storage
dvc remote modify <설정한 remote이름> user <서버 유저 이름>
dvc remote modify <설정한 remote이름> port <열어놓은 포트>
dvc remote modify --local <설장한 remote이름> password <서버 비밀번호>

ref: DVC에서 SSH 저장소 사용하기




Saving model to the remote storage

dvc add <model 이름>
dvc push

dvc add를 수행하게 되면 <model 이름>.dvc 파일과 .gitignore 파일이 새로 생성됩니다. 만약 dvc 파일을 하나의 폴더에 넣어서 관리하고 싶다면, 아래와 같이 해주면 되겠습니다.

dvc add <model 이름> --file <dvc 폴더>/<dvc 파일 이름>
dvc push <dvc 폴더>/<dvc 파일 이름>

재밌는 것은 막상 storage를 확인해 봐도, 이상한 이름의 폴더들만 잔뜩 생겼을 뿐, 파일이 직접 업로드 되지는 않는다는 것입니다. (이것 때문에 한참 헤맸다!!!) 그치만 잘 저장된 것이니 안심해도 됩니다!! 저장했던 파일을 지우고 아래 커맨드를 치면 바로 다시 저장한 모델이 다운로드 되는 것을 확인할 수 있으니까요.

dvc pull <dvc 폴더>/<dvc 파일 이름> 




Versioning the model

가장 중요한 model versioning 입니다. 순서는 다음과 같은데, 몸에 익혀서 빼먹지 않도록 합시다!!

  1. dvc add <모델 이름=""> --file /
  2. dvc push /
  3. git tag -a “<버전>" -m "<버전 설명="">"
  4. git push origin <브랜치 이름="">
  5. git push origin <버전>

git tag에 해당 모델을 바인딩 시켜주는 것인데요, 결과적으로 해당 tag를 찾아가면 그 당시의 모델을 불러올 수 있게 됩니다.

git checkout tags/<버전> -b <브랜치 이름>
dvc pull




references:

Comments