Define-by-Run

Jomii·2023년 8월 10일
0

딥러닝 프레임워크는 동작 방식에 따라 크게 두가지로 나눌 수 있음

  • 정적 계산 그래프 (Define-and-Run)
  • 동적 계산 그래프 (Defien-by-Run)


Define-and-Run

계산 그래프를 정의한 다음 데이터를 흘려보내는 식

⏳ 계산 그래프 정의 → 컴파일 → 데이터 흘려보내기

실제 데이터가 아닌 기호를 사용하여 추상적인 계산 절차를 코딩해야 하기 때문에 기호 프로그래밍이라고 함

ex) 텐서플로, 카페, CNTK

계산 그래프를 최적화하면 성능도 따라서 최적화
→ 계산 그래프의 구조와 사용되는 연산을 효율적인 것으로 변환하는 형태로 이루어짐


Define-by-Run

데이터를 흘려보냄으로써 계산 그래프 정의

→ 데이터 흘려보내기와 계산 그래프 구축이 동시에 이루어짐

ex) 파이토치, MXNet, DyNet, 텐서플로(2.0 이상)



비교

Define-and-RunDefine-by-Run
장점- 성능이 좋음- 디버깅 쉬움
- 신경망 구조를 최적화하기 쉬움(계산 그래프를 최적화하면 성능도 따라서 최적화)- 동적 계산 처리에 알맞음
- 분산 학습 시 더 편리- 파이썬으로 계산 그래프 제어 가능
단점- 독자적인 언어(DSL)를 익혀야 함- 성능이 낮을 수 있음
- 동적 계산 그래프 만들기 어려움
- 디버깅하기 매우 어려울 수 있음
profile
📩 qtly_u@naver.com

1개의 댓글

comment-user-thumbnail
2023년 8월 10일

잘 봤습니다. 좋은 글 감사합니다.

답글 달기