본문 바로가기
728x90

딥러닝메모리관리2

[PYTORCH] Leaf Tensor와 Non-leaf Tensor의 결정적 차이 3가지와 기울기 소실 해결 방법 7가지 파이토치(PyTorch)의 자동 미분 시스템인 Autograd를 깊게 파고들다 보면, 어느 순간 .is_leaf라는 속성을 마주하게 됩니다. 우리가 모델을 학습시키기 위해 선언한 가중치(Weights)는 Leaf Tensor로 취급되지만, 연산 과정에서 생성된 중간 결과물들은 Non-leaf Tensor가 됩니다. 이 미세한 구분을 이해하지 못하면, 역전파(Backpropagation) 후에 .grad 값이 왜 None으로 나오는지, 혹은 왜 특정 텐서에서 메모리 누수가 발생하는지 갈피를 잡을 수 없게 됩니다. 본 포스팅에서는 실무 엔진이어의 관점에서 계산 그래프의 뿌리와 줄기를 형성하는 이 두 텐서의 개념적 가치를 분석하고, 실제 개발 현장에서 즉시 적용 가능한 7가지 솔루션을 제안합니다.1. Leaf.. 2026. 3. 23.
[PYTORCH] backward() 두 번 호출 시 에러 발생하는 이유 1가지와 해결 방법 7가지 파이토치(PyTorch)를 학습하다 보면 누구나 한 번쯤 "RuntimeError: Trying to backward through the graph a second time..."이라는 붉은색 에러 메시지를 마주하게 됩니다. 분명히 손실(Loss)을 계산했고, 미분값을 구하고 싶어서 backward()를 호출했을 뿐인데 왜 두 번째 호출에서는 파이토치가 거부 반응을 보이는 것일까요? 이는 파이토치가 채택하고 있는 동적 계산 그래프(Dynamic Computational Graph)의 메모리 관리 철학과 밀접한 관련이 있습니다. 본 포스팅에서는 단순한 문법적 설명을 넘어, 텐서 엔진 내부에서 그래프가 소멸되는 과정을 심층 분석하고 실무에서 복합적인 손실 함수를 다룰 때 이 문제를 우회하고 해결할 수 있는.. 2026. 3. 23.
728x90