Stats & AI tech blog - '일단 시도함'
[Python] PyTorch 개요 및 아키텍처 본문
1. 파이토치 개요
파이토치(PyTorch)는 2017년 초에 공개된 딥러닝 프레임워크이다.
초기에는 파이썬 넘파이(Numpy) 같은 과학 연산용 라이브러리로 공개되었지만, 점점 딥러닝 프레임워크로 발전하게 된 케이스다. 파이토치(PyTorch)는 간결하고 쉬운 구현성과 GPU를 사용한 빠른 연산 처리로 유명해졌고, 아래와 같은 주요 특징을 가지고 있다.
- GPU(Graphics Processing Unit)
딥러닝에서 기울기를 계산할 때 CPU 대신 GPU를 사용하면 훨씬 빠른 속도로 미분 연산을 처리할 수 있다.
CUDA, cuDNN이라는 API를 통해서 GPU에서 사용하는 병렬 처리 알고리즘을 연산에 사용한다. - 텐서(Tensor)
텐서(Tensor)는 파이토치의 데이터 형태로 매우 중요한 핵심 개념이다.
단일 데이터 형식으로 된 자료들의 다차원 행렬이다. - 동적 신경망
훈련을 반복할 때마다 구조(Network)를 변경할 수 있는 신경망이다.
파이토치에서는 은닉층(hidden layer)의 개수를 추가하거나 제거하는 등 신경망의 구조 변경이 가능하다.
2. 파이토치 아키텍처
파이토치(PyTorch)의 아키텍처는 크게 3계층으로 나눌 수 있는데,
위에서부터 파이토치 API - 파이토치 엔진 - 연산 처리 순으로 이루어져 있다.
2.1 파이토치 API
파이토치 API 계층에서는 사용자 인터페이스를 제공한다.
이해하기 쉬운 API를 제공해서 사용자가 간결하게 신경망을 구축하고 훈련할 수 있게 도와주는 역할을 한다.
이 계층에서는 계산을 수행하지 않고, 다음 계층인 파이토치 엔진으로 작업을 전달하는 역할을 한다.
제공 패키지
- torch : GPU를 지원하는 tensor 패키지
- torch.autograd : 자동 미분 패키지
- torch.nn : 신경망 구축 및 훈련 패키지
- torch.multiprocessing : 파이썬 멀티프로세싱 패키지
- torch.utils : DataLoader 및 기타 유틸리티 제공 패키지
2.2 파이토치 엔진
파이토치 엔진은 C++로 작성된 라이브러리와 Python API로 구성되어 있다.
이 계층에서는 자동 미분 계산을 수행하고 텐서와 계산 최적화를 위한 라이브러리, 컴파일러를 제공한다.
- Autograd C++ : 자동 미분 수행
- Aten C++ : 텐서 라이브러리 제공
- JIT C++ : 계산 최적화를 위한 컴파일러
- Python API : C++을 Python API 형태로 제공
2.3 연산 처리
가장 아래인 연산 처리 계층에서는 C 또는 CUDA 패키지를 활용해서 상위 계층에서 할당된 거의 모든 계산을 수행한다.
CPU와 GPU(TH, THC)를 활용해서 빠르고 효율적으로 다차원 텐서에 대한 연산을 처리하는 계층이다.
여기까지 딥러닝 프레임워크인 파이토치(PyTorch)의 개념과 아키텍처에 대해 알아보았다.
다음 포스팅에서는 파이토치(PyTorch)에서 신경망 모델을 정의하는 방법에 대해 알아보도록 하겠다.
2024.04.05 - [Programming/Python] - [Python] PyTorch에서 신경망 모델 정의
* Reference
- 딥러닝 파이토치 교과서
- https://resultofeffort.tistory.com/77
'Programming > Python' 카테고리의 다른 글
[Python] PyTorch로 합성곱신경망(CNN) 모델 구축 (0) | 2024.04.11 |
---|---|
[Python] PyTorch로 심층신경망(DNN) 모델 구축 (0) | 2024.04.11 |
[Python] enumerate() 함수로 for loop문 작성 (0) | 2024.04.09 |
[Python] PyTorch에서 신경망 모델 파라미터 정의 (손실함수/옵티마이저/학습률 스케줄러) (0) | 2024.04.05 |
[Python] PyTorch에서 신경망 모델 정의 (0) | 2024.04.05 |