AIㆍML / 개발자

"GPU 기반 파이썬 머신러닝" 파이토치(PyTorch)의 이해

Martin Heller | InfoWorld 2022.05.11
파이토치(PyTorch)는 오픈소스 머신러닝 프레임워크로, 연구용 프로토타이핑과 프로덕션 환경에 모두 사용한다. 소스 코드 리포지토리에 따르면 파이토치의 가장 큰 특징은 다음 2가지다.
 
  • 강력한 GPU 가속을 활용해 텐서 계산(넘파이(NumPy)와 유사)
  • 테이프 기반 오토그라드(autograd) 시스템 위에 구축된 심층 신경망

아이디업 연구소(Idiap Research Institute), NYU, NEC 실험실, 페이스북, 딥마인드 테크놀로지(Deepmind Technologies)와 토치(Torch) 및 카페2(Caffe2) 프로젝트가 함께 처음 개발한 파이토치는 활발한 오픈소스 커뮤니티로 발전했다. 2021년 10월 출시된 파이토치 1.10은 426명의 기여자가 커밋했고 현재 리포지토리의 별 수는 5만 4,000개다. 여기서는 파이토치를 개괄적으로 살펴본다. 파이토치 1.10의 새로운 기능과 파이토치를 시작하기 위한 간단한 가이드도 제시한다.
 

파이토치의 발전

초기 학계와 연구원은 그래픽 처리 장치(GPU)를 사용한 모델 개발에서 파이토치가 텐서플로우에 비해 사용하기 쉽다는 점에 끌렸다. 파이토치는 기본적으로 즉시 실행(eager execution) 모드로 동작한다. 즉, 파이토치의 API 호출은 그래프에 추가돼 나중에 실행되는 것이 아니라 호출될 때 실행된다. 이후 텐서플로우도 즉시 실행 모드를 지원하도록 개선됐지만 학계와 연구 커뮤니티에서는 파이토치의 인기가 여전히 높다.

현재 파이토치는 프로덕션에 사용할 수 있는 단계이며 TorchScript를 사용해 즉시 실행과 그래프 모드 사이를 손쉽게 전환하고 TorchServe로 프로덕션까지의 경로를 가속화할 수 있다. torch.distributed 백엔드는 연구 및 프로덕션에서 확장할 수 있는 분산 교육과 성능 최적화를 가능하게 해주며, 풍부한 툴과 라이브러리 생태계는 파이토치를 확장해 컴퓨터 비전, 자연어 처리 등의 개발을 지원한다. 마지막으로, 파이토치는 알리바바, 아마존 웹 서비스(AWS), 구글 클라우드 플랫폼(GCP), 마이크로소프트 애저를 포함한 주요 클라우드 플랫폼에서 잘 작동한다. 클라우드 지원은 원활한 개발과 손쉬운 확장을 가능하게 해준다.
 

파이토치 1.10의 새로운 기능

파이토치 블로그에 따르면 파이토치 1.10 업데이트는 학습 및 성능과 개발자 사용 편의성을 개선하는 데 주력했다. 자세한 내용은 파이토치 1.10 릴리스 노트에서 확인할 수 있고, 여기서는 몇 가지 중요한 부분만 살펴본다.
 
  1. CUDA 그래프 API가 통합되어 CUDA 워크로드의 CPU 오버헤드를 낮춰준다.
  2. FX, torch.special, nn.Module 매개 변수화와 같은 여러 프론트엔드 API가 베타에서 안정화 단계로 전환됐다. FX는 파이토치 프로그램을 변환하기 위한 파이써닉(Pythonic) 플랫폼이며 torch.special은 감마 및 베셀 함수와 같은 특수 함수를 구현한다.
  3. 새로운 LLVM 기반 JIT 컴파일러가 CPU와 GPU에서 모두 자동 결합(fusion)을 지원한다. LLVM 기반 JIT 컴파일러는 torch 라이브러리 호출의 시퀀스를 결합해 성능을 개선할 수 있다.
  4. 안드로이드 NNAPI가 베타로 지원된다. NNAPI(안드로이드의 신경망 API)는 안드로이드 앱이 GPU와 특수 신경망 처리 장치(NPU)를 포함하여 휴대폰 칩에서 가장 강력하고 효율적인 요소를 활용해 계산 집약적인 신경망을 실행할 수 있게 해준다.

파이토치 1.10 릴리스에는 3,400개 이상의 커밋이 포함되는데 이는 프로젝트가 활발하게 개발되고 있고 다양한 방법을 통한 성능 개선에 초점을 두고 있음을 나타낸다.
 

파이토치 시작하기

프로젝트의 기본, 또는 처음 시작하는 방법을 모르면 업데이트 릴리스 노트를 읽어봐도 이해하기 어려우므로 기본부터 짚고 넘어가자. 파이토치 자습서 페이지는 2가지 트랙으로 나뉜다. 하나는 딥러닝 프레임워크에 익숙한 사람을 위한 것이고, 다른 하나는 초보자를 위한 것이다. 후자는 텐서와 데이터 집합, 오토그라드 및 기타 중요한 개념을 소개한다. 이 자습서를 따라 <화면 1>과 같이 마이크로소프트 런에서 실행(Run in Microsoft Learn) 옵션을 사용할 것을 권한다.
 
<화면 1> '마이크로소프트 런에서 실행' 옵션

딥러닝 개념에 이미 익숙하다면 <화면 2>의 빠른 시작 노트북을 실행하는 것이 좋다. 마이크로소프트 런에서 실행 또는 구글 코랩에서 실행(Run in Google Colab)을 클릭하거나 로컬에서 노트북을 실행할 수도 있다.
 
<화면 2> 빠른 시작 노트북
 

주목할 파이토치 프로젝트

<화면 2> 스크린샷의 왼쪽에서 볼 수 있듯이 파이토치에는 많은 레시피와 자습서가 있다. 또한 일반적으로 노트북 형태의 사용 방법 예시와 모델도 수없이 많다. 필자가 파이토치 생태계에서 특별히 관심을 둔 프로젝트는 캡텀(Captum), 파이토치 지오메트릭(PyG), 그리고 스코치(skorch)다.
 

캡텀

프로젝트의 깃허브 리포지토리에 나와 있듯이 캡텀이라는 단어는 라틴어로 '이해'를 의미한다. 리포지토리 페이지의 내용과 다른 여러 곳에 설명된 바에 따르면 캡텀은 '파이토치를 위한 모델 해석 라이브러리'다. 파이토치 모델을 해석하고 이해하는 데 사용할 수 있는 다양한 기울기 및 동요 기반 기여 알고리즘을 포함한다. 또한 토치비전(torchvision), 토치텍스트(torchtext) 등 영역별 라이브러리로 구축된 모델을 위한 빠른 통합도 제공한다. <그림 1>은 현재 캡텀에서 지원되는 모든 기여 알고리즘을 보여준다.
 
<그림 1> 캡텀에서 지원되는 기여 알고리즘
 

파이토치 지오메트릭(PyG)

파이토치 지오메트릭(PyG)은 데이터 과학자 등이 구조적 데이터와 관련된 애플리케이션을 위한 그래프 신경망을 쓰고 학습시키는 데 사용할 수 있는 라이브러리다. 깃허브 리포지토리 페이지에는 다음과 같이 설명돼 있다.
 

PyG는 그래프 및 기타 불규칙적 구조에서의 딥러닝, 즉 지오메트릭 딥러닝을 위한 방법을 제공한다. 또한 다수의 작은 그래프와 하나의 큰 그래프에서 작동하기 위한 사용하기 쉬운 미니 배치 로더, 다중 GPU 지원, 퀴버(Quiver)를 통한 분산 그래프 학습, 다수의 일반적인 벤치마크 데이터 집합(직접 만들기 위한 간단한 인터페이스 기반), 그래프짐(GraphGym) 실험 관리자, 그리고 임의 그래프와 3D 메시 또는 포인트 클라우드에서의 학습을 위한 유용한 변형으로 구성된다.

 
<그림 2> 파이토치 지오메트릭의 전체적인 아키텍처
 

스코치

스코치는 파이토치를 래핑하는 사이킷-런(scikit-learn) 호환 신경망 라이브러리다. 스코치의 목표는 파이토치를 사이킷-런과 함께 사용할 수 있도록 하는 것이다. 사이킷-런, 파이토치에 익숙하다면 새로운 개념을 배울 필요가 없고 구문도 익숙할 것이다. 또한 스코치는 학습 루프를 추상화하므로 많은 상용구 코드가 불필요하다. <화면 3>에서 볼 수 있듯이 간단한 net.fit(X, y)로 충분하다.
 
<화면 3> 간단한 net.fit(X, y)로 학습 루프를 구현한 예제
 

결론

전체적으로 파이토치는 GPU를 지원하는 심층 신경망을 위한 최상급 프레임워크 중 하나다. 모델 개발과 생산에 파이토치를 사용할 수 있고, 온프레미스 또는 클라우드에서 실행할 수 있으며 자체 모델의 출발점으로 사용할 만한 사전 제작된 파이토치 모델도 많다.
editor@itworld.co.kr

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.