구글 코랩 pro+로 yolo 학습시켜 보며 느낀 솔직 후기

이찬·2022년 5월 11일
0

요약

  1. 디스크 용량 때문에 구매할 필요는 없을거 같다. 만약 디스크 용량 부족 경고가 뜬다면, 런타임 초기화하면 된다.
  2. cpu 스펙도 좋아지는지 데이터 전처리는 굉장히 빨라졌다.
  3. 학습 데이터가 드라이브에 있어서 그런지는 몰라도 yolo가 학습전 image scaning을 할때 시간이 18시간이 걸렸다. (데이터 45만장 기준)
  4. 런타임 24시간 제공이란 말은 런타임이 무한 유지된다는 것이 아니다.
  5. 드라이브에 저장된 데이터를 한번에 많이 접근하면 드라이브 접근 시간 초과 오류가 난다.
  6. 큰 모델 학습은 AWS나 GCP쓰자.

데이터 전처리

1. 드라이브 작업

나의 경우 학습 데이터가 45만장이었으며 annotation을 yolo format으로 바꿔줄 필요가 있었기 때문에 데이터의 전처리가 쉽지않았다.

먼저 45만장이라는 학습 데이터는 800GB라는 어마무시한 용량을 잡아먹었기 때문에 2T 드라이브를 결제해야만 했다. 2T짜리 드라이브를 결제한다고 해서 코랩의 드라이브 마운트시에 디스크 용량은 늘어나지 않았다. 이건 중요한 것도 아니고 드라이브에 직접 접근해서 작업하면 되기 때문에 신경 안썼다.

근데 문제는 따로 있었다. 드라이브에 저장된 45만장의 사진은 장비회사(3개)/클래스(40개)/카테고리(4개) 식으로 저장되어있었기 때문에 카테고리 별 데이터 수는 평균 1000장 정도 였다. 근데 한 클래스에 들어있는 약 4000장 정도의 이미지의 이름을 os.lisdir 또는 glob.glob으로 가져오면 드라이브 접근시간 초과라는 어처구니 없는 오류가 자꾸만 나서 진을 뺐다. 하는 수 없이 코랩 디스크 용량이 허용되는 양만큼의 데이터를 드라이브에서 코랩 상으로 복사해온 후 작업해야 했다.

2. 코랩 디스크 용량

코랩 디스크 용량은 런타임 초기화를 하면 복구된다. 이거는 상당히 좋았다. 이게 장점인지는 모르겠지만 나의 경우 데이터를 압축해제하는 작업을 할 때는 이점을 이용해서 pro+ 결제를 나중에 할 수 있었다. 이걸로 pro+ 서비스를 인공지능 학습할 때 더 사용할 수 있었다.

처음에는 데이터를 압축 해제하는 작업을 할 때 자꾸만 디스크 용량이 부족해서 pro+를 결제할까 했다. 하지만 몇 번의 삽질 끝에 디스크 용량이 폭파되면, 마지막으로 압축 해제하던 데이터를 기억했다가 런타임을 초기화한 후 거기서부터 다시 시작하면 된다는 것을 깨달았다.

만약 이걸 읽는 분들중 코랩으로 큰 모델을 학습하실 분이 계신다면, 전처리시 데이터를 분할해서 작업을 할 각오를 하시는게 좋다고 말해드리고 싶다.

인공지능 학습

어찌저찌 데이터 전처리도 끝내고 이제 학습 command만 실행하면 되는 순간이 되었다. 솔직히 데이터 전처리가 학습하는 것보다 어렵다고 느끼던 와중에 큰 걸림돌이 생겼다.

1. image scaning

내가 쓴 모델은 yolo중에서 yolor이라는 모델을 사용하였다. 다른 yolo 버전은 모르겠지만, yolor은 학습전에 image scaning이라는 것을 한다. 사무실 학습 서버에서 학습할 때에는 몰랐는데 image scaning이 코랩에서 돌리니까 심하게 느렸다. 잘은 모르겠지만, 드라이브에 있는 데이터를 읽어오는게 느려서 그런지 아니면 이미지가 png라서 용량이 커서 그런지는 모르겠다. 하지만, 느려도 너무 느렸다.

코랩 pro+는 24시간의 런타임을 제공한다고 한다. 이거는 딱 24시간이 지나면 내가 뭘 하던 런타임을 끊어 버린다는 소리다. 근데 image scaning만 18시간은 하는데 나머지 최소 6시간 동안 학습하다가 꺼지면, 또 다시 18시간 동안 image scaning을 해야한다는 소리다.

이거 때문에 힘들어서 코랩에서 모델 학습하는 거는 포기했다. 간단하게 공부할 모델 정도는 괜찮을지 몰라도 진짜 각 잡고 하는 프로젝트에서 쓸 모델을 학습할 때는 AWS나 GCP를 쓰길 추천한다.

마무리

이번 프로젝트를 하면서 느낀 것은 내가 인공지능을 공부하는지 코랩과 드라이브 연동에 대해서 공부하는지 혼동이 왔었다. 다음부터는 마음 편하게 그냥 GCP 써야겠다.

profile
인공지능 초보

0개의 댓글