Pytorch, 인기쟁이 프레임워크를 소개합니다!
오늘은 파이토치에 대하여 이야기해 볼까 합니다. 파이토치는 지금까지 텐서플로우, 케라스 등을 소개하는 중에도 몇 번씩 언급되었는데요. 이쯤 하면 파이토치를 주제로 이야기할 법도 한데, 이제야 파이토치에 대해 좀 더 자세히 알아보게 된 것에 대해서 의아해하시는 분들도 계실 거예요. 아무래도 현재 AI 개발 산업을 주름잡고 있는 신예이다 보니, 좀 더 중요도를 두고 나중에 소개하는 편이 좋겠다, 생각했답니다.
파이토치는 페이스북 인공지능 연구단에 의해 개발되어 2016년 9월에 세상에 공개되었는데요. 텐서플로우나 케라스에 비하면 그리 오래되지 않은 프레임워크입니다. 그러나 단기간 내에 폭발적인 성장을 일으켜, 최근 AI 개발자들에게 가장 사랑받는 프레임워크가 무엇이냐는 질문에 답이 되기도 할 만큼 위력을 가진 프레임워크예요.
오늘은 파이토치가 어떤 프레임워크인지, 어떻게 단기간 내에 사용자 수가 급상승하며 텐서플로우를 위협할 만큼의 영향력을 가질 수 있었는지 알아보기로 하겠습니다. 다 알아보고 나면, AI 개발을 새로 공부해 보고 싶은 분들에게 파이토치가 정말 매력적인 선택지로 느껴지겠다고 생각되네요. :)
파이토치는 이름의 철자인 Pytorch에서 연상할 수 있듯, Python을 위한 오픈 소스 라이브러리입니다. 또한 Torch를 기반으로 하고 있고, 자연어 처리와 같은 애플리케이션을 위해 주로 사용되고 있어요. 그래서 Python과 딥러닝에 대한 기본적인 개념 이해가 있는 사람들이 선택하면 좋은 프레임워크이기도 하고요. 실제로 Pytorch 공식 웹사이트에서는, 파이토치 첫 시작을 위한 가이드의 전제를 “Python과 딥러닝 개념에 대해 기본적인 지식이 있다고 가정합니다.”라고 안내하고 있어요. 텐서플로우를 사용할 때처럼, 파이토치를 사용할 때도 ‘텐서’에 대한 개념 이해가 필요하거든요. :) 그래서 그렇지 않을까 싶어요.
그럼에도 불구하고 파이토치의 장점으로, 파이토치가 파이썬을 바탕으로 하지만 파이썬을 가지고 고뇌와 씨름을 거듭하게 하지 않는다는 점을 꼽는 분들이 있습니다. 이미 '텐서'와 '딥러닝'에 대한 개념 이해가 있으면 당연히 고뇌와 씨름을 덜하게 되지 않느냐고 하시는 분들도 있겠지만요. 파이토치가 가진 'Python'이라는 언어 정체성이 중요한 작용을 합니다. 파이토치는 Python과 함께 작동하도록 설계, 제작되었기 때문에, 모델, 옵티마이저, 데이터 로더, 손실 함수, 변환 등도 파이썬 클래스인데요. 텐서보드(TensorBoard) 또는 print() 문에 이르기까지의 디버깅도 파이썬 기법으로 하게 됩니다. 그래서 파이썬을 다룰 줄 아시는 분이라면, AI 개발에 대한 부담감을 파이토치로 덜 수 있을 거예요. ;)
AI 개발에 있어서 텐서플로우의 정적인 실행 그래프는 ‘기성 방식’으로 여겨지기도 하는데요. 파이썬은 ‘즉시 실행 모드’를 도입한 프레임워크로서, 맞춤형 파이토치 클래스를 추론하기가 쉽다는 점도 장점으로 꼽힙니다. 물론 텐서플로우도 2.0에 이르러 즉시 실행 기능을 제공하고는 있어요. 그러나, 이미 ‘즉시 실행’이라는 특징 자체가 파이토치만의 특징인 것처럼 사람들의 뇌리에 각인되었으니, 이미 ‘파이썬’, ‘즉시 실행’이라는 키워드는 파이토치의 것이 된 것이죠. ;)
파이토치는 2019년에서 20년에 이르러 1.3, 1.4 버전을 내놓았을 때, 모바일 플랫폼 개발자에 맞춘 지원을 강화하기도 했는데요. 이런 부분 때문에 이용자들을 대거 끌어모을 수 있었다고 합니다. 이렇게 지원을 거듭하면서, 파이토치는 쉽게 개발에 도전하지 못하던 사람들에게 부담을 어느 정도 덜어줄 수 있는 프레임워크가 되었어요.
파이토치가 사랑받게 된 이유는 ‘파이썬’을 기반으로 하여 코드를 이해하기 쉽다는 점이 가장 크겠지만, 그 외에도 다양한 이유가 존재합니다. 메타의 개발진들(2022년 12월 메타에서 독립하여 지금은 ‘파이토치 재단’에 속해 있지만)이 지속적으로 Python을 사용하는 개발자들의 특성에 맞춘 다양한 지원을 해왔기 때문이기도 할 것이고요. 파이토치의 특성이 영향을 미치기도 했답니다.
우선, “바로 사용 가능”이 있는데요. 다른 프레임워크들도 제공하게 된 기능이지만, 앞서 말했듯’ Pytorch가 이 매력적인 장점을 처음 내세웠기에 사람들의 머릿속에 파이토치와 ‘즉시 사용’이라는 키워드의 연결고리가 생긴 것이지요. 그리고 그러한 인식과 기대에 부응하는 “쉽다” 라는 점도 인기 요인으로 작용했습니다. 파이토치를 설정하고 실행하기는 무척 쉬워서, 파이토치 허브를 사용하면 단 한 줄의 코드로 사전 학습된 모델을 얻을 수 있다고 해요. :0
또한 ‘파이썬’을 사용한다는 특성에서 기인한, 다른 장점들도 파이토치의 인기 급부상에 영향을 주었는데요. 파이썬의 간편하고 안정적인 하위 클래스는 맞춤형 구성요소를 만들 때 수월합니다. 그러니 ‘실험’이나 ‘연구’ 목적의 AI 개발, 딥러닝 연구에서는 파이토치를 선호할 수밖에 없게 되었어요. 세운 가설을 증명하기 위한 모델을 더 간편하게 만들 수 있는 프레임워크이니까요. 개발 및 생산 단계에서는 오랜 시간 강자의 자리를 지켜온 ‘텐서플로우’가 우세하지만, 연구 분야에서는 파이토치가 강세가 되면서, 그 결과 산업 전반에서의 파이토치 수요에도 영향을 주게 되었습니다.
파이토치의 커뮤니티도 인기 상승에 영향을 주었어요. 어떤 제품이나 서비스가 많이 쓰이기 위해서는, 끊임없이 그에 대한 이야기들이 생산되고, 전달되어야 할 텐데요. 파이토치의 커뮤니티는 유용한 콘텐츠들이 지속적으로 제공되고 있으며, 이 콘텐츠에 대한 사용자들의 반응도 매우 좋은 편입니다. ytorch.org 웹사이트에서는 파이토치 릴리스와 충실히 보조를 맞추는 문서를 확인할 수 있고, 파이토치의 주 기능부터 맞춤형 C++ 연산자를 통해 라이브러리를 확장하는 세부적인 방법까지 커버하는 자습서들도 볼 수 있어요. 그러니, AI 개발을 혼자 공부해 보려 하는 분들에게도 파이토치의 커뮤니티는 반가운 존재일 수밖에 없겠지요. 파이토치의 한국 커뮤니티도 이러한 가이드, 콘텐츠들이 동일하게 제공되고 있기에, 국내에서도 파이토치의 커뮤니티의 인기가 높답니다.
파이토치의 한국 커뮤니티를 보면, GPU 메모리에 관련된 질문들을 종종 볼 수 있습니다. 파이토치는 모든 GPU의 메모리를 할당하도록 기본 설정되어 있는데요. 이 때문에 GPU를 다수 보유하고 있는 환경이라면, 코드, 함수를 입력하여 특정 GPU만 사용하도록 지정해 주는 작업이 필요해요. 그렇기에 파이토치를 자습으로 공부하고 있는 개발자라면, 파이토치 GPU 할당, 파이토치 GPU 지정, 파이토치 GPU 확인 등으로 구글에 검색을 해보신 분들이 다수 계실 거예요.
그러나 GPU의 금액은 천정부지로 치솟고 있는 요즘, 다수의 GPU를 가지고 있는 경우는 많지 않습니다. 대규모 언어 모델(LLM)을 개발하는 대기업에서도 GPU를 주문하고도 한참을 대기해야 한다는 이야기가 나오고 있으니까요. GPU가 충분히 확보되어 있지 않다면, 인프라를 효율적으로 활용해야 한다는 문제에 직면하게 됩니다. 그 방법은 파이토치로 특정 GPU만 사용하도록 하는 방법이 될 수도 있고, GPU를 나누어 쓰는 방법이 될 수도 있겠지요. :)
최근 국내외 AI 인프라 시장에서는 GPU를 효율적으로 사용하기 위한 다양한 플랫폼과 솔루션들이 나와 있습니다. TEN의 Coaster와 AI Pub도 그중 하나인데요. :) 대개 AI 개발을 위하여 사용하는 NVIDIA의 GPU가 2~7분할의 MIG를 통해 자원을 나누어 쓸 수 있도록 한다면, TEN의 Coaster와 AI Pub은 GPU를 100분할 해서 좀 더 세밀하게 모델에 맞는 인프라를 할당할 수 있도록 서비스하고 있어요.
AI Pub을 사용하면 우리에게 친숙한 UI로 내가 개발한 모델에 자원을 할당하고 사용량 등을 모니터링할 수 있습니다. 파이토치의 GPU 사용 방식에 대한 아쉬움을 느낀 개발자, 혹은 서비스 기획자라면, AI Pub과 같은 솔루션을 보조 사용하는 방식으로 개발의 효율을 높일 수 있을 거예요. :)
AI 개발을 하는 개발자, 혹은 서비스 기획자라면 ‘효율성’이 늘 중요한 이슈일 수밖에 없는데요. 이 ‘효율성’은 개발 과정의 ‘간단함’일 수 있고, ‘즉시 실행’과 같은 ‘신속성’일 수 있고, 추후 자원의 효율적인 사용과 같은 ‘비용 절감’의 의미가 될 수도 있을 거예요. 이 ‘효율성’을 생각할 때, 파이토치의 인기는 앞으로도 계속될 것으로 보입니다. 지난겨울 메타에서 독립하여 설립된 별도의 재단에서 파이토치의 개선, 신버전 개발에 박차를 가하는 상황이기에, 앞으로의 행보와 영향력 확장이 가장 기대되는 프레임워크가 바로 파이토치라는 생각이 드네요. :)