Skip to main content

D. 스컬리 — 기술 부채, 트레이드오프, 그리고 Kaggle

D.는 모델 개발에서 발생할 수 있는 잠재적 함정들을 파고들고, 기계 학습 커뮤니티에서 Kaggle이 맡는 역할을 설명합니다. 이 글은 AI로 번역되었습니다. 오역이 있을 수 있으니 댓글로 알려 주세요.
Created on September 15|Last edited on September 15


에피소드 소개

D. 스컬리는 많은 사랑을 받고 널리 알려진 데이터 사이언스와 머신 러닝 커뮤니티인 Kaggle의 CEO입니다.
D.는 2015년에 발표한 영향력 있는 논문 “Machine Learning: The High Interest Credit Card of Technical Debt”를 논의하며, 2022년 현재 현실 세계에 모델을 배포할 때 마주하는 과제들이 무엇인지 짚습니다. 이어서 D.와 Lukas는 Kaggle이 왜 열대우림과 같은지, 그리고 더 넓은 머신 러닝 커뮤니티에서 Kaggle이 과거에 맡아 온 역할, 현재의 역할, 앞으로 맡게 될 잠재적 역할에 대해 이야기합니다.

D.와 Kaggle에 연결하기:

링크

듣기



타임스탬프

0:00 인트로
1:00:00 아웃트로

YouTube에서 시청하기



전체 대본

인트로

D.:
제가 아는 한, 세상에는 초대형 충돌기 같은 장비에 접근하지 않아도 할 수 있는 물리학이 아주 많이 있습니다. 마찬가지로, 지금도 그렇고 앞으로도 계속, 충돌기급 자원에 의존하지 않고서도 수행할 수 있는 머신러닝이 매우 많이 있을 것이라고 믿습니다.
루카스:
여기는 현실 세계의 머신러닝을 다루는 프로그램 Gradient Dissent입니다. 진행은 제가 맡았습니다, 루카스 비발드입니다.
최근에 Kaggle의 신임 CEO로 부임한 D. 스컬리를 소개받았어요. 모두가 사랑하는 정말 훌륭한 사이트죠. 그런데 나중에 알고 보니 그가 “Machine Learning: The High Interest Credit Card of Technical Debt”의 저자더군요. 저를 포함해 수많은 사람이 그 논문에서 영감을 받아 머신러닝 툴 회사들을 창업했죠. 오늘 그와 이야기를 나눌 수 있게 되어 더없이 기대됩니다.
청취자 여러분께 알립니다. 이 대화는 2022년 8월에 진행되었습니다. 그 이후로 Kaggle은 꾸준히 성장해 왔습니다.

머신러닝과 기술 부채

루카스:
좋습니다. 이렇게 이야기 나눌 수 있어 정말 반갑습니다. 오늘 대화를 하게 된 계기는 당신이 Kaggle을 이끌게 된 일이라고 생각해요. Kaggle은 머신러닝 커뮤니티에서 매우 중요한 웹사이트이고, Weights & Biases의 많은 청취자와 사용자들에게도 큰 의미가 있죠. 그런데 당신에 대해 찾아보면서 — 사실 진작에 알았어야 했지만 — 당신이 머신러닝의 “High Interest Technical Debt” 논문의 저자라는 걸 다시 떠올렸습니다. 그 논문은 정말 많은 사람들에게 영감을 줬고, 저에게도 공개 당시 깊이 와닿았어요.
그래서 그 논문을 아직 읽지 않은 분들을 위해, 간단히 요약해 주시면서 시작해 주실 수 있을까요? 그리고 그 논문을 쓴 이후로 달라진 점이 있는지도 궁금합니다. 기억을 더듬어 보면… 아마 2016년이나 2017년에 나온 걸로 기억하거든요.
D.:
2015년이었죠. 그래요.
루카스:
오, 2015년!
D.:
제 기억이 맞다면, 정말 한 세기가 지난 것처럼 느껴져요.
루카스:
맞아요, 본격적으로 들어가기 전에—아마 많은 분들이 그 논문을 읽어보셨겠지만, 아직 안 읽으신 분들도 계실 테니—논문의 핵심을 간단히 요약해 주실 수 있을까요? 그게 좋은 출발점이 될 것 같아요.
D.:
네, 물론이죠. 우선, 안녕하세요. 초대해 주셔서 감사합니다. 여기 오게 되어 정말 기쁩니다.
그래서 제 머신러닝 여정은 이제 몇십 년에 걸쳐 이어져 왔습니다. 저는 Google에서 오랫동안 프로덕션 시스템, 그러니까 Google에서 가장 운영상 핵심적인 ML 시스템들 중 일부를 여러 해에 걸쳐 담당했고, 한동안은 Google의 광고 클릭률 PCTR 시스템을 이끌기도 했습니다. 그 기간 동안 머신러닝이 더 크고 중요한 시스템의 핵심 구성 요소로서 얼마나 중요한지에 대해 아주 분명하게 깨달을 수 있었고, 일이 얼마나 다양한 방식으로 예기치 않은 방향으로 흘러갈 수 있는지를 현장에서 직접 경험했습니다.
그리고 이 시스템들은 분명 오랫동안 운영되어 왔습니다. 우리가 지금 이야기하는 시점—대략 2015년쯤—에도, 그 시스템들은 어떤 형태로든 이미 프로덕션 환경에서 10년이 넘는 기간 동안 사용되고 있었죠.
그래서 그 당시에는, 제 팀과 저는 머신러닝 시스템이 장기적으로 어떻게 작동하는지에 대해 남들보다 조금은 더 깊이 돌아볼 수 있는 통찰을 갖고 있었다고 느꼈습니다. 그때만 해도 이 분야가 비교적 새로웠기 때문에, 그런 관점을 가질 수 있었던 사람이 많지 않았거든요.
우리가 현장에서 보고 있던 것들을 글로 정리해 두는 게 유익하다고 생각했어요. 그리고 기술 부채라는 은유를 사용하는 게 그런 것들을 설명하는 데 효과적이었다고 봅니다. 소프트웨어 엔지니어링 관점에서 기술 부채를 떠올리면, 빠르게 움직일 때 발생하는 각종 비용을 생각하게 되니까요. 아마 스타트업 세계에서 속도를 내는 일에 대해서는 잘 아실 텐데, 지금 당장 무언가를 출시하는 것과 통합 테스트를 여섯 겹 더 얹는 것 같은 선택지 사이에서 어려운 결정을 내려야 하는 상황, 그리고 그에 따른 트레이드오프가 무엇일지에 대해 익숙하실 겁니다.
그러니까 빠르게 움직여야 할 만한 충분히 좋은 이유가 있고, 때로는 그게 불가피하기도 합니다. 하지만 그렇게 하다 보면 시간이 지날수록 우리가 결국 상환해야 하는 비용이 쌓이게 됩니다. 그 비용을 절대 떠안지 말아야 한다는 뜻은 아니지만, 적어도 그 비용이 무엇인지 우리 스스로에게 솔직해야 합니다. 그리고 당시에는 머신러닝을 사용하면서 얼마나 많은 기술 부채가 쌓일 수 있는지에 대해 충분히 인식되지 못했던 것 같습니다.
머신러닝 스택이 코드 위에 구축된다는 건 누구나 쉽게 알 수 있습니다. 그래서 일반적인 코드가 갖는 모든 기술 부채의 가능성이 그대로 존재하죠. 그런데 여기에 더해, 시간이 지나면서 코드 수준의 점검과는 무관한 시스템 차원의 동작들이 나타나기도 하고, 이런 것들 역시 결국 상환해야 할 비용을 실제로 만들어냅니다.
가장 단순한 것들도 마찬가지예요. 예를 들어, 처음 모델을 만들 때 급하면 생각나는 대로 온갖 피처를 한꺼번에 집어넣곤 하죠. 떠오르는 건 다 넣습니다. 정확도가 0.9가 나와요. 그러면 “괜찮네. 그런데 피처 20개를 더 넣어볼 수 있겠다”라고 생각하고, 그 20개를 더 추가합니다. 이제 0.92가 됩니다. 그러면 또 “이것도 좋지만, 20개만 더 넣으면 0.93은 나오겠네”라고 하게 되죠.
그래서 어느 정도는 수확 체감의 구간에 들어와 있다고 볼 수 있습니다. 수많은 피처를 모델에 마구 넣다 보면, 각각이 실제로 얼마나 가치를 제공하는지 분명하지 않을 때가 많습니다. 별로 유용한 정보를 주지 않는 피처들을 많이 넣고 있을 수도 있고, 이미 다른 피처가 충분히 전달하고 있는 정보를 중복해서 담고 있을 수도 있죠. 일종의 묶음식 접근입니다. 이런 방식은 머신러닝 파이프라인의 초기 개발 단계에서 흔히 나타납니다.
그러니까 정확도는 올렸어요. 뭐가 문제겠어요, 그렇죠?
아마 이미 겪어보셨겠지만, 모델에 피처를 하나 추가할 때마다 새로운 의존성이 생깁니다. 이제 바깥 세계의 어떤 행위나 관측치에 의존하게 되는 것이죠. 그리고 이는 그 바깥 세계의 행위가 변할 경우 취약점이 생긴다는 뜻이기도 합니다. 사람들의 행동이 변해서 달라질 수도 있고, 그 신호를 제공하는 상류 생산자가 바뀌어서 달라질 수도 있습니다.
아마 그들이 업그레이드를 했을 거예요. 그들에겐 정말 멋진 일처럼 들리겠지만, 당신의 모델은 그 업그레이드된 신호로 학습한 게 아닙니다. 모델은 기존의 온갖 이상한 오류에 익숙해졌고, 그 오류를 돌아서 학습했기 때문에, 업그레이드 시점에 기묘한 동작이 나올 수 있어요. 혹은 그들이 당신의 멋진 피처를 만드는 데 질려서 아예 꺼버릴 수도 있죠. 그러면 프로덕션 시스템에선 최악의 하루가 될 겁니다.
그래서 모델을 개발할 때는 정확도를 높이는 것과 동시에, 시스템 복잡도와 모델 복잡도, 데이터 복잡도를 더하는 데 따르는 장기적인 비용까지 함께 고려하는 것이 정말 중요합니다.
루카스:
직접 몸소 겪어 보셨잖아요. “아, 이게 바로 그 말이구나” 하고 실감했던 구체적인 사건이 있었나요?
D.:
음, 그러니까, 당연히 여기서 무책임한 얘기를 늘어놓을 생각은 없어요. 대신 “짐작하실 수 있겠지만”이라는 표현을 자주 쓸 텐데, 왜 그런지는 짐작하실 수 있을 겁니다.
상상해 보세요. 예를 들어 어떤 업스트림 제공자가 만든 토픽 모델을 당신의 모델이 사용하고 있다고 합시다. 그 토픽 모델이 텍스트를 입력으로 받아, 해당 텍스트의 주제성과 관련된 저차원 표현을 반환하는 식일 수 있겠죠.
아마 그 토픽 모델을 개발하던 초기에는 비영어권 언어에 대한 커버리지가 충분하지 않았을 수도 있습니다. 그래서 그 토픽 모델을 입력 피처로 받아들이는 모델을 학습시키면, 커버리지가 낮은 일부 언어에서 보고되는 토픽이 그다지 신뢰할 만하지 않다고 학습하게 될 수 있습니다. 이유야 어떻든, 예를 들어 그 언어들에 약한 음의 가중치를 부여한다든가 하는 식이죠. 그리고 해당 신호가 자주 발생하지 않기 때문에 크게 중요하지도 않습니다. 그래서 집계 지표에서는 잘 드러나지 않습니다.
그리고 상상해 보세요. 이제 막 경력을 시작한 머신러닝 엔지니어라서 사정을 잘 모른 채, 이 모델의 업그레이드 버전이 나와 저자원 언어들에서의 커버리지가 크게 향상되었다는 사실을 알게 되었고, 그 결과 이제는 해당 언어의 토픽 신호가 훨씬 더 자주 발생할 수 있다는 점을요.
모델을 재학습하지 않으면, 이제 모델 내부의 그 토픽 수준 피처들이 훨씬 더 자주 활성화되어, 예상보다 많은 콘텐츠에 더 낮은 점수를 부여하게 될 수 있다는 점을 상상해 볼 수 있습니다.
그런 일은 충분히 벌어질 수 있습니다.
예를 들어, 어떤 특정 신호를 제공하던 업스트림 제공자가 예고 없이 갑자기 오프라인이 되는 상황을 상상해 볼 수 있습니다. 데이터는 전이적입니다. 당신이 소비하는 신호의 업스트림 제공자 역시 또 다른 신호의 업스트림 제공자를 두고 있을 수 있고, 그 사슬이 여러 단계로 이어질 수 있습니다. 그래서 몇 단계 위에서 발생한 다른 업스트림 신호 때문에 당신의 시스템이 영향을 받을 수도 있습니다.
그리고 알림 같은 것들도 전이적으로 전파되도록 세심하게 챙기지 않으면, 그 문제가 프로덕션 데이터에 닿을 때까지는 알아차리지 못할 것입니다.
이런 일들은 충분히 벌어질 수 있습니다. 그러니 가능한 한 방어적으로 대응하고 싶겠죠. 그래서 조기 경보 알림과 같은 체계를 잘 갖춰서, 문제가 다가오고 있다면 미리 알림을 받을 수 있도록 준비해야 합니다.
또 한 가지 생각해야 할 점은… 일반적인 엔지니어링에서 방어적으로 코드를 작성한다고 이야기하듯이, 데이터에서도 방어적인 코딩이 필요하다는 것입니다. 데이터에서의 방어적 코딩은 대개 입력 데이터 분포를 모니터링하고, 입력 데이터의 왜도나 스트림에서 갑작스러운 변화와 같은 현상이 발생하는지 점검하는 방식으로 나타납니다.
이런 상황을 상상해 볼 수 있습니다. 전 세계에서 데이터를 소비하는 모델이 있다고 해봅시다. 그런데 어떤 이유에서든, 그날 특정 지역의 데이터 센터가 다운될 수 있습니다. 그런 일은 벌어질 수 있습니다.
갑자기 입력 데이터가 평소와 크게 달라져 심하게 왜곡될 가능성이 큽니다. 큰 규모의 데이터가 빠져 있기 때문이죠. 특히 지역별 시간대 효과가 크게 작용하는 경우라면 더욱 그렇습니다. 특정 일자나 며칠간의 구간에서 업스트림 장애로 인해 전혀 다른 양상이 나타날 수 있으며, 적절한 입력 스트림 알림 체계를 갖추지 않았다면 그런 변화를 전혀 알아채지 못할 수도 있습니다.

MLOps, 높아진 중요도, 그리고 현실적인 기대치

루카스:
이런 문제들이 점점 나아지고 있다고 느끼시나요, 아니면 더 나빠지고 있다고 느끼시나요? 그리고 더 복잡하고 규모가 크며 블랙박스에 가까운 모델로의 변화가 이 판단에 어떤 영향을 미친다고 보시나요?
D.:
2015년에 우리가 처음 이 논문들을 썼을 때, 기본적으로 두 가지 반응을 받았습니다.
첫 번째는 아주 반가운 확인의 반응이었어요. “세상에, 이거 정말 중요한 내용이네요. 이렇게 정리해 줘서 고마워요. 우리는 이런 것들을 전혀 떠올리지 못했을 거예요.” 혹은 더 흔하게는 “맞아요, 우리도 이런 문제들을 겪어 봤지만, 다른 사람들도 겪는지는 몰랐어요.” 같은 반응들이었죠.
두 번째로 크게 받았던 반응은, ML 연구 커뮤니티의 상당수에서 나온 “도대체 무슨 말을 하는 거죠?” 같은 반응이었습니다.
첫 번째 NeurIPS 논문은 심사 점수에서 마치 포커 손패의 스트레이트처럼 최고 점수부터 최저 점수까지, 중간 점수 몇 개까지 모두 나왔고… 솔직히 그걸 어떻게 받아들여야 할지 전혀 몰랐습니다.
결국 그들이 우리를 받아줬어요. 대체로 “당신들이 말하는 주제에 열정이 있는 것 같네요. 사람들 중엔 동의하지 않는 이들도 있을 테니, 와서 직접 얘기를 나눠보는 게 어떨까요?”라는 분위기였죠. 아주 타당한 제안이었고, 우리는 기꺼이 응했습니다.
하지만 2022년의 지금은 모두가 이 문제가 실제로 존재하며, 실제로 해결해야 할 과업이라는 점을 이해하고 있다고 생각합니다. 이는 단순한 사고나, 잘못된 ML 엔지니어를 고용했을 때나 생기는 문제가 아닙니다. 구조적인 문제입니다. 따라서 우리는 이를 체계적으로 접근해야 합니다.
이제는 MLOps라는 하나의 분야가 있죠. “MLOps”라고 말하면 사람들은 고개를 끄덕이며 “그래, 그래, MLOps에 투자해야 해”라고 합니다. 그런 관점에서 보면 완전히 다른 세상입니다. 이런 문제들이 실제로 문제라는 걸 더 이상 사람들에게 설득할 필요가 없으니까요.
그 메시지는 이제 잘 전달되었다고 생각하고, 그 점이 참 기쁩니다.
“모델이 훨씬 더 커지면 이런 문제가 더 나빠지나요?”라는 질문에 대해서라면, 확실히 문제의 심각도는 더 커집니다. 그렇다고 지금이 더 나쁜 상황이라고 말하고 싶지는 않습니다. 왜냐하면, 이 문제들을 다루는 데 매우 똑똑한 사람들이 한 분야를 이루어 연구하고, 이를 해결할 수 있는 인프라를 만들고 있다는 점이, 사람들이 처음으로 이런 문제를 생각해 보거나 각자 알아서 땜질식으로 해결하던 때보다 훨씬 더 나은 상황이라고 보기 때문입니다.
하지만 신뢰성 관점에서 보면, 우리 모델이 점점 더 커질수록… 왜 모델을 점점 더 크게 만드는 걸까요? 더 많은 데이터로부터 유의미하게 학습하기를 원하기 때문에 모델을 키우는 겁니다. 그렇다면 왜 문제에 점점 더 많은 데이터를 투입할까요?
그러니까… 만약 동전이 앞면이 나올 확률을 추정하는 문제를 생각한다면, 굳이 예시를 10억에서 100억으로 늘릴 필요는 없잖아요? 기초 통계죠. 몇 백 번만 던져도 꽤 괜찮은 추정치를 얻을 수 있습니다. 그 정도에서 멈춰도 되잖아요?
하지만 우리는 머신러닝에서는 그렇게 하지 않습니다. 우리는 계속 나아갑니다. 더 세밀한 동작을 끌어내고, 더 다양한 입력 환경과 시나리오에 유용하게 반응하도록 모델이 작동하길 원하기 때문이죠. 그래서 데이터셋은 점점 더 커집니다. 모델이 적응하고 발현할 수 있는 행동의 폭을 더 많이, 또 더 많이 확보해야 하기 때문입니다.
이제 일반적인 소프트웨어 엔지니어에게 “우리가 만드는 시스템이 예전에는 천 가지 동작만 필요했는데, 이제는 백만 가지가 필요하다”고 말해 보세요. 아마 이렇게 답할 겁니다. “그렇다면 테스트가 최우선 과제가 되겠네요. 예전에는 각 동작마다 두 개씩 해서, 대략 2000개의 유닛 테스트가 있었는데, 이제 백만 가지 동작이라니요. 테스트 엔지니어를 몇 명 더 뽑아야겠군요.” 아마 훨씬 더 많이 필요할 수도 있습니다.
모델이 유용하게 발현해야 하는 동작의 수가 훨씬 더 많아질수록, 모델에 대한 심사, 품질 보증, 일관성 점검, 검증 같은 전반적인 프로세스의 중요성과 부담이 정말로 커진다고 생각합니다.
머신러닝을 바라보던 “20년 전” 관점은 대체로 이랬습니다. “테스트 세트와 학습 세트가 있고, 두 세트가 같은 분포에서 나왔다면 테스트 데이터에 이미 신경 써야 할 모든 동작이 들어 있다고 가정하자. 문제없다. 보류된 테스트 세트에서 정확도만 잘 나오면 된다.”
그렇게 시작하는 건 나쁘지 않지만, 그걸로 끝내는 건 아마 최선이 아닙니다.
왜 우리는 테스트와 학습에 동일한 분포에서 나온 IID 데이터셋을 사용할까요? 모두가 그것이 “해야 하는” 일이라고 알고 있습니다. 하지만 왜 그렇게 하는지 이유를 상기해 봅시다. 우리는 그렇게 하는데, 수십 년 동안 “상관관계는 인과관계가 아니다”와 같은 중요한 통찰을 제시해 온 영리한 통계학자들이 있기 때문입니다, 그렇죠?
그리고 머신러닝 하는 사람들은 이렇게 말하죠. “음, 우리는 상관관계로부터 그냥 학습할 거예요.” “우리는 관찰 데이터로 학습하고 있어요. 엄청난 양의 관찰 데이터를 갖고 있으니까, 그걸로부터 그대로 배울 겁니다.”
그러면 통계학자들은 이렇게 묻죠. “좋아요, 그렇다면 ‘상관관계는 인과관계가 아니다’라는 문제는 어떻게 할 건가요?”
그러자 머신러닝 쪽에서는 이렇게 답합니다. “테스트 데이터가 같은 분포에서 나왔다는 걸 보장한다면, 결과만 놓고 보면 ‘상관관계는 인과관계가 아니다’라는 불편한 사실은 무시해도 됩니다.”
통계학자들은 이렇게 말하죠. “음, 그게 멋지진 않네요. 그렇지만 당신 말이 맞긴 하네요. 그리고 테스트가 항상 같은 분포에서 나온다고 약속한다면, 우리가 딱히 반박하긴 어렵겠네요.”
물론, 그건 과장된 묘사입니다. 이 말로 통계학자나 머신러닝 종사자분들을 불쾌하게 하고 싶지는 않습니다.
그래서 우리는 IID 기반의 학습·테스트 분할을 합니다. 그게 세상이 작동하는 방식이라고 믿어서가 아니라, 그렇게 하지 않으면 우리가 처한 학습 환경에서 훨씬 더 어려운 문제들의 한 묶음에 바로 노출되기 때문입니다. 어느 정도까지는, 지도학습에 관한 모든 이론적 보장들이 우리가 IID한 학습–테스트 분할의 세계 안에 머문다는 가정에 의존합니다.
이 모든 건 좋지만, 한 가지 작은 문제가 있습니다. 현실 세계는 거의 이런 식으로 돌아가지 않는다는 점이죠.
오프라인에서는 이렇게 작은 연구 아이디어를 실험해 볼 수 있습니다. “좋아, 내 데이터셋이 있으니 신중하게 나눌 거야. 그러면 이들은 같은 분포에서 나온 것이 되는 거지.”
하지만 실세계에 모델을 배포하면, 그 모델이 마주치는 데이터가 우리가 예전에 수집했던 제한된 과거 스냅샷과 정확히 같은 분포에서 나올 가능성은 매우 낮습니다. 세상은 보통 그렇게 우리에게 호의적이지 않기 때문이죠.
그래서 우리의 모델들은 서로 다른 분포에서 나온 데이터를 만나게 됩니다. 학습 데이터에 우연히 존재했던 상관관계가 실제로는 성립하지 않거나, 프로덕션 환경에서 의도적으로 깨져 있는 상황과 마주하게 될 것입니다.
그래서 이제는 평가 수준을 정말로 한 단계 끌어올려야 합니다.
이는 테스트 세트 정확도 같은 지표만을 최종 검증으로 삼을 수 없다는 뜻입니다. 우리 스스로 꼼꼼히 정리하고, 현명한 도메인 전문가들과 충분히 논의하여 “좋아, 우리의 상관관계가 무너질 지점은 어디인가? 우리의 블라인드 스폿은 어디에 있을 수 있는가? 그리고 이러한 영역에서 성능을 분석하기 위해 어떻게 구체적인 스트레스 테스트를 만들 수 있을까?”를 분명히 해야 합니다.

모델을 체계적으로 평가하기

루카스:
재미있게도, 아주 초기에 머신러닝을 배포하던 때를 떠올려 보면, 무작위로 샘플링한 홀드아웃 테스트 세트를 두는 것이 오히려 사람들의 첫 직관—그냥 이것저것 여러 가지를 시도해 보고 “모든 게 다 좋아졌으면 좋겠다”라고 생각하는 방식—보다 한 단계 나은 개선으로 여겨졌습니다.
평가 세트가 다양하고 이해관계자도 많으면 생길 수 있는 한 가지 문제는, 새 모델을 출시할 때 제출용 평가 세트를 여러 개 두면 어떤 지표든 반드시 내려가는 게 생긴다는 점입니다. 그러다 보니 새로운 모델을 프로덕션에 반영하는 데에 원칙 있는 프로세스를 갖추기가 어렵습니다.
그 부분에 대해 어떻게 생각하고 어떻게 대응하시는지 궁금합니다. 아마도 하시는 일에서 그 여정의 훨씬 앞단계를 이미 밟고 계실 테니까요.
D.:
“여러 방면에서는 더 나아졌지만 다른 몇몇 측면에서는 오히려 나빠진 모델이 있을 때, 어떻게 결정을 내리고 누가 그 결정을 하나요?” 이런 것들이 정말 중요한 문제입니다.
저보다 ML 공정성 분야를 훨씬 더 잘 아는 분들이 많지만, 버전 A와 버전 B 중 무엇을 선택할지, “어디서 개선이 있었는가?”, “어디서 악화가 있었는가?” 같은 결정을 내리는 과정에서 공정성 문제나 인간의 편향이 쉽게 스며들 수 있다는 점은 분명해 보입니다. 어떤 경우에는 이러한 판단이 결국 사람의 주관적 판단에 좌우될 수밖에 없습니다.
이 일을 잘하려면 표준화된 관행을 갖추는 것이 정말 큰 도움이 된다고 생각합니다.
그래서 제가 보기에 현장에서 충분히 활용되지 않는 표준화된 관행 중 하나는, 새로운 프로덕션 출시를 위해 제안되는 모든 모델 변경 사항마다 그 변경만을 다루는 논문 또는 미니 논문에 가까운 수준의 상세한 문서를 작성하는 것입니다. 그렇게 각 변경을 심층적으로 분석해 두어야, 그 변경이 무엇인지에 대한 유용하게 정제된 지식을 축적할 수 있습니다.
머신러닝 하는 사람들은 종종 실험을 꽤 느슨하고 빠르게 진행하는 경향이 있다고 생각합니다. 그리고 실험용 노트북을 뒷받침해 주는 인프라가 있으면 유용하다는 사실—이건 분명한 진전입니다. 정말 훌륭한 일이지요. 하지만 동시에, 이런 것이 매우 유용한 혁신으로 받아들여지는 현재의 환경을 어느 정도 반영한다는 뜻이기도 합니다. 물론 실제로도 그렇고요.
그래서 첫째, 크고 작든 모든 변경 사항을 빠짐없이 세심하게 분석하고 문서화하는 것입니다.
저는 기록을 남기는 일이 정말 중요하다고 느낍니다. 과거 실험을 모두 모아 수치를 보여주는 자동화 시스템을 매우 좋아하지만, 그 숫자들을 사람이 직접 읽고, 결론을 도출한 뒤, 토론할 수 있도록 그 결론을 사람의 언어로 써 두는 과정이 정말 중요한 단계라고 생각합니다.
첫 번째 근사로 말하자면, 기록을 남길 때 일어나는 일이라고 생각합니다. 그리고 우리가 과학자로서 행동하는 것이 중요합니다.
그렇다면 표준적인 관행은 무엇일까요? 모두가 각자의 문서를 회의에 가져와 함께 논의합니다. 최종 결정을 내리는 사람은 몇 명 있어야 하지만, 그 과정에서는 반드시 토론이 이뤄져야 합니다. 치열한 논박이 있어야 합니다. 우리가 이 문제들에 가져올 수 있는 모든 데이터와 통찰을 동원해, 가능한 모든 관점에서 정말 세심하게 검토해야 합니다.
그리고 결국에는 충분한 정보를 가진 사람들이 결정을 내려야 하겠지만, 우리가 할 수 있는 한 최대한 많은 맥락과 통찰을 그 의사결정자들에게 제공해야 합니다.
루카스:
네, 그 말이 맞네요.
2015년 이후 일어난 또 하나의 큰 변화는, 새로 등장한 많은 애플리케이션과 모델이 비정형 데이터로 작동한다는 점입니다. 그리고 저는 우리가 features를 이야기할 때조차도 암묵적으로 표 형식 데이터에 기반하고 있다는 가정이 있다고 봅니다. 2015년에는 그런 사용 사례가 압도적으로 많았다고 생각합니다.
입력이 이미지나 동영상, 오디오 파일일 때는 지금 말씀하신 내용에 어떤 점이 달라진다고 보시나요? 모든 이미지의 세 번째 픽셀의 분포 같은 건 신경 쓸 수 없을 텐데요. 사실 그게 무슨 뜻인지 말하기도 어렵잖아요.
D.:
네, 정말 중요한 지적이에요. 기본적인 개념들은 여전히 유효하다고 봅니다. 저는 아직도 습관적으로 “피처”라고 말하는 편일 정도인데요, 이미지, 비디오, 오디오, 비교적 비정형적인 텍스트 같은 비정형 데이터에도 그와 같은 개념들이 그대로 적용된다고 생각합니다.
첫 번째 LIME 논문에 눈이 덮인 배경의 허스키와 눈이 아닌 배경의 이미지를 비교한 아주 좋은 예시가 있었던 걸로 기억해요. 여기서 요점을 이해하려면 굳이 “특징이 눈 배경이다” 같은 걸 명시적으로 추출할 필요는 없다고 보시죠?
질문은 이것입니다. 데이터의 특성은 무엇인가? 데이터에 어떤 정보가 담겨 있는가? 우리는 종종 이를 피처라는 언어로 이야기할 수 있지만, 저는 이것이 우리 입력 데이터에 존재하는 모든 상관관계 전반에 일반적으로 적용된다고 봅니다. 그것은 이미지에서 눈 덮인 배경이나 일반적인 배경과 같은 것의 도덕적 동등물일 수도 있고, 특정 집단의 얼굴 특징일 수도 있으며, 비디오나 이미지에서 드러날 수 있는 수많은 특성일 수도 있습니다.
암 진단 이미지와 관련해 흥미로운 사례들이 있습니다. 예를 들어 원래의 의사들이 주석을 달 때 이미지 일부에 샤피로 동그라미를 그려놓은 경우 같은 것들이죠. 그런 것들이 문자 그대로의 피처에 해당하나요? 그렇진 않습니다. 하지만 분명 우리가 인지해야 하는 데이터의 특성입니다. 마치 오디오 입력 데이터에서 화자의 특성과, 매우 다양한 화자 범주를 포괄하는 것이 정말로 중요하듯이 말입니다.

ML 세계에서 Kaggle의 역할

루카스:
이제 Kaggle 이야기를 좀 해보고 싶어요. 그게 당신의 새로운 일자리잖아요. 어떻게 진행되고 있는지 궁금하고, 처음에 무엇이 당신을 Kaggle에 합류하도록 설레게 만들었는지도 알고 싶습니다.
흥미로운 선택이네요. 저는 Kaggle을 정말 좋아합니다. 제 생각에는 사람들이 생각하는 것보다 ML 분야에서 훨씬 더 큰 역할을 했다고 봐요. 예를 들어, 많은 사람들이 딥러닝이 실제로 효과를 내는 걸 처음 본 곳이 Kaggle이었다고 생각합니다.
하지만 Kaggle에 대한 비판—그리고 어느 정도 일리가 있다고 생각합니다—은 늘 특정 데이터셋에서 성능이 높은 모델을 만드는 일은 머신러닝을 현실 세계에서 제대로 작동하게 만드는 데 따르는 문제들 중 가장 사소한 부분에 불과하다는 점이었죠. 그리고 저는 당신이 머신러닝 모델을 현실 세계에서 실제로 작동하게 만드는 데 있��서 진짜 전문가라고 느낍니다.
그런 점이 당신의 Kaggle 합류와는 어떻게 연결되나요?
D.:
네, 아주 좋은 질문들이네요.
무엇보다 Kaggle의 일원이 된 것이 정말 기대됩니다. 그동안 서로 다른 시점에서 Kaggle과 여러 번 접점을 가져왔어요. 초기 대회 중 하나를 제가 직접 운영하기도 했고, 몇 년 전에는 Inclusive Images라는 대회도 진행했습니다. 팀을 오래전부터 알고 지냈고, 이 플랫폼의 열렬한 팬이기도 했습니다.
제가 일반적으로 머신러닝 분야의 현황에 관해 쓴 논문들을 혹시 보신 적이 있는지 모르겠지만, 지금 우리는 머신러닝 연구 분야의 생애주기에서 다소 까다로운 국면에 와 있다고 느낍니다.
지금 우리는 사람들이 논문을 내야 할 유인이 엄청나게 강한 상황에 와 있습니다. 굳이 더 강조할 필요도 없겠지만, 논문 출판이 매우 중요하다는 건 사실이죠. 전반적으로 보면, 매년 주요 학회에서 발표되는 논문이 대략 1만 편 정도, 많고 적음을 감안해도 그 정도 규모입니다.
그런데 흥미로운 점이 있습니다. 그 논문들마다 중요한 문제에서 0.5%나 1%의 개선을 주장하죠. 그렇다면 우리가 정말로 매년 이 분야를 5,000%나 10,000%씩 발전시킨 걸까요? 저는 그렇게 생각하지 않습니다. 그러니까 거기에는 뭔가 흥미로운 일이 벌어지고 있는 겁니다.
학회에 참여해 보신 분이라면—논문을 제출하든, 심사를 하든, 분야 책임자 역할을 하든—우리의 심사자 풀이 이미 한계까지 소진되고 있고, 사실 꽤 오래전부터 그랬다는 것을 느끼실 겁니다.
요즘 학회 심사 환경에서는 심사자가 1년 차 대학원생인 경우가 흔합니다. 그들이 그런 봉사를 해준다는 점은 분명 훌륭한 일이죠. 다만 막 이 분야에 발을 들인 사람에게서 중요한 연구의 품질에 대한 고위험 심사를 받는 것과, 오랜 기간 이 분야에 몸담아 온 사람에게서 받는 것은 전혀 다른 문제입니다.
이건 단지 분야가 성장한 데 따른 현상일 뿐입니다. 이 분야의 성장은 정말 놀라울 정도였죠. 해마다 발표되는 논문 수는 제 생각에 기하급수적으로 늘고 있습니다. 제가 마지막으로 확인했을 때도 분명 그랬습니다. 반면, 자격을 갖춘 심사자 수는 기하급수적으로 늘지 않고 있습니다.
흥미로운 지점입니다. 우리 분야는 수많은 벤치마크를 기준으로 극도로 분절되고 있다는 사실이 쉽게 보입니다. 또 우리 분야는 새로움, 즉 노벨티를 강하게 밀어붙이고 있습니다. 새로운 알고리즘이 없으면 논문을 게재하기가 꽤 어렵죠. 그런데 과학이라는 관점에서 보면, 우리는 끊임없이 새로운 것을 만들어내느라 정작 우리가 최고라고 생각하거나 기본으로 여기는 알고리즘들에 대해 충분히 깊이 이해하지 못하는 상황으로 가고 있다고 봅니다.
비교를 위해 한 가지 예를 들자면—저를 의사와 혼동할 사람은 없겠지만, 제 이해로는 의료계에서는 의사들이 질병이나 치료에 대한 증례 보고 같은 논문을 자주 발표합니다. 의학 분야에서 발표되는 모든 논문이 반드시 새로운 치료법을 제시해야 한다는 강한 압력이 없기를 진심으로 바랍니다. 만약 새로움이 최우선이고 모든 의학 연구가 매번 새로운 것을 시험해야만 한다면, 병원에 가서 건강을 되찾고 싶어 하는 한 사람으로서 꽤 걱정될 것 같습니다.
의학 분야에서는 메타분석을 자주 볼 수 있고, 반복 실험의 재현 결과도 자주 보며, 특정 임상시험이나 특정 치료의 경험을 보고하는 증례 연구 같은 것도 흔합니다. 그런데 그런 유형의 논문은 지금 머신러닝 연구 분야에서는 거의 찾아보기 어렵습니다. 이는 문제라고 생각합니다.
Kaggle을 보면, 지금까지 부족했던 이런 작업의 많은 부분을 우리가 장려할 수 있는 세계가 보입니다.
Kaggle 참가자들이 문제에 접근할 때는, 하나의 과제를 두고 수천 개 팀이 경쟁하는 경우가 흔합니다. 제 생각에 이는 실증적 엄밀성의 수준이 다른 어떤 프로세스와도 비교할 수 없을 만큼 뛰어나다는 뜻입니다. 결과가 나란히 비교되기 때문에 멋진 리더보드 효과 같은 것도 생기지만, 동시에 커뮤니티는... 모두가 최선을 다하는 데 헌신하면서도, 자신들의 아이디어를 공유하고 소통하는 데에도 헌신합니다.
노트북과 플랫폼, 그리고 우리가 갖춘 이와 같은 도구들—또한 토론 포럼—을 통해 엄청난 양의 지식이 공유되고, 축적되고, 전파되고 있습니다. 이는 우리 분야에 정말 놀라운 자원입니다.
그리고 그건 새로움 자체와는 거리가 있는 지식입니다. 핵심은 얼마나 효과적인가이고, 얼마나 엄밀하게 이해했는가입니다. 제게 그것은 무척 매력적이며, 제가 기꺼이 함께하고 싶어 설레는 일입니다.
커뮤니티가 만들어내는 지식을 더 잘 추려서 공유하는 일을 우리가 더 많이 해낼 수 있다고 믿습니다. 그 지식은 모든 토론 게시물, 모든 노트북, 모든 대회 결과와 이와 같은 것들 속에 암묵적으로 이미 존재합니다. 저는 그것이 정말로 흥미롭고 매우 매력적이라고 느낍니다.
MLOps 같은 것들을 물어보셨다는 건 알고 있습니다. 물론 제 배경의 한 부분이기도 하고요. 제가 “우리 모든 모델에 대해 정말 엄밀하고 심층적인 분석이 필요하다”라고 말해 놓고, 한편으로는 Kaggle에서 우리 대회의 거의 대부분이 출력으로 단일 숫자 요약 지표 하나만을 사용한다는 사실을 보게 되면… 네, 그 사이의 긴장 관계를 저도 분명히 느낍니다.
시간이 지나면서 우리는 더 많은 경쟁 환경과 그 밖의 다양한 환경을 마련해, 사람들이 실제 프로덕션 환경을 더 많이 체험하고, 프로덕션 환경에서 타당한 일을 해내는 능력으로 평가받을 수 있도록 노력하게 될 것이라고 생각합니다. 최근에 종료된 한 대회에서는 평가 지표 중 하나로 효율성을 측정했습니다. 이런 시도들이 정말 중요하다고 봅니다. 그 분야에서 우리가 더 할 수 있는 일이 매우 많습니다.
우리는 커뮤니티가 가장 흥미롭고 가장 중요한 방향으로 계속 나아가도록 꾸준히 추진할 것입니다. 그것이 모두에게 좋다고 생각합니다.
하지만 전반적으로, 저는 현재 ML 세계에서 Kaggle이 가장 훌륭한 자원 중 하나라고 봅니다. 커뮤니티로서 이미 해 온 기여에 비해 충분한 평가를 받지 못했다고 생각합니다. 그렇지만 약간의 지원과 방향 제시만 더해지면 우리가 훨씬 더 많은 일을 해낼 수 있다고 믿습니다.

Kaggle 대회, 데이터셋, 노트북

루카스:
네, Kaggle은 정말 많은 사람들에게 머신러닝에 접근할 수 있는 기회를 제공한다는 점이 놀랍다고 느껴요. 커뮤니티도 매우 친절하고, 학습 자료도 정말 많죠. 머신러닝을 Kaggle에서 시작한 분들을 많이 알고 있는데, 만약 머신러닝을 하려면 학교로 돌아가 박사 학위를 받아야 했다면 아마 절대 시작하지 않았을 거예요. 그게 정말 대단한 일이라고 생각합니다.
그런데 한편으로는 이런 생각도 들어요 — 방금 말씀하신 것처럼 어떤 논문들은 성능의 마지막 0.1%를 짜내려고 하잖아요. 그리고 그런 건 Kaggle이 정말로 환영하는 문화처럼 보이기도 하고요. 사실 그런 부분을 좋아하는 제 자신도 있어요. 모델에서 마지막 한 방울의 성능을 끌어내는 과정은 정말 꽤 즐거운 경험이라고 생각하거든요.
D.:
물론이죠. 저는 정말 정확한 모델에 반대할 생각은 없습니다.
그런데 가장 흥미로운 점은, 첫째, 어떤 문제든 여지가 얼마나 남아 있는지 파악하는 게 정말 중요하다는 겁니다. 그리고 머신러닝 관점에서 우리는 종종 “모델이 가장 중요하다” 같은 말을 하곤 하죠.
하지만 이러한 대회들은 모두, 그 문제를 해결하는 데 진심으로 관심을 가진 사람들이 있는 응용 분야에서 열립니다. 예를 들어 그레이트 배리어 리프를 보호하는 데 도움을 주거나, 고래를 식별하거나, 신용카드 사기를 탐지하는 일을 돕는 것, 혹은 그 사이 어딘가에 해당하는 문제들이죠. 그분들은 머신러닝 관점 때문이 아니라, 문제 자체를 해결하는 것의 중요성 때문에 진정으로 신경 씁니다. 그런 측면에서 기여하는 것 또한 매우 중요합니다.
제가 보는 바는, 사람들이 도전 과제로서 머신러닝 문제에서 마지막 1%까지 짜내려는 동기를 가질 때, 놀라울 정도로 다양한 접근법이 나온다는 점입니다. 그리고 그게 제가 가장 흥미롭게 느끼는 부분이에요.
마지막에 단 하나의 우승 솔루션이 나와서 모두가 그 우승자를 대단한 사람으로 축하한다는 의미만은 아닙니다 — 물론 그분들은 정말 훌륭하고, 마땅히 축하해야 합니다. 동시에 우리는 시도되었던 다른 접근들에 대한 방대한 정보를 얻게 됩니다. 겉보기에 그럴듯했지만 여러 이유로 기대만큼 성과를 내지 못한 것들까지 포함해서요. 이를 대규모 소거 실험에 비유할 수 있습니다.
흥미로운 정보는 리더보드 최상위 순위만이 아닙니다. 수천 개 팀이 참여하고 있고, 참가자들이 올바르게 정렬되도록 이런 경쟁 구조가 필요하다는 사실 자체도 중요합니다. 그리고 여기서 나오는 결과들은 리더보드의 위아래 전 구간에 걸쳐 요점을 추려 살펴볼 만한 흥미로운 내용이라고 생각합니다.
루카스:
물론 그렇지만, 웃긴 점은 요즘 Kaggle에서는 대회 구조가 없어도 대회보다 더 다양한 것이 나오고 있다는 거예요. 그게 유용하고 재미있기도 하고요.
예전에 이 팟캐스트에서 앤서니가 나와 이야기했을 때, 대회보다 데이터셋이 더 인기 있을지도 모른다고 하더군요. 그 얘기를 듣고 꽤 놀랐습니다.
D.:
맞아요. 그러니까… Kaggle은 전 세계를 위한 정말 흥미로운 자원 모음이 되었습니다. 대회는 그중 하나가 맞습니다. 하지만 말씀하신 대로, 실제로는 대회에 참여하려고 오는 사람들보다 자신의 머신러닝 작업에 필요한 데이터셋을 찾으려는 목적으로 Kaggle을 사용하는 경우가 더 많습니다.
제가 Kaggle에 합류하기 전에는 몰랐던 사실인데, 지금은 그 가치를 깊이 실감하고 있습니다. Kaggle에는 공개 공유된 데이터셋이 약 160,000개 있다고 생각합니다. 엄청난 정보의 보고죠. 그리고 Kaggle의 데이터셋이 훌륭한 점은, 그것들이 정적인 대상이 아니라는 데 있습니다.
커뮤니티가 짧은 토론과 노트를 올리고, 예제 노트북을 공유할 수 있는 기회가 있습니다. 단순히 숫자가 잔뜩 들어 있는 CSV 파일을 받는 데서 그치지 않도록 말이죠. 데이터셋에 무엇이 들어 있는지, 어디에 허점이 있을 수 있는지, 강점은 무엇인지 이해하고, 이 데이터셋들에 참여한 커뮤니티로부터 진화해 가는 풍부��� 주석을 축적하는 데 목적이 있습니다.
우리가 더 할 수 있는 일도 훨씬 많다고 생각하고, 그걸 해 나가는 게 무척 기대됩니다. 하지만 데이터셋만으로도 훌륭한 자원입니다. 노트북 역시 놀라운 자원입니다. 공개 공유된 노트북이 엄청나게 많습니다. 수십만 건에 이르는 노트북이 공유되어 있고, 그 안에는 예제 코드와 매우 정성스럽게 작성된 설명 텍스트가 담겨 있습니다.
무언가를 제대로 배우고 싶고 훌륭한 예시를 찾고 있다면, Kaggle에 와서 공개된 예제 노트북들을 살펴보는 것이 출발점으로서 놀라울 만큼 가치가 큽니다.
이제 막 시작해 보려는 분들을 위한 다양한 학습 코스도 폭넓게 제공하고 있습니다. 가능한 한 널리 머신러닝 지식을 공유하려면 그런 진입로를 마련하는 것이 중요하다고 생각합니다.

왜 Kaggle은 열대우림과 같은가

루카스:
Kaggle의 성공을 어떻게 정의하고 계신가요? 소비자용 웹사이트처럼 보고 계신가요? 주간 활성 사용자 수 같은 지표를 늘리는 데 초점을 맞추고 있나요? 수익화를 목표로 하고 있나요, 아니면 다른 방향인가요? 그 점을 어떻게 생각하고 계신지 궁금합니다.
D.:
저는 Kaggle이 본질적으로 머신러닝의 열대우림이라고 생각합니다. 세상이 반드시 필요로 하고 아마 없이 지낼 수 없을 만큼 놀라울 정도로 풍부하고 가치 있는 생태계입니다.
직접적인 수익 모델은 없습니다. 그리고 그 점에 대해서는 크게 걱정하지 않습니다. 마치 기업에 아주 큰 연구 부서가 있더라도, 그것이 당장 수익을 내지 않을 수 있다는 이유만으로 크게 걱정하지 않는 것과 같은 맥락입니다.
저는 Kaggle이 전 세계를 위해 만들어내는 지식, 그리고 Kaggle이 세상에 창출하는 가치가 그 자체로 반드시 존재해야 한다고 강하게 주장할 수 있을 만큼 매우 크다고 생각합니다. 그리고 우리 팀은 꽤나 민첩하고 탄탄하게 해냅니다.
50명으로 구성된 팀과 함께 사용자 1천만 명을 돌파했다는 사실이 정말 놀랍습니다. 거대한 조직은 아닙니다. 노트북 팀, 데이터세트 팀, 학습 콘텐츠를 만드는 분들, 그리고 대회 팀에 이르기까지 모두가 정말 열심히 일하고 있습니다. 정말 뛰어난 분들입니다. 그리고 이분들이 하는 일이 전 세계에 엄청나게 큰 영향을 미치고 있습니다.
그래서 “Kaggle을 어떻게 바라보느냐”라는 질문에 대해서라면, 저는 Kaggle을 하나의 생태계로 생각합니다.
이 생태계는 서로 상호작용하는 여러 가지 구성 요소로 이루어져 있습니다. 초보 학습자분들이 우리를 찾아오기도 하고, 실무자로서 오시기도 합니다. 어떤 분들은 이미 업무의 일부로 매일 머신러닝을 하고 있을 수 있고, 어떤 분들은 상당히 고급 단계까지 공부를 마쳐 머지않아 일상적으로 머신러닝을 하기를 기대하고 있을 수도 있습니다. 최첨단 연구자들도 있습니다. Geoff Hinton은 우리 대회 중 하나의 초창기 유명한 우승자였습니다. 우리는 최전선의 연구자들과 큰 폭으로 협업하고 있으며, 이분들은 서로 다른 것을 우리 커뮤니티에 가져옵니다. 그리고 서로를 위해 커뮤니티를 풍요롭게 만듭니���.
초보 학습자가 없다면, 우리는 엄청난 열정 에너지와 우리를 냉정하게 검증하게 해 주는 스트레스 테스트의 기회를 잃게 될 것입니다. 실무자가 없다면, 커뮤니티에 놀라울 만큼 잘 공유되는 현실적이고 실용적인 노하우와 지식의 상당 부분을 잃게 될 것입니다. 최첨단 연구자가 없다면, 지금 열리고 있는 만큼 흥미로운 다양한 대회를 제공하기도 어렵고, 가까운 미래에 등장할 진정한 차세대 솔루션들도 대거 놓치게 될 것입니다.
그리고 물론 말씀하신 대로, 대회만이 우리가 하는 전부는 아닙니다. 노트북이 없다면, 우리는 많은 것을 잃게 된다고 생각합니다. 데이터세트가 없다면, 역시 많은 것을 잃게 된다고 생각합니다.
그래서 이런 요소들이 서로 맞물려 아주 흥미로운 방식으로 머신러닝의 거대한 연결망을 이룹니다. 그리고 Kaggle을 가치 있는 생태계로 바라보고, 우리가 잘하고 있는지 평가할 때도 생태계적 관점을 중시하는 것이 올바른 접근이라고 생각합니다.
루카스:
생태계를 어떻게 측정하나요? 사용량으로 보나요?
D.:
그러게요. 우리의 단 하나의 마법 같은 지표가 뭘까요? 그런 건 없어요.
루카스:
그러니까… 생태계의 건강성을 어떻게 측정하죠?
D.:
맞아요, 정말요. 입사하고 2주 차에 제가 Google에 이렇게 검색했어요. “생태계를 연구하는 사람들은 건강성을 어떻게 측정하지?”
이건 분명히 다각도의 분석이 필요한 주제예요. 생태계를 어떻게 측정하는지 생태학자에게 물어보면 이렇게 말할 거예요. “나비가 행복한지만 재서는 안 돼요. 새가 행복한지만 재서도 안 돼요. 서로 다른 각 세그먼트마다 유의미한 지표를 갖춰서 측정해야 합니다.”
우리가 중요하게 보고 건강해야 한다고 생각하는 각 세그먼트를 살펴볼 수 있도록, 유용하게 정의된 지표의 그리드를 마련해 두었어요. 여기서 모든 항목을 다 설명하진 않겠습니다만, 그런 지표들이 큰 도움을 줍니다.
하지만 결국 우리가 진정으로 바라는 것은 어느 한 영역만 뛰어나고 다른 많은 영역에서는 형편없는 상태가 아니라, 우리 생태계의 모든 중요한 영역 전반에서 고르게 아주 좋은 성과를 내는, 이른바 전반이 푸르게 물든 상태를 갖추는 것입니다.
루카스:
그러니까 사람들이 자신이 하려는 일을 즐겁고 성공적으로 해내고 있다고 느끼게 만드는 행동들을 관찰하는 방식이라는 거죠?
D.:
그러게요. 사람들의 행동을 관찰한다는 말은 좀 소름 끼치게 들리고, 우리는 그런 일은 하지 않습니다. 하지만 매일 얼마나 많은 노트북이 만들어지는지부터, 대회 참여 현황, 설문 응답, 그리고 사용자들이 만족하고 있는지 확인하기 위한 다양한 지표들, 들어오는 버그 리포트까지 모두 살펴봅니다.
그래서 Kaggle을 어떤 형태로든 인용하는 논문의 수와 같은 장기 지표들을 살펴보고 있습니다.
루카스:
좋네요.
D.:
마지막으로 확인했을 때 거의 5만 개나 있었어요.
루카스:
와.
D.:
우리가 일을 잘하고 있는지 평가할 수 있는 방법은 매우 다양합니다.

Kaggle의 가능한 향후 방향

루카스:
새로 시도해 보고 싶은 일이나 바꾸고 싶은 것이 있나요? Kaggle을 소개하고 싶은 새로운 사람들이 있거나, 기존 사용자들을 Kaggle이 지원하는 새로운 방식이 있나요?
D.:
맞아요. 아까 이와 관련해서 살짝 물어보셨죠.
제 제약을 감안하면, 시간이 지나면서 Kaggle에서도 더 실무 지향적인 MLOps 스타일의 기능들을 추진하게 되지 않는다면 오히려 놀라울 것 같습니다. 그리고 그중 일부는 분명히 대회 형태로도 제공될 것입니다.
모델을 단순히 정확도만으로 평가하는 것은 2022년의 모든 요구를 충족하기에 아마 충분하지 않을 것입니다. 따라서 우리는 효율성을 포함한 다양한 기준에서 모델을 평가할 수 있는 방법을 제공해야 하며, 동시에 유용하고 매력적이며 흥미로운 과제들도 만들어 나가야 합니다.
벤치마크 분야에서 우리가 할 수 있는 일이 매우 많다고 생각합니다. 현재 우리의 주요 벤치마크는 사실상 대회가 대부분이죠. 하지만 우리는 방대한 데이터셋과 노트북을 보유하고 있기 때문에, 훨씬 더 장기적으로 운영되는 벤치마크로 확장하고, 그런 방식으로 커뮤니티를 위한 저장소이자 서비스가 될 수 있다고 봅니다.
사용자 그룹과 커뮤니티 측면에서, 우리는 현재 머신러닝 분야에서 대표성이 낮은 집단을 위한 아웃리치에 매우 강한 초점을 두고 있습니다. 그리고 이는 앞으로도 확실히 계속될 것입니다.
우리 커뮤니티의 전문성 수준을 살펴보면, 현재 초보 학습자들을 잘 지원하고 있다고 생각합니다. 말씀하신 대로, 머신러닝을 배우는 거의 모든 사람이 여정의 어떤 시점에는 Kaggle을 찾게 되죠. 그래서 우리는 그분들을 꾸준히 잘 지원하고, 가능한 한 많은 진입 경로를 제공하며, 그 경험을 정말 좋고 유익하게 만들고자 합니다.
하지만 그 부분은 잘하고 있다고 생각하고, 실무자들을 지원하는 방식과 최첨단 연구 커뮤니티와의 접점을 넓히는 면에서도 더욱 크게 개선할 수 있다고 봅니다.

건전한 경쟁과 자기 성장

루카스:
막 시작하는 사람에게 Kaggle을 “경쟁”으로 보는 프레이밍에 단점이 있다고 생각하시나요? 사람들이 서로 경쟁한다고들 하지만, 커뮤니티가 놀라울 만큼 친근하다는 점이 재미있기도 합니다.
그런 생각을 해본 적 있나요? 어떤 사람들에게는 가장 정확한 모델을 만들기 위해 다른 사람들과 경쟁하고 싶지 않을 수도 있다는 점 말이에요?
D.:
네, 물론이죠. 그에 대해서는 두 가지로 답할 수 있을 것 같아요.
첫째로, 저희가 운영하는 대표 대회들이 있어요. 사람들은 많은 상금을 노리거나 그와 비슷한 목표를 가지고 참가하죠. 그런 자리에서는 많은 참가자들이 실제로 “이기는 것”을 목표로 합니다. 상금을 타든, 진행 체계에서 금메달을 얻든, Kaggle Master나 Grandmaster가 되든 말이에요. 그런 목표들은 정말 훌륭하고, 앞으로 나아가게 만드는 중요한 동력이죠.
입문을 위한 단계로 설계된 Playground 대회들도 있습니다. 상금을 타는 것보다는 자신의 실력을 시험해 보는 데 초점을 맞춘 대회예요.
그런데 대표 대회들조차도… 제 취미 중 하나가 아마추어 마라토너예요. 마라톤 뛰는 걸 좋아합니다. 정말 멋지고 재미있는 일이죠. 나가보면 사람들이 다 같이 응원하고 박수치고 그러잖아요. 그건 레이스에서 어디에 있든 마찬가지예요. 미리 말씀드리자면, 저는 맨 앞에 있지는 않습니다.
경쟁을 중심으로 구성된 환경이더라도 참여와 자기 성장에 초점을 맞출 수 있다는 점에는 정말 중요한 무언가가 있다고 생각합니다. 많은 사람들에게 큰 영감을 주는 요소이기도 하고, 우리는 그것을 강조하며 Kaggle 경험의 일부로 확실히 만들 수 있습니다. 그건 정말 중요합니다.
그리고 사용자분들께 직접 듣는 이야기이기도 한데요. 꼭 1등이나 2등을 하려고 오는 게 아니라, 실력을 키우고 지식을 나누고 아이디어를 공유하며 배우기 위해 오는 분들이 정말 많다고요.

막대한 연산 자원 시대에서의 Kaggle의 중요성

루카스:
최근까지 Google Brain에 계셨고, OpenAI를 비롯한 여러 곳에서 나오는 작업들을 떠올려 보면—특히 유명한—어떤 측면에서는 정말 거대한 모델들이 다른 모델들의 성능을 확실히 능가하는 것처럼 보이죠.
그 흐름이 앞으로 10년 더 이어진다고 보면, Kaggle은 여전히 의미가 있을까요? 막대한 연산 자원에 접근할 수 없는 사람도 어떤 문제를 유용한 방식으로 해결하는 데 역할을 할 수 있는 여지가 남아 있을까요?
D.:
맞아요. 정말 좋은 질문입니다. 그리고 지난 몇 년간 대규모 언어 모델이나 다른 멀티모달 모델과 관련해 일어난 일들은 여러 면에서 세상을 확실히 바꿔 놓았죠. 그중 하나는 일부 연구가 수행되는 방식의 판도를 바꿨다는 점입니다.
고에너지 물리학의 세계가 유용한 비교 대상이라고 생각합니다.
물리학에도 — 저는 물리학자는 아니니 그냥 “어떤 종류의 물리학”이라고 할게요 — 선형 가속기 같은 장비가 있어야만 할 수 있는 연구가 있습니다. 지역 정부로부터 수십억 달러의 자금을 받아, 지구의 안정적인 지반 아래에 수 킬로미터(혹은 마일)에 이르는 콘크리트 터널을 건설하고, 엄청나게 비용이 드는 실험을 수행해야만 특정한 종류의 지식을 얻을 수 있는 경우죠.
이것은 물리학 분야의 일부가 작동하는 방식을 분명히 바꿔 놓았습니다. 이 점에 대해서는 의문의 여지가 없습니다.
그리고 그 밖에도, 물리학계는 이런 유형의 연구를 잘 수행하는 역량을 갖추어야 했고, 일부 분야에서는 실험을 어떻게 제안하고 어떻게 평가할지에 대해 조금 더 체계적인 위계가 필요해졌습니다. 실험 결과에 대�� 위계가 아니라, 애초에 실험을 수행해야 하는지 말아야 하는지, 즉 어떤 것이 파이프라인에 들어가는지, 누가 그 결정을 내리는지, 그리고 그 밖의 절차들에 관한 위계 말입니다.
어떤 종류의 머신러닝 연구에서도 매우 비슷한 전개가 일어나고 있다고 생각합니다.
하지만 제가 이해하기로는, 세상에는 초대형 충돌기 같은 장비에 접근하지 않아도 수행할 수 있는 물리학 연구가 충분히 많습니다. 마찬가지로, 머신러닝에서도 충돌기급 자원이 없어도 할 수 있는 연구가 지금도 많고 앞으로도 계속 많을 것이라고 믿습니다.
예산과 자원이 제한된 환경에서는 어떻게 할 것인가 같은 질문이 될 수 있습니다. 예를 들어 브라우저에서 돌아가야 하는 모델, 웹 디바이스에서 돌아가야 하는 모델, 분산된 엣지 기반 장치에서 돌아가야 하는 모델 말이죠. 제 생각에는 매우 작은 모델을 학습시키는 데는 충돌기급 자원이 필요하지는 않을 것 같습니다.
어떤 형태로든 파인튜닝이 필요한 모델은 어떻게 다뤄야 할까요? 혹은 프롬프트 튜닝처럼, 매우 대규모 모델을 활용할 수는 있지만 주어진 사용 사례에 가장 효과적으로 쓰는 방법을 찾아내야 하는 상황은요. 제 생각에는, 이런 과제는 전문 도메인에 있는 많은 사람들이 앞으로도 상당히 오랫동안 충분히 시도해 볼 만한 일로 남을 것입니다. 제가 내다보는 한에서는요.
마지막으로 덧붙이자면, 이렇게 매우 대규모인 모델들에 대해 증거와 검증의 기준을 어떻게 설정할지 고민하는 것도 중요합니다. 그리고 만약… 지금 특정 모델을 어떻게 검증할지 생각해 보려는 건데요… 앞서 이야기했듯이, 어떤 종류의 검증을 해야 하는지, 그리고 유닛 테스트에 해당하는 도덕적 동등물과 같은 것들을 어떻게 마련해 둘지에 대해 논의했었습니다. 이러한 것들이 실제로 갖춰져야 할지도 모릅니다.
저는 “수백만 가지, 어쩌면 그보다 더 많은 다양한 행동을 다양한 상황에서 드러내게 하여 스트레스 테스트하고 검증해야 하는, 매우 거대 규모의 모델을 어떻게 검증할 것인가”라는 문제를 다루는 데 있어, Kaggle 같은 커뮤니티보다 더 좋은 자원이 많다고는 생각하지 않습니다.
그것들을 대회나 자원 같은 틀로, 혹은 비슷한 다른 것들로도 정리할 수 있을까요? 물론이죠, 그렇지 않나요?
이런 이유들로 Kaggle 커뮤니티의 중요성은 시간이 지날수록 더 커질 것이라고 생각합니다. 그렇다고 해서 모든 Kaggle 사용자가 X백만 컴퓨트 시간 같은 규모로 모델을 학습하게 된다는 뜻은 아닙니다. 그것은 현실적이지도 않고, 설령 가능하더라도 세상에 좋은 일이라고 보기는 어려울 것입니다. 하지만 그럼에도 여전히 가치를 더할 수 있는 일들이 매우 많다고 생각합니다.

AutoML 대 인간 판단

루카스:
그런 맥락에서 보면, AutoML 기법이 실제 대회의 가치를 대체할 수도 있다고 보시나요? 예전에는 Kaggle에서 우승하는 전략이 보통 최고의 피처 엔지니어링을 하는 거였다고 느꼈거든요.
그런데 저는… 사실 지금도 여전히 그런지 궁금합니다. 게다가 요즘처럼 거대 모델들이 일종의 자체 피처 엔지니어링을 하고, 그 위에 AutoML까지 얹어지는 상황에서는 말이죠. 그렇다면 10년 뒤에 Kaggle 사용자는 그런 전략을 어떻게 이길 수 있을까요?
D.:
아니, 그러니까… 우리 그냥 포기해야 하는 거야?
루카스:
응, 맞아요, 바로 그거예요.
D.:
AutoML은 무작위로 예를 들자면 하이퍼파라미터 스위프처럼 정말 중요한 도구예요, 그렇죠?
저는 AutoML과 유용한 하이퍼파라미터 튜닝 엔진 같은 도구들이 머신러닝에서 특별히 흥미롭지 않은 작업들을 자동화하는 데 큰 역할을 한다고 생각합니다. 초창기에는 저도 수작업으로 하이퍼파라미터를 튜닝하는 데 많은 시간을 썼는데, 그다지 보람 있지는 않았습니다.
하지만 더 근본적인 질문은 이렇습니다. “주어진 과업을 위해 모델을 학습시키려면 어떤 데이터를 넣어야 하는가? 데이터의 분포와 구조를 우리는 어떻게 이해하고 다뤄야 하는가? 가능한 한 많은 상관관계를 학습하는 데 그치지 않고, 유용한 인과 개념까지 포착하기 위해 모델에는 어떤 구조가 적절한가?”
더 나아가 이런 질문들도 있습니다. 대규모 사전 학습 모델을 파인튜닝한다면, “그걸 어떻게 설정하는 것이 가장 올바른가? 적절한 타깃 세트를 어떻게 구성해야 하는가? 처음부터 어떤 사전 학습 기반을 선택하는 것이 맞는가?”
이 모든 것은 흥미로운 질문들이지만, 가까운 미래에 인간의 판단을 완전히 대체해 자동ML 파이프라인이 포괄적으로 해결할 수 있으리라고는 생각하지 않습니다.
사람들이 인간의 문제와 인간의 판단과 통찰이 가장 가치 있는 영역에 집중하는 건 정말 반갑습니다. 고된 반복 작업은 자동화하면 됩니다. 전혀 문제없다고 생각해요.

모델이 프로덕션에 배포된 이후

루카스:
정말 감사합니다. 저희는 항상 두 가지 질문으로 마무리하는데, 꼭 여쭤보고 싶습니다.
끝에서 두 번째 질문은 꽤 열려 있습니다. 그런데 당신이 보기에 머신러닝에서 과소평가되고 있는 측면은 무엇인가요? 혹은 시간이 더 있다면 좀 더 깊이 들여다보고 싶은 주제가 있다면 무엇인가요?
D.:
지금 머신러닝에서 가장 흥미로운 주제는 변화하는 데이터 분포에 견고한 머신러닝을 만드는 것입니다. 저는 구글 브레인에서 마지막 몇 년 동안 주로 이 분야에 집중해 왔습니다.
처음에 이야기했듯이, 테스트 데이터와 학습 데이터 사이의 IID 가정이 깨지면 지도 학습을 지탱하던 많은 이론적 보장이 사라집니다. 그렇다고 해도 우리는 여전히 시스템이 제대로 작동해야 합니다.
지금 당장 가장 흥미로운 연구 분야는 변화하는 데이터 분포에 견고하게 대응하는 방법을 찾아내는 것이라고 생각합니다. 이건 어떤 추상적인 문제가 아니라, 제가 본 모든 배포된 시스템에서 실제로 발생하는 일입니다.
과학적 발견을 위한 머신러닝 같은 분야에서도 이런 일은 발생합니다.
단백질 설계나 신약 개발 같은 생성적 작업을 머신러닝으로 이끌고자 한다면, 그 본질상 우리가 이미 알고 있는 세계의 경계를 넘어설 수밖에 없습니다. 그게 바로 목적이니까요. 그렇다면 신약 개발처럼 핵심 문제 영역을 진전시키는 데 매우 중요한, 아직 알려지지 않은 영역에서도 우리 모델이 잘 견딜 수 있도록 어떻게 보장할 수 있을까요?
제가 보기에는 그게 정말 가장 중요한 분야 중 하나입니다.
루카스:
이 주제와 관련해 사람들이 참고할 만한 좋아하는 논문이나, 더 깊이 배울 수 있는 자료가 있을까요?
D.:
네, 그래서 저희가 방금 논문을 하나 공개했는데요 — 제가 Brain에서 관여한 마지막 논문으로, Plex라는 제목입니다. 이 논문은 사전 학습에서 시작해 여러 가지 다른 베이지안 기법들을 덧붙여, 데이터셋 분포 이동에 대한 강건성을 통합적으로 바라보는 관점을 제시합니다. Jasper Snoek, Dustin Tran, Balaji Lakshminarayanan을 비롯해 훌륭한 공동 저자들이 아주 많이 함께했습니다.
루카스:
대단하네요.
마지막 질문입니다. 실제로 2022년 지금, 머신러닝 모델을 현실 세계에서 제대로 작동하게 만든다고 했을 때, 가장 큰 격차나 가장 어려운 지점은 어디라고 보시나요? Kaggle에서 우승한 모델을 실제로 배포해 전 세계 누군가에게 유용한 것으로 만드는 과정에서요.
D.:
흥미로운 점은, 당신 같은 사람들이 과거에는 꽤 어렵던 일들을 이제는 꽤 간단하게 만들어 주는 많은 인프라를 구축해 왔다는 것입니다. 그래서 “모델을 어떻게 프로덕션에 올리느냐” 하는 과제에 대해서도, 사람들을 도와줄 수 있는 패키지, 시스템, 플랫폼, 클라우드 기반 솔루션 등 선택지가 매우 많아졌습니다.
제가 보기에는 더 풀기 어려운 부분은 “시간이 지나도 스스로 자랑스럽게 생각할 수 있는 모델로 어떻게 보장할 것인가?”에 관한 것입니다.
그리고 그중에서도 가장 분명하게 드러나는 지점은 견고성 측면인데요 — 데이터셋 시프트일 수도 있고, 공정성일 수도 있으며, 포용성 같은 문제일 수도 있습니다. 다양한 배포 환경에서 우리의 모델이 의도한 방식대로 작동하도록 보장하는 일은, 여러 영역에서 인프라가 크게 발전한 덕분에 “모델을 프로덕션에 어떻게 올릴 것인가”라는 기계적 문제보다 지금은 훨씬 더 어렵다고 생각합니다.

아웃트로

루카스:
좋네요. 정말 잘 말씀해 주셨어요. 진심으로 감사드립니다. 정말 즐거운 인터뷰였고, 매우 감사하게 생각합니다.
D.:
멋지네요, 정말 좋았습니다. 정말 즐거웠어요. 정말 감사합니다.

이 글은 AI가 번역한 기사입니다. 오역이 의심되는 부분이 있으면 댓글로 알려 주세요. 원문 보고서는 아래 링크에서 확인할 수 있습니다: 원문 보고서 보기