Product Serving : 서비스 향 AI 모델 개발
서비스 AI 모델 개발 VS 연구 AI 모델 개발
- 연구 관점의 AI 개발은 정해진 데이터셋과 평가 방식에서 더 좋은 모델을 찾는 것이 목표
- 서비스의 AI 개발은 데이터셋과 테스트 방법이 없고 서비스 요구사항만 있는 경우가 많음
1. 학습 데이터셋 준비
- 서비스 개발에 있어 가장 우선적으로 할 일은 학습 데이터셋을 준비하는 것
- 서비스 요구 사항에 맞는 데이터셋의 종류/수량/정답을 정해야 함
- 데이터 셋을 준비할 때는 구체적인 요구사항을 파악하는 것이 중요하고 데이터의 예외도 충분히 고려할 필요가 있음
- 종류를 정의할 때는 데이터의 특징점을 기준으로 나누는데, 이때 기준에 따라 전반적인 데이터의 수량과 방향이 달라짐
- 기술 모듈을 설계해야하는데, 입력에 맞는 결과를 내보내는 과정을 설계해야 함
- 데이터를 모으면 예상치 못한 경우가 많이 나타남
- 이런 경우 기본적인 입출력 모듈뿐 아닌 전처리 단계의 모듈도 필요
- 정답은 AI 모델별로 정답의 케이스가 달라지는데, 하나의 역할을 하는 모델에서도 여러가지 모델로 나눠서 조합을 하는 게 더 좋을 수도 있음
- 필요에 따라 데이터는 외주를 통해 처리하는 경우도 있음
2. 테스트 방법
- 필요한 테스트 데이터 셋과 훈련 셋을 활용해 모델을 학습
- 간단한 예시로 게임대전 AI를 만든다고 하자
- 이때 프로게이머의 스킬 사용, 움직임을 녹화해서 10FPS단위로 학습한다고 하자
- 이런 경우 AI는 아무런 스킬도 쓰지 않고 움직이기만 함
- 이유는 실제 프로게이머는 스킬의 사용은 중요한 타이밍에만 사용하고 대부분은 특별한 행동을 하지 않음
- 따라서 모델은 “대부분 행동을 하지 않음”이라는 학습을 하기 때문에 정확도는 99%지만 정작 승률은 0%가 나오는 기현상이 발생
- 실 서비스 적용전 개발환경에서 평가를 Offline 테스트라고 함
- 실 서비스 적용시 평가를 Online 테스트라고 함
- 이 둘의 이질감이 상당히 클 수가 있는데, 이 차이를 줄이는 offline 테스트를 잘 설계해야함
offline | online | |
---|---|---|
정량평가 | 완벽하지 않으므로 모델 후보군 선택으로 활용 | 해당 모델을 서비스 시나리오에서 자동 정량 평가 |
정성평가 | 각 후보 모델에 대한 분석 후 서비스 출시 버전 선택 | Voice of Customer로 평가 및 개선점 파악 |
- 추가적으로 모델에 대한 처리시간, 목표 정확도, 목표 qps, Serving 양식, 장비 사양 등을 고려하는 요구사항을 도출할 필요가 있음
- 요구사항들은 offline test와 online test에 차이가 있기 때문에 잘 구분해서 확인해야 함
조직구성
- 크게 구성하면 모델팀, 서빙팀으로 구분됨
1. 모델팀
- 모델링 팀
- 모델러는 AI 모델을 개발하는 팀
- 모델 구조, 성능 분석, 디버깅 등을 진행
- 데이터 팀
- 데이터 팀은 데이터 관리를 담당
- 학습 데이터 준비
- 정량 평가 수립
- 정성 평가 분석
- DevOps 팀 (Tool)
- 필수적인 팀은 아니지만 효율성을 위해 필요
- 라벨링 툴, 모델 분석 툴, 개발 자동화, 파이프 라인 개발등 모델 개발에 필요한 데브옵스(MLOps)를 개발하는 역할
- 모델 관리 매니저
- 전체적인 팀을 총괄하는 매니저
- 전체 모델의 품질 관리를 담당
2. 모델 서빙팀
- 모델 엔지니어
- Mobile, GPU Server, toolkit, 경량화 등 전반적이 모델을 심어주는 역하
- 데이터 엔지니어에 해당하는 역할군이라 생각하면 편할듯
- 모델을 직접 개발해서 적용하는 경우도 있으므로 개발, ML에 대한 전반적인 지식이 필요함
- APP / BE 개발자
- 각 역할에 맞춰 GPU/CPU 처리를 하거나 모바일에 이식하는 역할
Comments powered by Disqus.