• 카테고리

    질문 & 답변
  • 세부 분야

    컴퓨터 비전

  • 해결 여부

    미해결

메모리 사용량 질문

21.05.10 13:23 작성 조회수 331

0

안녕하세요, 개인 환경에서 돌리는 것을 연습중인데,

왜 자꾸 에러가 나나 했는데 강의에서 트레이닝 시 메모리를 15G 정도 먹고있는 것을 발견해서 이것이 원인이라고 생각해요! 정말 메모리를 많이 먹는군요...

load_weights 할 때부터 10G 정도를 먹고, fit을 하려고 하니 제 그래픽카드 할당량인 11G가 넘어서 에러가 나는 것 같스빈다.

제가 11G짜리 그래픽카드를 두장을 쓰고 있는데, 혹시 메모리 사용량을 절반씩 나눠서 트레이닝하는 방법이 있을까요??

답변 1

답변을 작성해보세요.

1

안녕하십니까,

Tensorflow가 원래 메모리를 많이 잡습니다. 그런데 이게 사용하지 않아도 초반에 일단 많이 잡습니다. GPU 메모리가 크던 적던 상관없이 대부분의 메모리를 일단 잡고 시작합니다.

Tensorflow가 메모리를 많이 잡았다고 반드시 메모리 부족현상이 나타나지는 않습니다. 가령 11G GPU Memory가 있을 경우 10G를 초기에 잡는다고 메모리 부족이 나타나지는 않습니다. 일단 가용 가능한 메모리를 점유 하고, 점유한 메모리에서 메모리를 활용하다가 부족하면 다시 추가 메모리를 잡는 방식입니다.

강의 실습 환경 설명시에도 말씀드렸지만, 실습 코드는 GPU 16G에서 테스트 되었습니다.

하지만 11G가 적은지는 저도 잘 모르겠습니다. 메모리 부족 오류면 OOM(Out of Memory)오류 메시지를 발생 시킵니다. 해당 오류가 나오는지 오류 메시지를 확인해 주십시요.  OOM이 나올때 가장 빠른 해결책은 batch size를 줄여 주는 것입니다. 혹 batch size가 크게 잡혀있으면, 계속 줄이면서 oom 메시지가 나타나는지 확인해 주십시요.

실습에 사용된 Yolo, Retinanet 패키지 모두, 자동으로 여러장의 GPU카드를 이용해서 학습이 될 수 있도록 구성되어 있습니다만, 제가 테스트 해보지는 않았습니다(제가 GPU 2장이 없습니다)

일단 OOM 메시지를 확인하신 다음에, BATCH SIZE를 먼저 줄여 주시고 오류를 확인해 보셨으면 합니다.

감사합니다.