[PyTorch] Introduction

이영훈·2021년 8월 17일
0

우리는 왜 PyTorch를 써야하는가?

딥러닝 프레임워크는 크게 2가지가 있다. Tensorflow, PyTorch (사실 생각보다 엄청나게 많다.)

물론 , 프레임워크 없이 밑바닥부터 구현할수도 있지만 시간이 너무 많이 소모되고 비효율적이다.

그럼 PyTorch와 Tensorflow 중 어느 프레임워크를 공부해야할까? 2개다 아는 것이 가장 좋지만, 딥러닝을 공부 하는 입장에서는 PyTorch가 선호된다. 현재, 자료도 많고 관리도 잘되어서 거의 모든 연구들, 논문에서 활용되고 있다.

이것만으로는 PyTorch는 써야되는 이유로 부족하다. 다른 이유는 뭐가 있을까?

PyTorch와 Tensorflow의 가장 큰 차이점은 Backward propagation이 일어날 때 static graphs를 갖냐 Dynamic computation graphs를 갖냐 이다. 말이 굉장히 어렵다.

Computational graph란 연산 과정을 아래와 같이 그래프로 표현하는 것을 이야기 한다.

Tensorflow에서는 Define and Run, 즉 위와 같은 그래프를 먼저 정의 후, 실행시점에 데이터를 넣어주는 과정의 동작을 한다.

반면, PyTorch는 Define by Run, 즉 실행을 하면서 그래프를 생성하는 방식이다.

# Start training
with tf.Session() as sess:
    # Run the Initializer
    sess.run(init)
	
    # Fit all training data
    for epoch in range(trainig_epochs):
    	for (x,y) in zip (train_X, train_Y):
        	sess.run(optimizer, feed_dict = {X:x,Y:y})

위는 tensorflow의 train 예제 인데 feed_dict와 같이 모델을 정의 후 데이터를 넣어주는(feed)하는 과정이 있다.

속도는 사실 두개 다 큰 차이가 없다고 한다.

속도가 비슷하다면, 그럼 우리가 PyTorch를 사용해야하는 이유는 뭘까?

위의 사진을 보면 tensorflow는 그래프를 빌드하는 과정과 train 되는 과정이 나누어져 있다. 하지만 pytorch같은 경우에는 iteration 안에 build와 train이 동시에 일어나고 있어서 debug 하는 과정도 tensorflow에 비해 훨씬 편하다.

Tesla에서 인공지능 책임자로 유명한 안드레아는 위와 같은 맨션을 한 적이 있다.

물론 Tensorflow도 장점이 존재한다. Google의 제품이다 보니 Production 측면에서 월등하다. 따라서 많은 회사에서 제품을 만들어내고 출시를 목적으로 할 때는 Tensorflow를 많이 사용한다. 반면에 학회나 연구를 할 때에는 PyTorch 쪽이 Debug가 쉽기 때문에 PyTorch가 선호되는 경향이 있는 것이다.

우리는 아직 production level이 아니기때문에 PyTorch를 사용할 충분한 명분이 있다.


PyTorch의 장점을 쉽게 요약하면 아래와 같다.

  1. Define by Run의 장점
    • 즉시 확인 가능 debuggin이 편리함 (pythonic code)
  2. GPU support, Good API and community

0개의 댓글