PyTorch
From Research To Production (연구에서 프로덕션까지)
— PyTorch 공식 홈페이지 메인 카피
어차피 깃허브 오픈소스 코드 긁어와서 돌려보는 게 일상이잖아요? 실제 에러 로그는 C++ 단에서 터져 나와서 파이썬 유저는 도대체 왜 뒤졌는지 알 길이 없다1
1. 개요
페이스북의 AI 연구소(FAIR)가 주도하여 개발한 오픈소스 머신러닝 라이브러리. 기존 시장을 독점하고 있던 텐서플로의 난해하기 짝이 없는 정적 그래프 구조를 비웃듯, 파이썬 본연의 직관성에 충족하는 동적 계산 그래프(Dynamic Computation Graph)를 앞세워 학계를 완벽히 장사 지냈다.(...) 현재는 전 세계 모든 인공지능 연구원들의 기본 교양이자 사실상의 표준(De facto standard) 아키텍처로 군림하고 있다.
2. 파이썬과의 환상적인 궁합 (Eager Execution)
이전 세대의 대장 격이었던 텐서플로가 그래프를 먼저 컴파일하고 세션을 열어 데이터를 주입하는 'Define-and-Run'이라는 기괴한 방식을 고수할 때, 파이토치는 값을 바로 확인하며 코딩하는 Define-by-Run(Eager Execution)을 전면에 내세웠다. 디버깅이 압도적으로 쉬워져 개발자들이 마침내 인간다운 삶을 영위할 수 있게 되었다. 단, 성능 최적화를 위해 내부 코어는 모조리 C++로 떡칠되어 있으며, 프론트엔드 격인 파이썬 레이어는 사실상 껍데기에 가깝다. 이때문에 가끔 내부 에러가 터지면 수백 줄의 난해한 C++ 역추적 로그를 감상해야 하는 징벌을 받게 된다.(...)
3. 학계 독점, 그리고 산업계 침공
논문 구현의 편리함 덕에 CVPR이나 NeurIPS 등 저명한 인공지능 학회 논문들의 소스코드는 90% 이상이 파이토치로 작성되는 학계 독점 현상이 발생했다. 이에 위기감을 느낀 구글 진영이 텐서플로 2.0을 급히 내놓았으나 이미 대세는 기운 뒤였다. 과거에는 '배포(Production) 환경에서는 여전히 텐서플로가 강세'라는 주장이 위안거리였으나, 파이토치가 TorchScript 도입 및 ONNX 포맷 호환성을 극도로 끌어올리면서 실무 배포 환경마저도 파이토치가 야금야금 정복해 나가고 있다.2
4. 관련 밈 및 드립
4.1. CUDA Out of Memory (OOM)
딥러닝 개발자들의 영원한 주적. 분명 이전 배치 사이즈에서는 잘 돌아갔으나, 단 1만 증가시켜도 시뻘건 에러 메시지와 함께 프로세스가 사망한다. torch.cuda.empty_cache()를 코드 사방에 도배하고 눈물의 기도를 올리는 것이 현대 인공지능 엔지니어들의 일상적인 종교 활동이다.
4.2. import torch
파이썬 개발자가 주피터 노트북을 켜자마자 숨 쉬듯이 치는 마법의 주문. 코딩 테스트 문제 풀 때도 습관적으로 적었다가 지우는 부작용을 겪는 환자들이 속출하고 있다.
5. 여담
- Caffe2의 시체 흡수: 페이스북 내부에서 배포용으로 밀던 Caffe2 라이브러리가 존재했으나, 파이토치의 압도적인 성장세에 밀려 결국 파이토치 프로젝트 밑으로 흡수 통폐합당하는 굴욕을 겪었다.
- 코랩(Colab)과의 궁합: 구글이 만든 구글 코랩 환경에서 구글 제품인 텐서플로보다 파이토치를 임포트해서 쓰는 사용자가 압도적으로 많다.(...) 구글이 차려놓은 밥상에서 메타가 꿀을 빠는 형국이다.
- Llama 개발의 일등공신: 메타의 오픈소스 거대 언어 모델(LLM)인 Llama 시리즈 역시 파이토치 기반으로 개발되어 배포되었으며, 이는 오픈소스 진영의 인공지능 생태계를 단숨에 장악하는 핵무기가 되었다.