Search

서비스 향 AI 모델 개발하기 (2) - 모델 테스트 & 모델 요구사항

#AI서비스 #테스트방법 #모델요구사항



안녕하세요! 업스테이지입니다.


지난 ‘서비스 향 AI 모델 개발하기 - 학습 데이터셋 준비’ 편에서는 서비스 요구사항으로부터 서비스에 최적화된 학습 데이터셋을 구축해나가는 과정을 소개해드렸습니다. (이번 글에서 사용되는 용어, 예시 등은 이전 포스트에서 이어지는 것들이 많으니, 이전 글을 안 읽으신 분들은 여기를 클릭하여 읽고 오시길 권장드립니다.)



<학습 데이터셋 구축 과정 Review>



이번 포스트에서는 저번에 예고드렸듯 (AI 기술팀에게 주어진 단 하나의 단서인) 서비스 요구사항으로부터 AI 모델의 테스트, 모델 요구 사항을 어떻게 도출할 수 있는지에 대해 알아보겠습니다.



[모델 테스트: 테스트 데이터셋 & 테스트 방법 준비]


AI 모델의 성능을 검증하기 위해서는 ‘테스트 데이터셋’과 ‘테스트 방법' 에 대한 준비가 필요합니다. 테스트 데이터셋의 경우 보통 학습 데이터셋의 일부를 사용합니다. 물론 이때는 테스트 데이터셋의 분포가 학습 데이터셋의 분포와 일치한다고 가정하는 경우인데, 분포가 일치하지 않는 경우에 대한 대응법은 본 글에서는 다루지 않도록 하겠습니다.


AI 모델을 평가하는 방법(=테스트 방법)은 개발 환경에서의 평가인 Offline 테스트와 실 서비스에 적용하여 평가하는 Online 테스트로 나눌 수 있습니다. 주의해야 할 점은 개발 단계에서의 환경과 실서비스 적용시 환경이 상이하여 Offline / Online 테스트의 결과가 다르게 나오는 경우가 많다는 것입니다. 보통 2가지 이유 때문인데, 첫째는 데이터셋의 불완전성으로, 모델 개발 및 Offline 평가 시 사용한 데이터셋이 현실 세계를 충분히 반영하고 있지 못하기에 실제 서비스에서 AI 모델로 인입이 되는 데이터 중에는 개발 중에 생각하지 못했던 경우가 반드시 발생합니다. 둘째는 모델 드리프트로, 서비스 성격 자체가 시간에 따라 다루는 데이터가 계속 변하는 경우에는 고정된 데이터셋으로 학습된 모델은 성능이 점점 떨어지기 마련입니다. 결국 서비스 향 AI 모델 개발에서 가장 중요한 것은 서비스에서의 모델 품질이기 때문에 Offline 테스트 결과가 Online 테스트 결과와 유사하게 나올 수 있도록 만드는 것입니다.


이 Offline, Online 테스트를 정량적, 정성적인 측면으로 나누어 평가할 수 있습니다.


정리해보면 아래 표와 같습니다.



<서비스 향 AI 모델 테스트 방법 정리 표>



Offline 정량 평가가 완벽할 수 없음을 인지를 하고 Offline 정량 평가를 통해서는 AI 모델 후보군을 모으고, 이 후보들을 Offline 정성 평가를 통해서 면밀히 분석하여 서비스 출시 버전을 선택하는 과정을 거치는 것이 좋습니다.


AI 모델을 서비스에 적용한 이후에도 별도의 정량/정성 평가를 진행합니다. 이 때 모델에 대한 정량 평가 지표가 서비스 시나리오를 돌며 자동적으로 출력될 수 있도록 환경을 세팅해야 합니다. 이는 모델 성능 모니터링을 통해서 모델 갱신에 대한 시기/방법 등을 결정하기 위해서입니다. Online 정량 평가를 통해 모델 갱신에 대한 여러 기본적인 데이터를 확보한 후, Online 정성 평가를 통해서 구체적인 개선안을 찾습니다.


Online 정성 평가는 서비스를 이용하는 고객들이 직접 목소리를 내는 경우가 많습니다. 어떤 점이 불편하다, 어떤 점에서 보완이 필요하다는 고객들의 목소리(Voice Of Customer)는 AI 기술팀, 서비스 기획팀이 미처 발견하지 못한 여러 오류들과 AI 모델의 개선책에 대한 힌트를 제공합니다. 모델러, 데이터셋 준비 인원 등은 이 힌트들을 모아 주기적으로 토론하며 모델, 학습 및 평가 데이터셋에 대해 개선책 도출하고 이를 모델, 데이터셋에 반영합니다.

<테스트 데이터셋/테스트 방법 정의 과정>



[모델 요구사항 도출하기]


모델에 대한 요구사항 또한 서비스 요구사항에서 도출해야 합니다. 서비스 향 AI 모델 제작 시 고려할 것은 크게 1) 처리 시간, 2) 목표 정확도, 3) 목표 QPS (Queries Per Second), 4) Serving 방식, 5) 장비 사양으로 나눌 수 있습니다. (서비스, 모델링 환경에 따라 달라질 수 있습니다)


1) 처리 시간

하나의 입력이 들어온 순간부터 출력이 나올 때까지 소요되는 시간을 고려해야 합니다. 다만 이때 처리 시간에 대한 정의가 Offline 테스트, Online 테스트에서 각각 다를 수 있다는 점을 주의해야 합니다. 수식을 사진으로 찍으면 자동으로 수식 영역을 검출하는 AI 서비스를 예시로 들어보겠습니다. Offline 테스트의 관점에서 처리 시간은 모델에 이미지를 입력한 후 수식 영역 정보가 출력될 때까지의 시간입니다. 반면 Online 테스트의 관점에서 처리 시간이란 이미지를 촬영하고 그 이미지에서 수식 영역 정보가 서비스 화면에서 표시 될 때까지 소요되는 시간으로 볼 수 있습니다.



<Offline 테스트, Online 테스트 비교 예시>



사용자 경험의 관점에서, 서비스의 품질 관점에서 최적화된 처리 시간을 달성할 수 있도록 모델을 개발해야 합니다. (사람들이 이미지를 찍은 후 정보가 표현될 때까지 1시간이 걸리는 서비스를 이용하지는 않을 겁니다.) 서비스 기획 팀에서 전달하는 처리 사항에 대한 요구 사항에 맞춰 AI 기술팀은 모델을 개발해야 합니다.



2) 목표 정확도

AI 기술 모듈의 정량적인 정확도에 대한 서비스 기획팀의 요구 사항도 존재합니다. 어느 정확도 이상이여야 서비스 출시가 가능하다는 요구사항인데, 이는 동일한 AI 모델이라 하더라도 서비스 시나리오에 따라 필요한 목표 정확도가 다를 수 있으므로 서비스 기획팀과 커뮤니케이션을 많이 해서 최대한 명확히 해야 합니다. 신용카드 사진을 찍으면 카드 번호와 카드 유효기간을 자동으로 인식하고 입력해주는 서비스를 개발한다고 가정해봅시다. 개발 단계에서 모델의 정확도는 모델 출력값과 실제 카드 번호, 유효기간(정답) 숫자열의 차이에 대한 Edit Distance로 표현할 수 있습니다. 하지만 실제 서비스의 관점에서 결과값이 정확하다는 것은 곧 사용자가 결과값을 수정하지 않는다는 것을 의미하기도 합니다. 모델이 출력한 값이 틀리다면 사용자가 직접 값을 수정할 것입니다. 따라서 Online 테스트에서는 AI 엔진의 정확도를 ‘서비스 사용자가 AI 모델의 결과값을 수정할 확률’로 정의할 수 있습니다. 기술팀은 Offline, Online 테스트의 차이에 유의하면서 최적화된 Metric을 설계하고 목표 정확도에 도달할 수 있도록 AI 엔진을 개발합니다.



3) 목표 QPS (Queries Per Second)

버벅거림 없는 서비스, 즉 높은 서비스의 품질을 제공하기 위해선 서비스의 초당 처리 가능한 요청 수를 늘리는 것이 중요합니다.


QPS를 향상하는 방법은 첫째, 장비를 늘리면 가능합니다. GPU 1대 당 처리 가능한 요청 수가 X라고 하면 GPU를 N대 늘렸을 때 QPS는 N * X가 됩니다. 물론 비용 문제와 N배 늘어난 요청을 분배하는 분배기에서 발생하는 병목현상을 주의해야 하지만 가장 쉽게 QPS를 늘릴 수 있는 방법입니다.


두 번째로는 처리 시간을 줄이는 방법이 있습니다. 처리 시간이 줄어든다는 것은 곧 AI 모델의 처리 속도의 향상을 의미합니다. 모델의 처리 속도가 N배 상승하면 QPS도 N배 상승합니다.


세 번째는 모델의 크기를 줄이는 것입니다. 한 GPU에 올라가는 모델의 수를 늘려 처리할 수 있는 요청의 건수를 향상시킬 수 있습니다. 다만 모델의 크기를 줄이는 만큼 QPS가 선형적으로 상승하지는 않는다는 것을 주의해야 합니다. GPU 메모리가 10GB고 모델의 크기가 8GB라고 가정해봅시다. 이 때 한 GPU에 올라갈 수 있는 모델의 최대 개수는 1개입니다. 이 모델의 크기를 7GB 혹은 6GB로 줄이더라도 10GB 메모리 위에 올라갈 수 있는 모델의 최대 개수가 1개라는 것에는 변함이 없습니다. 모델 크기가 5GB 이하가 될때야 비로소 모델이 추가적으로 올라갈 수 있습니다.



4) Serving 방식

만들어진 AI 모델을 어떤 방식으로 서빙해야 하는가에 따라 모델의 요구사항이 달라지기도 합니다. 어떤 하드웨어 디바이스에서 모델이 동작하는지에 따라 모델 설계는 매우 달라질 수밖에 없습니다. 모바일 서빙 과 서버를 통한 서빙을 위한 모델의 처리 속도, 메모리의 제약은 매우 다릅니다. 또한 CPU 서빙이냐 GPU 서빙이냐 / 로컬 서버냐 클라우드냐에 따라 고려해야 할 내용도 달라집니다. 따라서 AI 모델 개발 시 서빙 방식에 유의하고 각 방식에 맞는 방향으로 개발을 해야 합니다.



5) 장비 사양

가끔 서빙 장비 구축을 함께 요청하는 경우도 있습니다. 이 경우 서비스에서의 QPS, 예산 등을 고려하여 장비 사양을 정의합니다. 그 후 정의한 장비 사양에 따라 처리 속도, 메모리 사양을 결정하여 모델을 개발합니다.



<서비스 향 AI 모델 개발 시 모델 요구사항 Review>




지금까지 서비스 요구 사항을 바탕으로 서비스 향 AI 모델을 개발하는 방법을 알아보았습니다. AI 모델을 개발한다 했을 때 흔히 모델링 혹은 모델 성능 개선 만을 떠올리지만, 그 외에도 학습/테스트 데이터셋 준비, 테스트 방법 준비, 모델 요구사항까지 정말 많은 것들을 함께 고려해야 합니다.


<서비스 향 AI 모델 개발 전 과정 Review>




다음 포스트에서는 이 수많은 일들을 효율적으로 잘 처리할 수 있기 위한 조직 구성에 대해 다뤄보겠습니다.