2017-10-26 1 views
1

저는 1239 RAM이 장착 된 Titan X GPU에서 실행중인 신경망에서 메모리 사용을 프로파일 링하기 위해 새로운 TensorFlow profiler을 사용하고 있습니다. 여기에 내가 내 주요 교육 루프 프로파일 일부 예제 출력입니다 :TensorFlow 프로파일 러에서 자세한 메모리 고장을 얻는 방법은 무엇입니까?

==================Model Analysis Report====================== 
node name | requested bytes | ... 
Conv2DBackpropInput  10227.69MB (100.00%, 35.34%),  ... 
Conv2D      9679.95MB (64.66%, 33.45%),  ... 
Conv2DBackpropFilter   8073.89MB (31.21%, 27.90%),  ... 

은 분명히이 12기가바이트보다 더까지 추가, 그래서 다른 사람들이 GPU에있는 동안 이러한 행렬 중 일부는 메인 메모리에 있어야합니다. 주어진 단계에서 변수가 무엇인지에 대한 세부 분석을보고 싶습니다. 프로파일 러 또는 다른 방법으로 다양한 매개 변수가 저장되는 위치 (메인 또는 GPU 메모리)에 대한 자세한 정보를 얻을 수 있습니까?

답변

1

"요청 된 바이트"는 모든 메모리 할당에 대한 합계를 표시하지만 해당 메모리는 할당 및 할당 해제 할 수 있습니다. 따라서 "요청 된 바이트"가 GPU RAM을 초과했기 때문에 반드시 메모리가 CPU로 전송되고 있다는 것을 의미하지는 않습니다.

특히 피드 포워드 신경망의 경우 TF는 일반적으로 역효과를 만들기 위해 순방향 활성화를 유지하지만 중간 백 드롭 활성화, 즉 각 레이어에서 dL/dh를 유지할 필요가 없으므로 이 중간체를 폐기 한 후에 폐기하십시오. 그래서 나는이 경우 당신이 신경 쓰는 것은 Conv2D가 사용하는 메모리가 12 GB 미만이라고 생각합니다.

타임 라인을 사용하여 총 메모리 사용량이 12GB를 초과하지 않는지 확인할 수도 있습니다.

관련 문제