본문 바로가기
Python

[DL] Define and Run vs. Define by Run

by ds31x 2024. 3. 28.

Deep Learning (DL) Framework의 동작방식을 비교하는 용어.

DL Model의 구축과 실행이 어떻게 이루어지는지로 구분됨.


Define and Run

DL Model을 구축 (= Computational Graph)이 먼저 이루어지고,

이후 input tesnsor를 정의된 모델에 입력하여 실행(or 연산)이 이루어짐.

대표적으로 TensorFlow 1.x 에서 채택한 방식임.

  • DL Model의 구조 (~ Computational Graph의 구조)가 먼저 완전하게 정의되고 나서 실행이 이루어짐.
  • DL Model의 최적화 등을 보다 쉽게 할 수 있음 (compiler language에서와 유사한 최적화 가능)
  • DL Model의 변경이 쉽지않음.
  • 개발 과정에서 디버깅에서 불편함.

Define by Run

DL Model의 구조가 입력에 해당하는 tensor로부터 실행이 시작되는 시점에 정의됨.

대표적으로 PyTorch와 TensorFlow의 Eager mode에서 채택한 방식임.

  • DL Model의 구조 정의가 실행과 함게 이루어짐.
  • DL Model의 구조를 쉽게 변경가능하여 복잡한 구조 구현에 유리하지만,
  • DL Model의 최적화가 효율적으로 이루어지기 어려움 (interpreter language에서의 경우와 유사)