PyTorch란?

URL 복사

PyTorch는 개발자가 코드를 조합해 데이터의 패턴을 식별하도록 학습하는 AI '두뇌'를 만들 수 있게 지원하는 오픈소스 소프트웨어 라이브러리입니다. 더 기술적으로 설명하면 PyTorch는 개발자가 모듈식 레이어를 사용해 고급 머신 러닝에 필요한 복잡한 신경망을 구축하고 학습시킬 수 있도록 지원합니다. 

Red Hat AI 살펴보기

PyTorch가 인기를 얻은 이유는 개발자 경험을 우선시하고 모델 구조를 실시간으로 쉽게 변경할 수 있게 해 주기 때문입니다. 사용자는 프론트엔드에서 Python을 프로그래밍 언어로 사용해 PyTorch와 상호작용합니다. PyTorch는 백엔드에서 복잡한 계산을 실행하기 위해 C++를 프로그래밍 언어로 사용하며, NVIDIA 그래픽 처리 장치를 사용할 수 있는 경우 CUDA도 사용합니다. 이러한 하이브리드 접근 방식은 단순한 사용자 인터페이스와 강력한 컴퓨팅 성능을 함께 제공합니다.

PyTorch는 PyTorch Foundation 산하의 오픈소스이며 이는 Linux® Foundation의 일부입니다. 개방형 거버넌스이므로 무료로 사용할 수 있을 뿐 아니라, 오픈소스 커뮤니티를 통해 지속적으로 개선되고 모든 과정을 감사할 수 있습니다. 개발자는 소스 코드를 직접 살펴보고 프레임워크가 데이터를 처리하는 방식을 확인할 수 있습니다. 

PyTorch는 오픈소스라는 기반을 넘어, 다양한 하드웨어 플랫폼이나 클라우드 제공업체 전반에서 모든 사용자가 유연성, 확장성, 접근성을 확보할 수 있도록 설계된 기본 아키텍처를 갖추고 있습니다. 

PyTorch 에코시스템에 AI의 미래가 달린 이유

AI 기술 구현의 4가지 핵심 고려 사항

PyTorch는 개발자가 인공지능을 설계하고 배포하는 데 필요한 구성 요소를 제공합니다. 개발자가 복잡한 시스템을 처음부터 만들 필요 없이, 직관적인 Python 네이티브 접근 방식과 바로 사용할 수 있는 머신 러닝 모델 라이브러리를 활용할 수 있다는 점에서 차별화됩니다. PyTorch의 가장 큰 강점은 유연성입니다. 개발자는 AI 모델이 실행되는 동안에도 실시간으로 모델을 수정하고 실험할 수 있습니다. 

머신 러닝 모델을 구축하고 실행하는 단계를 살펴보면서 PyTorch가 어디에 활용되는지 알아보겠습니다.

계획 및 데이터 준비
첫 단계는 문제를 정의하고 데이터를 준비하는 것입니다. PyTorch는 데이터 정리 툴이 아니므로, 개발자는 별도의 툴(예: Pandas 또는 SQL)을 사용해 데이터를 정리합니다. 문서를 분석하고 구조화된 데이터로 변환하기 위해 Docling을 사용할 수도 있습니다. PyTorch는 이렇게 준비된 데이터를 받아 신경망에 입력합니다. 

모델 학습
이 단계에서 PyTorch는 개발자가 AI 모델을 설계하고 학습시키는 주요 작업 공간 역할을 합니다. 코드가 작성되면 PyTorch는 범용 브리지처럼 작동해 데이터 텐서를 하드웨어 가속기로 전달합니다. 하드웨어 가속기로는 CUDA를 사용하는 NVIDIA 그래픽 처리 장치(GPU), ROCm을 통한 AMD GPU, Intel 및 Apple Silicon 기반 시스템 등이 있습니다. (CUDA와 텐서에 대해서는 뒤에서 더 자세히 설명합니다.) 엔터프라이즈 AI 모델에서는 보통 이 학습 코드를 Docker 컨테이너로 패키징한 후 쿠버네티스 클라우드 클러스터로 전송합니다. (Docker와 쿠버네티스에 대해서도 뒤에서 더 자세히 설명합니다.)

모델 평가
이 단계에서 개발자는 PyTorch를 사용해 새로운 데이터 세트로 모델 성능을 테스트합니다. 이때 개발자는 모델의 내부 설정을 고정해 학습을 일시 중지하고 모델의 순수한 예측 성능을 평가할 수 있습니다.

배포 
개발자가 PyTorch로 모델 학습을 마치면, 조정된 수학적 설정(가중치와 편향, 즉 모델 매개변수)으로 채워진 대용량 파일이 남습니다. 이 단계에서 AI는 학습에서 추론으로 전환됩니다. 이 시점부터 AI는 학습을 멈추고 학습한 내용을 바탕으로 예측을 시작합니다. AI를 실행하려면 AI '두뇌'를 프로덕션 Docker 이미지로 패키징해 Amazon Web Services(AWS), Google Cloud, Microsoft Azure와 같은 클라우드 플랫폼으로 보낼 수 있습니다. 모델이 클라우드에 도달하면 쿠버네티스가 인프라와 확장을 관리하고, vLLM 같은 추론 엔진이 계산 속도와 성능을 최적화합니다. 

PyTorch를 사용하면 머신 러닝 및 딥러닝 애플리케이션을 구축할 수 있습니다. PyTorch는 다음과 같은 모델을 학습시키는 데 널리 사용됩니다.

대규모 언어 모델(LLM). PyTorch는 OpenAI의 초기 GPT 모델과 Meta의 Llama 시리즈에 사용되었습니다.

컴퓨터 비전. 자율 주행 자동차, 의료 영상, 안면 인식 소프트웨어는 이미지 분류와 객체 탐지가 필요한 파이프라인을 구축하기 위해 PyTorch(특히 TorchVision 라이브러리 패키지)를 사용하는 경우가 많습니다. 

이미지 생성기. PyTorch로 텍스트-이미지 모델을 학습시킬 수 있습니다. PyTorch는 수백만 또는 수십억 개의 이미지를 분석하고 AI가 시각 콘텐츠를 생성하는 방법을 학습하는 데 필요한 기반 수학 연산을 제공합니다. 

자연어 처리(NLP) 및 음성. PyTorch로 텍스트-음성 및 음성-텍스트 모델을 학습시킬 수 있습니다. PyTorch는 음파와 구조화되어 읽을 수 있는 텍스트 사이의 관계를 해석합니다. 또한 PyTorch를 사용해 번역 툴을 만들 수도 있습니다.

텐서는 현대적인 AI의 기본 구성 요소입니다. AI 모델이 처리할 수 있으려면 모든 단어, 이미지, 영상, 음파가 먼저 텐서로 변환되어야 합니다. 

PyTorch를 텐서를 사용해 코딩하는 라이브러리라고도 합니다. 텐서는 원시 데이터와 모델 매개변수를 나타내는 체계적인 숫자 배열입니다. PyTorch는 심층 신경망을 구축하고 실행하는 데 필요한 툴을 제공합니다. 구조화된 텐서를 이러한 신경망에 입력하면 PyTorch가 AI 모델의 계산 '두뇌'를 구동합니다. 

간단히 말해 텐서는 숫자를 담는 컨테이너입니다. 텐서는 단일 숫자(스칼라라고도 함)부터 다차원 숫자 그리드까지 다양한 형태일 수 있습니다. 텐서는 차원 수에 따라 크기가 달라집니다.

  • 스칼라는 0차원 텐서입니다. 하나의 숫자입니다.
  • 벡터는 1차원 텐서입니다. 스칼라가 한 줄로 배열된 형태, 즉 숫자 행입니다.
  • 행렬은 2차원 텐서입니다. 스프레드시트처럼 숫자가 격자 형태로 배열된 것입니다.
  • 3차원 이상의 텐서는 고차원 텐서로 간주됩니다. 루빅스 큐브처럼 숫자 그리드가 중첩되어 쌓인 형태입니다. 
A diagram illustrating tensors from 0D to 3D as a scalar, a vector, a matrix, and a cube

텐서는 4차원, 5차원 등 차원을 계속 확장할 수 있습니다. PyTorch는 고차원 텐서를 사용해 컬러 이미지나 영상 시퀀스 같은 복잡한 데이터를 쌓고 구조화할 수 있습니다.

 

A diagram of tensors: a single 3D cube, a row of 4D cubes, and a 3x3 block of 5D cubes

그런데 왜 차원에 관해 이야기하는 걸까요?

PyTorch가 데이터를 처리할 때는 고차원 공간이라는 곳에서 정보를 텐서로 표현합니다. 고차원 공간은 수십 개에서 수천 개에 이르는 방향과 차원을 가진 추상적인 수학적 영역입니다. AI 모델은 이 공간에서 좌표를 매핑하고 측정하면서 개념을 배치하고 분석할 수 있습니다.

우리가 사는 3차원 세상에서는 수천 개의 차원이 존재하는 공간을 상상하기 어렵습니다. 하지만 컴퓨터는 선형대수학을 활용해 데이터를 고차원 공간에 매핑하고 점들 사이의 공간적 관계를 계산합니다. 이것이 AI가 학습하는 방식입니다. 

PyTorch를 사용하면 데이터를 구조화된 숫자 그리드(텐서)로 변환하고, 이 텐서를 신경망에 통과시킬 수 있습니다. 신경망은 이 데이터를 처리하면서 내부 매개변수를 점진적으로 조정합니다. 이러한 매개변수는 모델에 따라 수십 개에서 수백 개, 수조 개에 이를 수 있습니다. 이러한 과정에서 모델은 데이터의 패턴과 관계를 인식하는 방법을 학습합니다. 학습된 이 패턴을 바탕으로 모델은 이전에 본 적 없는 새로운 정보에 대해 예측할 수 있습니다. 이러한 학습 동작을 통해 'AI 두뇌'가 형성됩니다.

PyTorch와 TensorFlow는 모두 데이터를 텐서로 변환하고 이 텐서를 디지털 공간에 매핑하여 컴퓨터가 학습할 수 있도록 지원하는 오픈소스 툴입니다. PyTorch가 유연성과 사용 편의성에 중점을 둔다면, TensorFlow는 확장성과 구조에 중점을 둡니다. 

PyTorch는 2017년에 Meta(이전 Facebook)가 오픈소스 제품으로 릴리스했습니다. 처음에는 연구 중심 프레임워크로 처음부터 설계된 내부 툴이었으며, 신경망 아키텍처를 더 빠르고 유연하게 테스트하는 방법을 제공했습니다. 개발자들이 PyTorch를 TensorFlow보다 사용하기 쉽고 빠른 반복 작업에 더 적합하다고 느끼면서 PyTorch는 인기를 얻었습니다.

TensorFlow는 2015년에 Google이 오픈소스 제품으로 릴리스했습니다. 처음에는 연구와 프로덕션을 위한 내부 툴로 출발했으며, 대규모 엔터프라이즈 시스템에서 실행되도록 설계되었습니다. 이러한 특성 덕분에 TensorFlow는 수백만 명의 사용자와 대규모 클라우드 서버를 다루는 기업 환경에서 인기를 얻었습니다.

오늘날 PyTorch와 TensorFlow는 상당수의 기능을 공유하며, 서로에게서 아이디어를 얻어 꾸준히 발전해 왔습니다. 

CUDA(Compute Unified Device Architecture의 약자)는 개발자가 병렬 처리를 위해 NVIDIA GPU에서 실행되는 코드를 작성할 수 있도록 지원하는 소프트웨어 플랫폼입니다. PyTorch는 CUDA를 디지털 브리지로 사용해 컴퓨터의 주 프로세서에서 NVIDIA GPU로 계산 작업을 넘깁니다. 이러한 방식으로 수십억 건의 계산을 매우 빠르게 실행할 수 있습니다. 

하지만 PyTorch를 사용하는 데 반드시 그래픽 카드나 CUDA가 필요한 것은 아닙니다. CUDA 또는 ROCm과 같은 지원 GPU 플랫폼이 없으면 PyTorch는 자동으로 컴퓨터의 중앙 처리 장치(CPU)에서 워크로드를 실행합니다. CPU에서 PyTorch를 사용하는 방식은 디버깅이나 소규모 모델 실행에는 적합하지만, 대규모 신경망에서 데이터를 몇 시간이 아니라 밀리초 단위로 처리하려면 CUDA가 PyTorch에 가장 적합한 파트너입니다. 

계산 그래프는 수학적 단계를 시각적으로 보여주는 지도입니다. 수학 시스템 안에서 데이터가 흐르는 과정을 추적하고, PyTorch가 각 노드에서 수행한 연산을 보여주고, 네트워크 계층 간의 디펜던시를 강조합니다.

AI 개발에서 계산 그래프는 학습을 위한 청사진 역할을 합니다. 입력이 출력으로 바뀌는 과정을 추적해 컴퓨터가 오류를 계산하고 내부 매개변수를 조정해야 할 때 역방향으로 따라갈 수 있는 명확한 경로를 제공합니다.

동적 계산 그래프(DCG)란?

PyTorch는 동적 계산 그래프(DCG)를 사용해 딥러닝 모델을 실행합니다. 동적 계산 그래프와 일반 계산 그래프, 즉 정적 그래프의 차이는 유연성에 있습니다. 

정적 계산 그래프와 동적 계산 그래프의 차이를 이해하려면 선로(딥러닝 모델의 아키텍처) 위를 달리는 기차(데이터)를 떠올리면 됩니다. 

정적 그래프는 기차를 운행하기 전에 전체 선로를 먼저 깔아 두는 것과 같습니다. 모든 기차가 같은 경로를 따라가야 하며, 필요한 우회로나 방향 전환도 모두 예상해 만들어 두어야 합니다. 데이터를 실은 기차가 미리 선로를 깔아 두지 않은 경로로 가야 한다면 시스템이 중단되고, 선로를 다시 깔아야 합니다. 즉, 정적 그래프에서는 데이터를 실행하기 전에 모델 전체를 먼저 구축해야 합니다. 

동적 그래프는 기차가 출발하기 직전에 매번 새로운 경로를 설계하고, 기차에 실린 내용에 맞춰 경로를 조정하는 것과 같습니다. 데이터가 짧은 문장이라면 PyTorch는 이 데이터를 모델에 통과시킬 짧은 선로를 만듭니다. 데이터가 긴 문단이라면 PyTorch의 동적 그래프는 데이터를 모델에 통과시킬 더 긴 선로를 만듭니다.

동적 접근 방식의 장점은 반복 작업마다 유연하게 대응할 수 있고 디버깅이 더 쉽다는 점입니다. PyTorch가 실시간으로 선로를 한 줄씩 만들어 나가기 때문에 문제가 발생하면 오류를 일으킨 줄에서 기차가 멈춥니다. 

정적 그래프에서는 전체 선로를 모두 깔고 난 후에 오류가 발생하며, 무엇이 잘못되었는지 명확하게 알기 어렵습니다. 당연히 이 과정에서 답답함을 느낄 수 있습니다. 

autograd란?

autograd는 도함수와 그래디언트 계산을 자동으로 수행하는 PyTorch의 기본 제공 엔진입니다. PyTorch는 테이프 기반(또는 레코더 기반) 시스템이라는 특정 접근 방식을 사용하는데, 이는 카세트테이프나 비디오테이프의 작동 방식과 비슷합니다. 

학습 중 PyTorch 모델에 데이터를 입력하면 autograd는 순전파 또는 '테이프 레코더' 기능을 켜서 모든 수학 연산과 그 연산이 일어나는 순서를 캡처하고 기록합니다. 또한 역전파 또는 '되감기' 기능도 수행할 수 있습니다. autograd는 수학 연산을 역순으로 실행하여 각 매개변수가 오류에 얼마나 영향을 미쳤는지, 그리고 이를 어떻게 조정해야 하는지를 계산합니다. 

autograd는 테이프를 '되감기' 하면, 학생의 긴 풀이 과정을 채점하는 수학 교사처럼 작동합니다. 잘못된 최종 답에서 출발해 각 계산 과정을 거슬러 올라가면서 공식이 어디에서 잘못되었는지, 다음 시도에서 어디를 조정해야 하는지 찾아냅니다. 

autograd를 통한 PyTorch 학습 최적화

AI 모델이 올바른 응답을 제시하게 하는 것은 과제의 절반에 불과합니다. 조직은 모델이 특정 결정에 도달한 이유도 이해해야 합니다. 투명성과 설명 가능성(explainability)을 우선시하면 개발자는 기술적으로 우수할 뿐만 아니라 안전하고 공정하며 사람의 가치와 요구에 맞는 AI 시스템을 구축할 수 있습니다.​ 

동적 계산 그래프와 autograd 같은 PyTorch의 기본 기능은 데이터의 단계별 수학적 흐름을 추적하지만, 사람이 읽을 수 있는 형태로 만들어진 것은 아닙니다. PyTorch는 이러한 간극을 메우기 위해 설명 가능한 AI 전용 라이브러리인 Captum을 제공합니다. Captum은 autograd의 데이터를 사용해 어떤 입력이 최종 출력에 가장 큰 수학적 영향을 미쳤는지 계산함으로써, 개발자가 AI 모델의 블랙박스 내부를 들여다볼 수 있도록 지원합니다. 

이러한 투명성은 다음과 같은 장점으로 이어집니다.

문제 해결 가속화. 데이터 사이언티스트가 모델이 출력을 생성하는 과정에서 모델의 로직을 이해할 수 있으면 개발, 디버깅, 의사 결정이 더 빠르고 쉬워집니다.

더 효율적인 규제 컴플라이언스. 설명 가능한 AI는 기업의 규정 및 개인정보 보호법 준수를 지원할 수 있습니다.

신뢰 강화. 에이전틱(Agentic) AI와 같은 기술을 구현하려면 알고리즘과 사람 간에 신뢰가 있어야 합니다.

소버린 AI로 가는 길. 소버린 AI는 AI 시스템을 제어할 수 있는 권한을 보유하는 것을 의미합니다. 이를 위해서는 모델이 데이터를 처리하고 인사이트를 생성하는 방식을 깊이 있게 파악할 수 있어야 합니다. 

소버린 AI 아키텍처: 분산 학습 확장 

PyTorch는 로컬 시스템과 클라우드 플랫폼 모두에 설치하고 실행할 수 있습니다. 먼저 Python만 설치하면 됩니다. Python 코딩에 익숙하다면 초보자라도 PyTorch를 꽤 직관적으로 사용할 수 있습니다. 

Google Colab처럼 브라우저 기반 클라우드 환경에서 PyTorch를 사용할 수도 있습니다. 이러한 환경에는 PyTorch와 GPU 액세스가 사전 설치되어 제공됩니다. PyTorch를 사용하다 보면 에코시스템이 다음과 같은 인기 툴로 확장된다는 것을 알 수 있습니다.

  • Hugging Face: 개발자가 모델을 처음부터 구축하지 않고 사전 학습된 PyTorch 모델을 다운로드할 수 있는 곳입니다.
  • PyTorch Lightning: 복잡한 엔지니어링 코드를 숨겨 더 깔끔한 개발자 경험을 제공하는 PyTorch용 고수준 '래퍼'입니다.
  • ONNX: Open Neural Network Exchange(ONNX)는 PyTorch 모델을 표준화된 청사진으로 변환하여, 코드를 재작성하지 않고도 다양한 소프트웨어 시스템이나 하드웨어 칩에서 읽고 실행할 수 있도록 합니다. 

PyTorch 공식 튜토리얼 살펴보기 → 

Docker는 컴퓨터 환경의 스냅샷을 담는 디지털 운송 컨테이너와 같습니다. PyTorch에서 Docker 기반 워크플로우를 사용하는 목적은 머신 간에 코드를 공유하면서 구성 오류와 시스템 충돌을 방지하는 것입니다.

PyTorch 코드를 Docker 이미지 파일로 옮기면 해당 코드를 실행하는 데 필요한 모든 요소를 컨테이너로 패키징할 수 있으며, 이 컨테이너는 머신의 나머지 환경과 격리된 상태로 유지됩니다. 컨테이너를 팀원에게 보내거나 클라우드 서버로 전송하면 필요한 구성을 모두 갖춘 상태로 다운로드해 실행할 수 있습니다.

PyTorch 제작자와 커뮤니티 구성원은 공식 사전 빌드 Docker 이미지를 유지 관리합니다. 따라서 컴퓨터에 PyTorch를 설치하지 않아도 PyTorch Docker 이미지를 다운로드할 수 있어 개발과 배포가 간소화됩니다. 

PyTorch 모델을 수백만 명의 사용자에게 제공할 수 있을 만큼 확장하려면 워크로드를 처리할 여러 대의 서버가 필요합니다. PyTorch 모델을 실행에 필요한 모든 요소와 함께 Docker 이미지로 컨테이너화하면 쿠버네티스가 해당 컨테이너를 필요한 위치로 옮겨줍니다. 쿠버네티스에서 AI 워크로드를 실행하면 다음과 같은 장점이 있습니다.

자동화된 리소스 오케스트레이션. PyTorch 모델을 작동하려면 GPU, CPU, 메모리, 네트워크 대역폭 등 많은 컴퓨팅 리소스가 필요합니다. 쿠버네티스는 서버 전반에서 사용 가능한 리소스를 추적하고 적합한 위치에 워크로드를 예약하여 PyTorch 모델이 계속 실행되도록 지원합니다. 서버가 충돌하면 쿠버네티스가 오류를 즉시 감지하고 사람의 개입 없이 데이터 트래픽을 다시 라우팅할 수 있습니다. 

확장성. AI 워크로드는 예측하기 어렵습니다. 모델에 갑자기 트래픽이 몰리면 쿠버네티스는 여러 서버에 Docker 컨테이너 복제본을 생성해 급증한 트래픽을 처리할 수 있도록 리소스를 확장합니다. 트래픽이 적을 때는 비용 절감을 위해 리소스를 다시 축소합니다.

분산 학습 지원. AI 모델이 너무 커서 단일 컴퓨터에서 학습하기 어려운 경우, 개발자는 컨테이너를 사용해 여러 머신으로 워크로드를 확장할 수 있습니다. 모델을 Docker 컨테이너로 컨테이너화하고 클라우드 아키텍처를 사용하면 PyTorch가 상호 연결된 GPU 클러스터 전반에 복잡한 수학 연산 처리를 분산할 수 있습니다.

이후 쿠버네티스는 Docker 컨테이너 간 네트워킹을 처리하여 컨테이너가 서로 통신하고 텐서를 동기화하며 하나의 통합된 '두뇌'처럼 계산할 수 있도록 합니다. 이러한 병렬 처리는 전체 학습 시간을 단축합니다.

Red Hat OpenShift에서 분산 AI 학습 실행하기

Red Hat® AIvLLM 기반 서버로 신속하고 유연하며 효율적인 추론 성능을 제공합니다. 모델과 데이터를 안정적으로 연결하여 하나의 플랫폼에서 전문 에이전트의 사용자 지정 및 개발을 통합합니다. 오픈소스 기반의 당사 제품으로 규모와 상관없이 AI 워크플로우의 모든 과정을 완전히 제어할 수 있습니다. 

Red Hat AI Portfolio에 Red Hat AI Enterprise가 포함됩니다. Red Hat AI Enterprise는 모든 인프라에서 AI 추론, 에이전틱 AI 워크플로우, AI 기반 애플리케이션을 배포, 관리, 확장할 수 있는 플랫폼입니다.

Red Hat AI 살펴보기

블로그

Artificial Intelligence (AI)

See how our platforms free customers to run AI workloads and models anywhere

Red Hat과 함께하는 AI 여정: 조직의 AI 여정을 위한 전문성, 교육 및 지원

Red Hat만의 AI 포트폴리오를 살펴보세요. Red Hat AI를 통해 인공지능(AI)을 활용하여 비즈니스 및 IT 목표를 달성할 수 있습니다.

추가 자료

RAG와 미세 조정(fine-tuning) 비교

RAG와 미세 조정(fine-tuning)은 모두 LLM을 향상하는 것을 목표로 하지만 서로 다른 방법을 사용합니다. RAG에서는 모델을 수정하지 않는 반면, 미세 조정(fine-tuning)에서는 매개 변수를 조정해야 합니다.

AIOps 설명

AIOps(IT 운영을 위한 AI)는 머신 러닝과 기타 고급 AI 기술로 IT 운영을 자동화하는 방식입니다.

머신 러닝이란?

머신 러닝이란 명시적으로 프로그래밍하지 않고도 패턴을 찾고, 예측하고, 경험을 통해 배우도록 컴퓨터를 학습시키는 기술입니다.

AI/ML 리소스

주요 제품

  • Red Hat AI

    하이브리드 클라우드 인프라에서 AI 솔루션의 개발과 배포를 가속화하는 유연한 솔루션.