현상
- GCP TPU VM에 사전 설치된
gsutil
명령어를 사용할 경우, 99%까지 다운로드가 된 뒤에 .lock 상태로 파일들이 잠겨있고 마무리가 되지않는 경우가 생긴다.
원인
gsutil -m cp -r gs://asdfasdf/asdfasdf .
처럼 멀티로 다운받는 경우 아래와 같이 Credential lock 파일과, 해당 파일들의 정보를 트래킹하는tracker-files
가 생긴다.
- 이 경우 Multiprocessing을 사용하는 특정 경우에(단일 파일이라도, Multipart로 다운받는 옵션이 켜져있다면 Multiprocessing을 사용한다.) 위와 같은 Lock이 발생하고, 어떠한 버그로 인해 해당 파일에 경합이 발생해 lock 해제가 이뤄지지 않아 Final validation 혹은 파일 병합이 되지 않는다.
해결법
여러 상황에서 동일한 문제가 있었지만, 각각 해결한 방법이 달랐다.
gsutil
명령어의-m
을 사용하지 않기
단순히 Multi 다운로드를 끄는 것 만으로도 되는 경우가 있었다.
- 위 원인의 캐시를 전체 제거하고 다시 실행하기
단순히 캐시를 제거하는 것 만으로도,
-m
명령어를 동일하게 사용해도 성공하는 경우가 있었다.pip
로gsutil
을 재설치하기
gsutil은
pip
로도 패키지 배포를 한다. 아래와 같이 사용자 python 환경에 최신 버전을 설치해주면 해결되는 경우가 있다.python3 -m venv venv source venv/bin/activate pip install -U gsutil gsutil -m cp -r ......