원문 캡처 · blog.veitheller.de
원문 캡처 · blog.veitheller.de

도널드 크누스는 1974년 논문 “Structured Programming with go to Statements”에서 “성급한 최적화는 모든 악의 근원”이라고 썼다. 하지만 그 문장은 중요하지 않은 코드의 최적화에 시간을 쓰지 말라는 뜻이지, 최적화를 하지 말라는 뜻은 아니다. 이 글은 리치 서턴의 ‘비터 레슨’도 비슷하게 맥락을 벗어나, 규모 확장만이 답이라는 구호로 쓰이고 있다고 지적한다.

크누스는 “시간의 약 97%는 작은 효율을 잊어야 한다”고 한 뒤, 나머지 중요한 3%의 기회를 놓치지 말라고 덧붙였다. 핵심 코드를 먼저 찾아낸 뒤 최적화해야 한다는 주장이다. 그 방법은 측정이다. 크누스는 측정 도구를 사용한 프로그래머의 직관적 추측은 대체로 빗나간다고 썼다.1

서턴은 2019년 에세이 “The Bitter Lesson”에서 컴퓨팅 자원을 활용하는 일반적인 방법이 AI 연구에서 궁극적으로 훨씬 효과적이라고 주장했다. 체스와 바둑, 음성 인식, 컴퓨터 비전 사례에서 특정 분야 지식을 시스템에 넣는 접근은 단기적으로 도움이 됐지만, 성능이 정체된 뒤 컴퓨팅 자원을 더 많이 활용하는 방법에 밀렸다는 설명이다. 서턴은 임의로 확장할 수 있는 방식으로 탐색과 학습을 꼽았다.

그러나 이 주장이 알고리즘이 중요하지 않다는 뜻은 아니다. 서턴은 학습뿐 아니라 실제 사용 시점의 탐색도 주요 사례로 다뤘다. 그의 주장은 컴퓨팅 자원이 늘어날 때 계속 개선되는 방법을 어떻게 만들 것인가에 관한 것이지, 그런 방법이 쓰이는 모든 시스템을 어떻게 구성해야 하는지에 관한 것은 아니다.

글은 일반적인 학습 방법과 일반 모델, 일반 시스템을 같은 것으로 취급해서는 안 된다고 지적한다. 일반적인 학습 방법으로도 특정 과제에만 쓰이는 모델을 만들 수 있고, 일반 모델을 미세 조정하거나 교사로 활용해 전문 모델을 학습시킬 수도 있다. 이 주장은 하드웨어도 범용이어야 한다는 결론으로 이어지지 않는다.

또한 ‘비터 레슨’은 비용 계산법을 제시하지 않는다. 작은 분류기로 충분한 일에 대형 생성 모델을 쓰라고 말하지도 않고, 한 번의 학습 비용과 이후 수십억 번의 추론 비용을 어떻게 비교할지도 다루지 않는다. 일반성을 유지하는 비용이 얻는 이점을 넘어서는 시점이나, 엔지니어링 투자가 운영 비용 절감으로 이어지는 조건도 별개의 문제다. 일반적인 방법이 해법을 찾는 데 적합하더라도, 배포와 운영에는 전문화된 시스템이 더 적합할 수 있다는 주장이다.

글쓴이는 범용성과 전문화의 선택은 대체로 경제성에 달렸다고 본다. 범용 접근은 각 해법을 따로 엔지니어링하는 비용을 줄이고, 전문화는 반복적으로 발생하는 비용을 낮출 수 있다. 작업량이 예측 가능하고 규모가 커질수록 엔지니어링 비용을 더 많은 작업에 나눠 부담할 수 있다. 다만 전문화가 언제나 이기는 것은 아니므로 실제 비용을 계산해야 하며, 일반 학습 방법이 범용 모델에서 전문 모델을 도출하게 해 전문화 비용을 낮출 가능성도 있다고 덧붙인다.

이 문제를 보여주는 사례로 글은 Dyna Robotics의 제이슨 마(Jason Ma)가 출연한 Latent Space 인터뷰를 든다. Dyna는 하나의 대형 범용 모델을 새 작업에 맞게 조정하며, 가장 큰 배포 사례에서는 레스토랑 체인 Din Tai Fung에서 하루 수천 장의 냅킨을 접는다. 공동 진행자 비부(Vibhu)가 전용 기계로도 가능하지 않느냐고 묻자, 마는 냅킨이 변형되는 물체라며 범용 모델을 조정하면 생산 품질에 더 빨리 도달한다고 답했다. 이후 공동 진행자 스윅스(swyx)는 이를 전문 로봇 대신 범용 플랫폼을 만들고 마지막 단계에서 미세 조정하는 ‘로보틱스의 비터 레슨’으로 요약했다.

글쓴이는 두 발언이 서로 다른 문제를 다룬다고 지적한다. 마의 설명은 기능을 개발하는 속도에 관한 것이지만, 스윅스의 요약은 기계 자체에 관한 것이다. 이 과정에서 매일, 수년간 냅킨 작업에 범용 로봇을 운영하는 비용과 실제로 사용하지 않는 액추에이터와 센서의 비용이 빠졌다는 주장이다.2 냅킨 같은 변형 가능한 물체를 다루기 어렵더라도, 로봇은 통제된 식당 환경에서 작업한다는 점도 짚는다.

글은 전문 기계가 작업을 단순화하도록 환경을 바꾸는 방식으로 작동하는 경우가 많다고 설명한다. 이런 단계를 건너뛰고 범용 휴머노이드가 전용 고정형 로봇보다 낫다고 주장하는 것은, 초기 포드식 조립 라인에 휴머노이드를 투입하는 편이 각 작업에 맞춘 로봇이 있는 공장보다 낫다고 주장하는 것과 같다는 비유를 든다. 반면 보스턴 다이내믹스는 창고 로봇 Stretch를 위해 Spot과 Atlas의 부품을 활용한 “더 단순한 로봇”을 만들었고, Atlas는 별도의 휴머노이드 프로젝트로 이어갔다고 설명한다. 이 사례에서 범용성은 기계 자체보다 기계를 만드는 과정에 있다고 글쓴이는 본다.

글의 비판은 아키텍처의 비효율이나 한계를 지적하고 다른 접근을 검토하자는 제안에 “규모를 키우면 된다”, “수작업 엔지니어링은 통하지 않는다”는 식으로 답하는 태도를 향한다. 이런 구호는 과거의 관찰을 근거로 현재 문제에도 그대로 적용된다고 가정하며, 제안자에게는 규모 확장이 불가피하다는 전제를 반박하라고 요구하지만 규모 확장을 지지하는 쪽에는 지금 이 문제에서 더 나은 이유를 제시하도록 요구하지 않는다고 지적한다. 서턴의 글을 건축적 직관을 의심하는 데 쓰기보다 현상 유지의 근거로 삼는다는 것이다.

글쓴이는 서턴의 핵심이 연구자들이 지능에 대한 자기 생각에 집착하는 태도를 비판하는 데 있다고 해석한다. ‘일반성이 언제나 바람직하다’, ‘규모를 키우면 현재의 아키텍처 문제가 해결된다’, ‘전문화는 야심이 부족한 선택이다’라는 믿음 역시 새로운 집착이 될 수 있다는 주장이다. 글은 크누스와 서턴 모두 생각을 덜 하라고 한 것이 아니라 더 신중하게 판단하라고 했다고 맺는다. 크누스는 최적화 전에 측정하라고 했고, 서턴은 컴퓨팅 자원이 늘어날 때 실제로 통하는 방법을 기준으로 직관을 점검하라고 했다는 설명이다.

부록: 원문 예시

text
We should forget about small efficiencies, say about 97% of the time:
premature optimization is the root of all evil.

Yet we should not pass up our opportunities in that critical 3%. A good
programmer will not be lulled into complacency by such reasoning, he will be
wise to look carefully at the critical code; but only after that code has been
identified.
text
The biggest lesson that can be read from 70 years of AI research is that
general methods that leverage computation are ultimately the most effective,
and by a large margin.
text
The term that comes to mind is kind of like bitter lesson for robotics,
right? You, instead of the specialized robots, which is a lot of industrial
engineering, you build a generalized platform that can- Do a last-mile
fine-tuning [...]
text
We have to learn the bitter lesson that building in how we think we think does
not work in the long run.