PyTorch란 무엇인가요?
 
watsonx.ai에 대해 알아보기
데이터 흐름을 나타내는 그래픽

PyTorch는 신경망 구축에 사용되는 소프트웨어 기반 오픈 소스 딥 러닝 프레임워크로, Torch의 백엔드 머신 러닝 라이브러리와 Python 기반의 고급 API를 결합한 것입니다. 유연성과 사용 편의성 등의 이점 덕분에 학계 및 연구 커뮤니티를 위한 최고의 머신 러닝 프레임워크로 자리잡았습니다.

PyTorch는 간단한 선형 회귀 알고리즘부터 복잡한 컨볼루션 신경망과 컴퓨터 비전자연어 처리(NLP)와 같은 작업에 사용되는 생성형 트랜스포머 모델에 이르기까지 다양한 신경망 아키텍처를 지원합니다. 널리 알려진 Python 프로그래밍 언어를 기반으로 구축되고 사전 구성된(심지어 사전 학습된) 모델의 광범위한 라이브러리를 제공하는 PyTorch를 통해 데이터 과학자는 코드와 수학적 구조에 소요되는 시간과 노동력을 최소화하면서 정교한 딥 러닝 네트워크를 구축하고 실행할 수 있습니다.

또한 PyTorch를 사용하면 데이터 과학자가 전체 코드가 구현될 때까지 기다릴 필요 없이 실시간으로 코드의 일부를 실행하고 테스트할 수 있습니다. 대규모 딥 러닝 모델의 경우 시간이 매우 오래 걸릴 수 있습니다. 이는 PyTorch를 신속한 프로토타이핑을 위한 탁월한 플랫폼으로 만들고 디버깅 프로세스를 크게 가속화합니다.

원래 Facebook AI Research(현 Meta)에서 개발된 Python은 2017년에 오픈 소스로 만들어졌으며 2022년부터 더 큰 Linux Foundation의 일부인 PyTorch Foundation에서 관리하고 있습니다. 이 재단은 딥 러닝 커뮤니티가 PyTorch 에코시스템의 추가 개발을 위해 협력할 수 있는 중립적인 공간을 제공합니다.

2023년에 IBM은 PyTorch Foundation의 프리미어 멤버가 되었으며, 수십억 개의 매개변수로 유연한 AI 기반 모델을 보다 효율적으로 훈련할 수 있도록 하고 AI 훈련을 위한 체크포인트를 훨씬 더 비용 효율적으로 만드는 두 가지 주요 프로젝트에서 이미 협력했습니다. IBM의 watsonx 플랫폼은 PyTorch를 활용하여 엔드투엔드 훈련부터 모델 미세 조정에 이르기까지 인공 지능 기반 모델을 위한 엔터프라이즈급 소프트웨어 스택을 제공합니다.

오픈 소스 @ IBM

블록체인에서 컨테이너, AI, 운영 체제, 그리고 그 사이의 모든 것에 이르기까지, 개발자들이 새로운 오픈 소스 프로젝트를 만들고 코드, 문서, 지원 자료로 이를 뒷받침하고 있기 때문에 여러분도 혁신에 동참할 수 있습니다.

관련 내용

IBM 뉴스레터 구독하기

PyTorch는 어떻게 작동하나요?

PyTorch의 수학 및 프로그래밍 구조는 심층 신경망의 복잡성이나 성능을 제한하지 않고 머신 러닝 워크플로를 단순화하고 간소화합니다.

Python

Python은 데이터 과학에서 널리 사용되는 범용 고수준 프로그래밍 언어로, 딥 러닝 네트워크 모델링으로 작업을 확장하는 데이터 과학자에게 직관적인 선택이 될 수 있습니다. Python의 간단한 구문은 읽기 쉽고, 배우는 데 비교적 시간이 적게 걸리며, Windows, macOS, Linux 또는 Unix를 포함한 모든 운영 체제에서 실행할 수 있습니다. Python은 2019년에 Java를 제치고 3년 넘게 GitHub에서 두 번째로 가장 많이 사용되는 프로그래밍 언어로 선정되었습니다. 2022년에는 22.5% 증가하며 계속해서 인기가 높아지고 있습니다1.

 이러한 유연성과 단순성은 수학적 연산을 위한 NumPy(Numerical Python), 데이터 조작을 위한 Pandas 또는 데이터 시각화를 위한 matplotlib 등 다양한 Python 라이브러리와 API, 그리고 교육 리소스에 대해 협업하는 강력한 온라인 Python 개발자 커뮤니티를 육성하는 데 도움이 되었습니다. 이 커뮤니티는 또한 머신 러닝 코딩의 단조로움과 추측을 줄여주는 방대한 양의 Pytorch 라이브러리를 제작하여 개발자와 데이터 과학자가 암기식 작업 작성 대신 혁신에 집중할 수 있도록 해줍니다.

텐서

모든 머신러닝 알고리즘에서, 심지어 소리나 이미지처럼 겉으로 보기에 숫자가 아닌 정보에 적용되는 알고리즘에서도 데이터는 반드시 숫자로 표현되어야 합니다. PyTorch에서는 플랫폼에서 계산에 사용되는 기본 데이터 단위 역할을 하는 텐서를 통해 이를 수행합니다.

머신 러닝에서 텐서는 수학적 장부 기기와 같은 기능을 하는 다차원 숫자 배열입니다. 언어학적으로 "텐서"는 좀 더 친숙한 수학적 엔터티를 포함하는 일반적인 용어로 기능합니다.

  • 스칼라는 단일 숫자를 포함하는 0차원 텐서입니다.
  • 벡터는 동일한 유형의 여러 스칼라를 포함하는 1차원 텐서입니다. 튜플은 다양한 데이터 유형을 포함하는 1차원 텐서입니다.
  • 매트릭스는 동일한 유형의 여러 벡터를 포함하는 2차원 텐서입니다.
  • 컴퓨팅 비전 알고리즘에서 RGB 이미지를 표현하는 데 사용되는 3차원 텐서와 같이 3차원 이상의 텐서를 총칭하여 N차원 텐서라고 합니다.

PyTorch 텐서는 NumPy에서 사용되는 ndarray와 유사하게 작동하지만 중앙 처리 장치(CPU)에서만 실행할 수 있는 ndarrays와 달리 텐서는 그래픽 처리 장치(GPU)에서도 실행될 수 있습니다. GPU는 CPU보다 훨씬 빠른 계산을 가능하게 하며, 이는 딥 러닝에 일반적으로 사용되는 대량의 데이터와 병렬 처리를 고려할 때 큰 이점입니다.

PyTorch 텐서는 모델의 입력과 출력을 인코딩하는 것 외에도 머신 러닝에서 "학습"되는 가중치, 편향, 기울기 등의 모델 파라미터도 인코딩합니다. 텐서의 이러한 속성은 PyTorch의 가장 중요한 기능 중 하나인 자동 미분을 가능하게 합니다.

모듈

PyTorch는 모듈을 딥러닝 모델의 구성 요소로 사용하므로 각 알고리즘을 수동으로 코딩하는 지루한 작업 없이도 신경망을 빠르고 간단하게 구축할 수 있습니다.

 모듈은 다른 중첩된 모듈을 포함할 수 있으며, 실제로 그렇게 하는 경우가 많습니다. 이를 통해 더욱 정교한 다층 신경망을 만들 수 있을 뿐만 아니라, 복잡한 딥 러닝 모델을 하나의 명명된 모듈로 쉽게 저장하고 다른 머신, CPU 또는 GPU 간에 전송할 수 있습니다. PyTorch 모델은 Torchscript (ibm.com 외부 링크) 를 사용하여 C++와 같은 비Python 환경에서도 실행할 수 있으므로 연구용 프로토타입과 프로덕션 배포 간의 격차를 해소하는 데 도움이 됩니다.

 대체로 PyTorch에서 딥 러닝 모델을 빌드하고 최적화하는 데 사용되는 모듈에는 세 가지 기본 클래스가 있습니다.

  • nn 모듈은 신경망의 계층으로 배포됩니다. torch.nn 패키지에는 컨볼루션, 풀링, 회귀와 같은 일반적인 연산을 수행하는 대규모 모듈 라이브러리가 포함되어 있습니다. 예를 들어, torch.nn.Linear(n,m)는 n개의 입력과 m개의 출력을 가진 선형 회귀 알고리즘을 호출합니다(초기 입력과 매개변수는 이후 코드 줄에서 설정됩니다).

  • autograd 모듈은 신경망 내에서 작동하는 모든 함수에 대해 경사 하강을 통해 모델 매개 변수를 최적화하는 데 사용되는 기울기를 자동으로 계산하는 간단한 방법을 제공합니다. 텐서를 requires_grad=True로 추가하면 해당 텐서에 대한 모든 연산을 추적해야 한다는 신호를 autograd에 전달하여 자동 미분을 가능하게 합니다.

  • Optim 모듈은 이러한 기울기에 최적화 알고리즘을 적용합니다. Torch.Optim은 특정 최적화 요구 사항에 맞게 확률적 경사하강법(SGD) 또는 RMSProp(평균 제곱근 전파)과 같은 다양한 최적화 방법을 위한 모듈을 제공합니다.

동적 계산 그래프

동적 계산 그래프(DCG)는 PyTorch에서 딥 러닝 모델을 표현하는 방법입니다. 추상적으로 말하자면, 계산 그래프는 수학 시스템에서 서로 다른 연산 간의 데이터 흐름을 매핑하는 것으로, 딥 러닝의 맥락에서는 신경망의 코드를 각 노드에서 수행되는 연산과 네트워크의 여러 계층 간의 종속성(입력 데이터를 출력 데이터로 변환하는 단계와 순서의 배열)을 나타내는 순서도로 변환하는 것과 같습니다.

PyTorch에서 사용되는 동적 계산 그래프가 TensorFlow에서 사용되는 정적 계산 그래프와 다른 점은 계산의 정확한 사양과 계산 간의 관계를 런타임까지 연기한다는 점입니다. 즉, 정적 계산 그래프는 전체 신경망의 아키텍처를 완전히 결정하고 컴파일해야 실행할 수 있는 반면, DCG는 즉석에서 반복하고 수정할 수 있습니다.

따라서 DCG는 전체 모델을 재설정할 필요 없이 모델 코드의 특정 부분을 변경하거나 개별적으로 실행할 수 있기 때문에 디버깅 및 프로토타이핑에 특히 유용합니다. 복잡한 컴퓨터 비전 및 NLP 작업에 사용되는 대규모 딥 러닝 모델의 경우 시간과 계산 리소스 낭비가 될 수 있습니다. 이러한 유연성의 이점은 역전파 중에 동적 계산 그래프가 역방향으로 쉽게 생성되기 때문에 모델 학습으로 확장됩니다.

정적 계산 그래프는 고정 구조가 계산 효율성을 높일 수 있지만 유연성이 제한적입니다. 예를 들어, 다양한 크기의 이미지를 처리할 수 있는 CNN (컨벌루션 신경망)과 같이 입력 데이터에 따라 다양한 계층을 사용하는 모델을 구축하는 것은 정적 그래프의 경우 매우 어렵습니다.

자동 미분

특히 지도 학습에서 신경망을 훈련하는 데 광범위하게 사용되는 방법 중 하나는 역전파입니다. 첫째, 순방향 패스에서 모델은 일부 입력(x)을 공급받고 일부 출력(y)을 예측합니다. 이 출력에서 역방향으로 작업하면 손실 함수를 사용하여 x의 다른 값에서 모델 예측의 오차를 측정합니다. 손실 함수를 미분하여 도함수를 찾음으로써 경사하강법을 사용하여 신경망의 가중치를 한 번에 한 계층씩 조정할 수 있습니다.

PyTorch의 autograd 모듈은 연쇄 법칙이라는 미적분 공식을 사용하여 자동 미분 기술을 강화하고 복잡한 도함수를 더 간단한 도함수로 분할하고 나중에 결합하여 계산합니다. Autograd는 계산 그래프에서 실행되는 모든 작업에 대한 기울기를 자동으로 계산하고 기록하므로 역전파의 수고가 크게 줄어듭니다. 

이미 학습된 모델을 실행할 때 autograd는 불필요하게 계산 리소스를 사용하게 됩니다. 텐서 연산에 requires_grad=False를 추가하면 PyTorch에 기울기 추적을 중지하라는 신호가 전달됩니다.

데이터 세트 및 데이터 로더

딥 러닝 모델을 훈련하는 데 필요한 대규모 데이터 세트로 작업하는 것은 복잡하고 계산이 까다로울 수 있습니다. PyTorch는 데이터 로딩을 용이하게 하고 코드를 더 쉽게 읽을 수 있도록 데이터 세트와 데이터 로더라는 두 가지 데이터 프리미티브를 제공합니다.

  • torch.utils.data.Dataset는 데이터 샘플과 해당 레이블을 저장합니다.
  • torch.utils.data.Dataloader는 데이터 세트를 이터러블(연산이 가능한 객체)로 감싸서 샘플에 쉽게 액세스할 수 있도록 합니다.

 

PyTorch 에코시스템

PyTorch의 핵심 기능은 PyTorch 커뮤니티 구성원이 개발한 강력한 도구, 라이브러리 및 확장 기능 에코시스템으로 (ibm.com 외부 링크)  보완됩니다. 목적별 모듈, 사전 구성된 신경망, 사전 학습된 모델 등이 포함된 다양한 추가 오픈 소스 라이브러리를 통해 사전 설치된 토치 라이브러리를 보완할 수 있습니다.

Torchvision

Torchvision은 다양한 이미지 분류, 객체 감지 및 이미지 분할 작업을 위한 모듈, 네트워크 아키텍처 및 데이터 세트가 포함된 툴킷입니다.

Torchvision 살펴보기
TorchText

TorchText는 NLP에서 사용할 수 있는 데이터 세트, 기본 텍스트 처리 변환 및 사전 훈련된 모델과 같은 리소스를 제공합니다.

TorchText 살펴보기
오픈 신경망 교환

오픈 신경망 교환(ONNX)은 AI 프레임워크 간의 상호 운용성을 보장하여 사용자가 PyTorch 모델을 다른 플랫폼으로 쉽게 전환할 수 있도록 합니다.

ONNX 살펴보기
자습서

PyTorch.org에서 많은 유용한 튜토리얼을 이용할 수 있습니다. 예를 들어, 이 중급 튜토리얼 (ibm.com 외부 링크) 에서는 비디오 게임을 플레이하도록 AI를 훈련하여 심층 강화 학습의 기초를 가르칩니다.

PyTorch 튜토리얼 살펴보기
PyTorch 설치 및 실행

PyTorch는 로컬 시스템과 클라우드 플랫폼 모두에서 다양한 구성으로 설치하고 실행할 수 있습니다.

PyTorch를 로컬에서 실행하려면 Anaconda 패키지 관리자, Homebrew(ibm.com 외부 링크) 또는 Python 웹사이트 (ibm.com 외부 링크) 를 사용하여 Python을 설치해야 합니다.

PyTorch는 conda install pytorch torchvision -c pytorch 명령을 사용하여 Anaconda (ibm.com 외부 링크) 를 통해 로컬로 설치하거나 pip3 install torch torchvision 명령을 사용하여 pip (ibm.com 외부 링크) 를 통해 로컬로 설치할 수 있습니다. Anaconda는 한 번의 샌드박스 설치로 모든 PyTorch 종속성(Python 포함)을 제공하므로 권장됩니다2.

PyTorch는 Amazon Web Services, Google Cloud 및 Microsoft Azure를 비롯한 클라우드 플랫폼에서도 실행할 수 있습니다.

CPU가 제공할 수 있는 것보다 훨씬 빠른 교육 및 성능을 제공하는 PyTorch의 CUDA(컴퓨팅 통합 장치 아키텍처) 지원을 활용하려면 NVIDIA GPU를 사용하는 것이 좋습니다(필수는 아님). 

관련 솔루션
watsonx.ai

생성형 AI, 파운데이션 모델, 머신 러닝 모델을 쉽게 훈련, 검증, 조정 및 배포할 수 있으며 적은 데이터로 짧은 시간 내에 AI 애플리케이션을 구축할 수 있습니다.

watsonx.ai 살펴보기

AI 컨설팅 서비스

AI로 작업하는 방식을 새롭게 상상해 보세요. 20,000여 명의 다양한 글로벌 AI 전문가 팀은 비즈니스 전반에 걸쳐 AI와 자동화를 신속하고 자신 있게 설계하고 확장할 수 있도록 지원하며, 자체 IBM watsonx 기술과 파트너사의 개방형 에코시스템을 통해 윤리와 신뢰를 바탕으로 모든 클라우드에서 모든 AI 모델을 제공할 수 있습니다.

IBM AI 컨설팅 서비스 살펴보기

watsonx.data

watsonx.data는 업계 유일의 오픈, 하이브리드, 거버넌스 데이터 저장소로써, 어디서나 모든 데이터에 대한 분석 및 AI 워크로드를 확장할 수 있습니다.

watsonx.data 살펴보기
PyTorch 리소스 머신 러닝 시작하기

이 학습 경로는 머신 러닝을 빠르게 익히는 데 관심이 있는 모든 사람을 위해 설계되었으며, 모델을 구축하고 앱에서 사용하는 실습 데모가 포함된 단계별 튜토리얼을 제공합니다.

Python 초보자 가이드

대수 계산 실행부터 데이터에서 그래픽 출력 생성까지 이 간단한 프로그래밍 언어를 시작하기 위해 알아야 할 기본 개념을 소개합니다.

PyTorch: 리소스 및 도구

기사, 연구, 블로그 게시물, 튜토리얼 및 비디오를 탐색하여 PyTorch 에코시스템에 대한 지식을 넓혀보세요.

다음 단계 안내

AI 빌더를 위한 차세대 엔터프라이즈 스튜디오인 IBM watsonx.ai를 통해 생성형 AI, 파운데이션 모델, 머신 러닝 기능을 손쉽게 학습, 검증, 조정, 배포하고, 일부 데이터만 사용하여 짧은 시간 안에 AI 애플리케이션을 구축할 수 있습니다.

무료 평가판 시작 라이브 데모 예약하기
각주

1 2022년 Octoverse: 최고의 프로그래밍 언어 (ibm.com 외부 링크) , Github, 2022년 11월 17일
2 PyTorch: 시작하기 - 로컬에서 시작하기 (ibm.com 외부 링크)