본문 바로가기

Utils

git-lfs (Large File System, LFS) 통해 대용량 데이터/레포지토리 다운받기

어느날과 다름없이 pickle 파일형식을 가진 데이터를 받아서 실험을 하려고 하던 그때, 갑자기 _pickle.UnpicklingError: invalid load key, 'v' . 라는 메세지가 뜨며 데이터를 못부르는 거다. 오류는 아래와 같다.

 

 

해당 오류는 repo를 git clone할 때, 모델 내의 파일의 사이즈가 너무 커서 이를 text file로 대체했기 때문에 key값을 불러오지 못해서 생기는 오류이다. 예를 들면 pickle file이 원래는 400MB정도 하는데 text file로 대체되었기 때문에 아래와 같이 1KB 정도의 적은 용량으로 표기되어있을 것이다.

 

 

이러한 이슈는 git-LFS로 올린 레포지토리를 그냥 받았기 때문에 생긴다. 대용량의 데이터를 레포지토리에 올릴 때, 용량이 너무 크기때문에 그냥 push가 안되어서 LFS (large file system) 로 올리게 된다. 앞서 봤던 이슈없이 git-LFS로 올린 repository를 정상적으로 받아사용하고 싶다면, large file을 다운로드하기 위한 git extension인 git-lfs를 install하고 그 후 레포를 받으면 된다. 매우 간단하다.

git-lfs Installation

먼저 git-lfs extension을 설치한다. (sudo 권한이 없다면 sudo 빼고 해보길)

 

curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt install git-lfs

# sudo 권한이 없을 경우
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash
apt install git-lfs

Repository(레포지토리) clone

git-lfs를 install하기 전의 repo에는 lfs가 적용되지 않기 때문에 이전에 받은 repo는 지우고 다시 git clone하고 git lfs pull을 해서 large file을 풀어주면 끝!

 

git clone "url"
git lfs pull

Reference

stackoverflow 질문

git-lfs 사용법