Skip to main content
AI/Data Science 연구이야기
Picture

Member for

4 months 2 weeks
Real name
Keith Lee
Bio
Head of GIAI Korea
Professor of AI/Data Science @ SIAI

들어가며

국내 귀국해서 보면 'AI전문가' 혹은 '데이터 전문가'라고 스스로 주장하는 분들 중에

수학을 언어로 쓸 수 있는 분

들을 거의 찾아볼 수가 없습니다.

코딩이 언어지, 왜 수학이 언어냐, 수학이 왜 필요한지 이해를 못 하겠다는 반박을 하는 분들도 굉장히 많이 만납니다.

그런데, 'AI/Data Science 연구 이야기'를 다 읽고 나면 왜 제가 '수학을 언어'로 쓸 수 없는 분들을 AI/Data Science 관계자 취급조차 안 하는지 조금이나마 이해하게 되실 겁니다.

그 분들은 AI라고 이름 붙은 개발자 전용 Library (코드 묶음집)을 갖다 붙이는 IT개발자들이지, 'AI전문가' 혹은 '데이터 전문가'가 아니거든요.

간단한 예시를 하나 들어봅시다.

한 이커머스 스타트업이 시리즈 C 펀딩을 받으려고 하는 상황을 가정해 봅시다.

회사에서는 매주 목요일에 특별 할인 판매 이벤트를 여는데, 그 이벤트 때문에 아무래도 사용자가 많으니까, 그래서 웹사이트 서버 접속자 숫자가 평소보다 몇 배는 더 많으니까, 여기에 따른 비용 관리를 하고 싶어한다고 해 봅시다. 반대로 방문자 숫자가 많아야 시리즈 C 펀딩을 받을 때 아무래도 유리하니까, 한편으로는 더 공격적인 이벤트를 하고 싶고, 그래서 많은 방문자들을 감당할 수 있는 대형 서버를 운영하고 싶습니다. 비용이 더 나오기는 하겠지만, 일단 투자를 받는 게 중요하고, 시리즈 B 이전 투자자들은 시리즈 C에서 높은 밸류로 투자를 받기를 원할테니까요.

경영진의 머리 속에는 방문자 1명 당, 혹은 100명 당 자기들이 외칠 수 있는 밸류에이션 숫자, 투자 받기 전까지 남은 돈으로 감당할 수 있는 서버 비용, 투자 받기 전에 몇 달 동안 공격적인 이벤트를 해야 투자자를 설득할 수 있는 방문자를 뽑을 수 있을지 등등이 휙휙 지나갈 겁니다.

속칭 '통밥'으로 때려 맞출 수도 있지만, 'AI 전문가', '데이터 전문가'라는 사람이 좀 더 합리적인 수치를 뽑아내주면 더 신뢰감도 생기고, 투자사에 보여줄 때도 믿음직스럽겠죠?

이럴 때 각각의 집단 별로 어떤 식의 접근을 할지 한번 예상 시나리오를 그려보겠습니다.

AI/Data Science 연구 이야기 예시

방법 1. 전략 컨설팅 회사 출신

이 분들은 100명 일때 만원이면 10,000명 일 때 100만원이 된다고 생각하는 '선형(Linear) 사고'에서 크게 벗어나지 못하는 분들입니다.

서버가 감당하는 방문자 숫자라는게 AWS, Azure 같은 클라우드 서비스를 쓰고 있어도 비용이 선형으로 증가하는 일이 드뭅니다만, 이 분들은 방문자 숫자가 늘어나는 예상치에 맞춰 단순 곱하기로 비용 계산을 할 겁니다.

이미 Caching이 다 되어 있는 웹사이트를 단순히 보고 가는 거라면 Nginx만 돈다고 쳤을 때, CPU 코어 하나로 3,000개/초 정도의 트래픽을 감당하는 걸 제 간단한 서버로 점검을 해 본 적이 있습니다. 그런데 코어 2개가 되면 '6,000개/초'가 되느냐? 아뇨. 비선형(Non-linear)으로, 대부분 증가폭이 감소하는 Concave 함수 형태로 움직입니다. 하나의 서버에서 코어 숫자를 늘리느냐, 여러 서버로 분산해서 대응하느냐를 고민하기 시작해야죠.

방법 2. 개발자 출신

이런 지식이 있는 개발자 출신들은 서버를 N대로 분산하고, 그 앞에서 받아주는 Proxy 서버를 어떻게 구성해야하고, 그 때 추가 비용이 얼마나 발생하는지 등등을 자신있게 이야기 할 수 있을 겁니다.

Proxy 서버로 모든 트래픽을 받아서 뒤에 있는 Backend 서버에 넘겨주는 방식을 쓰고, 로그인 한 사용자들은 아무래도 CPU를 많이 쓰니까, CPU가 많이 붙은 서버로, 로그인을 하지 않은 일반 방문자들을 그 숫자가 많기는 하지만 Caching 된 페이지만 보다보니 정작 서버에 주는 부담이 적으니까, 가벼운 서버 N-k대에 나눠서 뿌려주는 서버 셋팅을 해 놓으면 아무래도 부담을 적절하게 나눠줄 수 있을 겁니다.

특히 로그인 한 사용자들은 뭔가 새로운 업데이트를 만들어 낼 가능성이 높으니, 로그인 서버를 주(Primary) 서버, 그 외 서버를 보조(Slavery) 서버로 만들면 좀 더 효과적으로 시스템 자원을 관리할 수 있겠죠.

이렇게 한 다음에, 개발자들은 '실험'을 해 봐야 얼마만큼의 트래픽을 감당할 수 있는지 알 수 있다고 주장할 겁니다.

그리고, 그 '실험'을 위해 사실상 위의 복잡한 서버 구조를 다 만들거나, 최소한 비슷하게라도 만드는데 많은 시간과 돈을 씁니다. 자칫 서버를 잘못 셋팅해서 갈아엎고 다시 셋팅하는 일도 종종 발생할 겁니다.

방법 1의 전략 컨설팅 회사 출신 입장에서는 속이 터질 겁니다. 고작 비용 하나 '통밥'으로 맞추려는데 이렇게 많은 비용을 추가로 써야 한다니?

그런데, 프론트 엔드 개발자가 웹페이지에 특정 요소를 빼면 더 많은 트래픽을 감당할 수 있다고 의견을 내고, 그걸 빼면 마케팅에 치명타라고 절대 안 된다고 홍보 팀이 반발하고, 화면의 딱 그 부분만 따로 독립 서버로 빼면 되지 않겠냐는 개발 팀장 급의 의견도 나오면서 회의가 산으로 가니, IT 개발을 하나도 모르는 전략 컨설팅 회사 출신 CEO는 미쳐나갈 것 같습니다.

이렇게 많은 시간과 비용을 쓰고 싶지 않습니다. 'AI'로 뭐든지 바로바로 척척척 알려주면 좋겠습니다.

방법 3. 데이터 과학자의 접근

사실 저런 중형 서버를 좀 굴려본 경험이 있으면 트래픽에 서버가 어떻게 반응할지에 대해서 개략적인 지식이 이미 있습니다. 굳이 비싼 서버를 살 필요도 없고, 홈 서버 수준의 작은 서버에서 셋팅을 다 한 다음에 AWS에서 인스턴스들만 몇 개 띄워 5분 남짓만 가상의 Live 서버를 돌려보면 필요한 데이터를 다 얻을 수 있습니다.

그 데이터를 바탕으로 시뮬레이션 모델을 만들어야죠.

IT시스템을 잘 모르기는 하지만 CEO도 나름대로 온갖 종류의 비용 절감 아이디어가 있고, 회사의 여러 직군이 회의를 하다보면 위에 예시를 들었던 프론트 엔드 개발팀과 마케팅 팀 간의 논쟁처럼, 회사 사정상 가능한 아이디어가 있고, 불가능한 아이디어가 있습니다. 여러 아이디어가 조합이 될 수도 있습니다.

위의 5분 동안 다양한 조합의 데이터를 뽑아놓으면, 1시간 남짓도 안 들여서 뚝딱 시뮬레이션 시스템을 만들 수 있습니다. 다양한 가능성에 대해 시뮬레이션을 돌려보면서 위의 회의를 좀 더 근거 있는 숫자를 놓고 이야기를 할 수 있겠죠.

뿐만 아니라, 시리즈B까지 투자하신 투자사들과 회사에 남은 Runway에 맞춰 광고비에 얼마를 배정할지, 서버 비용은 얼마가 드는지에 대해서 이야기할 때도 쓸 수 있고, 신규 시리즈 C 투자사 입장에서

이 회사는 AI/Data Science 역량을 제대로 확보하고 있구나

라는 신호를 줄 수도 있습니다.

더 자세한 예시들은 시험 문제 해설 수준이 되어버리니 위의 SIAI 기출문제 해설을 참고하시기 바랍니다.

수학을 언어처럼 써야 한다며?

위에서는 단순히 예시만 들어놨습니다만, 가끔은 5분 실험에 없었던 가능성이 회의 중에 대두될수도 있고, 거기에 맞춰 기존 데이터들을 일부 보정해야 할 수도 있습니다.

경쟁사가 이벤트를 했던 날은 트래픽이 확 줄어들었을테니, 그런 데이터를 써야 할 때는 사정에 맞춰 어떨 때는 도구변수(Instrumental variable)를 찾아서 유사성을 최대한 보존할 수도 있고, Sub-sampling 전략을 취할 수도 있습니다. 시간의 흐름을 추적해야 한다면 Kalman filter가 적절한 대응책일 수도 있고, 패턴의 복잡성을 잡아내는 걸로 RNN을 쓸려고 했더니 매주 목요일 이벤트 때 마다 데이터가 '발산'하는 관계로 RNN을 그대로 쓸 수 없으니 데이터를 2개 이상의 그룹으로 구분하는 전략을 써야 할 수도 있습니다.

수 많은 가능성 중에 생각나는대로 잠깐 정리해 봤는데, 기업 별로 현실은 훨씬 더 복잡할 겁니다.

저런 상황들에 적절하게 대응할 수 있도록 학교에서 배운 수학을 조금씩 뜯어고치는 것이 바로 '수학을 언어처럼' 쓰는 겁니다. 저 짧은 문단에 언급된 지식은 어지간한 '머신러닝', '딥러닝' 수업을 들으면 다 알 수 있습니다. 상식이 됐다고 해도 과언이 아닙니다. 그런데, 주어진 데이터, 주어진 상황에 맞춰서 수학을 가져다 쓸 수 있어야 회사에 도움이 됩니다. 저는 이걸 DGP (Data-Generating Process)에 따라 모델을 만들어야 된다고 표현합니다.

영어 단어를 60,000개 암기 했다고 영어를 잘하는 것이 아니라, 그 단어들을 자유자재로 엮어서 지식을 전달할 수 있어야 영어를 잘 하는 것 아닌가요? (혀만 잘 굴러가면 영어를 잘 하는건가요? ㅋㅋ)

제대로 데이터 과학 훈련이 되지 않은 2류 인재를 쓰고 있거나, 아예 개발자 중에 'AI전용 Library'를 몇 개 불러와서 쓸 줄 안다는 이유로 '데이터 전문가'라고 타이틀을 붙여놓은 경우에는 어떤 사건이 벌어질까요?

아마 '통밥'으로 '때리고' 있을 겁니다.

트래픽 예측을 해 준다는 AWS, Azure의 시스템을 쓰면, Google Analytics를 쓰면 좀 더 정확해질까요?

한국 기업들에서 '데이터 전문가'를 만났을 때 위와 같은 사고 구조를 갖추고 모델을 변형하는 능력을 갖춘 분을 만난 적도 거의 없었고, 만난다고 해도 수학으로 모델을 만드는 훈련을 받은 제 입장에서는 너무 조잡해 보였습니다. 이게 한국 기업 인력들의 현실이더군요.

'AI/Data Science 연구 이야기'는 그런 시뮬레이션을 '사고 실험' 형식으로 풀어내는 예시들을 몇 개 갖고 와 봤습니다.

모쪼록 눈이 뜨인 분들이 본인의 부족함을 깨닫고, 데이터 과학을 실생활에 응용하는 것이 어떤 것인지에 대한 인식이 잡히는데 도움이 되기를 바랍니다.

Picture

Member for

4 months 2 weeks
Real name
Keith Lee
Bio
Head of GIAI Korea
Professor of AI/Data Science @ SIAI