해당 게시글은 패스트캠퍼스에서 진행하는 AI 부트캠프에서 학습한내용과 교육과정을 토대로 작성했습니다.
예측성능을 평가하는 과정은 시간과 메모리 자원을 정~말 많이 잡아먹는다.
짧게는 6시간 길게는 1주까지도 걸리는 일이 다반사이다.
시간과 메모리관리를 효율적으로 체계적으로 관리하지 않는다면
아주 큰 시련이 다가올수도 있다.
가령 3일째 돌리던 학습이 터지는경우는 그동안의 들어간 시간과 메모리자원이....
눈물이 앞을 가릴정도이다.
때문에 예측성능 평가할때 핵심포인트는 '세이브관리' 일것 같다.
첫번째로 생각해줘야할것은 시간관리 이다.
모델을 어느정도 다 만들고나서
batch size갯수, epochs수, lr률, kfold횟수 기타등등.... 의 파라미터를
아주~아주 최소화 해서 샘플테스트를 진행한뒤,
모델이 실제로 돌아가는지, 에러없이 결과는 나오는지 확인하는 과정이 시간을
단축할수 있다.
가령 LV1수준 부터 ~ LV5 로 지정하는 함수를 만들고 인자로 하이퍼 파라미터를 받는다.(에폭수를 비롯한 하이퍼파라미터들을 원하는 레벨로 투입되는 자원설정)
def hyperparameter_budget(param_dict) :
LV0 = 샘플확인용 e.g -> batch_size=1 , epochs =5, .....
LV1 = 매우 적은자원용
LV2 = 적은자원용
LV3 = 적당한 자원용
LV4 = 많은자원용
LV5 = 매우 많은 자원용
기본값을 LV0 즉 샘플 확인용으로 해놓고, 결과를 출력하는데 문제가 없다면
적당한 레벨을 선택하고 훈련을 진행하는 방법을 사용하면, 시간을 단축시킬수있을것이다.
다음으로 고려할 사항은 메모리 관리이다.
학습을 진행할때 무리하게 많은 하이퍼파라미터를 설정했다면 문제가 되는것이
훈련도중에 메모리가 터지는현상이다.
이를 방지하기 위해서 훈련과정에서 하이퍼파라미터를 저장해주는것이 필요해 보인다.
checkpoint_dir = 'checkpoints/'
위 와 같이 학습 전에 중간 결과를 저장할 디렉토리를 설정해주고
학습이 진행될때마다.
모델에 필요한 정보를 저장해준다.
이 방법을 사용한다면 메모리가 터진 경우에도 중간결과를 이어서 학습을 진행할수
있기 때문에 메모리, 시간 을 관리하는것이 가능하다.
마지막으로 생각해줘야 할 부분은 용량관리 이다.
위의 과정을 거쳐 모델의정보를 모두 저장한다면 처음에는 괜찮을지 모르지만
가면 갈수록 파일의 용량이 쌓이기 때문에 따로 용량관리가 필요하다.
이때 용량관리를 위해서 진행해줘야 할 부분은 아마 일정 예측성능보다 잘 나온 학습데이터만 저장해놓는 절차가 있다면 용량이 늘어나는것이 상대적으로 덜 할것이다.