[GCP] Google Cloud Storage에 용량이 큰 파일 업로드 본문

GCP

[GCP] Google Cloud Storage에 용량이 큰 파일 업로드

최재강 2021. 11. 6. 17:24

문제 직면

TPU로 학습을 하기 위해서 TFRecord로 된 Train Imagenet 데이터셋을 GCS에 올려야 했다.

따라서 gcloud를 이용하여 다음의 코드로 업로드를 시도했다.

gsutil cp validation-00000-of-00001 gs://[내 버킷이름]/tf-record/train

하지만 다음과 같은 메세지를 받았다.

Copying file://validation-00000-of-00001 [Content-Type=application/octet-stream]...
==> NOTE: You are uploading one or more large file(s), which would run
significantly faster if you enable parallel composite uploads. This
feature can be enabled by editing the
"parallel_composite_upload_threshold" value in your .boto
configuration file. However, note that if you do this large files will
be uploaded as `composite objects
<https://cloud.google.com/storage/docs/composite-objects>`_,which
means that any user who downloads such objects will need to have a
compiled crcmod installed (see "gsutil help crcmod"). This is because
without a compiled crcmod, computing checksums on composite objects is
so slow that gsutil disables downloads of composite objects.

Resuming upload for file://validation-00000-of-00001

내가 업로드할 파일의 용량은 약 148GB 정도 였고, 해당파일이 너무 커서 업로드 속도가 매우 느릴 것이고, parallel한 옵션이 존재한다는 메세지였다.

해결 방안

Stackoverflow와 다른 해외 블로그 등에서 사용할 수 있는 방법을 찾을 수 있었다.

나는 다음과 같은 코드를 사용했다.

gsutil -o GSUtil:parallel_composite_upload_threshold=150M cp validation-00000-of-00001  gs://jg-tpubucket/tf-record/train

gsutil에서 -o는 따로 옵션을 추가할 때 쓰는 명령어라고 한다. 따라서 -o 옵션 뒤에 parallel 실행을 위해 GSUtil:parallel_composite_upload_threshold=150M 명령어를 입력한다.

위의 명령어는 내가 올릴 파일을 150MB의 chunk로 나누어서 150MB씩 병렬적으로 GCS에 올린다는 옵션이다.

해당 옵션을 추가해 업로드하니 큰 용량의 파일임에도 불구하고 빠른 시간안에 업로드가 되었다.

자기가 올릴려는 파일의 용량에 맞게 threshold 값을 조정한다면 용량이 큰 파일들도 문제없이 GCS에 업로드 할 수 있을 것 이다.

참조

Comments