Unet 모델을 이용하여 deep learning을 하던 중 keras 2.4.0 버전에서 memory leak를 발견. 총 3대의 PC중 2대는 rtx 20series, 1대는 rtx 30series.
원인 : 한 줄씩 디버깅 한 결과 model.predict_on_batch와 imread를 통해 불러온 메모리들이 지속적으로 쌓이는 것을 발견. 해결방안1) predict와 imread로 할당한 메모리를 해당 프로세스가 끝난 뒤 해제시키기 20210429) model.predict_on_batch함수에서 model.predict_generator함수로 변경. model.predict_generator 함수로부터 전해받은 인자를 저장시킨 후, python의 Garbage Collection(gc)를 import하여, 참조된 인자가 없는 객체에 대해서 수거를 해주는 함수인 gc.collect()를 사용한 뒤, del()함수를 통하여 predict의 결과를 저장한 객체를 지워주었다.
실행...
원문 링크 : Python memory leak 발견