본문 바로가기
AI-Tech 부스트캠프/파이토치

[PyTorch] 파이토치에 대해서 알아보자

by Alan_Kim 2022. 12. 23.
728x90
반응형

파이토치에 대해서 알아보자

딥러닝 코드짜기

딥러닝 코드를 처음부터 다 짤 수는 있다.

그러나 복잡한 것은 당연하고 상당히 오래 걸리는 작업이라 우리는 프레임 워크를 쓴다. 대표적으로 텐서플로우(Tensor flow), 파이토치(pytorch)를 쓴다.

 

케라스 VS 텐서플로 VS 파이토치

 
파이토치에 대해서 알아보자
Level of API high-level-API Both high& low level APIs Lower-level API
Speed Slow High High
Architecture Simple, more readable and concise Not very easy to use Complex
Debugging No need to debug Difficult to debugging Good debugging capabilities
created by Not a library on its own Created by Google Created by Facebook(meta)
Computational graphs used Static graphs Static graphs Dynamic computation graphs

 

텐서플로(Define and run) VS 파이토치 (Define by run)

- Define and Run

   그래프를 먼저 정의한 다음 실행시점에 데이터를 feed하는 것

즉 모델(함수)을 만들고 값을 따로따로 input 하는 것을 말한다.

 

- Define by Run (Dynamic Computational Graph, DCG)

 실행을 하면서 그래프를 생성하는 방식

즉 쉽게 말하면 실행을 했으면 함수와 값을 동시에 초기화가 된 다음 다시 실행을 해서 함수를 타고 다시 초기화하고 하는 것이다. 이는 메모리 공간관리가 필요가 없다는 장점과 데이터에 따라 쉽게 맞춤을 할 수 있다는 장점이 있다.

 

파이토치는 논문이나 여러 구현 과정에 장점이 있다.

(TF는 production, cloud, Multi-gpu를 쓸 때 장점이 있다고 한다.)

 

 

파이토치는 다음과 같은 등식으로 표현할 수 있다.

Pytorch = Numpy + AutoGrad + (DL)Function

- 파이토치는 넘파이(Numpy) 구조를 가지는 Tensor 객체로 행렬을 표현한다.

- 자동미분(Auto grad)를 지원하여 DL을 연산하는데 편리하다.

- 다양한 형태의 DL을 지원하는 함수와 모델을 지원한다.

 

numpy- ndarray와 pytorch-tensor 비교

 

 

Tensor 생성은 list나 ndarray 둘다 사용 가능하다.

기본적으로 Tensor가 가질 수 있는 data 타입은 numpy와 동일하며 대부분 사용법 또한 그대로 적용된다.

pytorch의 Tensor는 GPU에 올려서 사용이 가능하다.

x_data.device
# device(type='cpu')
if torch.cuda.is_available(): #cuda?
	x_data_cuda = x_data.to('cuda')
x_data_cuda.device
# device(type='cuda', index=0)

 

CUDA란 무엇인가?

CUDA는 'Computer Unified Device Architecture' 의 줄임말로 GPGPU(General Purpose Computing on Graphics Processing Units)를 사용하도록 해주는 NVDIA에서 개발한 프레임워크이다.

파이토치를 포함한 대부분의 심층 학습 프레임워크는 NVDIA의 CUDA 프레임워크를 사용하고 있어 여유가 된다면 NVDIA GPU를 구매해서 사용하는 것이 좋다.

728x90
반응형

댓글