[2024-01-06] Colab에서 많은 파일 로드하기
최근 개인적인 취미의 일환으로 Colab에서 대규모의 파일을 다룰 일이 생겼다. 그런데 많은 수의 파일을 로드하면서 수많은 오류를 만나고 말았다. 그래서 본 게시물에서는 본인이 어떻게 이 문제를 해결했는지 적어보고자 한다.
문제의 시작
본인은 취미로 Stable Diffusion으로 그림을 생성한다. 그런데 NAI3이 출시되고 나서, 그 압도적인 성능에 감탄했고 로컬에서 돌리는 생성물의 퀄리티를 보다 높이고 싶었다. 그리고 이런 마음은 곧 SDXL의 사용으로 이어졌다.
하지만 현 시점에서 SDXL은 아직 이렇다 할 모델이 존재하지 않는다. 따라서 본인이 원하는 생성물을 만들기 위해서는 결국 학습이 필요했다. 그래서 본인은 대규모의 그림 파일을 모았고, 해당 그림 파일을 Colab에 올려 학습하려 했다.
문제의 발생
그러나 항상 그렇듯 문제가 발생했다. 학습을 시도했지만, Input/output error
가 발생한 것이 아닌가. 세상에, 어떻게 한 번에 되는 게 없는건지. 아무튼 이 문제는 데이터가 제대로 로드되지 않아서 생긴 문제였고, 따라서 다음과 같은 시도를 한다.
1. Google drive를 거치지 않고 바로 업로드
가장 단순무식하게, drive에서 제대로 로드되지 않는다면 로컬에서 바로 업로드하면 되지 않겠는가. 그래서 바로 시도했고, 대차게 망했다. 파일이 워낙 많아서 업로드 시간이 한세월이었다. 늙어죽어도 이건 전부 업로드가 되지 않는다. 혹시 폴더째로 올린것이 문제인가 싶어 압축파일로 올려도 여전히 업로드 바 조차 뜨지 않았다.
2. 개인용 드라이브에서 직접 다운로드
본 사이트를 뒤적거리다 보면 개인적으로 운용하고 있는 드라이브가 있다. 해당 드라이브는 파일을 직접 다운로드할 수 있는 링크를 생성할 수 있다. 여기서 본인은 드라이브에 있는 파일을 다운로드하여 사용해보고자 했고, 이 역시 실패했다. 한 번에 올릴 수 있는 파일이 1000개인게 대체 무슨 말인가.
그러면 압축 파일로 옮기면 되는 거 아닌가 할 수 있지만, 두 가지 문제가 있다. 첫째, 압축 파일은 압축을 해제해야 하기에 Colab에서 저장 용량을 두 배로 먹는다. 데이터 파일을 최대한 압축하긴 했지만, 두 배로 용량이 늘면 Colab에 올릴 수 없다. 둘째, 업로드/다운로드 속도가 처참하다. 드라이브를 실행하는 PC가 WIFI 환경이기 때문에 아무리 빨라야 10mb/s다. 파일의 용량을 생각하면 턱도 없다.
그래서 결론은 실패했다.
도와줘요 Google
결국 인터넷을 이리저리 뒤지면서 알아낸 것이, 폴더 내 파일이 전부 로드되지 않아서 생긴 문제이고, 계속 로드를 시도하다 보면 언젠가 된다는 것이다. 참으로 단순무식하지만, 실제로 해보니 된다. 어째서다.
하지만 이 방법도 문제가 있는게, 계속 Colab에서 오류가 발생하지 않을 때까지 해당 셀을 실행해줘야 한다는 것이다. 계속 컴퓨터 앞에서 붙어 있어야 하는데, 이게 전부 로드되는데 1시간 가까이 되다보니 은근히 힘들다. 그래서 다음과 같은 꼼수를 생각했다.
import os
def loading(path):
try:
return os.listdir(path)
except:
return loading(path)
path = "google drive path to load"
file_list = loading(path)
이러면 사람의 개입 없이 한 번만 실행하더라도 파일을 전부 로드할 수 있다. 물론 시간은 좀 걸리겠지만.
로드하면서
Google Drive에서 시간 초과가 발생했습니다.
메세지가 뜰 수 있다. 우리의 목적은 이게 뜨지 않을 때까지 시도하는 것이니 깔끔하게 무시하자.
아래와 같이 할 수도 있다.
import subprocess
def loading(path):
try:
subprocess.check_output(f"! ls {path}", shell=True)
except:
loading(path)
path = "google drive path to load"
loading(path)
사실 거기서 거기라 뭘 써도 상관없긴 하다. 본인 취향에 맞추어 쓰도록 하자.
베스트는 Colab이 필요없는 환경을 갖추는 것이다. 하지만 돈 없는 그지탱이들은 Colab밖에 답이 없다. Colab을 극한까지 이용하기 위해서는 어떻게든 꼼수를 써야 한다. 본 게시물은 그러한 노력 중 하나이며, 혹시 같은 문제가 발생한 사람이 있다면 시도해 보기 바란다.