GS리테일 Tech 블로그

고객 생활의 가치를 향상시키는 사람들의 이야기

Data&AI

End-2-End AI Product 개발하기

HenryP 2021. 11. 26. 17:52

 

최근 나온 Attention을 응용한 모델이나, ResNet, Yolo derivatives, VITON 등 다양한 vision 계열 SOTA, 그리고 GPT로 유명한 generative 모델 들은 이미 사람들이 하는 노동 집약적인 “단순 반복적인” 영역을 사람보다 훨씬 더 정확한 수준으로 해 낼 수 있습니다.

 

기업이 AI에 많은 투자를 하는 이유가, AI가 사람들이 하고 있는 많은 일을 “잘” 대체할 수 있기 때문일 것입니다. AI는 더 효과적인(?) 리소스로 더 정확한 결과를 지속 반복적으로 만들어 낼 수 있을 것입니다. 이러한 생산성 향상이 자명하기 때문에 앞으 로더 많은 투자가 일어날 것으로 기대합니다.

 

“효과적인 (?) 리소스 : 여담이지만 알파고가 16만개의 기보를 몬테카를로 서치 + 강화학습 등으로 학습하는데 사용된 GPU 등의 리소스는 전기로 따지면 약 5,000kWh라고 합니다. 이세돌이 사용한 리소스는 밥한 공기 정도 될까요? 그러면 약 0.3kWh 정도 밖에 지나지 않습니다. 하지만 이세돌을 GPU 따위와 비교할 순 없죠.”

비즈니스에서 AI 가 적용 되는 형태를 잘 보면, 알고리즘이 다가 아닙니다. 프로세스, 지표, 그리고 “SW 적으로” AI Product이라는 형태로 비즈니스에 바인딩이 되게 됩니다. 정확한 predict 지표를 달성하는 모델이라고 하더라도, 이를 통해 실질적인 비즈니스 개선을 이루어 내려면 product화 하는 것을 고려해야 합니다.

 

학교나 실험실에서는 알고리즘만 개발하면 되지만, 기업에서는 이것을 비즈니스로 연결해야 하기 때문에 product를 포함한 “전체 사이클”을 고민하지 않으면 안됩니다.

 

이번 글에서 소개하려는 것은 GS Retail AI부문에서는 이러한 접근을 어떻게 하고 있는 지에 대한 것입니다. 긴 글을 지루해 하실 분이 있을 듯하여, 결론을 먼저 하나의 그림으로 그려 봤습니다.

AI Product buil-up Process 

 

우리가 하는 일을 각 단계별로 짧게 묘사해 보겠습니다.

 

(1) Mobilization

이 단계에서는 뭘 할 것인지를 정합니다. 사업부서의 동의를 이끌어 내야 하기 때문에 사실상 가장 힘든 단계이기도 합니다. 사업부서의 기대치와, 우리 AI 부문이 할 수 있거나, 현재 기술 수준으로 가능한 것들 사이에는 적잖은 GAP이 존재하기 때문에 “합의”라는 것이 생각만큼 쉽지 않습니다.

 

종종 “AI는 많은 것을 할 수 있을 것이다.” VS “양질의 학습 데이터가 확보 되어야 한다. “ 의 게임으로 귀결 되긴 합니다만, 우리는 이런 소모적인 논쟁을 하는 것보다는 아래 두 가지에서 합의점을 찾기 위해서 노력합니다.

 

첫번째는 AI의 스코프입니다. 그리고 두번째는 성과지표 입니다. 쉽게 말해서 어디서부터 어디까지 AI를 적용할 것이며, 이를 어느 수준으로 하겠다는 것입니다. 논의를 통해 이 두 가지가 명확해 지면, 자연스럽게 GAP은 좁혀지며 다음 단계로 넘어갈 수 있습니다.

 

뒤늦게 성과지표에 대한 논의를 함으로 해서, 다시 처음으로 돌아가야 했던 실패의 경험을 기억하며, 우리는 이 두 가지를 먼저 정하기 위해 노력합니다.

 

예를 하나 들자면, GPT 모델의 경우 대량의 학습 데이터를 기반으로 어떻게든 “창의적인” 답을 만들어 냅니다. 사람이 만드는 것처럼 신기하게 질문에 답하긴 합니다만, 학습된 transformer 모델은 restriction이 없기 때문에 거짓말을 할 때도 있습니다.

 

그런데 사업부서에서 원하는 것이, 창의적인 것이 아니라 “틀리지 않는 답을 통한 Task 이행”이라면, 이와 관련된 이런 지표를 정확히 주지 않으면 모델 자체를 다시 만들어야 할 수도 있습니다.

GPT-3의 테스트 결과

태양의 눈이 하나라니 …뭔소립니까?

그리고, NLP가 할 수 있는 업무 스코프만 하더라도, 뉴스 어노테이션, 문서 번역, 리뷰의 분석, 대화 홉의 연결, 특정 장면의 설명, 긴 문장의 요약, 고객 요청에 대한 답변 등 다양한 종류의 타스크가 있습니다. 각각의 접근 방식이 조금씩 다 다르죠. 이에 대한 스코프를 확정하는 것이 첫 단계에서 제일 중요합니다.

 

(2) Business Planning

이 단계는 전략과 운영적인 측면으로 나누어 볼 수 있습니다. 전략적인 측면은, AI Product가 기존 방식과 어떻게 다르게 비즈니스 문제를 해결할 것인가를 정하는 것입니다. 큰 방향을 정하는 것이죠. 그리고 그 방향에 대해서 측정 가능한 비즈니스 적인 KPI를 정하는 것입니다. 이를 통해서 기존의 업무를 어떻게 개선할 것인가?를 미리 정합니다.

 

운영적인 측면은, 프로세스를 어떻게 재정의 하는가 라는 것입니다. 이 과정에서 당연히 AI가 주는 결과물을 어떤 방식으로 해석할 것인가? 기존의 사람의 추론과 근본적으로 어떤 차이점이 있으며 이를 어떻게 업무에 받아들일까에 대한 고민도 동반 되어야 합니다.

 

완전히 자동화 할 수도 있지만, Assistant의 형태로 쓸 수도 있습니다. 잘 보면 대부분의 경우 AI는 사람의 인사이트를 완전히 대체할 순 없습니다. 소위 말하는 노하우라는 것은 …. 그리 간단한 것이 아닙니다.

 

여기서 한가지 중요한 포인트는, AI는 사람이 하는 것보다는 인사이트가 부족하지만, 대량으로 지치지 않고 반복적으로 할 수 있다는 것입니다. 그래서 그 결과를 받아 보는 이들이 기존보다는 훨씬 대규모의 사람들이며, 이들을 통해서 어떤 피드백을 데이터로 남기는가 하는 것을 고려해야 합니다.

 

그리고 (기술적으로는) 정확도가 100% 가 되지 않는 AI의 결과물을 어떻게 처리할 것인가 하는 것도 종종 고민거리입니다. Binary Classification 문제의 경우 정확도가 95%라고 하면, 맞지 않는 5%는 어떻게 처리할 것인가는 현장에서는 적지 않은 문제입니다.

 

(3) AI Tech Cracking

실제 AI문제에 들어와서는 알고리즘과 데이터를 두 가지를 고민합니다.

 

어떤 base 알고리즘을 선택하거나, tailoring 할 것인가? 새로운 것을 만들어 낼 것인가? 사실상 대부분은 학계에서 연구가 된 것이고 우리가 할 것은 마지막 쥐어짜기 식으로 성능을 끌어 올릴 획기적인 방법을 찾아내는 것입니다.

그리고, 그 다음은 정말 아무리 말해도 부족한 데이터 전략입니다.

FAANGs

 

네카라쿠배는 FAANGs (Facebook Amazon, Apple, Netflix, Google)과 같은 성장 혹은 더한 성장을 할 것으로 기대합니다. (우리도 당연히 그럴 것입니다. ^^) 이들 성장 기업들의 뒤엔 모두 공격적인 데이터 전략이 존재합니다.

 

지난 5년간 과하다 싶을 정도로 경쟁적인 학계의 연구 덕에 알고리즘은 넘쳐나는 반면, 데이터는 부족합니다. 그래서, 2021년 지금 상황으로는…정확한 예측을 위해서는 AI 모델보다는 데이터가 더 중요합니다.

 

가치 있는 비즈니스의 개선을 위해서 (“차별화된 경쟁력을 부여하기 위해서”), 없는 데이터를 새롭게 만들고, 정제하여 쓸 수 있도록 하는 것이 핵심입니다.

 

그래서 우리는 Data Literacy를 담당하는 조직을 별도로 운영하고 있습니다.

Data Literacy

 

 

Data Literacy에 대해서는 다음에 자세히 다시 다루도록 하겠습니다.

 

우리는 (당연한 이야기이지만) AI 모델이 일회성이라고 생각하지 않습니다. 환경도, 고객도, 그들이 만드는 데이터도 바뀝니다. 이에 따른 Model Drift는 항상 발생하는 것이며, 변화를 반영하여 최고의 성능을 내기 위해서는, 새로운 feature를 지속적으로 공급해줄 수 있는 MLOPs도 셋업하여 사용합니다. 역시 이에 대해서도 따로 다루겠습니다.

 

알고리즘과 데이터… SOTA 수준의 알고리즘으로 어떻게 튜닝 할 것인가? 그리고 이 알고리즘이 날아가게 할 데이터를 어떻게 준비할 것인가는 기본적으로 매일 하는 고민 입니다.

 

(4) Tinkering

Tinkering 단계는 AI 모델을 product로 만들어 내는 단계입니다. MLOPs 에서 제공하는 API나, 계산 결과를 주기적으로 저장하는 곳을 활용하여 SW를 만듭니다. Web이나, Dash board, 혹은 Java API를 품은 SW를 사업부서와 논의하여 사용하기 편한 형태로 개발합니다.

AI 모델 개발을 잘하면서 자바나 Swift 혹은 Flutter 등을 잘하는 bilingual 같은 같은 이들이 직접 하기도 하지만, 대부분은 뉴테크 본부의 IT개발을 담당하는 분들과 같이하여 이런 부분은 아주 효과적으로 진행되고 있습니다.

이 과정에서 우리가 배운것은, SW 개발, 특히 실사용 환경에 적용할 SW는 정말 쉽지 않다는 것입니다.

 

개발 요건을 주는 쪽은 간단하게 생각하고 그것을 물위에 뜬 빙산의 일부분 처럼 여기기 쉽지만, 이것을 제대로 동작하게 만들기 위해서는 그야 말로 “한 두 개의 요건을 간단히 구현하는 노력”의 수 십 배 이상의 큰 노력이 들어갑니다.

 

우리는 뉴테크본부의 IT 개발 부서의 지원이 없이는 잘 돌아가지 않습니다. 항상 그들의 협력을 중요하고 고맙게 생각하고 있습니다.

요약

요약하면, 우리는 비즈니스의 문제를 AI로 풀기 위해서 오랜 시행착오 끝에 체계를 잡아가고 있으며, 이를 이행하는 단계를 지나고 있습니다. 각각을 담당하는 조직을 구성하고 있으며, 각자의 몫을 잘 해내고 있습니다.

아직 가야할 길은 멀지만, 1~2%씩 성능을 끌어 올리는 것에 가치를 두며 일을 하고 있습니다.