맨위로가기

PyTorch

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

PyTorch는 메타(구 페이스북)에서 개발한 오픈 소스 딥 러닝 프레임워크이다. 2017년 Caffe2와 통합되었고, 2022년에는 독립적인 PyTorch 재단에서 관리하게 되었다. 2023년 PyTorch 2.0이 출시되어 코드 실행 속도가 향상되었으며, 파이썬 기반의 API를 통해 딥 러닝 모델을 쉽게 구현하고, GPU를 활용한 빠른 연산이 가능하다는 특징을 가진다. 주요 모듈로는 자동 미분을 위한 autograd, 최적화 알고리즘을 제공하는 optim, 신경망 레이어와 활성화 함수를 제공하는 nn, 그리고 모델 성능 최적화를 위한 jit 모듈 등이 있다. 또한 데이터 병렬 처리, 모델 병렬 처리, 텐서 병렬 처리 등 다양한 병렬 처리 기능을 지원하며, 파일 형식으로는 Pickle과 pt 형식이 사용된다. PyTorch는 Transformer, 확산 모델, torchvision, torchaudio, torchtext, TorchRL 등 다양한 모델 및 라이브러리를 제공하며, 학습을 위한 데이터 로더도 지원한다.

더 읽어볼만한 페이지

  • 딥 러닝 소프트웨어 - 마이크로소프트 코그니티브 툴킷
  • 딥 러닝 소프트웨어 - 케라스
    케라스는 딥 러닝을 위한 고수준 신경망 API로, 빠른 실험, 사용자 친화성, 모듈성, 확장성을 특징으로 하며, 텐서플로우, JAX, PyTorch 등 다양한 백엔드와 함께 사용되어 다양한 신경망을 지원하고 여러 환경에서 딥 모델을 생성 및 활용하도록 돕는다.
  • 자유 과학 소프트웨어 - BOINC
    BOINC는 분산 컴퓨팅 프로젝트를 위한 오픈 소스 플랫폼으로, 개인 컴퓨터의 유휴 자원을 활용하여 과학 연구에 기여하도록 설계되었으며, GPU를 활용하여 계산 속도를 향상시키고 크레딧 시스템을 통해 기여도를 측정한다.
  • 자유 과학 소프트웨어 - SciPy
    SciPy는 NumPy 배열 구조를 기반으로 수치 적분, 선형 대수, 최적화, 통계 등 과학 및 공학 계산에 사용되는 다양한 기능을 제공하는 파이썬 과학 컴퓨팅 라이브러리이다.
  • 딥 러닝 - 질의 응답
    질의응답 시스템은 자연어 질문을 이해하고 답변을 생성하며, 질문 유형과 사용 기술에 따라 분류되고, 읽기 이해 기반 또는 사전 지식 기반으로 작동하며, 대규모 언어 모델과 다양한 아키텍처 발전에 힘입어 복잡한 질문에 대한 답변과 다양한 분야에 활용이 가능해졌다.
  • 딥 러닝 - 딥페이크
    딥페이크는 인공지능 기술을 활용하여 영상이나 이미지를 조작, 합성하여 실제와 구별하기 어렵게 만드는 기술이며, 가짜 뉴스, 명예훼손, 신원 위장 등 다양한 문제점을 야기한다.
PyTorch - [IT 관련 정보]에 관한 문서
기본 정보
저자아담 파츠케
샘 그로스
소우미트 친탈라
그레고리 차난
개발자메타 AI
출시일2016년 9월
최신 안정화 버전 출시일}}
리포지토리GitHub 리포지토리
프로그래밍 언어파이썬
C++
CUDA
운영 체제리눅스
macOS
윈도우
플랫폼IA-32
x86-64
ARM64
언어영어
장르기계 학습을 위한 라이브러리
딥 러닝
라이선스BSD-3
웹사이트PyTorch 공식 웹사이트

2. 역사

메타(구 페이스북)는 PyTorch와 Caffe2를 모두 운영했지만, 두 프레임워크에서 정의된 모델은 서로 호환되지 않았다. 2017년 9월, 메타와 마이크로소프트는 프레임워크 간 모델 변환을 위해 ONNX 프로젝트를 만들었다. Caffe2는 2018년 3월 말에 PyTorch에 병합되었다.[22] 2022년 9월, 메타는 PyTorch가 새로 설립된 Linux Foundation의 자회사인 독립적인 PyTorch 재단에 의해 관리될 것이라고 발표했다.[23]

2019년 12월, 프리퍼드 네트워크스(Preferred Networks)는 자사 개발한 Chainer의 버전 7을 끝으로, PyTorch를 이용한 연구 개발로 순차적으로 이행해 나갈 것을 발표했다.

PyTorch 2.0은 2023년 3월 15일에 출시되었으며, 코드 실행 속도를 최대 2배 향상시키는 Python 수준의 컴파일러인 TorchDynamo를 도입했고, 주요 클라우드 컴퓨팅 플랫폼 전반에서 훈련 및 추론 성능이 크게 개선되었다.[24][25]

3. 특징

파이토치는 사용자가 딥러닝 모델을 쉽게 구현하고 실험할 수 있도록 파이썬 기반의 직관적인 API를 제공한다. 텐서플로와 비교했을 때, 파이토치는 Define-by-Run 방식을 채택하여 더 유연하고 동적인 계산 그래프를 생성한다. 이는 코드 디버깅과 시각화를 용이하게 하며, 일반적인 파이썬 코딩과 유사하여 사용자가 쉽게 익힐 수 있다.[1]

파이토치는 CUDA, ROCm, Metal 프레임워크 등을 지원하여 GPU를 활용한 빠른 연산을 가능하게 한다. 또한, 자동 미분 기능을 제공하여 신경망 학습에 필요한 기울기 계산을 자동화한다.[1]

파이토치는 Winograd Convolution Algorithm 기본 적용을 통해 빠른 모델 학습이 가능하다. 또한 모델 그래프를 만들 때 고정 상태가 아니기 때문에 언제든지 데이터에 따라 조절이 가능하다(유연성). Numpy스러운 Tensor연산이 GPU로도 가능하며 자동 미분 시스템을 이용해 쉽게 DDN(DataDirect Networks)을 짤 수 있다.

다음은 파이토치 학습을 빠르게 하기 위한 기능 및 라이브러리들이다.

PyTorch 학습 고속화 기능 및 라이브러리
명칭기법
torch.jit.scriptTorchScript 언어로 기술 → TorchScript에 의한 학습 최적화
torch.jit.trace가상 입력 트레이스에 의한 TorchScript로의 변환 → TorchScript에 의한 학습 최적화
torch.fx.symbolic_traceFX의 Trace 기능을 이용한 GraphIR화 → 각 백엔드에 의한 학습 최적화
torch._dynamo부분적 GraphIR화 → PythonJIT 컴파일러에서의 부분적 백엔드 이용에 의한 학습 최적화



각 기법은 특징과 적용 범위가 다르다. 예를 들어 Dynamo에서는 동적 조건 분기를 처리할 수 있지만 fx.symbolic_trace에서는 처리할 수 없다.[152]

널리 사용되는 오픈 소스 라이브러리인 파이토치는 활발한 커뮤니티를 통해 다양한 지원과 정보를 얻을 수 있다는 장점도 가지고 있다.

3. 1. 텐서 (Tensors)

PyTorch는 숫자들의 균일한 다차원 직사각형 배열을 저장하고 연산하기 위해 텐서(torch.Tensor)라는 클래스를 정의한다. PyTorch 텐서는 NumPy 배열과 유사하지만, CUDA를 지원하는 NVIDIA GPU에서도 연산할 수 있다. PyTorch는 또한 AMD의 ROCm[26] 및 Apple의 Metal 프레임워크[27]와 같은 다른 GPU 플랫폼에 대한 지원도 개발해 왔다.

여기서 "텐서"라는 용어는 수학이나 물리학에서의 텐서와 동일한 의미를 갖지 않는다. 기계 학습에서 이 단어의 의미는 선형대수학에서 특정 종류의 객체로서의 원래 의미와 표면적으로만 관련이 있다. PyTorch의 텐서는 단순히 다차원 배열이다.

PyTorch에는 32비트 부동 소수점 수용 FloatTensor, 16비트 부동 소수점 수용 HalfTensor, 32비트 정수용 IntTensor 등 다양한 유형의 텐서 서브타입이 존재한다.[43][44] 또한 텐서에는 CPU에 배치하는 torch.*Tensor와 GPU에 배치하는 torch.cuda.*Tensor가 존재한다.[44] 각각은 Tensor.to(...) 메서드 등을 사용하여 변환할 수 있다.[44]

PyTorch의 텐서는 기계 학습의 역전파에 사용되는 미분을 위한 매개변수(기울기 데이터(Tensor.grad) 및 미분 함수(Tensor.grad_fn))를 가질 수 있다(requires_grad=True인 경우. 자세한 내용은 #autograd모듈 참조).[45] 기울기 데이터(grad)는 추가 메모리를 필요로 하기 때문에, 불필요한 경우 제거할 수 있다(torch.no_grad() 또는 Tensor.detach() 등).

복소수 텐서(dtype=torch.cfloat의 텐서)[46]와 양자화 텐서(dtype=torch.quint8 또는 dtype=torch.qint8 등의 텐서)[47]도 존재한다. 양자화 텐서는 스케일 및 제로 포인트 등의 양자화 매개변수를 가지고 있다.[47]

3. 2. 모듈 (Modules)

PyTorch는 신경망 구축 및 학습과 관련된 다양한 기능을 모듈 형태로 제공한다. 특히, `nn` (`torch.nn`) 모듈은 신경망 레이어와 활성화 함수 등 신경망 구성에 필요한 요소를 포함하여 복잡한 모델을 쉽게 만들 수 있도록 돕는다. 네트워크는 `torch.nn` 모듈을 상속받고 `forward()` 함수에서 연산을 정의하는 방식으로 구축된다.

3. 2. 1. `autograd` 모듈

PyTorch는 자동 미분이라는 기법을 사용한다. 레코더는 수행한 작업을 기록한 다음 거꾸로 재생하여 기울기를 계산한다. 이 기술은 순방향 패스에서 매개 변수의 미분을 계산하여 한 시대에서 시간을 절약하기 위해 신경망을 구축할 때 특히 강력하다.[1]

3. 2. 2. `optim` 모듈

`torch.optim`은 신경망 구축 시 사용되는 다양한 최적화 알고리즘을 구현한 모듈이다. 일반적으로 사용되는 대부분의 메서드를 이미 지원하므로, 처음부터 구축할 필요가 없다.[52]

3. 2. 3. `nn` 모듈

`nn` 모듈은 복잡한 신경망을 정의하는 데 유용한 도구이다. `autograd` 모듈이 계산 그래프를 정의하고 기울기를 얻는 기본적인 기능을 제공하지만, 복잡한 신경망을 다루기에는 다소 낮은 수준일 수 있기 때문이다.

PyTorch는 `nn` ( `torch.nn` ) 모듈을 통해 신경망 구성과 학습을 지원한다. 이 모듈은 다양한 레이어와 활성화 함수를 포함하여 복잡한 모델을 쉽게 구축할 수 있도록 돕는다. `torch.nn` 모듈을 상속받은 네트워크는 `forward()` 함수에서 연산을 정의하여 구축된다.

PyTorch 모델은 기본적으로 `torch.nn.Module`의 파생 클래스로 만들어지며[52], `train()` 및 `eval()` 메서드를 통해 훈련 모드와 평가 모드를 전환할 수 있다[52]

`to(...)` 메서드를 사용하면 모델 전체 매개변수의 유형을 변환할 수 있다[52]。 예를 들어, `half()` 메서드를 통해 모델 매개변수를 반정밀도로 변환하거나[52], `bfloat16()` 메서드를 통해 bfloat16으로 변환하여[52] 메모리 사용량을 줄일 수 있다. 더 높은 압축을 위해서는 `torch.quantization` 등을 사용한 양자화가 필요하다.

3. 2. 4. `jit` 모듈

'''TorchScript'''는 추론 모델 생성을 위한 정적 타입 언어이다.[91] 파이썬의 부분 집합이다.[92] TorchScript 프로그램은 파이썬에 의존하지 않는 환경(예: C++)에서 실행 가능하며,[93] JIT 컴파일을 통해 작동 환경에서 최적화가 수행된다. JIT 컴파일러에서는 연산 융합 등이 수행된다.[94]

TorchScript 모델의 저장에는 TorchScript 모델 형식이 사용되지만(torch.jit.load / torch.jit.save), 이 형식은 PyTorch 모델 형식과 마찬가지로 확장자로 ".pt"가 사용된다.[95] TorchScript를 통해 ONNX 형식으로 변환(torch.onnx.export)도 가능하다.[96] 또한 외부 LLVM 프로젝트의 Torch-MLIR에서는 TorchScript를 통해 PyTorch 모델을 컴파일할 수 있다.[97]

TorchScript는 JIT [최적화 프로그램] 및 JIT [컴파일러]가 있는 인터프리터에 의해 실행된다.[98] 내부적으로는 GraphExecutor를 통한 최적화와 인터프리터를 통한 실행이 이루어진다. 지원되는 최적화에는 입력 유형 기반 그래프 특수화,[99] 연산자 융합(Op fusion), 상수 사전 계산,[100] 불필요한 노드 제거[101] 등이 있다.

TorchScript 코드는 직접 작성(torch.jit.script) 및 PyTorch 실행 추적(torch.jit.trace)을 통해 생성된다.

다음은 정방향(forward) 함수의 스크립트 변환 예시이다.

```python

import torch # PyTorch 모듈을 불러오기

def f(x, y): return x + y # 정방향 함수 생성

ts_converted = torch.jit.script(f) # Python 코드를 직접 TorchScript로 변환

print("Converted:\n%s" % ts_converted.code) # 변환된 TorchScript 표시

ts_traced = torch.jit.trace(f, (torch.tensor([1,2]), torch.tensor([3,4]))) # PyTorch 실행을 추적하여 TorchScript 생성

print("Traced:\n%s" % ts_traced.code) # 생성된 TorchScript 표시

torch.jit.save(ts_converted, "converted.pt") # 변환된 TorchScript를 TorchScript 모델 형식으로 저장

torch.onnx.export(ts_converted, (torch.tensor([1,2]), torch.tensor([3,4])), "converted.onnx") # 위 내용을 ONNX 형식으로 출력

```

`'''torch.jit.script'''`는 TorchScript 컴파일러의 파이썬 래퍼 함수이다.[102]

`torch.jit.script`는 파이썬 객체로 작성된 TorchScript 코드를 컴파일러에 전달하고, 컴파일 결과에 파이썬에서 접근하기 위한 래퍼 객체를 반환한다. 파이썬 데코레이터로도 사용할 수 있다.

TorchScript 코드의 컴파일을 수행하므로, 모든 TorchScript 기능을 사용할 수 있다(c.f. `torch.jit.trace`에 의한 트레이싱). 예를 들어 동적 조건 분기를 기술할 수 있다.

`'''torch.jit.trace'''`는 런타임 트레이스 기반의 Python-to-TorchScript 트랜스파일러이다.[103]

`torch.jit.trace`는 실행 가능한 Python 객체와 가상 입력을 인수로 받아, 이를 트레이싱하면서 실행하고, 트레이싱 결과에 따라 TorchScript 코드를 생성한다. 즉, 런타임 트레이스에 기반하여 Python 코드를 TorchScript 코드로 변환한다.

가상 입력을 사용한 트레이싱에 기반하여 생성을 수행하므로, 사용할 수 있는 TorchScript 기능에 제한이 있다 (c.f. `torch.jit.script`에 의한 컴파일). 예를 들어 조건 분기는 가상 입력이 충족하는 한쪽 경로만 기록되므로, TorchScript의 동적 조건 분기로 변환되지 않는다. 즉, TorchScript의 동적 조건 분기는 사용할 수 없다.[104]

3. 3. 병렬 처리

PyTorch는 기본적으로 병렬 처리 기능을 내장하고 있지만, 이는 일부 기능에 국한된다. 외부 프로젝트인 DeepSpeed영어는 더욱 고도화된 병렬 처리를 구현하고 있다. 병렬 처리를 쉽게 사용하기 위한 보조 라이브러리로는 Hugging Face Accelerate와 Lightning Fabric(구 Lightning Lite)가 있다.

기존 모델에서는 추론의 병렬 처리를 쉽게 사용하기 위한 DeepSpeed도 존재한다[63][64]

컴퓨터 클러스터를 사용한 학습을 위해 외부 프로젝트로 MosaicML의 Composer가 있으며, 이 Composer는 클라우드 컴퓨팅을 사용한 학습과도 궁합이 좋다고 알려져 있다[65][66][67]

PyTorch는 다음과 같은 파이프라인 병렬 처리를 지원한다.

  • 파이프라인 병렬 처리 (torch.distributed.pipeline) - nn.Sequential에만 대응[75]。FairScale의 구현(Fairscale.nn.Pipe)을 통합한 것으로, 원래 torchgpipe의 GPipe 구현에서 유래[75][76]


PyTorch 모델의 자동 파이프라인 병렬 처리를 위해 PiPPy가 개발 중이다[77]。 또한 DeepSpeed도 파이프라인 병렬 처리를 지원한다(deepspeed.pipe)[78]

추론의 파이프라인 병렬 처리에는 Petals[79]와 FlexGen[80]도 존재한다.

PyTorch는 다음과 같은 텐서 병렬 처리(TP)를 지원한다.

  • 텐서 병렬 처리 (torch.distributed.tensor.parallel)[81]


DeepSpeed는 DeepSpeed-Inference를 통해 추론 시 텐서 병렬 처리(TP)를 지원한다.[82]

전문가 병렬 처리는 여러 전문가(전문가)의 혼합 레이어(스위치 트랜스포머 등)를 사용한 모델의 병렬 처리를 수행한다.[83]

이 전문가 병렬 처리에는 DeepSpeed MoE가 대응하고 있다.[83]

Hugging Face의 Accelerate는 대규모 모델의 추론을 처리하기 위해 가중치의 자동 오프로드를 지원한다[84][85]

DeepSpeed도 추론에서의 데이터 오프로드를 지원한다(DeepSpeed ZeRO-Inference)[86]

PyTorch는 CUDA의 여러 스트림을 사용한 명시적인 GPU 병렬 처리도 지원한다.[87]

더 높은 효율로 학습을 수행하기 위한 다양한 표준 기능과 외부 라이브러리가 제공된다. 다음은 그 예시이다.

PyTorch 학습 고속화 기능 및 라이브러리
명칭기법
torch.jit.scriptTorchScript 언어로 기술 → TorchScript에 의한 학습 최적화
torch.jit.trace가상 입력 트레이스에 의한 TorchScript로의 변환 → TorchScript에 의한 학습 최적화
torch.fx.symbolic_traceFX의 Trace 기능을 이용한 GraphIR화 → 각 백엔드에 의한 학습 최적화
torch._dynamo부분적 GraphIR화 → PythonJIT 컴파일러에서의 부분적 백엔드 이용에 의한 학습 최적화



각 기법마다 특징과 적용 범위가 다르다. 예를 들어 Dynamo에서는 동적 조건 분기를 처리할 수 있지만 fx.symbolic_trace에서는 처리할 수 없다[152]

4. 파일 형식

PyTorch에서 자주 사용되는 파일 형식은 Python 객체의 표준 직렬화 방식인 Pickle 형식 (*.pkl)과[89] 가중치, 편향(바이어스) 등의 파라미터를 무압축 ZIP 아카이브로 묶은 pt 형식이다. PyTorch에서 이러한 형식의 읽기 및 쓰기는 `torch.load`/`torch.save` 및 `torch.jit.load`/`torch.jit.save` (TorchScript용) 등을 사용하여 가능하다. 이 형식들은 PyTorch 내부 및 외부에서 널리 사용되지만, Pickle 형식은 가상 머신명령 코드를 기술한 것이므로[88] 다양한 조작이 실행될 수 있어 보안 위험이 존재한다.[89]

따라서 PyTorch 표준 형식보다 안전하고 효율적인 파라미터 저장 형식이 개발되어 왔으며, 그중 하나인 HuggingFace의 safetensors 형식은 널리 보급되고 있다.

5. 파이토치 생태계

파이토치는 다양한 기능을 제공하며, 여러 확장 라이브러리와 도구들이 파이토치 생태계를 구성하고 있다. 이러한 요소들은 파이토치의 활용 범위를 넓히고, 특정 작업들을 더욱 효율적으로 수행할 수 있도록 돕는다.

5. 1. 모델 및 라이브러리

'''PyTorch Hub''' (torch.hub)는 GitHub 저장소에 있는 PyTorch의 사전 훈련된 모델을 쉽게 사용할 수 있도록 하는 메커니즘이다.[145] PyTorch Hub를 사용하려면 저장소에 "hubconf.py"를 배치해야 한다.[145]

PyTorch Hub를 지원하는 저장소는 다음과 같다:

  • torchvision ("pytorch/vision")[133]
  • Fairseq ("pytorch/fairseq")[146]
  • YOLOv5 ("ultralytics/yolov5")[147]


PyTorch Hub를 사용하여 저장소의 모델을 로드하는 코드 예시는 다음과 같다:

```python

import torch

yolov5s_model = torch.hub.load('ultralytics/yolov5', 'yolov5s')

```

Hugging Face의 Hugging Face Hub[148][149]와 같이 GitHub 및 PyTorch Hub를 사용하지 않고, GitHub와 유사한 자체 저장소 시스템과 로드 스크립트를 제공하는 외부 프로젝트도 있다.

5. 1. 1. Transformer 모델

성능이 뛰어난 기계 학습 모델인 Transformer가 인기를 얻으면서, PyTorch에서도 내부 프로젝트와 외부 프로젝트를 합쳐 수많은 구현이 등장했다. 그 대표적인 예는 다음과 같다.

  • torch.nn.Transformer[124] - PyTorch 1.2에 구현되었다[125]
  • Accelerated Transformers - 구 Better Transformers[126]。HazyResearch사의 FlashAttention이나 Meta AI|메타 AI영어사의 xFormers 등을 사용하여 위 API를 고속화한 것[126][127]으로, PyTorch 2.0에 안정 버전이 탑재되었다[126]。전신인 Better Transformers는 Hugging Face의 Optimum에서 쉽게 사용할 수 있었다[128]
  • Transformers (Hugging Face) - 다양한 응용 모델을 구현하고 있다. PyTorch 외에도 대응하고 있다.
  • Fairseq (Meta AI) - Transformer 파생을 포함한 다양한 응용 모델을 구현하고 있다. 또한 NVIDIA에 의해 이 Fairseq를 기반으로 한 Transformer의 구현이 "Transformer for PyTorch"로 제공되고 있다[129]
  • xFormers (Meta AI) - 고속이며 메모리 절약적인 여러 구현을 포함하고 있다 (CUTLASS를 사용한 구현이나 OpenAI Triton을 사용한 구현 등). 앞서 언급한 Fairseq나 뒤에 언급할 Diffusers에서도 사용할 수 있게 되었다[130][131]

5. 1. 2. 확산 모델 (Diffusion Models)

확산 모델(확률 확산 모델; Diffusion model)은 특히 생성 AI(제너레이티브 AI) 분야에서 인기를 얻으며, PyTorch에서도 그 구현이 등장했다.

  • Diffusers (Hugging Face) - 단순한 U-Net 기반 확산 모델뿐만 아니라, 변분 오토인코더(VAE)를 사용한 Latent space|잠재 공간영어을 사용한 잠재 확산 모델 (LDM) 및 그 응용인 Stable Diffusion(SD), 임베딩 표현에 CLIP 대신 XLM-Roberta 기반의 AltCLIP을 사용하여 다국어화를 한 AltDiffusion[132], 벡터 양자화 VAE (VQ-VAE)를 사용한 잠재 공간을 사용한 VQ-Diffusion, CLIP의 텍스트 임베딩을 직접 사용하지 않고 이미지 임베딩으로 변환한 다음 가이드로 사용하는 DALL-E 2를 모방한 Karlo unCLIP, U-Net 부분까지 Transformer로 대체한 DiT (Diffusion Transformer), 동영상 생성을 지원하는 Text-to-Video / Text2Video-Zero, 오디오에 특화된 Audio Diffusion / Latent Audio Diffusion, MIDI에서 오디오를 생성하는 Spectrogram Diffusion, 범용 확산 모델인 Versatile Diffusion 등을 구현하고 있다. 또한 추가 학습에서는 Textual Inversion, 텍스트-이미지 미세 조정, DreamBooth, LoRA 등을 지원한다.

5. 1. 3. 기타 라이브러리

'''torchvision'''은 PyTorch를 위한 이미지 처리 라이브러리이다. 이미지 분류, 동영상 분류, 시맨틱 세분화, 객체 탐지, 인스턴스 세분화, 키포인트 감지, 광학 흐름 등을 지원한다[133]

'''torchaudio'''는 PyTorch용 오디오 처리 라이브러리이다. 음성 인식, 시각 음성 인식, 텍스트 음성 합성, 음성 강조, 빔 형성, 음원 분리|음원 분리영어, 음성 품질 측정, 텍스트 강제 정렬 등을 지원한다.[135] 음성 벡터화에서는 wav2vec 2.0, HuBERT, WavLM을 지원하며[134], GPU 기반 CTC 빔 서치도 지원한다[135]

'''torchtext'''는 PyTorch를 위한 텍스트 처리 라이브러리이다. 대규모 언어 모델(LLM)인 XLM-RoBERTa[136] 및 T5[137]를 지원한다. 문서 분류, 언어 모델링, 질의 응답, 기계 번역 등은 대규모 언어 모델을 각 작업에 맞게 미세 조정 및 프롬프팅하여 활용한다.

텍스트 토큰화에는 정규 표현식 토큰화, 문자 바이트 쌍 인코딩(BPE) 토큰화, 바이트 레벨 BPE 토큰화, WordPiece 토큰화, 사전 학습된 모델 토큰화를 지원한다[138][139]。 단어 임베딩 벡터 변환은 GloVe, FastText, CharNGram을 지원한다[140]。 2023년 9월 유지 관리 모드로 전환되었으며[135], 2024년 4월 개발이 종료되었다[141]

'''TorchRL'''은 PyTorch용 강화 학습 라이브러리이다. 암묵적 Q-러닝, 심층 Q-러닝 (DQN), 근접 정책 최적화|Proximal Policy Optimization영어(PPO), 심층 결정론적 정책 기울기 (DDPG), 쌍생 지연 DDPG (TD3), 어드밴티지 액터-크리틱 (A2C), 소프트 액터-크리틱 (SAC), 보수적 Q-러닝 (CQL)[135], 랜덤화 앙상블 더블 Q-러닝 (REDQ), Dreamer, Decision Transformer[135], 인간 피드백 강화 학습 (RLHF)을 지원한다[142]

'''TensorDict'''는 PyTorch용 사전 구조 라이브러리이다.

'''TorchRec'''은 PyTorch용 추천 시스템 라이브러리이다.

'''torchtune'''은 PyTorch용 대규모 언어 모델(LLM) 파인 튜닝 라이브러리이다.

'''torchchat'''는 PyTorch용 LLM을 사용한 채팅 구현이며[143], '''gpt-fast'''는 PyTorch를 사용한 LLM 구현이다[144]

Lightning AI에서 제작한 평가 지표(메트릭) 라이브러리가 있다.

5. 2. 학습

PyTorch Lightning은 학습부터 배포까지 간소화하기 위한 PyTorch용 서드파티 라이브러리이다.

PyTorch에서 사용할 수 있는 데이터 로더는 다음과 같다.

  • DataLoader (torch.utils.data.DataLoader) - PyTorch 표준 데이터 로더.
  • DataLoader2 (torchdata.dataloader2.DataLoader2) - 별도 패키지인 TorchData에서 개발된 DataPipes를 기반으로 한 실험적인 데이터 로더[150]
  • FFCV (Fast Forward Computer Vision; ffcv.loader)
  • NVIDIA DALI (Data Loading Library; nvidia.dali.plugin.pytorch) - GPUDirect Storage를 지원하는 데이터 로더[151]。PyTorch 외에도 지원한다[151]。실험적인 GPU 데이터 압축 해제도 지원한다(fn.experimental.inflate).


또한, 데이터 세트 자동 다운로드를 지원하는 데이터 로더로 HuggingFace Datasets Hub의 데이터 세트를 사용할 수 있는 HuggingFace 제작 Datasets도 있다.

6. 한국과의 관계

한국의 많은 연구자와 개발자들이 파이토치를 사용하여 딥러닝 연구 및 개발을 진행하고 있다. 카카오, 네이버 등 국내 주요 IT 기업들도 파이토치를 활용하여 인공지능 서비스를 개발하고 있다. 국내 대학 및 연구기관에서도 파이토치를 활용한 교육 및 연구가 활발하게 이루어지고 있다.

참조

[1] 웹사이트 PyTorch Alpha-1 release https://github.com/p[...] 2016-09-01
[2] 웹사이트 PyTorch gets lit under The Linux Foundation https://www.theregis[...] 2022-09-12
[3] 뉴스 Facebook brings GPU-powered machine learning to Python https://www.infoworl[...] 2017-12-11
[4] 웹사이트 Why AI and machine learning researchers are beginning to embrace PyTorch https://www.oreilly.[...] O'Reilly Media 2017-12-11
[5] 서적 Deep Learning with Python Apress, Berkeley, CA 2017
[6] 웹사이트 NLP with PyTorch: A Comprehensive Guide https://www.datacamp[...] 2024-04-01
[7] 뉴스 When two trends fuse: PyTorch and recommender systems https://www.oreilly.[...] 2017-12-18
[8] 뉴스 Facebook and Microsoft collaborate to simplify conversions from PyTorch to Caffe2 https://techcrunch.c[...] 2017-12-18
[9] 웹사이트 Tech giants are using open source frameworks to dominate the AI community https://venturebeat.[...] 2017-12-18
[10] 웹사이트 PyTorch strengthens its governance by joining the Linux Foundation https://pytorch.org/[...] 2022-09-13
[11] 웹사이트 Top 30 Open Source Projects. https://github.com/c[...] 2023-10-12
[12] 웹사이트 Welcome to the PaddlePaddle GitHub. https://github.com/P[...] 2024-10-28
[13] 웹사이트 The C++ Frontend https://pytorch.org/[...] 2019-07-29
[14] Youtube PyTorch at Tesla - Andrej Karpathy, Tesla https://www.youtube.[...] 2019-11-06
[15] 뉴스 Uber AI Labs Open Sources Pyro, a Deep Probabilistic Programming Language https://eng.uber.com[...] 2017-12-18
[16] 간행물 PYTORCH-TRANSFORMERS: PyTorch implementations of popular NLP Transformers https://pytorch.org/[...] PyTorch Hub 2019-12-01
[17] 간행물 PYTORCH-Lightning: The lightweight PyTorch wrapper for ML researchers. Scale your models. Write less boilerplate https://github.com/P[...] Lightning-Team 2020-06-18
[18] 웹사이트 Ecosystem Tools https://pytorch.org/[...] 2020-06-18
[19] 간행물 GitHub - catalyst-team/catalyst: Accelerated DL & RL https://github.com/c[...] Catalyst-Team 2019-12-05
[20] 웹사이트 Ecosystem Tools https://pytorch.org/[...] 2020-04-04
[21] 웹사이트 PyTorch – About https://pytorch.org/[...] 2018-06-11
[22] 웹사이트 Caffe2 Merges With PyTorch https://medium.com/@[...] 2018-04-02
[23] 웹사이트 Meta spins off PyTorch Foundation to make AI framework vendor neutral https://arstechnica.[...] 2022-09-12
[24] 웹사이트 Dynamo Overview https://pytorch.org/[...]
[25] 뉴스 PyTorch 2.0 brings new fire to open-source machine learning https://venturebeat.[...] 2023-03-16
[26] 웹사이트 Installing PyTorch for ROCm https://rocm.docs.am[...] 2024-02-09
[27] 웹사이트 Introducing Accelerated PyTorch Training on Mac https://pytorch.org/[...] 2022-06-04
[28] 웹사이트 An Introduction to PyTorch – A Simple yet Powerful Deep Learning Library https://www.analytic[...] 2018-06-11
[29] 웹사이트 Natural Language Processing (NLP) with PyTorch — NLP with PyTorch documentation http://dl4nlp.info/e[...] 2019-03-30
[30] 뉴스 Facebook brings GPU-powered machine learning to Python https://www.infoworl[...] 2019-03-30
[31] 웹사이트 Why AI and machine learning researchers are beginning to embrace PyTorch https://www.oreilly.[...] O'Reilly Media 2019-03-30
[32] 서적 Deep Learning with Python Apress, Berkeley, CA 2017
[33] 뉴스 When two trends fuse: PyTorch and recommender systems https://www.oreilly.[...] 2019-03-30
[34] 뉴스 Facebook and Microsoft collaborate to simplify conversions from PyTorch to Caffe2 https://techcrunch.c[...] 2019-03-30
[35] 웹사이트 Tech giants are using open source frameworks to dominate the AI community https://venturebeat.[...] 2019-03-30
[36] 뉴스 Uber AI Labs Open Sources Pyro, a Deep Probabilistic Programming Language https://eng.uber.com[...] 2017-12-18
[37] 간행물 PYTORCH-TRANSFORMERS: PyTorch implementations of popular NLP Transformers https://pytorch.org/[...] PyTorch Hub 2019-12-01
[38] 간행물 GitHub - catalyst-team/catalyst: Accelerated DL & RL https://github.com/c[...] Catalyst-Team 2019-12-05
[39] 웹사이트 PyTorch https://www.pytorch.[...] 2019-12-05
[40] 웹사이트 PyTorch – About https://web.archive.[...] 2018-06-11
[41] 웹사이트 Caffe2 Merges With PyTorch https://medium.com/@[...] 2019-03-30
[42] 웹사이트 Chainer/CuPy v7のリリースと今後の開発体制について https://chainer.org/[...] 2020-08-10
[43] 웹사이트 An Introduction to PyTorch – A Simple yet Powerful Deep Learning Library https://www.analytic[...] 2018-02-22
[44] 문서 torch.tensor https://pytorch.org/[...] PyTorch Foundation
[45] 문서 Autograd https://pytorch.org/[...] PyTorch Foundation
[46] 문서 Complex Numbers https://pytorch.org/[...] PyTorch Foundation
[47] 문서 Quantization https://pytorch.org/[...] PyTorch Foundation
[48] 문서 Using FP8 with Transformer Engine https://docs.nvidia.[...] NVIDIA
[49] 문서 NVIDIA Ampereにおけるプルーニング対応の特徴 https://pc.watch.imp[...] Impress 2020-07-20
[50] 문서 Sparse Semi-Structured Tensors https://pytorch.org/[...] PyTorch Foundation
[51] 문서 PyTorch 2.1: automatic dynamic shape compilation, distributed checkpointing https://pytorch.org/[...]
[52] 문서 Module https://pytorch.org/[...] PyTorch Foundation
[53] 웹사이트 The C++ Frontend https://pytorch.org/[...] 2019-07-29
[54] 문서 Tensor Basics https://pytorch.org/[...] PyTorch Foundation
[55] 문서 Getting Started on Intel GPU https://pytorch.org/[...] PyTorch Foundation
[56] 문서 PyTorch 2.5 Released With Improved Intel GPU Support https://www.phoronix[...] Phoronix 2024-10-17
[57] 문서 Intel Gaudi PyTorch Python API (habana_frameworks.torch) — Gaudi Documentation 1.18.0 documentation https://docs.habana.[...] Intel
[58] 문서 Facilitating New Backend Integration by PrivateUse1 https://pytorch.org/[...] PyTorch Foundation
[59] 문서 Challenges and Efforts in PyTorch Multi-Device Integration: Compatibility, Portability, and Integration Efficiencies https://pytorch.org/[...] PyTorch Foundation 2024-09-18
[60] 문서 PyTorch 2.0 https://pytorch.org/[...] PyTorch Foundation
[61] 문서 Installation https://pytorch.org/[...] PyTorch Foundation
[62] 문서 Torch-TensorRT で PyTorch の推論を最大 6 倍高速化 https://developer.nv[...] NVIDIA 2021-12-02
[63] 문서 DeepSpeed-MII: instant speedup on 24,000+ open-source DL models with up to 40x cheaper inference https://www.deepspee[...] Microsoft 2022-10-10
[64] 문서 DeepSpeed Deep Dive — Model Implementations for Inference (MII) https://towardsdatas[...] Towards Data Science 2022-11-17
[65] 문서 Reduce deep learning training time and cost with MosaicML Composer on AWS https://aws.amazon.c[...] Amazon Web Services 2022-10-24
[66] 문서 Cloudflare R2 and MosaicML enable training LLMs on any compute, anywhere in the world, with zero switching costs https://blog.cloudfl[...] Cloudflare 2023-05-16
[67] 문서 Train and deploy generative AI faster with MosaicML and Oracle https://blogs.oracle[...] オラクル (企業)|オラクル 2023-05-16
[68] 문서 Getting Started with Distributed Data Parallel — PyTorch Tutorials 2.3.0+cu121 documentation https://pytorch.org/[...] PyTorch Foundation
[69] 문서 Introducing PyTorch Fully Sharded Data Parallel (FSDP) API https://pytorch.org/[...] PyTorch Foundation 2022-03-14
[70] 문서 ZeRO https://deepspeed.re[...] Microsoft
[71] 웹사이트 Efficient Memory management - FairScale documentation https://fairscale.re[...] Facebook Research
[72] 웹사이트 ZeRO++ https://www.deepspee[...] Microsoft
[73] 웹사이트 ZeRO-Infinity and DeepSpeed: Unlocking unprecedented model scale for deep learning training https://www.microsof[...] Microsoft
[74] 웹사이트 ZeRO-Offload https://www.deepspee[...] Microsoft
[75] 웹사이트 Pipeline Parallelism https://pytorch.org/[...] PyTorch Foundation
[76] 웹사이트 Pipeline Parallelism - FairScale documentation https://fairscale.re[...] Facebook Research
[77] 웹사이트 PiPPy https://github.com/p[...] PyTorch Foundation
[78] 웹사이트 Pipeline Parallelism - DeepSpeed https://www.deepspee[...] Microsoft
[79] 논문 PETALS: Collaborative Inference and Fine-tuning of Large Models https://arxiv.org/pd[...] 2023
[80] 논문 FlexGen: High-Throughput Generative Inference of Large Language Models with a Single GPU https://arxiv.org/pd[...] 2023
[81] 웹사이트 Tensor Parallelism - torch.distributed.tensor.parallel https://pytorch.org/[...] PyTorch Foundation
[82] 웹사이트 'Model Parallelism — transformers 4.11.3 documentation' https://huggingface.[...] Hugging Face
[83] 웹사이트 Mixture of Experts - DeepSpeed https://www.deepspee[...] Microsoft
[84] 웹사이트 Handling big models for inference https://huggingface.[...] HuggingFace
[85] 블로그 How 🤗 Accelerate runs very large models thanks to PyTorch https://huggingface.[...] HuggingFace 2022-09-27
[86] 웹사이트 ZeRO-Inference: Democratizing massive model inference https://www.deepspee[...] Microsoft 2022-09-09
[87] 웹사이트 'Docs > CUDA semantics - CUDA streams' https://pytorch.org/[...] PyTorch Foundation
[88] 웹사이트 'Python pickle serialization format: format specification' http://formats.kaita[...] Kaitai Project
[89] 웹사이트 Pickle Scanning https://huggingface.[...] HuggingFace
[90] 웹사이트 torch.onnx https://pytorch.org/[...] PyTorch Foundation
[91] 웹사이트 TorchScript https://pytorch.org/[...] PyTorch
[92] 웹사이트 TorchScript Language Reference https://pytorch.org/[...] PyTorch
[93] 웹사이트 TorchScript https://pytorch.org/[...] PyTorch
[94] 블로그 PyTorch 1.10 Release https://pytorch.org/[...] PyTorch
[95] 웹사이트 Saving and Loading Models — PyTorch Tutorials 1.12.1+cu102 documentation https://pytorch.org/[...] PyTorch Foundation
[96] 웹사이트 'torch.onnx — PyTorch 1.13 documentation' https://pytorch.org/[...] PyTorch Foundation
[97] 웹사이트 My spring internship – torch-mlir eager mode, OPT and blowing away the main git repo https://nod.ai/maks-[...] nod.ai 2022-06-20
[98] 웹사이트 JIT Technical Overview https://github.com/p[...] PyTorch 2022-03-19
[99] 웹사이트 JIT Technical Overview https://github.com/p[...] PyTorch 2022-03-19
[100] 웹사이트 JIT Technical Overview https://github.com/p[...] PyTorch 2022-03-19
[101] 웹사이트 JIT Technical Overview https://github.com/p[...] PyTorch 2022-03-19
[102] 웹사이트 TORCH.JIT.SCRIPT https://pytorch.org/[...] PyTorch 2023-08-29
[103] 웹사이트 TORCH.JIT.TRACE https://pytorch.org/[...] Python 2023-08-29
[104] 웹사이트 TORCH.JIT.TRACE https://pytorch.org/[...] Python 2023-08-29
[105] 웹사이트 TORCH.FX https://pytorch.org/[...] PyTorch 2022-03-23
[106] 논문 "torch.fx, a program capture and transformation library for PyTorch" https://arxiv.org/ab[...] 2021
[107] 논문 "torch.fx represents programs in a DAG-based IR" https://arxiv.org/ab[...] 2021
[108] 웹사이트 "FX consists of three main components: a '''symbolic tracer,''' an '''intermediate representation''', and '''Python code generation'''." https://pytorch.org/[...] 2022-03-23
[109] 논문 "graph-based ... IR ... Program transformations ... is as simple embedded programming languages that are meta-programmed from a host language, predominantly Python" https://arxiv.org/ab[...] 2021
[110] 논문 "torch.fx provides an fx.graph_drawer package, which gives the user the ability to visualize torch.fx graphs with Graphviz" https://arxiv.org/ab[...] 2021
[111] 논문 "Quantization makes use of torch.fx’s graph and GraphModule representation to simultaneously modify the program code and weight values." https://arxiv.org/ab[...] 2021
[112] 논문 "6.2.2 Fusion Optimizations ... torch.fx provides the necessary non-local program context and state modification facilities needed for this transformation with its ahead-of-time, graph-based nature" https://arxiv.org/ab[...] 2021
[113] 논문 " The project was quickly developed using torch.fx’s Python APIs as well as TensorRT’s Python APIs, creating a translation layer between the two." https://arxiv.org/ab[...] 2021
[114] 논문 "the purposes of serialization or export. For instance, TorchScript" https://arxiv.org/ab[...] 2021
[115] 웹사이트 functorch.compile (experimental) — functorch 1.13 documentation https://pytorch.org/[...] PyTorch Foundation
[116] 웹사이트 functorch.compile.ts_compile — functorch 1.13 documentation https://pytorch.org/[...] PyTorch Foundation
[117] 웹사이트 TorchDynamo(torch.compile) integration in PyTorch XLA https://pytorch.org/[...] PyTorch Foundation
[118] 웹사이트 The Path to Achieve Ultra-Low Inference Latency With LLaMA 65B on PyTorch/XLA https://pytorch.org/[...] PyTorch Foundation
[119] 웹사이트 Quantization https://pytorch.org/[...] PyTorch Foundation
[120] 웹사이트 ExecuTorch https://pytorch.org/[...] PyTorch Foundation
[121] 웹사이트 PyTorch Mobile https://pytorch.org/[...] PyTorch Foundation
[122] 웹사이트 torch.utils.mobile_optimizer https://pytorch.org/[...] PyTorch Foundation
[123] 웹사이트 AI Edge Torch: High Performance Inference of PyTorch Models on Mobile Devices https://developers.g[...] Google 2024-05-14
[124] 웹사이트 torch.nn - Transformer Layers https://pytorch.org/[...] PyTorch Foundation
[125] 웹사이트 New Releases: PyTorch 1.2, torchtext 0.4, torchaudio 0.3, and torchvision 0.4 https://pytorch.org/[...] PyTorch Foundation 2019-08-08
[126] 웹사이트 PyTorch 2.0: Our next generation release that is faster, more Pythonic and Dynamic as ever https://pytorch.org/[...] PyTorch Foundation 2023-03-15
[127] 웹사이트 A BetterTransformer for Fast Transformer Inference https://pytorch.org/[...] PyTorch Foundation 2022-07-12
[128] 웹사이트 BetterTransformer - Overview https://huggingface.[...] Hugging Face
[129] 웹사이트 Transformer for PyTorch https://catalog.ngc.[...] NVIDIA
[130] 웹사이트 Fairseq https://github.com/f[...] Meta AI
[131] 뉴스 動画も音楽もゲームも 広がるAIエンターテインメントの可能性 https://www.itmedia.[...] ITmedia 2022-11-11
[132] 웹사이트 AltDiffusion https://huggingface.[...] Hugging Face
[133] 웹사이트 Models and pre-trained weights — Torchvision main documentation https://pytorch.org/[...] PyTorch Foundation
[134] 웹사이트 torchaudio.pipelines https://pytorch.org/[...] PyTorch Foundation
[135] 웹사이트 New Library Updates in PyTorch 2.1 https://pytorch.org/[...] PyTorch Foundation 2023-10-04
[136] 웹사이트 SST-2 Binary text classification with XLM-RoBERTa model https://pytorch.org/[...] PyTorch Foundation
[137] 웹사이트 T5-Base Model for Summarization, Sentiment Classification, and Translation https://pytorch.org/[...] PyTorch Foundation
[138] 웹사이트 torchtext.transforms https://pytorch.org/[...] PyTorch Foundation
[139] 웹사이트 Summary of the tokenizers https://huggingface.[...] Hugging Face
[140] 웹사이트 torchtext.vocab https://pytorch.org/[...] PyTorch Foundation
[141] 웹사이트 torchtext https://pytorch.org/[...] PyTorch Foundation
[142] 웹사이트 TorchRL https://github.com/p[...] PyTorch Foundation
[143] 웹사이트 Introducing torchchat: Accelerating Local LLM Inference on Laptop, Desktop and Mobile https://pytorch.org/[...] PyTorch Foundation 2024-07-30
[144] 웹사이트 Accelerating Generative AI with PyTorch II: GPT, Fast https://pytorch.org/[...] PyTorch Foundation 2023-11-30
[145] 웹사이트 torch.hub — PyTorch 1.13 documentation https://pytorch.org/[...] PyTorch Foundation
[146] 웹사이트 fairseq · PyPI https://pypi.org/pro[...] Facebook
[147] 웹사이트 PyTorch Hub https://docs.ultraly[...] Ultralytics
[148] 웹사이트 Hugging Face Introduces Private Hub https://wandb.ai/tel[...] Weights & Biases 2022-08-03
[149] 웹사이트 Integrate your library with the Hub https://huggingface.[...] Hugging Face
[150] 웹사이트 PyTorch 1.12: TorchArrow, Functional API for Modules and nvFuser, are now available https://pytorch.org/[...] PyTorch Foundation 2022-06-28
[151] 웹사이트 NVIDIA DALI Documentation https://docs.nvidia.[...] NVIDIA
[152] 웹사이트 "torch.fx.symbolic_trace() ... can’t handle control flow" https://pytorch.org/[...] 2023-08-28
[153] 뉴스 Facebook brings GPU-powered machine learning to Python https://www.infoworl[...] 2017-01-19
[154] 웹인용 Why AI and machine learning researchers are beginning to embrace PyTorch https://www.oreilly.[...] O'Reilly Media 2017-12-11
[155] 서적 Deep Learning with Python https://archive.org/[...] Apress, Berkeley, CA 2017
[156] 웹인용 Natural Language Processing (NLP) with PyTorch – NLP with PyTorch documentation https://pytorch.org/[...] 2017-12-18
[157] 웹인용 PyTorch – About https://web.archive.[...] 2018-06-11
[158] 웹인용 딥러닝 구현 라이브러리, 파이토치(Pytorch) https://blog.naver.c[...] 2019-05-26
[159] 웹인용 http://sundooedu.co.[...] 2019-05-26



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com