본문 바로가기
AI · 인공지능/AI 칼럼

ChatGPT와 Stable Diffusion을 낳은「기계 학습 소프트웨어」의 10년간의 흐름을 전문가가 해설

by 두우우부 2023. 1. 18.
반응형



최근에는 대화형 AI ChatGPT와 이미지 생성 AI Stable Diffusion 등 다양한 AI가 등장해 세상의 주목을 받고 있습니다. 이러한 AI를 개발하는 데 사용되는 기계 학습 소프트웨어의 지난 10년간의 변천에 대하여 반도체 분야의 애널리스트 딜런 파텔 씨가 해설하고 있습니다.

How Nvidia's CUDA Monopoly In Machine Learning Is Breaking - OpenAI Triton And PyTorch 2.0

How Nvidia’s CUDA Monopoly In Machine Learning Is Breaking - OpenAI Triton And PyTorch 2.0

Over the last decade, the landscape of machine learning software development has undergone significant changes. Many frameworks have come and gone, but most have relied heavily on leveraging Nvidia's CUDA and performed best on Nvidia GPUs. However, with th

www.semianalysis.com


◆ TensorFlow VS PyTorch

몇 년 전의 기계 학습 프레임워크 에코시스템에서는 Google의 TensorFlow가 프런트 러너이며 기계 학습 업계를 지배할 준비가 되어 있는 것처럼 보였습니다. 또한, Google은 기계 학습에 특화된 프로세서인 TPU를 개발 · 전개했다는 점에서도 선구자적 메리트를 가졌습니다. 그러나 구글은 이러한 선구자적 우위를 활용하여 기계 학습 업계를 지배할 수 없었으며, 파이썬의 기계 학습 라이브러리인 파이토치가 그 존재감을 강화하게 되었습니다.

PyTorch는 Facebook(현재 Meta)의 인공지능 연구팀에 의해 개발되었으며, 이미지 생성 AI Stable Diffusion에서도 사용되고 있습니다. PyTorch가 TensorFlow에 비해 우위를 차지한 이유 TensorFlow는 "그래프 모드"라는 스크립트 실행 방법을 채용하고 있는 반면, PyTorch는 "Eager 모드"라는 방법을 채용하고 있다는 점이 큽니다.

Eager 모드는 다른 Python 코드와 마찬가지로 행별로 각 작업을 수행하므로 중간 작업의 결과를 확인하고 모델의 동작을 쉽게 확인할 수 있다는 이점이 있습니다. 이것에 의해, 코드의 이해나 디버그를 하기 쉽다는 것. 반면에 그래프 모드는 실행 조작을 나타내는 계산 그래프의 정의 페이즈와, 최적화된 버전의 계산을 수행하는 페이즈의 두 가지만 있습니다. 이로 인해 계산이 끝날 때까지 무슨 일이 일어나고 있는지 확인할 수 없으므로 코드를 이해하고 디버깅하기가 어렵습니다.

두 모드의 차이에 대해 그래프 모드는 C++과 같이 사전에 일괄적으로 코드를 변환하는 컴파일형 언어와 비슷하며, Eager 모드는 Python처럼 중간 표현을 순차적으로 해석하면서 실행하는 인터프리터 언어와 비슷하다고 합니다. 그 후 TensorFlow에도 디폴트로 Eager 모드가 탑재되게 되었지만, 연구 커뮤니티나 거대 기술 기업에서는 주로 PyTorch가 정착되었다는 것.

Google은 자체 소프트웨어 스택과 하드웨어를 선호하며 PyTorch와 GPU를 사용하지 않기 때문에 기계 학습 커뮤니티 내에서 다소 고립되어 있습니다. 또한 OpenAI와 같은 대규모 언어 모델 및 기타 AI 스타트업으로 인해 검색 및 자연언어처리에 있어서 구글의 우위성을 위협받고 있다고 말하고들 있지만, 여전히 Google은 기계 학습 모델의 최전선에 있다고...


◆ 기계 학습 트레이닝에 있어서 대역폭의 문제

기계 학습 트레이닝을 간단한 형식으로 나누면,「컴퓨팅(FLOPS)」과「메모리(대역폭)」의 2개가 있습니다. 이 중 FLOPS는 각 레이어 내에서 계산 실행 속도를 제한하는 요소이며 대역폭은 데이터가 계산을 수행하는 컴퓨팅 리소스에 도달할 때까지의 속도를 제한합니다. 한 때 기계 학습 훈련에 걸리는 시간은 컴퓨팅 능력에 의해 제한되고 있었지만, NVIDIA가 고성능 GPU를 개발한 결과 이 점은 해결되어 현재는 대역폭이 더 문제가 되고 있다는 것.

AI 개발의 진전에 의해 모델 사이즈가 급증하고 있기 때문에, 수백GB ~ 수십TB의 메모리를 필요로 하는 대규모 언어 모델에서는, 대역폭이 큰 문제가 됩니다. 데이터 로드가 가장 빠른 것은 온칩 SRAM 메모리이지만 인공지능 기업인 Cerebras가 개발한 20cm×22cm의 거대 칩 'Wafer Scale Engine 2'조차 40GB의 온칩 SRAM이 한계이며 가격은 수십억에 이른다고 합니다.

2.6조 개의 트랜지스터를 탑재한 대형 칩 "Wafer Scale Engine 2"를 Cerebras가 개발

Cerebras’ New Monster AI Chip Adds 1.4 Trillion Transistors

Shift to 7-nanometer process boosts the second-generation chip’s transistor count to a mind boggling 2.6-trillion

spectrum.ieee.org


온칩 SRAM의 다음으로 읽기 속도가 빠른 것은 DRAM이며, 온칩 SRAM과 비교하면 자릿수 차이에 레이턴시가 늘어나지만, '비용'면에서는 100분의 1까지 내려간다는 것. 그러나 2012년 이후에는 DRAM의 비용 개선이 진행되지 않았고, 2022년 시점에서는 서버에서 차지하는 총비용의 50%를 DRAM이 차지하고 있다고 지적하였습니다.

NVIDIA가 개발하는 A100 GPU와 차세대 H100 GPU에서는 FLOPS는 6배 이상으로 증가하지만 메모리 대역폭은 1.65배로만 증가합니다. 대규모 언어 모델의 트레이닝에 있어서는, FLOPS의 사용률이 60%만 되어도「사용률이 매우 높다」라고 보며, H100 GPU에서는 한층 더 사용률의 저하가 우려되고 있습니다.


◆ PyTorch의 연산자의 증가와 대책

Google의 TensorFlow에 비해 우위에 서 있는 PyTorch입니다만, Eager 모드는 각 조작에 있어서 메모리로부터 데이터를 읽어 계산해, 다음의 계산이 처리되기 전에 결과를 메모리로 전송합니다. 이로 인해 대규모로 최적화가 수행되지 않으면 메모리 대역폭이 크게 증가합니다.

따라서 Eager 모드에서 실행되는 모델에서는 메모리 읽기/쓰기를 최소화하기 위해 여러 함수를 하나의 경로로 결합하는 연산자 융합이 수행됩니다. 이를 통해 메모리 대역폭과 메모리 크기 비용을 줄일 수 있지만 PyTorch 연산자는 지난 몇 년 동안 2,000개 이상으로 폭증하여 개발자가 적절한 연산자를 선택하기가 어렵습니다.

이런 가운데 PyTorch는 Meta와는 독립적으로 Linux Foundation으로 이주하여 2022년 12월에는 'PyTorch 2.0'을 공개했습니다.

이미지 생성 AI의 Stable Diffusion에도 사용되는 AI 프레임워크 'PyTorch'가 Meta와는 독립적으로 Linux Foundation으로 마이그레이션

Announcing the PyTorch Foundation to Accelerate Progress in AI Research | Meta

The PyTorch Foundation will help maintain open collaboration and standardize resources for AI research.

about.fb.com


PyTorch 2.0에는 많은 변화가 있었지만, 큰 차이는 그래프 실행 모델을 지원하는 컴파일된 솔루션이 탑재되어 있다는 점으로 하드웨어 리소스 최적화가 훨씬 간단해졌습니다. 또한, 연산자의 수를 250 이하로 줄여 구현을 간단하게 한「PrimTorch」나, 메모리에 기입할 필요가 있는 중간 조작과 융합할 수 있는 중간 조작을 결정하는「TorchDynamo」, 컴파일러 작업의 부하를 경감하는「 TorchInductor」등의 새로운 기능도 탑재되고 있어 메모리 대역폭과 용량 요건이 대폭 삭감되었다고 합니다. PyTorch 2.0은 2023년 3월에 정식 버전의 공개가 예정되어 있습니다.


◆ OpenAI의 AI용 언어 'Triton'

AI 연구단체 OpenAI는 2021년 7월 오픈 소스 신경망용 프로그래밍 언어 'Triton'을 공개했습니다. Triton은 NVIDIA가 개발 · 제공하는 GPU용의 범용 병렬 컴퓨팅 플랫폼인 CUDA를 넘는 생산성과 고속 코드 기술을 가능하게 해 GPU 프로그래밍에 익숙하지 않은 기계 학습 엔지니어나 연구자도 이용하기 쉽다고 합니다.

오픈 소스 신경망을 위한 프로그래밍 언어 "Triton"을 OpenAI가 공개

Introducing Triton: Open-Source GPU Programming for Neural Networks

We're releasing Triton 1.0, an open-source Python-like programming language which enables researchers with no CUDA experience to write highly efficient GPU code—most of the time on par with what an expert would be able to produce. Triton makes it possibl

openai.com


CUDA는 가속화된 컴퓨팅을 전문으로 하는 사람들에게 사용되고 있지만, 기계 학습 연구자나 데이터 과학자에게는 그다지 사용되지 않습니다. 그 이유는 CUDA를 효율적으로 사용하는 것은 어렵고 하드웨어 아키텍처를 깊이 이해할 필요가 있기 때문에 개발 프로세스가 지연될 가능성이 있기 때문입니다.

Triton은 그 격차를 메우는 존재가 될 수 있기 때문에 가까운 장래에 Triton이 NVIDA 이외의 GPU를 공식적으로 지원하게 되면, NVIDIA의 아성을 무너뜨릴 수 있다고 보고 있습니다. 또한 NVIDIA의 문제에 대해서, "NVIDIA라는 거대 조직은 기계 학습 하드웨어와 소프트웨어에 있어서의 그들의 우위성을 활용하지 못하였고, 그들의 플랫폼은 기계 학습을 위한 기본 컴파일러가 되지 못하였습니다. 이는 NVIDIA가 사용성을 중시하지 않았기 때문이며, OpenAI나 Meta 등의 기업에서 다른 하드웨어에도 이식 가능한 소프트웨어 스택을 만들어 버렸기 때문입니다.

반응형