서비스 향 AI 모델 개발하기 EP.3 테스트 데이터셋과 테스트 방법, 그리고 모델 요구사항 도출
2022/03/04
⏱ 15mins
EP.3 시작하며
안녕하세요. 지난 EP. 2를 통해, 서비스 향 AI 모델 개발을 위한 ‘학습 데이터셋 준비' 과정에 대해 알아보았습니다. 고객사의 서비스 요구사항과 제약 사항 등을 반영해 서비스에 최적화된 학습 데이터셋을 만들기 위한 여정을 담아봤습니다.
이번 EP.3에선 서비스 요구사항으로부터 💡AI 모델의 테스트 데이터셋과 데이터셋을 테스트하는 방법을 구체적으로 이야기해보겠습니다. 또한, AI 모델이 실서비스에 적용되기 전, 확인해야 할 모델 요구사항들은 어떤 것들이 있는지 함께 알아보겠습니다.
테스트 데이터셋과 테스트 방법
1. 테스트 데이터셋
AI 모델 성능 검증을 위해선 ✔️테스트 데이터셋과 ✔️테스트 방법이 준비되어야 합니다. 테스트 데이터셋은 대게 학습 데이터셋의 일부를 사용합니다. 물론 이때 테스트 데이터셋의 분포가 학습 데이터셋의 분포와 일치한다는 가정이 필요합니다. (두 분포가 불일치하는 경우는 다음 기회에 다뤄보겠습니다)
학습 데이터셋의 일부 데이터를 선별해 테스트 데이터셋으로 활용하는 모델 테스트 방법을 살펴보겠습니다.
2. 테스트 방법
테스트 방법은 두 가지입니다.
✔️오프라인 테스트 (Offline Test) : 실서비스 적용 전 개발 환경에서의 평가
✔️온라인 테스트 (Online Test) : 실서비스 적용 후 환경에서의 평가
이때 유의해야 할 점이 있습니다. 개발 단계에서의 환경과 실서비스에 적용했을 때 환경이 다를 수 있다는 점입니다. 이때, 오프라인 테스트와 온라인 테스트에서 다른 결과가 도출될 가능성이 매우 큽니다. 결국 서비스 향 AI 모델이란 실서비스 적용 시 훌륭한 성능과 결과를 구현하는 모델이기 때문에, 오프라인 테스트의 결과와 온라인 테스트의 결과가 비슷하게 나올수록 좋은 모델이라고 할 수 있습니다. 따라서 오프라인 테스트를 신중하게 설계해야만 서비스 품질 보증이 가능해집니다.
📍오프라인과 온라인 테스트 결과가 상이한 원인은 무엇인가요?
👉대게 두 가지의 원인이 있습니다. 첫 번째는 ‘데이터셋의 불완전성’입니다. 모델 개발과 오프라인 평가에 사용된 데이터셋이 현실 세계를 충분히 반영하지 못한 경우입니다. 실서비스 내 AI 모델로 인입되는 데이터 가운데 개발 과정에서 미처 생각지 못한 것들도 함께 들어올 가능성이 매우 큽니다.
두 번째는 ‘모델 드리프트’입니다. 시간이 경과함에 따라 데이터 변화가 잦은 서비스들이 있습니다. 이때 고정된 데이터셋으로 학습되어 온 모델은 데이터가 쌓이고, 시간이 흐름에 따라 성능이 필연적으로 떨어질 가능성을 가집니다.
두 가지 테스트 방법과 종류
이제 오프라인 테스트와 온라인 테스트의 종류에 대해 알아보겠습니다.
1. 오프라인 테스트
실서비스 적용 전 오프라인 테스트의 정량 평가 단계에선 성능 평가가 항상 완벽할 수는 없습니다. 대신 오프라인 테스트의 정량 평가는 다양한 AI 모델 후보군 중 가장 나은 모델은 무엇인지 선택하고자 하는 의도를 가집니다. 이렇게 뽑은 AI 모델 후보군을 정성 평가를 통해 꼼꼼히 분석해 하나의 최종 출시 버전을 선택하게 됩니다.
2. 온라인 테스트
오프라인 테스트를 통해 결정된 AI 모델을 실서비스에 적용합니다. 이때 또 한 번의 평가, 온라인 테스트를 진행합니다. 온라인 정량 평가의 경우, 평가 지표가 서비스 시나리오 내 자동 출력이 가능하도록 환경을 미리 제대로 세팅해야 합니다. 왜냐하면 모델 성능 모니터링을 통해 모델 갱신 시기와 방법 등을 추후 논의하기 위해서입니다.
온라인 테스트의 정량 평가를 통해 모델 갱신에 필요한 기본 데이터가 확보되었다면, 온라인 테스트의 정성 평가는 실서비스를 이용하는 고객의 목소리를 바탕으로 구체적인 개선안을 찾아보기 위한 단계입니다.
네 가지 평가 항목 중 가장 중요한 것을 뽑으라 한다면, 당연히 온라인 테스트의 정상 평가일 것입니다. 온라인 테스트의 정성 평가는 실제 서비스를 이용하는 유저들이 겪는 불편함이나 오류(Voice of Customer)을 토대로 하기 때문입니다. 유저들은 내는 다양한 의견은 AI 모델을 개선하는 데 큰 힌트가 될 수 있습니다. 모델러와 데이터셋 개발 구성원들은 이런 힌트들을 모아 주기적으로 토론함으로써 모델, 학습 및 평가 데이터셋에 대한 개선책을 도출할 수 있고, 이를 모델과 데이터셋에 반영하여 더 좋은 서비스 품질을 보장할 수 있습니다.
모델 요구사항 도출하기
지금까지 서비스 요구사항으로부터 학습 데이터셋, 테스트 데이터셋, 테스트 방법을 도출하는 과정을 이야기해보았습니다. 마지막으로 확인해야 할 사항이 남았습니다. 그것은 바로 서비스 요구사항으로부터 ✔️모델 요구사항을 구체화하는 작업입니다. AI 모델의 요구사항은 크게 다섯 가지로 나눌 수 있습니다. 물론, 서비스 및 모델링 환경에 따라 항목은 바뀔 수 있습니다.
1. 처리 시간
하나의 입력이 들어와 결괏값이 출력으로 나올 때까지 소요되는 총 처리 시간을 고려해야 합니다. 이때 처리 시간에 대한 정의는 오프라인 테스트와 온라인 테스트에서 서로 다를 수 있습니다. 사용자 경험과 서비스 품질의 관점을 고려해 최적화된 처리 시간을 달성할 수 있는 모델을 개발하는 것이 중요합니다. 서비스 기획팀이 처리 시간 관련 요구사항을 전달하는 업무를 담당한다면, AI 기술팀은 이런 전달 사항에 맞춰 모델을 개발하는 업무를 담당합니다.
📍오프라인과 온라인 테스트 내 처리 시간에 대한 정의가 어떻게 다른지 설명해주세요.
👉수식을 사진으로 찍어 자동으로 수식 영역을 검출하는 AI 서비스를 예로 들어보겠습니다. 오프라인 테스트에선 처리시간이 상대적으로 짧을 수 있습니다. 왜냐하면 유저가 핸드폰 카메라로 사진을 찍고, 결과를 기다리는 시간을 고려하지 않아도 되기 때문이죠. 그러나 온라인 테스트에선 이런 상황을 전부 고려하게 됩니다.
만약 인식된 수식 이미지 내 정보가 구현될 때까지 5분 이상 걸린다면 사용자는 불편을 느끼게 될 것입니다. 그로 인해 해당 서비스에서 사용자가 이탈할 불안 요소를 제거하기 위해서는 빠른 처리 시간을 달성해야 합니다.
✔️오프라인 테스트 : 모델 내 이미지 입력 후 수식 영역에서 정보가 출력되는 총시간
✔️온라인 테스트 : 사용자가 이미지를 촬영하고, 그 이미지가 수식 영역에 들어와 도출된 정보가 서비스 화면 내 표시될 때까지의 총시간
2. 목표 정확도
AI 기술 모듈에서의 정량적 정확도에 대한 기준과 요구사항도 존재합니다. 어느 수준 이상의 정확도를 달성해야 서비스 출시가 가능할지 명확히 하는 요구사항 중 하나입니다. 동일한 AI 모델이라 하더라도 개별 서비스 시나리오에 따라 목표 정확도가 다를 수 있어 서비스 기획팀과 정확한 커뮤니케이션이 요구됩니다.
📍목표 정확도에 대한 예시를 들어 설명해주세요.
👉신용카드 이미지를 찍어 카드 번호와 유효 기간 등을 자동 인식 후, 입력해주는 서비스를 개발한다고 해보겠습니다. 개발 단계에서의 모델 정확도는 모델 출력값, 실제 카드 번호, 유효 기간(정답) 숫자열의 차이에 대한 편집 거리(Edit distance)로 표현될 수 있습니다.
반면 실제 서비스의 관점에선 결괏값이 정확하다는 것은 사용자가 결괏값을 별도로 수정하지 않는다는 걸 의미합니다. 인식과 도출 과정에 틀린 결괏값이 나오지 않는 거죠. 직접 유저가 값을 수정해야 하는 불편함을 주어선 안 됩니다. 따라서 실서비스 적용 단계에의 AI 엔진 정확도는 ‘서비스 유저가 AI 모델의 결괏값을 수정할 확률’로 정의할 수 있습니다.
AI 기술팀은 오프라인과 온라인 테스트의 차이에 유의해 서비스 시나리오에 최적화된 성능 측정 방식을 설계하고, AI 엔진이 목표 정확도에 도달할 수 있도록 신경 써야 합니다.
✔️오프라인 테스트 : 입력된 이미지 내 카드 번호, 유효 기간에 대한 Edit Distance
✔️온라인 테스트 : 사용자가 AI 모델의 결괏값을 수정할 확률
3. 목표 QPS (Queries Per Second)
수준 높은 서비스 품질을 제공하기 위해선 서비스의 1초당 처리 가능한 요청 수를 늘려야 합니다. 예를 들어, 초당 100명의 유저가 사용하는 서비스에 초당 100건의 이미지가 올라온다면 100 QPS를 감당해야 합니다. 이런 환경을 제공하지 못하면 서비스 내 버벅거림, 끊김 현상 같은 오류가 끊임없이 발생하여 고객 경험에 불편을 겪게 되죠. 그럼 QPS를 향상하는 방법은 무엇이 있을까요?
✔️장비를 늘리는 방법 : GPU 1대당 처리 가능한 요청 수가 x라고 가정한다면, GPU를 n 대 늘리면 QPS는 n * x 가 될 것입니다. 장비를 늘린다면 요청 처리 수는 자연스레 증가하겠지만, 장비 수에 맞춰 n 배의 비율로 증가한다고 단언할 순 없습니다. 장비 추가 방법은 가장 손쉽게 QPS를 향상하는 방법이긴 하지만, 비용 문제와 n 배로 증가할 요청을 분배해야 하기에 분배기에서 발생하는 병목 현상을 고려한 결정이 필요합니다.
✔️처리 시간을 줄이는 방법 : 처리 시간이 줄어드는 것은 곧 AI 모델의 처리 속도 향상을 의미합니다. 모델의 처리 속도가 n 배 상승한다면 QPS도 그에 맞춰 n 배 상승하게 될 것입니다.
✔️모델 크기를 줄이는 방법 : 하나의 GPU에 올라가는 모델의 수가 n배가 되면, QPS도 n 배가 됩니다. 즉, 모델의 수를 증가해 처리할 수 있는 요청 건수를 늘리는 방법이죠. 다만 모델의 크기를 줄인 만큼, QPS가 선형적인 상승을 하지 못한단 점에 유의하셔야 합니다. GPU 메모리가 10GB, 모델의 크기가 8GB일 때, 하나의 GPU에 올라갈 수 있는 모델의 최대 개수는 1개입니다. 모델의 크기가 5GB 이하로 줄어들지 않은 한, 최대 개수에 변화는 없습니다. 5GB로 줄일 때 비로소 GPU 10GB 메모리에 2개의 모델이 올라갈 수 있을 것입니다.
4. 서빙 방식(Serving)
AI 모델이 서빙되는 방식에 따라 모델의 요구사항도 변합니다. 이를테면, 하드웨어 디바이스의 종류에 따라 모델 설계가 달라져야만 하는 논리입니다. 기술 모듈이 동작하는 환경이 모바일인지, 웹 서버인지에 따라 모델의 처리 속도와 메모리의 제약 조건 등이 달라지는 것이죠. 게다가 CPU 서빙과 GPU 서빙, 로컬 서버와 클라우드 서비스 등의 조건들도 요구사항에 반영되어야 하기 때문에 서비스 요구사항을 자세히 살펴보아야 합니다.
5. 장비 사양
종종 있는 사례이지만, 고객사가 자체 서빙 장비가 없어 장비 구축도 함께 의뢰하는 경우가 있습니다. 이때 서비스 내 QPS, 가용 예산 등의 조건들을 고려해 서비스 내 모델 구동을 위한 장비 사양을 결정합니다. 장비 사양에 따라 처리 속도와 메모리 사양들이 달라질 수도 있으니 이런 조건이 반영된 모델을 개발하는 것도 중요합니다.
EP.3 나가며
지금까지 서비스 요구사항을 토대로 AI 모델 검증을 위한 ‘테스트 데이터셋'과 ‘테스트 방법'에 대해 알아봤습니다. 이와 함께 다섯 가지의 모델 요구사항도 함께 고려해서 모델 개발을 해야 한다는 점을 EP.3에 걸쳐 자세히 다뤘습니다.
<서비스 향 AI 모델 개발하기>의 마지막 편인 EP.4에서는 효율적인 AI 모델 개발을 위한 조직 구성은 어떻게 이뤄져야 하는가에 대해 다뤄보겠습니다. 이번 화도 유용한 정보가 되었길 바라며 이만 마치겠습니다. 감사합니다.