[데이터조직]데이터과학자에게도 엔지니어링은 필요하다.

서론

최근에 데이터과학자와 백앤드엔지니어까지 포함해서 데이터프로덕트 팀을 구성해서 일을 해보니 드는 생각이다. 데이터과학자 중에서 최근에 일하기 시작한 분들은 컴퓨터공학도 전공인 분도 있지만 그렇지 않은 분들도 꽤 많다. 그래서인지 종종 엔지니어링 측면을 잘 모르는 분들이 있는데, 개인적으로 전공이 컴퓨터공학이어서 그럴 수도 있지만, 엔지니어링은 데이터과학자에게 점차 중요해질 것이라고 생각한다.

데이터가 더 중요하다.

한 때는 알고리즘 하나로 비즈니스에서 압도적인 성능을 보여주곤 했다. 구글이 그러했다. 좋은 알고리즘이 비즈니스를 좌지우지했다. 데이터과학도 초반에는 그러했다. 어떤 모델링 기법을 쓸 것인지가 관건이었다. 정형데이터와 비정형데이터를 다루는 방법도 나눠져 있었다.

그런데 점차 바뀌기 시작했다. 모델이라는 것이 기본적으로 데이터와 알고리즘의 종합이라고 볼 때, 알고리즘은 데이터 안에서 어떤 패턴을 찾아낸다고 볼 수 있다. 그런데 어느 순간부터인가 모델의 기법을 새롭게 제시한다기 보다는 모델의 구조를 동일한 기초패턴을 반복해서 복잡하게 만들고, 나아가 데이터의 양을 기하급수적을 끌어올리기 시작하자 기존 대비 문제의 해결속도 역시 빠르게 증가하기 시작하였다.

여기서 갑자기 두려워진 부분도 있다. 이전에는 모두가 데이터를 많이 모으는데 한계가 있었기 때문에 알고리즘이 중요했고, 이는 개개인이 어떻게 알고리즘을 만드냐에 따라서 회사에게 상대적 우위를 가질 수 있었는데, 이제 데이터가 중요해진 만큼 회사가 개인대비 상대적 우위를 압도적으로 가져갈 수 있게 된 것이다. 특히 비정형데이터가 그렇다.

요약하면 알고리즘은 상향평준화되어서 점차 새로운게 나오기 쉽지 않아지는데, 데이터는 양을 극단적으로 끌어올리는 것은 상대적으로 기업입장에서는 쉬운 부분이고 이러한 부분때문에 데이터 관련 산업은 빅테크를 넘어서 일반인들이 좇아오기는 쉽지 않을 것이라고 생각한다. 비슷하게 해보려고 해도 데이터 자체를 처리하는 것도 상당히 쉽지 않기 때문에 본업인 모델링 외에 엔지니어링 관련 지식을 충분히 쌓아야할 필요도 있다.

사후분석이 결국 필요하다.

데이터 과학은 결국 비즈니스에 도움이 될 수 있는 것만 살아남는다. 이 말인 즉슨 지표와 관련해서 비즈니스 부서의 입김이 강해질 수 있음을 의미한다. 그리고 비즈니스 부서의 입김이 강해진다는 것은 데이터과학자는 지속가능해서 모델의 결과가 나아질 수 있는 방향을 고민해야 한다는 것을 의미한다.

최근 몇년간 XAI(Explainable Artificial Intelligence)이 중요해진 부분도 이 부분과 같은 맥락을 공유한다. 유럽에서 GDPR을 시작으로 인공지능이 활용될 때 비즈니스 임팩트가 있다면 이 부분을 이후에 설명할 수 있어야 한다를 강제하기 시작다보니 이렇게 사후에 모델 결과가 해석 가능한지가 매우 중요해진 상황이다.

그리고 XAI는 전문가외에 비전문가에 대한 설명도 가능해야 하는데 딥러닝이 발전함에 따라 모델의 복잡도는 올라가는데다가 현재까지의 AI는 상관관계를 넘어서 인과관계에 관한 연구는 빠르게 발전하고 있지만 여전히 진행중인지라, 한계가 있다. 이는 모델의 복잡도를 높여 성능을 올리는데 한계로 작용하고 이로 인해서 현업에서 쓰이는 모델은 성능의 한계도 있겠지만 앞서 언급한 설명가능성을 이유로 상위 의사결정자와 커뮤니케이션이 잦은 모델일 수록 모델의 복잡도를 아주 높이기는 어렵고 사후 분석을 계속해서 신경써야 한다.

그래서 모델을 대신 간단한 모델을 사용하되, 계층화시켜서 작업을 함으로써 복잡도를 낮추려고 시도한다. 자연스럽게 Single Mode을 넘어 Combined and Hierarchical Model형태로 설계를 한다는 것이고 이는 데이터 과학자에게 있어 엔지니어링의 역량이 더욱더 중요하게 느껴지게 만드는 요인이 된다.

엔지니어링이 더 필요하다.

데이터과학자가 만든 모델을 어떻게 쓸 것인가? 그리고 모델에 필요한 변수를 어떻게 취급할 것인가에 대한 고민은 사실 회사에 들어와야 인지하게 되는 부분이다. 이전에는 고민하지 않았던 트래픽이나 변수 수집을 위한 아키텍처 등 엔지니어링에 대한 고민을 회사에 들어와서는 해야 한다.

모델을 마냥 변수를 많이 써서 만들었다가는 실시간 트래픽에 대한 부담이 높아지면서 비용이 오히려 편익을 압도하게 되어 모델의 성능과 상관없이 모델의 쓸모가 사라질 수도 있고, 실시간으로 수집해야 하는 변수가 딜레이 되거나 한계가 뚜렷하면 이는 모델 성능의 명확한 한계를 짓게 되어 모델 개발의 방향성을 바꾸게 된다.

그리고 이런 부분을 모두 고민하더라도 모델에 대해서 Deploy를 할 때, AB테스트에 기반해서 롤백해야할 시나리오도 생각하고 관련되어 외부커뮤니케이션에 대한 고민도 해야할 뿐더러, 모델에 대한 Fallback 시나리오는 반드시 짚고 넘어가야 한다. 그런데 앞서 언급한 것처럼 사후분석을 고려하여 모델에 대한 복잡도를 높이지 못하는 상황에서는 n개의 모델을 내부에서 잘 결합해서 서빙해야 하고 자연스레 아키텍처의 복잡도는 모델의 복잡도를 넘어서게 된다.

이런 상황을 점차 모델 복잡도를 압도하게 되는데, 이런 부분을 모델 개발할 때 고려하지 못한다면, 만드는 모델마다 아무리 좋아도 폐기하고 쓸모가 없게 되는 것은 너무 자명해진다. 가까운 점차 Foundation Model이 득세하게 됨에 따라 모델 자체의 상향평준화가 이루어진다면 나도 데이터과학자도 조금 다른 엔지니어일 뿐, FE나 BE와 같이 그냥 개발자로 분류될 것이라고 생각한다. 그래서 데이터 과학자에게 엔지니어링 지식은 점차 더 중요해질 것이라고 생각한다.

결론

데이터의 양은 많아지고 모델은 상향평준화된다. 이 많은 데이터를 어떻게 처리해야할지 고민이 필요하다. 동시에 모델은 해석가능해야 하는데, 현재 모델의 성능에 뛰따라오는 복잡도의 문제는 해석가능성을 저해한다. 그래서 대신 모델을 간단하게 만들어 계층화시키고 이들을 조합해서 결과를 도출해낼 때는 엔지니어링 영역의 지식이 매우 중요하다.