[GitLab] git lfs 로 깃랩에서 모델 가중치 파일 관리하기

jaylnne·2022년 5월 6일
0

Git

목록 보기
1/1

🤔 고민

딥러닝 모델은 '모델 구조' + '가중치 파일' 2 개의 구성요소로 이루어져 있다고 볼 수 있습니다.

모델 구조 = 껍데기, 가중치 파일 = 알맹이인 셈이고요. 당연히 뭐가 더 중요하다고는 할 수 없습니다. 분명한 건 2개 구성요소가 모두 있어야만 딥러닝 모델이 정상적으로 작동할 수 있다는 사실이죠.

모델 구조를 구현한 소스는 다른 개발 작업물과 다를 것 없이 GitLab(회사에서 사용 중인 깃 저장소)에 올려 관리하면 되지만, 가중치 파일은 보통 용량이 매우 크기 때문에 그렇게 하기가 어렵습니다. 때문에 가중치 파일은 별도의 저장용 서버에 업로드하여 모델 소스 코드와는 따로 관리하는 경우가 많습니다. 실제로 사내 데이터 사이언티스트 몇 분은 가중치 파일을 HDFS 나 AWS 서버 상에 별도로 업로드해두고 필요할 때마다 다운로드하여 사용하고 있었는데요.

정말로 GitLab 으로 대용량의 모델 가중치 파일을 관리하는 방법은 없는 걸까요?

찾아본 결과... 다소 제약이 있을 뿐 없는 것은 아닙니다. ✌️

✨ Git LFS 를 이용하자!

Git Large File System, 줄여서 Git LFS 를 이용하면 됩니다. 이름 그대로 대용량의 파일을 Git으로 관리할 수 있게끔 도와주는 시스템인데요. 찾아보니 사용 방법도 매우 간단했습니다.

1. Git LFS 설치

$ cd ~
$ sudo apt-get install git-lfs
$ cd <레포지토리 root 경로>
$ git lfs install

2. Git LFS 로 관리할 파일 설정하기

# 예시
$ git lfs track "*.onnx" "*.pkl" "*.ckpt"

3. 평소처럼 commit & push 하기

$ git add .
$ git commit -m "Commit message"
$ git push

4. .gitignore 확인

  • .gitignore 파일에 LFS 로 관리하고자 하는 모델 가중치 파일이 포함되어 있지 않은지 확인합니다.
  • .gitignore 에 포함되어 있는 경우 LFS 가 파일을 트래킹 하지 못합니다.

5. GitLab 레포지토리 확인

  • GitLab 레포지토리에서 LFS 로 관리되고 있는 파일의 상태를 확인할 수 있습니다.

이처럼 Git LFS 는 매우 편리하게 대용량 파일을 깃 저장소에서 관리할 수 있게끔 해주지만, 아쉽게도 아무런 제약이 없는 것은 아닙니다. GitLab 의 공식 도큐먼트에 따르면 따로 maximum repository size 를 변경하지 않았다면, LFS 관리 데이터를 포함한 깃랩 레포지토리의 기본 사이즈 제한은 10GB 입니다. 

개인적으로 10GB 정도라면, 꽤 충분한 사이즈가 아닌가 싶은데요. 웬만큼 무거운 모델도 가중치 파일 하나가 10GB 를 넘어가는 경우는 잘 보지 못한 것 같습니다. 실험 과정에서 생성된 가중치 파일이 수십이라 하더라도, 그 모두를 레포지토리에 푸시해 관리할 필요까지는 없을 테고요. 만약 10GB 이상의 파일을 푸시하고 싶다면 깃랩 계정에 repository storage 를 추가로 구매하면 됩니다.

그럼, 오늘 글의 내용도 도움이 되셨으면 좋겠습니다! 감사합니다! ✨

GitLab 공식 문서에 사용 방법 및 storage 추가 구매까지 자세한 내용이 설명되어 있으니 궁금하시다면 아래 링크를 참고하세요!

profile
스스로 정한 목표에 도달하기 위해 달리는 걸 즐기는 사람 🏃‍♀️

0개의 댓글