
AI에서의 Open/Closed 문제
요약
MLSys 컨퍼런스 경험을 바탕으로 AI 시스템의 발전 과정을 Open/Closed 문제 관점에서 분석합니다. 하드웨어의 범용성과 특수성 사이의 순환, 그리고 모델 학습과 추론의 분리 문제를 다룹니다.
핵심 포인트
- 하드웨어 발전의 역사: 범용 CPU에서 고정형 GPU, 프로그래밍 가능 GPU를 거쳐 특수 ASIC으로의 순환
- AI 시스템의 효율성: 학습 최적화와 추론 최적화 사이의 하드웨어 제약 문제
- Open/Closed 문제: 모델 자체의 학습 능력 부재와 외부 시스템을 통한 학습의 비효율성
저는 시애틀에서 열린 제9회 MLSys 컨퍼런스에 다녀왔습니다. 이곳은 ML 시스템 (ML systems)을 구축하는 연구자와 산업계 종사자들의 컨퍼런스입니다. 제가 본 작업의 대다수는 LLM (Large Language Models)을 학습시키고 사용하는 시스템을 구축하는 것이었습니다. 가장 큰 초점은 효율성이었습니다. 어떻게 하면 LLM을 더 효율적으로 학습시킬 수 있을까? 어떻게 하면 더 효율적으로 배포하고 사용할 수 있을까? 제가 목격한 주제와 메시지들을 이해하려고 노력하던 중, Open/Closed 문제 (Open/Closed problem)가 떠올랐습니다.
Open/Closed 문제가 무엇인지 이해하기 위해서는 먼저 역사를 조금 이해할 필요가 있습니다.
90년대에 3D 컴퓨터 그래픽 (3D computer graphics)이 폭발적으로 성장했을 때, 그것들은 처음에 CPU에 의해 렌더링되었습니다. CPU는 무엇이든 할 수 있는 범용 컴퓨팅 장치 (generic computing device)입니다. 그래서 자연스럽게 3D 그래픽은 폴리곤 (polygons) 대신 복셀 (voxels)을 사용하는 일부 게임을 포함하여 매우 다양했습니다. 엄청난 양의 창의성이 존재했습니다. 결국 우리는 그래픽 카드를 통한 3D 가속 (3D acceleration)을 얻기 시작했습니다. 이 카드들은 고정된 파이프라인 (fixed pipelines)을 가지고 있었습니다. 따라서 폴리곤 렌더링과 특정 효과를 크게 가속화했지만, 그래픽을 구현하는 방식의 창의성을 제한했고 다양성을 잃게 만들었습니다. 결국 Nvidia와 같은 GPU 제조사들이 픽셀 및 버텍스 셰이더 (pixel and vertex shaders)를 발명했습니다. 이것은 그래픽에 다시 유연성을 더해주어 더 창의적인 게임들을 가능하게 했습니다. 이러한 프로그래밍 가능성 (programmability) 위에 CUDA가 탄생했습니다. CUDA는 매우 유연했기 때문에 AI 커뮤니티는 GPU에서 신경망 (neural nets)을 학습시키는 방법을 알아냈고, 이를 통해 더 큰 모델을 시도할 수 있게 되었습니다. AlexNet은 변곡점이었으며, 우리가 오늘날 AI와 LLM에 대해 이야기하고 있는 이유이기도 합니다. 제가 MLSys에서 느낀 점은 GPU를 만드는 회사들이 이제 학습 (training) 대비 추론 (inference)을 위해 더 효율적이도록 GPU를 제약하고 있다는 것입니다. 이제 어떤 것들은 오직 추론만을 수행하도록 설계된 ASIC (ASICs)을 갖게 된 반면, 다른 것들은 학습에 최적화되어 있습니다.
다시 말해, 우리는 개방형 시스템 (CPU)에서 시작하여 폐쇄형 시스템 (fixed-pipeline GPU)으로 갔다가, 다시 개방형 시스템 (programmable GPU)으로 돌아왔고, 다시 더 폐쇄적인 시스템 (specialized ASICs)으로 돌아왔습니다. 이것이 제가 말하는 Open/Closed 문제의 일부입니다. 하지만 이는 다른 의미에서의 또 다른 Open/Closed 문제와도 일치합니다.
우리가 배포하는 AI들은 오픈 루프 (open loop)를 사용하여 학습됩니다. 제 말은 모델 자체가 학습하지 않는다는 뜻입니다. 모델을 학습시키기 위해서는 모델의 회로 외부의 외부 시스템이 필요합니다. 데이터를 수집하고, 손실 함수 (loss function)를 고안하며, 역전파 (backpropagation)를 통해 SGD (Stochastic Gradient Descent)를 수행하여 모델을 학습시킵니다. 그런 다음 모델을 배포합니다. 모델이 배포된 이후에는 학습하지 않습니다. 파라미터 (parameters)에 저장된 모델의 메모리는 변하지 않습니다. 사람들은 에이전트 (Agents)를 통한 외부 메모리를 사용하여 이 사실을 우회하고 있습니다. 에이전트는 (학습하지 않는) LLM을 사용하여 도구 호출 (tool calls)을 통해 외부 메모리 소스 (마크다운 파일, 데이터베이스 등)를 업데이트합니다. 따라서 에이전트는 학습하지만, 매우 비효율적인 방식으로 학습합니다.
우리의 뇌는 학습을 위해 클로즈 루프 (closed loop)를 사용합니다. 우리의 뇌는 외부 세계에 대한 모델을 가지고 있습니다. 뇌는 우리의 감각이 무엇을 느껴야 하는지에 대해 예측을 하고, 그 예측이 얼마나 벗어났는지 확인하기 위해 우리의 감각을 체크합니다. 만약 예측이 틀리면, 뇌는 놀라며 더 정확한 예측을 할 수 있도록 모델을 업데이트합니다. 다시 말해, 우리의 뇌가 지식을 축적하기 위한 외부 프로세스는 존재하지 않습니다. 모든 것은 우리 뇌 내부에서, 즉 클로즈 루프 내에서 이루어집니다.
이것이 제가 MLSys에서 발견한 또 다른 Open/Closed 문제입니다. 모든 사람이 모델 아키텍처를 변경하거나 학습 방식을 바꾸거나, GPU 커널을 최적화하는 등의 방식으로 오픈 루프 (open-loop) 학습을 더 개선하고 효율적으로 만드는 데 매진하고 있는 것처럼 보였습니다. 저는 외부의 개입 없이 모델 자체가 지식을 축적할 때 스스로를 업데이트하는 클로즈 루프 (closed-loop) 학습을 연구하는 사람은 보지 못했습니다. 이 두 가지 Open/Closed 문제는 결국 동일한 문제입니다.
여기 불편한 주장이 있습니다. 현재 이 분야가 축하하고 있는 효율성 작업들(더 나은 커널 (kernels), 추론용 ASIC (inference ASICs), 학습용 ASIC (training ASICs))은 단순히 중립적인 진보가 아닙니다. 그것은 오픈 루프 (open-loop) 학습을 중심으로 한 하드웨어 경화 (hardware hardening)이며, 모든 계층의 전문화 (specialization)는 클로즈 루프 (closed-loop) 학습을 시도하는 것조차 더 어렵게 만듭니다. 우리는 특정 패러다임으로 최적화하며 나아가면서 그것을 발전이라고 부르고 있습니다. 고정된 GPU 파이프라인 (pipelines)은 단순히 그래픽 속도를 높인 것이 아니라, 프로그래밍 가능성 (programmability)이 다시 돌아오기 전까지 10년 동안 무분별한 실험들을 조용히 죽였습니다. 지금 똑같은 일이 일어나고 있으며, MLSys의 거의 누구도 이를 알아차리지 못하는 듯합니다.
그리고 그 메커니즘은 모호하지 않습니다. 추론용 ASIC (inference ASIC)은 물리적으로 오픈 루프 (open-loop) 가정을 구워 넣습니다 (bakes in). 가중치 (weights)는 동결되어 있으므로, 파라미터 메모리 (parameter memory)는 다시 쓰기 위한 것이 아니라 읽기 위한 용도로 구축됩니다. 모델이 절대 변하지 않을 때 효율적이기 때문에 연산 (compute)과 메모리 (memory)는 서로 떨어진 곳에 위치합니다. 모든 것은 거대한 배치 행렬 곱셈 (batched matmuls)을 중심으로 형성되는데, 이것이 정적인 모델을 서빙 (serving)하는 방식이기 때문입니다. 이 중 어느 것도 실수나 간과가 아닙니다. 칩이 정확히 자신의 역할을 수행하고 있는 것입니다. 하지만 클로즈 루프 (closed-loop)에서 학습하는 모델은 이 모든 것의 반대가 필요합니다. 끊임없이 변하는 가중치, 미세한 단위 (fine grain)의 업데이트, 그리고 파라미터가 제자리에서 스스로를 다시 쓸 수 있도록 융합된 메모리와 연산이 필요합니다. 추론에 최적화된 칩은 이를 돕지 못하는 것에 그치지 않습니다. 실리콘 (silicon) 단계에서부터 그 가능성을 가정조차 하지 않고 없애버립니다. 전문화 (specialization)의 매 세대는 선택받지 못한 길 위에 더 많은 콘크리트를 붓고 있습니다.
에릭 칸델 (Eric Kandel)은 메모리가 어떤 별도의 시스템에 의해 저장되는 것이 아님을 보여줌으로써 노벨상을 받았습니다. 단일 뉴런 (neuron)은 학습하면서 연산도 수행하고 물리적으로 스스로를 다시 씁니다. 우리에게 필요한 돌파구는 외부 프로세스나 별도의 학습 실행 (training run) 없이, 뉴런에서와 같이 메모리와 연산이 미세한 단위로 융합되어 스스로를 업데이트하는 모델입니다. 이를 위해서는 실험할 수 있는 기질 (substrate)이 필요합니다. FPGA와 같은 것이되, 더 크고 빠르며 이를 위해 구축된 무언가가 필요합니다. 하지만 아무도 그것을 만들지 않고 있습니다. 모두가 이미 우리가 가진 것을 최적화하는 데 바쁘기 때문입니다.
따라서 솔직하게 말씀드리겠습니다. 만약 여러분이 오픈 루프 (open-loop) 효율성에 매달리고 있다면, 여러분은 돌파구 (breakthrough)를 향해 나아가고 있는 것이 아닙니다. 여러분은 오히려 그 돌파구를 찾기 더 어렵게 만드는 일을 하고 있는 것입니다. 분야 전체가 속도에 대해 스스로 축하를 건네는 동안, 하드웨어는 잘못된 패러다임 (paradigm)을 중심으로 단단해지고 있습니다. 폐쇄 루프 (closed-loop) 학습을 실험할 수 있는 기회의 창은 지금 열려 있으며, ASIC이 출하될 때마다 그 창은 닫히고 있습니다. 그 일이 벌어지기 전에 누군가는 기질 (substrate)을 구축해야 합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Lobste.rs AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기