ChatGPT 확장: 실제 엔지니어링 도전 과제 5개
본 글은 Gergely Orosz의 Scaling ChatGPT: Five Real-World Engineering Challenges를 의역한 글입니다. 링크에 방문하여 원문과 더 다양한 글들을 만나보세요!
‘실제 엔지니어링 도전 과제’ 시리즈에서는 기술 회사들의 흥미로운 소프트웨어 엔지니어링 또는 엔지니어링 관리 사례를 해석합니다.
2022년 11월, ChatGPT가 등장하며 인공지능(AI) 응용의 폭발적으로 발전하는 순간을 맞이했고, 이는 현재까지도 기술에 대한 투자 붐을 일으키는 촉매제가 되었습니다. CEO 샘 알트만은 2023년 11월에 이 제품이 주간 1억 명의 사용자에 도달했다고 발표했으며, 이는 이 분야에서도 전례 없는 성장 속도입니다.
이전에 OpenAI와 ChatGPT 팀이 얼마나 빠르게 제품을 출시하는지에 대해 다뤘습니다. 해당 기사에서는 조직의 설정, 응용 팀과 연구 팀의 통합, 분리 및 점진적 출시 전략 등에 대해 살펴봤습니다.
하지만 폭발적인 성장과 함께 오는 아주 현실적인 확장 문제들은 어떨까요? 이를 더 알아보기 위해 ChatGPT 출시 및 확장을 주도한 응용 엔지니어링 팀의 Evan Morikawa에게 다시 질문했습니다.
오늘 Evan은 엔지니어링 도전 과제와 그 해결 방법을 공개합니다. 다룰 내용은 다음과 같습니다:
- OpenAI와 Evan 소개
- GPU의 중요성
- ChatGPT4의 작동 원리
- 다섯 가지 확장 도전 과제:
- KV 캐시 및 GPU RAM
- 배치 크기 최적화
- 측정할 올바른 지표 찾기
- 어디서든 GPU 찾기
- 자동 확장의 어려움
- 배운 교훈
그럼, Evan에게로 넘어가 보겠습니다.
1. OpenAI와 Evan 소개
어떻게 OpenAI에 합류하게 되었고, ChatGPT를 만드는 응용 엔지니어링 그룹을 이끌게 되었나요?
OpenAI는 ChatGPT를 포함한 여러 제품을 제작한 회사입니다. 여기에는 DALL·E 3(이미지 생성), GPT-4(고급 모델), 그리고 개발자와 기업들이 AI를 그들의 프로세스에 통합할 수 있게 해주는 OpenAI API가 포함됩니다. ChatGPT와 API는 GPT-3, GPT-3.5, GPT-4와 같은 여러 모델 클래스를 제공합니다.
이 제품들을 만들고 확장하는 엔지니어링, 제품, 디자인 조직은 “Applied”라고 불리며, 2020년에 GPT-3가 출시되었을 때 설립되었습니다. 이 조직은 OpenAI의 연구를 안전하게 세계에 전달하는 것을 광범위하게 목표로 합니다. OpenAI 자체는 2015년에 설립되었으며, 오늘날 회사의 핵심은 여전히 안전하고 정렬된 인공지능 일반(AGI)을 만드는 것을 목표로 하는 연구실입니다.
응용 그룹과 ChatGPT 내 OpenAI 저는 2020년 10월에 OpenAI에 합류했으며, Applied가 막 시작되었을 때였습니다. 저는 머신 러닝 박사 학위가 없었지만, API와 엔지니어링 팀을 구축하는 아이디어에 흥미를 느꼈습니다. 저는 초기부터 ChatGPT의 출시 및 확장을 통해 응용 엔지니어링 조직 전체를 관리했습니다. Evan의 이야기는 Inside OpenAI: how does ChatGPT ship so quickly?에서 더 자세히 다룹니다.
2. ChatGPT의 작동 원리? 개요
지난 몇 년간 ChatGPT를 처음부터 구축하지 않은 사람들을 위해, 그것이 어떻게 작동하는지 간단히 설명하겠습니다.
여러분이 ChatGPT에 질문을 할 때, 여러 단계가 진행됩니다:
- 입력: 텍스트 입력을 받습니다.
- 토큰화: 이를 토큰으로 나눕니다. 토큰은 몇 개의 유니코드 문자에 해당하며, 단어라고 생각할 수 있습니다.
- 임베딩 생성: 각 토큰을 숫자의 벡터로 변환합니다. 이를 임베딩이라고 합니다.
- 임베딩을 모델 가중치로 곱셈: 임베딩을 수백억 개의 모델 가중치로 곱합니다.
- 예측 샘플링: 이 곱셈의 끝에, 숫자 벡터는 다음에 나올 가능성이 가장 높은 토큰의 확률을 나타냅니다. 이 다음에 가장 가능성이 높은 토큰이 ChatGPT에서 나오는 다음 몇 글자입니다.
이 단계를 시각화해 봅시다. 첫 두 단계는 간단합니다:
(그림: ChatGPT에 질문을 할 때 발생하는 단계 1 및 2) 토큰화는 텍스트를 단어로 분할하는 것을 의미하지 않을 수 있습니다. 토큰은 단어의 부분 집합일 수도 있습니다.
임베딩은 대형 언어 모델(LLM)의 핵심이며, 다음 단계에서 토큰에서 이를 생성합니다:
(그림: ChatGPT에 질문을 할 때 발생하는 단계 3. 임베딩은 토큰을 벡터로 나타냅니다. 위의 임베딩 값은 예시입니다.) 임베딩은 토큰의 다차원 표현입니다. 일부 모델은 단어 또는 구 사이의 의미론적 의미와 관계를 명시적으로 캡처할 수 있도록 훈련됩니다. 예를 들어, “개”와 “강아지”의 임베딩은 “개”와 “컴퓨터”의 임베딩보다 여러 차원에서 더 가깝습니다. 이러한 다차원 임베딩은 기계가 인간 언어를 더 효율적으로 이해하도록 돕습니다.
모델 가중치는 가중 임베딩 행렬을 계산하는 데 사용되며, 이는 다음 가능성 있는 토큰을 예측하는 데 사용됩니다. 이 단계에서는 OpenAI의 가중치 행렬을 사용해야 하며, 이는 수백억 개의 가중치로 구성되어 있으며, 이를 임베딩으로 구성된 행렬과 곱합니다. 이는 매우 연산 집약적인 곱셈입니다.
(그림: ChatGPT에 질문을 할 때 발생하는 단계 4. 가중치 행렬에는 수백억 개의 모델 가중치가 포함되어 있습니다.) 샘플링은 수십억 번의 곱셈을 수행한 후 수행됩니다. 최종 벡터는 다음 가능성 있는 토큰의 확률을 나타냅니다. 샘플링은 다음 가능성 있는 토큰을 선택하여 사용자에게 다시 보내는 것입니다. ChatGPT에서 나오는 각 단어는 이 과정이 초당 여러 번 반복된 것입니다.
(그림: 단계 5. 우리는 다음 가능성 있는 토큰의 확률을 얻게 됩니다. 미리 훈련된 데이터, 프롬프트 및 지금까지 생성된 텍스트를 기반으로 다음 가장 가능성 있는 단어를 샘플링합니다. 이미지 출처: What is ChatGPT doing and why does it work? by Stephen Wolfram)
3. GPU의 중요성
GPUs(그래픽 처리 장치)는 ChatGPT와 이를 기반으로 한 API의 생명줄입니다. GPU의 극도로 부족한 공급, 특성 및 비용은 우리가 운영하고 확장하는 방식을 지배합니다.
배경을 설정하기 위해 사용하는 GPU 중 하나를 소개하겠습니다.
(그림: NVIDIA H100. 이미지 출처: NVIDIA)
이것은 NVIDIA H100입니다. 각 GPU에 특수한 고대역 메모리(HBM)가 부착되어 있습니다. GPU는 NVLink라는 고대역 인터커넥트를 사용하여 서로 통신할 수 있으며, Infiniband라는 특수 이더넷 대안을 사용하여 외부 세계와 통신할 수 있습니다. 우리는 이들 중 8개를 단일 노드에 포장합니다. Nvidia는 DGX H100이라는 유사한 구성을 판매합니다.
우리에게는 추가적인 컴퓨팅 또는 대역폭이 ChatGPT 사용자 경험에 직접적인 영향을 미칩니다.
4. 다섯 가지 확장 도전 과제
GPU와 관련된 확장 도전 과제는 많습니다. 여기에서는 다음 다섯 가지에 초점을 맞춥니다:
#1: GPU RAM 및 KV 캐시 #2: 배치 크기, 연산 대 바이트 및 산술 강도 최적화 #3: 측정할 올바른 지표 찾기 #4: 어디서든 GPU 찾기 #5: 자동 확장 불가
이들을 이해하는 것은 ChatGPT를 확장하는 데 중요했습니다. 이제 각 문제를 자세히 살펴보겠습니다!
도전 과제 #1: KV 캐시 및 GPU RAM
우리의 큰 문제는 자기 주의(self-attention)가 이차적으로 확장된다는 것입니다. 즉, 생성하는 토큰이 많아질수록 이차적으로 더 많은 연산이 필요합니다(100번째 토큰의 경우 약 10,000번의 연산이 필요하지만, 1,000번째 토큰의 경우 약 1,000,000번의 연산이 필요합니다). 성능을 어떻게 향상시킬 수 있을까요?
이전 토큰에 대해 수행한 수학 계산을 캐시하는 초기 해결책은 KV 캐시입니다. 우리는 머신러닝(ML) 모델에서 주의 메커니즘을 사용합니다. 이 모델에서는 세 가지 벡터를 사용합니다:
Q: 우리가 포함하는 것과 관련된 벡터
K: 출력으로 사용되는 입력과 관련된 벡터
V: 학습된 벡터, 즉 계산의 출력
우리는 K와 V를 캐시할 수 있기 때문에 “KV 캐시”라고 부릅니다. 그러나 Q는 매번 변경되기 때문에 캐시할 수 없습니다.
우리는 KV 캐시를 GPU RAM에 저장해야 합니다. 이는 고대역폭 메모리(HBM)를 사용할 때 GPU RAM 내에서 데이터 이동 속도가 약 3TB/sec이기 때문입니다. 그러나 PCIe 버스(고속 버스 표준, 일반적으로 마더보드에서 데이터 전송에 사용됨)를 통해 데이터를 전송하면 약 30GB/sec의 속도를 얻을 수 있습니다. HBM을 사용하면 PCIe보다 약 두 배 빠릅니다(약 100배).
HBM이 이렇게 빠른 이유는 물리적으로 GPU에 쌓인 레이어로 결합되어 있으며, 엄청난 병렬 데이터 처리 핀이 있기 때문입니다.
이 GPU HBM RAM은 매우 비싸고 상당히 제한적입니다. 대부분의 HBM RAM은 모델 가중치를 보유하는 데 사용됩니다. 모든 캐시와 마찬가지로, 캐시가 가득 차면 오래된 데이터를 “만료”시켜 공간을 확보합니다.
우리의 사용 사례에서 “캐시 미스”는 비용이 많이 듭니다. 캐시 미스란 계산에 필요한 캐시된 값을 찾지 못하는 것을 의미합니다. 일반적으로 이 값이 “만료”되어 공간을 확보하기 위해 HBM 메모리에서 제거되었기 때문입니다. 캐시 미스가 발생하면 전체 ChatGPT 대화를 다시 계산해야 합니다! 그리고 우리가 1,000번째 문자에 도달하면 약 100만 개의 연산에 가깝게 될 수 있습니다!
우리의 인프라는 GPU RAM을 사용자 간에 공유합니다. 이는 사용자가 시스템(GPU 캐시)에서 대화가 너무 오래 비활성 상태로 유지되면 다른 대화를 위해 공간을 확보하기 위해 제거될 수 있다는 것을 의미합니다.
이 캐싱 접근 방식에는 여러 가지 의미가 있습니다:
- GPU RAM은 가장 소중한 자원입니다. 실제로 LLM 운영에서 GPU RAM은 컴퓨팅 자원보다 가장 빈번한 병목 현상입니다.
- 캐시 미스 비율은 매우 중요합니다! 캐시 미스는 시스템이 KV 캐시와 같은 캐시에서 데이터를 검색하려고 하지만 아무것도 캐시되지 않은 경우를 의미합니다. 캐시 미스는 GPU 작업량에 비선형적인 영향을 미칩니다. 캐시 미스 비율이 높을수록 GPU는 선형적으로가 아니라 이차적으로 더 많은 작업을 해야 합니다.
- ChatGPT를 확장할 때 단순한 CPU 활용률 메트릭을 보는 것이 아니었습니다. 우리는 KV 캐시 활용률을 확인하고 GPU RAM을 최대한 활용하는 방법을 찾아야 했습니다.
도전 과제 #2: 배치 크기 최적화 ChatGPT를 확장할 때 균형을 맞춰야 하는 두 번째 메트릭은 배치 크기입니다. 대략적으로 배치 크기는 GPU를 통해 실행하는 동시 요청 수입니다.
H100 GPU는 최대 3.35TB의 RAM을 초당 레지스터로 이동할 수 있습니다. GPU 레지스터는 계산 코어가 실행할 작업의 피연산자를 저장하는 빠른 온칩 메모리입니다.
데이터가 레지스터로 이동되는 동안 H100은 8비트 부동 소수점 숫자를 초당 1.98 경 조각 곱할 수 있습니다. 이 1.98 경 연산을 3.35TB의 데이터로 나누면, H100은 1바이트를 이동하는 동안 591 부동 소수점 연산을 수행할 수 있습니다.
H100은 591:1의 연산:바이트 비율을 가집니다. 1GB를 이동하는 데 시간을 소비하려면 초당 적어도 591억 부동 소수점 연산을 수행해야 합니다. 그 이하로 수행하면 GPU FLOPS가 낭비됩니다. 그러나 더 많은 연산을 수행하면 메모리 대역폭을 기다려야 합니다.
우리 모델에서는 이동하는 메모리의 양이 모델 가중치 크기로 상대적으로 고정되어 있습니다.
우리는 배치 크기를 조정하여 수학적 계산의 양을 변경함으로써 과정을 어느 정도 제어할 수 있습니다.
ChatGPT를 확장할 때 GPU가 계산에 과소 활용되지 않도록 하고 메모리 대역폭을 기다리지 않도록 FLOPS를 맞추기 위해 배치 크기를 모니터링했습니다.
실제로 상자에 인쇄된 FLOP 숫자를 완전히 유지하는 것은 거의 불가능합니다. 우리는 수학을 사용하여 근접할 수 있지만 모든 것을 미세 조정하기 위해 많은 실험이 필요했습니다.
도전 과제 #3: 측정할 적절한 메트릭 찾기 배치 크기와 KV 캐시 활용률의 조합이 우리가 집중한 주요 메트릭이었습니다. 이는 서버의 로드를 결정하기 위해 사용한 두 가지 숫자였습니다. 처음부터 이 메트릭에 도달한 것은 아니었고, 시간이 걸렸습니다.
초기에는 GPU 활용률 메트릭이 단순하여 CPU 활용률 메트릭과 유사했습니다. 그러나 간단한 활용률은 특정 기간 동안 GPU가 수학 연산을 수행하는지 여부만 나타냈습니다. 이는 다음을 알려주지 않았습니다:
- 산술 강도를 포화시켰는지 여부: 총 데이터 이동에 대한 부동 소수점 연산 비율인 FLOPs/byte입니다. 기본적으로 GPU 활용률은 우리가 계산을 과소 활용하고 있는지, 메모리가 부족한지 여부를 알려주지 않았습니다.
- KV 캐시가 부족한지 여부. 이것은 KV 캐시 미스가 발생하면 GPU가 캐시되지 않은 결과를 계산하기 위해 이차적으로 더 많은 계산을 수행해야 하기 때문에 문제가 됩니다.
- 기타 병목 현상도 마찬가지입니다. KV 캐시와 배치 크기 외에도 여러 병목 현상을 발견했습니다. 실제로 우리는 다음과 같은 병목 현상을 겪었습니다:
- 메모리 대역폭
- GPU 간 네트워크 대역폭
- 노드 간 네트워크 대역폭(기계 간)
병목 현상의 위치는 자주 변경됩니다. 예를 들어, ChatGPT에 에세이를 요약하도록 요청하는 것은 에세이를 작성하도록 요청하는 것과 성능 특성이 크게 다릅니다. 우리는 LLM 변환기 모델 아키텍처의 세부 사항을 지속적으로 조정하고 있으며 이러한 변경 사항은 병목 현상의 발생 위치에 영향을 미칩니다.
LLM 문제 공간에서 직면하는 제약 조건의 변동이 예상보다 큽니다. 이는 문제를 해결하기 어렵게 하고 칩 제조업체가 최적의 균형을 이루는 칩을 설계하는 데 어려움을 줍니다.
예를 들어, Nvidia의 새로운 H100 칩은 A100 칩의 다음 세대입니다. H100은 연산(FLOPs)을 약 6배 증가시키는 반면 메모리 크기는 일정하고 메모리 대역폭은 1.6배만 증가합니다. 메모리 병목 현상이 자주 발생하기 때문에 FLOPs(및 비용)의 극적인 증가가 제대로 활용되지 않는 경향이 있습니다.
실제로 오늘날 최고의 칩인 NVIDIA H100은 수년 전에 설계되었습니다. NVIDIA는 H100 칩이 설계될 당시 메모리의 중요성에 대한 발견을 알지 못했으며 미래 아키텍처를 예측하기 어렵습니다. 최근 발표된 H200 칩은 메모리를 증가시켰으나, LLM을 대규모로 실행하기 위한 이러한 고유한 병목 현상을 더 잘 이해하는 데 시간이 걸렸습니다.
도전 과제 #4: GPU 찾기 또 다른 GPU 문제는 어디서 찾을 것인가였습니다! 우리 회사와 AI 분야 전체는 Nvidia 또는 전체 TSMC 공급망과 같은 공급업체가 GPU를 생산하는 것보다 훨씬 더 빠르게 성장했습니다. 반도체 및 데이터 센터와 같은 복잡한 공급망에서는 많은 곳에서 병목 현상이 발생합니다.
한 가지 해결책은 가능한 모든 곳에서 GPU를 확보하는 것이었습니다. 우리는 Microsoft Azure를 클라우드 제공업체로 사용하며, 이는 여러 지역과 데이터 센터에 GPU가 있습니다. 그 결과 우리는 전 세계 여러 지역에 빠르게 배치되었습니다.
처음부터 우리의 작은 팀은 멀티 리전, 멀티 클러스터 및 글로벌 분산형으로 운영될 수밖에 없었습니다. 우리의 쿠버네티스 클러스터는 애완동물처럼 취급되는 것에서 소처럼 취급되는 것으로 빠르게 전환되었습니다.
잘 균형 잡힌 GPU 플릿이 가까운 GPU를 할당하는 것보다 더 중요해졌습니다. ChatGPT에서 가장 큰 응답 시간 병목은 GPU가 한 번에 한 토큰씩 얼마나 빨리 스트리밍할 수 있는가입니다. 이는 네트워크 요청의 왕복 시간이 덜 중요하고 GPU가 ‘준비되어 있는’ 것이 더 중요하다는 의미입니다. 제 경력은 지연 시간을 줄이기 위해 엣지 컴퓨팅의 중요성을 가르쳐 주었습니다. 하지만 이러한 작업에서는 GPU가 매우 제한되어 있어 덜 관련성이 있었습니다.
도전 과제 #5: 자동 확장의 불가능성 마지막으로 지배적인 도전 과제는 GPU 플릿을 확장할 수 없다는 것입니다. 구매하거나 대여할 GPU가 더 이상 없어서 자동 확장할 GPU가 없습니다. GPU를 확보하는 어려움은 오늘날까지 계속되고 있으며, 완화될 기미가 보이지 않습니다. 현재 수요의 증가율은 공급의 증가율보다 더 큽니다. 사용자가 더 많을 뿐만 아니라, 더 큰 모델은 더 많은 계산을 요구하며, 에이전트와 같은 새로운 기술은 사용자당 상당히 더 많은 계산을 필요로 합니다.
Gergely의 메모: 최근에 우리는 Meta가 2024년 말까지 350,000개의 NVIDIA H100 GPU에 70억~90억 달러를 투자하겠다는 약속을 다뤘습니다. 이는 전 세계 공급량의 약 15%에 해당합니다!
따라서 ChatGPT에서 “용량에 도달했습니다”라는 메시지를 본 적이 있다면, 이는 올바른 진술이었습니다! 이는 당시 모든 GPU를 사용하고 있어서 확장할 곳이 없었다는 의미입니다.
불행히도 GPT-4와 같은 모델은 너무 많은 계산을 요구하여 현재로서는 대규모로 서비스를 제공하기 위해 GPU가 유일한 옵션입니다. 일반 CPU는 훨씬 더 느릴 것입니다.
- 교훈 ChatGPT의 확장은 보통의 소프트웨어 엔지니어링 확장 문제와는 확실히 다릅니다. 그러나 이는 엔지니어링 확장에 대한 집중 교육 과정이었으며, 다른 상황에 적용할 수 있는 많은 교훈을 제공했습니다. 여기에 우리가 배운 주요 교훈이 있습니다.
초기 확장에서는 숲과 나무 모두가 중요합니다. KV 캐시 최적화 및 CUDA 커널과 같은 낮은 수준의 세부 사항(나무)은 글로벌 데이터 센터 전략과 같은 더 높은 수준의 시스템 세부 사항(숲)만큼 중요했습니다. 우리 팀의 능력은 GPU의 가장 낮은 수준에서 제품 결정에 이르기까지 스택 전체를 넘나드는 데 중요한 역할을 했습니다.
시스템의 제약을 적응적으로 고려하십시오. OpenAI에 합류하기 전에는 다음과 같은 작업을 하곤 했습니다:
- 일반적으로 “좋다”고 여겨지는 약 80% CPU 활용률을 달성하도록 시스템을 조정합니다. 이 메트릭이 달성되면 메트릭이 일정하게 유지될 때까지 기다립니다.
- “무한히 큰” 클라우드로 자동 확장합니다. 즉, 더 많은 기계를 항상 프로비저닝할 수 있습니다.
- 엣지 컴퓨팅을 우선시합니다. 이를 사용자 근처로 이동하여 왕복 요청의 지연 시간을 줄이고 사용자 경험을 개선합니다.
OpenAI에서는 이러한 관행이 적용되지 않았습니다! 측정하고 확장할 수 있는 새로운 접근 방식을 찾아야 했습니다.
무언가가 작동하는 것을 발견하면 모델 아키텍처가 변경되거나 새로운 추론 아이디어가 제안되거나 제품 결정이 시스템 사용을 변경했습니다. 그래서 우리는 계속해서 적응해야 했습니다.
깊이 파고드십시오. 우리가 운영하는 문제 공간에서 가장 낮은 수준의 구현 세부 사항이 정말 중요합니다. ChatGPT를 입력으로 텍스트를 받고 다른 쪽에서 약간 더 스마트한 텍스트를 생성하는 “블랙 박스”로 생각하는 것은 유혹적입니다. 그러나 “블랙 박스”가 정확히 어떻게 작동하는지에 대한 가장 작은 세부 사항을 파고들수록, 팀과 제품은 더 나아졌습니다.
아직 초기 단계입니다. 도전 과제의 규모는 계속 커질 것입니다. GPT-2, 3, 4 사이의 모든 도약에서 모델을 대규모로 훈련하고 실행하기 위한 완전히 새로운 방법이 필요했습니다. 이는 향후 버전에서도 계속될 것입니다. 비전, 이미지 및 음성과 같은 모든 새로운 모달리티는 시스템을 재구성하면서 새로운 사용 사례를 열어줍니다.
OpenAI와 전체 생태계의 개발 속도는 가속화되고 있습니다. 다음 10배 규모의 도전 과제가 무엇일지 지켜보겠습니다!
요약
ChatGPT 확장의 도전 과제에 대해 이야기해 주신 Evan에게 감사드리며, ChatGPT가 어떻게 작동하는지에 대한 개요를 제공해 주셨습니다. Evan의 글에서 제게 와닿은 점은 다음과 같습니다:
ChatGPT가 작동하는 방식은 마법이 아니며 이해할 가치가 있습니다. 대부분의 사람들처럼 ChatGPT를 처음 사용했을 때의 반응은 마법처럼 느껴졌습니다. 질문을 입력하면 사람이 작성한 것처럼 느껴지는 답변을 받았습니다! ChatGPT는 인간 언어를 매우 잘 처리하며, 어느 한 인간이 처리할 수 있는 것보다 더 많은 정보를 가지고 있습니다. 프로그래밍 관련 질문에도 능숙하며, 어느 시점에서는 ChatGPT가 인간보다 더 유능할 수 있는지 의문을 가졌습니다. 특히 지금까지는 인간이 더 잘해온 분야인 프로그래밍에서도요.
ChatGPT의 한계를 이해하려면 어떻게 작동하는지 이해해야 합니다. ChatGPT와 다른 대규모 언어 모델은 인간처럼 ‘생각’하고 ‘이해’하지 않습니다. 그러나 ChatGPT는 입력과 지금까지 생성된 모든 것을 살펴보며 다음으로 가장 가능성이 높은 단어를 기반으로 단어를 생성합니다.
다음은 Stephen Wolfram – 전문가 검색 엔진 WolframAlpha의 창립자 –이 요약한 ChatGPT의 작동 방식에 대한 훌륭한 심층 분석에서 가져온 글입니다:
“ChatGPT의 기본 개념은 어느 정도 간단합니다. 웹, 책 등에서 인간이 작성한 방대한 텍스트 샘플에서 시작합니다. 그런 다음 신경망을 훈련시켜 ‘이와 같은’ 텍스트를 생성하게 합니다. 특히 ‘프롬프트’에서 시작하여 ‘훈련된 것과 같은’ 텍스트로 계속할 수 있도록 합니다.
ChatGPT의 실제 신경망은 매우 간단한 요소로 구성되어 있지만 수십억 개의 요소로 이루어져 있습니다. 신경망의 기본 작동도 매우 간단하여 생성된 텍스트에서 파생된 입력을 새로운 단어(또는 단어의 일부)를 생성할 때마다 한 번씩 ‘요소를 통해 전달’하는 것입니다.
하지만 놀랍고 예기치 않은 점은 이 과정이 웹, 책 등에 있는 텍스트와 성공적으로 ‘비슷한’ 텍스트를 생성할 수 있다는 것입니다. (…)
ChatGPT의 특정 엔지니어링은 매우 매력적입니다. 하지만 궁극적으로 (외부 도구를 사용할 수 있을 때까지) ChatGPT는 축적된 ‘상식의 통계’에서 ‘일관된 텍스트 스레드’를 끌어내는 것에 불과합니다. 하지만 결과가 얼마나 인간 같은지 놀랍습니다.”
ChatGPT 확장의 엔지니어링 도전 과제는 여러 요소와 연관되어 있습니다. 시스템을 확장할 때 사용되는 일반적인 기술은 다음과 같습니다:
- 반복적이고 비용이 많이 드는 계산 작업(기억) 대신 메모리를 사용하여 성능을 개선하거나 메모리가 부족하고 사용되지 않은 계산이 많은 경우 계산을 사용하여 메모리를 절약합니다.
- 수평 확장을 위해 더 많은 하드웨어를 구매합니다.
- 측정할 올바른 항목을 파악하고 해당 메트릭이 올바른 방향으로 추세를 보이도록 개선합니다. 반복합니다.
OpenAI의 엔지니어링 팀은 제품을 확장하기 위해 이러한 모든 기술을 사용했습니다.
일부 확장 도전 과제는 수학 문제 해결로 축소될 수 있습니다. 챌린지 #2 – 배치 크기 최적화 –에서 최대 활용도를 해결하는 것은 메모리 대역폭을 기다리지 않으면서 최대한 많은 작업을 수행하는 것으로 귀결되었습니다. 작업과 메모리 대역폭 값을 알게 되면 이는 최적화 연습이 됩니다.
효율성을 최적화하려는 도전에 직면했을 때 이 접근 방식에서 영감을 얻으십시오. 시스템의 특성 – 처리량, 지연 시간, CPU 활용도, 메모리 활용도 및 기타 관련 값을 파악하고 하나를 변경하면 다른 것이 어떻게 변경되는지 파악하십시오. 더 높은 CPU 활용도(기계를 적게 사용하는 것)는 무엇을 의미합니까? 각 기계에서 메모리를 추가하거나 제거하면 어떻게 될까요? 등등.
효율성을 최적화해야 하는 도전에 직면했을 때, 이 접근 방식에서 영감을 얻으십시오. 시스템의 특성 – 처리량, 지연 시간, CPU 활용도, 메모리 활용도 및 기타 관련 값을 파악하고, 하나를 변경하면 다른 것이 어떻게 변하는지 파악하십시오. 더 높은 CPU 활용도(기계를 적게 사용함)는 무엇을 의미합니까? 각 기계에서 메모리를 추가하거나 제거하면 어떻게 될까요? 등등.
심지어 OpenAI도 GPU 하드웨어를 확보하는 데 어려움을 겪고 있습니다. 대규모 언어 모델에는 엄청난 양의 계산이 필요하며, GPU 칩이 이 용도에 가장 적합합니다. 오늘날 NVIDIA의 H100 – 고성능 GPU -는 AI에 크게 투자하는 대부분의 회사들이 선호하는 하드웨어입니다.
H100에 대한 수요는 공급을 초과하고 있습니다. 특히 Meta와 같은 회사들이 이를 확보하기 위해 엄청난 금액을 지출하고 있습니다. 우리는 최근 Meta가 2024년 말까지 350,000개의 H100 유닛을 확보하려 한다는 소식을 다루었습니다.
Microsoft와의 강력한 파트너십과 막대한 자금에도 불구하고, OpenAI도 충분한 GPU를 확보하는 데 어려움을 겪고 있습니다.
NVIDIA는 수요로 인해 큰 이익을 얻을 것이지만, 다른 플레이어들도 이를 경쟁하기 위해 칩을 설계할 것으로 예상됩니다. 실제로 Meta는 자체 맞춤형 AI 칩을 구축하고 있으며, AWS도 마찬가지입니다. 주요 칩 제조업체들도 가만히 있지 않습니다. AMD는 2023년 12월에 MI300X 프로세서를 출시했으며 초기 벤치마크에서 H100보다 더 나은 성능을 보여줍니다. Intel은 2024년 후반에 H100을 경쟁하고 능가할 것으로 예상되는 Gaudi3 프로세서를 작업 중입니다.
새로운 GPU가 시장에 나오더라도 대량 생산을 가속화하는 데는 시간이 더 걸릴 것입니다. AI 분야의 회사들은 앞으로 1~2년 동안 GPU의 부족을 예상할 수 있습니다.
하드웨어 부족과 관련된 엔지니어링 도전 과제는 종종 영리한 해결책으로 이어집니다. 오늘날 대부분의 소프트웨어 엔지니어들은 클라우드 제공업체 덕분에 계산 또는 저장 용량이 부족하지 않기 때문에 하드웨어 부족에 익숙하지 않습니다. 더 많은 CPU나 저장소가 필요하다면, 문제는 비용이 얼마인지이지 용량이 있는지 없는지가 아닙니다.
동시에, 우리는 산업 전반의 하드웨어 부족의 도전에 직면한 적이 있습니다. 이러한 제약은 엔지니어들이 영리한 효율성 개선을 하도록 만듭니다. 예를 들어, 가상화는 하드웨어 자원을 더 잘 활용하기 위한 노력에서 태어났습니다. 이는 현대 백엔드 관행의 과거와 미래에서 다루고 있습니다.
OpenAI와 같은 회사들이 필요에 의해 탄생한 더 영리한 해결책을 보길 바랍니다. 이는 더 정교한 AI 응용 프로그램에서도 더 낮은 계산 요구를 결과로 가져올 것입니다. 적용된 AI 응용 프로그램이 가져올 미래에 대해 기대되지만, 실용적인 AI 응용 프로그램이 현재 컴퓨팅 인프라보다 수백 배 더 많은 에너지를 소비하는 컴퓨팅 인프라를 요구하지 않기를 바랍니다. 컴퓨터는 상대적으로 적은 에너지로 많은 작업을 수행하는 효율적인 기계입니다. 더 나은, 더 유능한 AI 응용 프로그램을 구축하기 위한 경쟁이 계속됨에 따라, 이를 유지하길 바랍니다.
세계에서 가장 잘 알려진 AI 챗봇이 어떻게 작동하는지에 대한 심층 분석을 즐기셨기를 바랍니다.