딥러닝 프레임워크는 동작 방식에 따라 크게 두가지로 나눌 수 있음
계산 그래프를 정의한 다음 데이터를 흘려보내는 식
⏳ 계산 그래프 정의 → 컴파일 → 데이터 흘려보내기
실제 데이터가 아닌 기호를 사용하여 추상적인 계산 절차를 코딩해야 하기 때문에 기호 프로그래밍이라고 함
ex) 텐서플로, 카페, CNTK
계산 그래프를 최적화하면 성능도 따라서 최적화
→ 계산 그래프의 구조와 사용되는 연산을 효율적인 것으로 변환하는 형태로 이루어짐
데이터를 흘려보냄으로써 계산 그래프 정의
→ 데이터 흘려보내기와 계산 그래프 구축이 동시에 이루어짐
ex) 파이토치, MXNet, DyNet, 텐서플로(2.0 이상)
Define-and-Run | Define-by-Run | |
---|---|---|
장점 | - 성능이 좋음 | - 디버깅 쉬움 |
- 신경망 구조를 최적화하기 쉬움(계산 그래프를 최적화하면 성능도 따라서 최적화) | - 동적 계산 처리에 알맞음 | |
- 분산 학습 시 더 편리 | - 파이썬으로 계산 그래프 제어 가능 | |
단점 | - 독자적인 언어(DSL)를 익혀야 함 | - 성능이 낮을 수 있음 |
- 동적 계산 그래프 만들기 어려움 | ||
- 디버깅하기 매우 어려울 수 있음 |
잘 봤습니다. 좋은 글 감사합니다.