Day_35 [특강] 서비스 향 AI 모델 개발하기 - 이활석

작성일

5 분 소요

[특강] 서비스 향 AI 모델 개발하기

서비스 향 AI 모델 개발하기

서비스 향 AI 모델 개발 VS 수업/학교/연구 AI 모델 개발

  • 서비스에서 사용되는 AI 모델 개발 일은 현재 수업에서 배우고 있는 AI 모델 개발과 무엇이 다른가?

연구 관점에서 AI 개발이란?

  • 보통 수업/학교/연구에서는 정해진 데이터셋/평가 방식에서 더 좋은 모델을 찾는 일을 함

  • 테스트 데이터셋과 테스트 방법에서 최고로 좋은 성능을 낼 수 있도록 모델 구조를 새롭게 디자인 하는 일을 모델링이라고 부름
  • 그 결과 모델 하나를 확보할 수 있음

서비스 관점에서 AI 개발이란?

  • 서비스 개발 시에는 학습 데이터셋도 없음

  • 학습데이터셋이 없는 경우도 많고 테스트 데이터셋이랑 테스트 방법도 없는 경우가 많음

  • 서비스 개발 시에는 서비스 요구 사항만이 있음

  • 그래서, 첫 번째로 해야 할 일은 학습 데이터셋을 준비하는 것임

  • 정확히는 서비스 요구사항으로 부터 학습 데이터셋의 종류/수량/정답을 정해야 함

학습 데이터셋 준비 : 종류

  • 예시를 들어 보자.

  • 질의 응답을 통해서 서비스를 구체화 시켜야 함

  • 간단한 수식도 있고 딥러닝의 backpropagation 과정에 나오는 복잡한 수식일수도 있으므로 질문

  • 질의 응답으로 학습데이터셋의 대한 종류를 뽑아내야 함

학습 데이터셋 준비 : 정답

  • 질의응답을 통해 데이터셋의 종류/수량/정답 관련 요구사항을 구체화해야 함

학습 데이터셋 준비 : 종류

  • 대충 이미지를 찾아보니…

  • 더 많은 경우를 찾아보니…

  • 그림자도 신경써야하고 형관펜도 칠한 경우가 있는데 이런 것도 대응을 해야하는지 혹은 수식을 온전히 다 찍으면 좋겠는데 이렇게 밑에 부분에 수식이 짤려있는거라던지 이런 것도 인식을 해야하나?

  • 열심히 하다가 화이트로 지워서 그 위에 적은 경우도 대응해야하고

  • 종이가 구겨져있거나 휘어져있어도 대응이 되야하는지?

  • 촬영을 하다보면 회전이 되있을 수도 있음 이런 데이터셋들도 다 대응을 해야하는지?

  • 보통 기획팀에게 물어보면 모두 다 대응해주세요라는 답변이 오게됨

학습 데이터셋 준비 : 종류/수량

  • 결국, ‘종류’에 대해서도 정의를 해야 함
  • 어디까지 ‘종류’로 정의해서 각각 몇 장을 수집 할 것인지 정해야 함

  • 꼭 이런 방법으로 모으지 않더라도 됨

  • 이런식으로도 구분이 가능

  • “어떤 관점에서 종류/수량을 정할지는 이 강의에서 다루지 않음”

학습 데이터셋 준비 : 기술 모듈 설계

  • 지금까지의 이야기를 종합하면, 다음과 같은 입출력을 갖는 기술 모듈을 개발해 달라는 요청

  • 직접 데이터를 모아보면 미리 생각하지 못한 경우도 많이 발견하게 됨

  • 이렇게 되면 전체 이미지에서 수식 영역을 검출하는 모듈이 추가 되어야 함

  • 예시를 보자.

  • 이런 흐름을 보면 자연스러움

학습 데이터셋 준비 : 정답

  • 이번에는 학습데이터의 ‘정답’에 관한 얘기를 해보자.
  • 학습데이터에서 ‘정답’은 AI 모델 별로 입력에 대한 출력 쌍임

  • 이처럼 AI 모델 하나에 대한 정답은 모델 설계와 맞물려 있음!

  • 그런데 Image To Latex 가 한 모델로 가능할까? 나름 성능이 검증된 4가지 모델 조합은 어떨까?

  • 이 경우, 각 모델 (총 4개 모델) 별로 입출력 (정답) 정의가 필요함!

학습 데이터셋 준비

  • 결국 학습 데이터 준비를 하려면 모델 파이프 라인 설계가 되어 있어야 함

  • 학습데이터셋을 준비할 때에는 모델링쪽에서 모델 설계가 들어와야 함

  • 그런데, 모델 파이프 라인 설계하려면 어느 정도 데이터가 있어야 함
  • 맞나? 틀리나? 를 검증할 수 있어야 함

  • 실제로 일을 할 때는 이 과정이 반복적으로 일어남

  • 자! 본인이 학습 데이터셋 준비 담당자라고 해보고, 어떤 일을 겪게 되는지 살펴보자.

  • 서비스 기획자와 많은 커뮤니케이션이 있음

  • 모델 설계에 대한 정보를 받아야 함

  • 요즘은 외주 업체를 많이 씀
  • 요즘 데이터셋 제작 업체들은 작업 툴을 만들 수 있는 능력도 가지고 있음

  • 외주업체와 커뮤니케이션을 하면서 제일 중요한게 작업 가이드임
    • 학습데이터셋의 정답을 어떻게 매길것인지에대한 작업 가이드
  • 작업 단가 논의, 작업 수량 논의
    • 단가와 수량은 예산도 중요한 포인트임
  • 작업자들의 질문에 대한 대응도 필수

  • 다시 한 번 정리해보면…

테스트 데이터셋 / 테스트 방법 준비

  • 테스트 데이터셋은 학습 데이터셋에서 일부 사용한다고 하고, (사실은 이것도 할 얘기가 많지만..)
  • 서비스 요구사항으로부터 테스트 방법을 도출해야 함

  • 어떻게 AI 모델을 평가를 할 것인가? 에 대한 정보를 도출해야 함

  • 이것도 이해를 위해서 하나의 예시를 들어 보자!
  • 1 vs 1 대전 게임을 위한 AI 모델을 만든다고 생각해 보자.

  • 이 때 AI 모델의 입출력은 다음과 같음

  • 이 AI 를 학습시키기 위해서 프로게이머들의 로그를 받아서 AI를 학습시킴

  • 그 결과 모델의 분류 정확도가 무려 99%!!
  • 이 AI 모델을 실제 사용자와 대전을 붙였ㅇ르 경우 결과가 어떻게 되었을까?

  • 결과는 완패!!

  • 이 AI 모델은 아무런 스킬도 사용하지 않았음
  • 왜냐하면, 프로게이머의 로그를 살펴보니..

  • 스킬을 사용하는 횟수가 적음
    • 고수일 수록 스킬을 남발하지 않고, 적재적소에서만 사용 $\rightarrow$ 로그 대부분 no_action
    • 그래서 모델이 항상 no_action 을 예측하게 학습이 되었고, 모델 정확도는 99% 실제 승률은 0%
  • 이렇게 실 서비스 적용 전에 개발 환경에서의 정량 평가와 (OFFLINE 테스트)
  • 실 서비스 적용시에 정량 평가는 (ONLINE 테스트)
  • 이질감이 굉장히 클 수 있음

  • 결국, 서비스에서의 품질이 중요하기 때문에 OFFLINE 테스트 결과가 ONLINE 테스트 결과와 유사하게 OFFLINE 테스트를 잘 설계해야 함

  • 테스트 방법에 대해 다음처럼 정리할 수 있음

  • 개선 포인트를 파악하는일이 굉장히 중요함!!

모델 요구사항 도출

  • 추가로, 모델에 관련한 요구사항을 도출해야 함

  • 처리 시간 / 목표 정확도

    • 처리 시간
      • 처리 시간은 하나의 입력이 처리되어 출력이 나올 때까지의 시간
        • 예) 수식 영역 검출의 경우,
          • OFFLINE TEST : 이미지 입력 후 수식 영역 정보가 출력될 때까지의 시간
          • ONLINE TEST : 이미지 촬영 후 이미지에서 수식 영역 정보가 화면 상에 표현되기까지의 시간
    • 목표 정확도
      • 해당 기술 모듈의 정량적인 정확도
        • 예) 신용카드 인식의 경우,
          • OFFLINE TEST : 입력된 이미지 내 카드 번호/유효기간에 대한 EDIT DISTANCE
          • ONLINE TEST : 사용자가 AI 모델의 결과값을 수정할 확률
    • 목표 qps
      • QPS, Queries Per Second (초당 처리 가능한 요청 수)
      • 향상 방법
        • 장비 늘리기
          • N대를 늘리면 QPS 가 N 배 올라감
          • 무조건 올라가진 않지만 손쉽게 올릴 수 있음
        • 처리시간 줄이기
          • AI 모델의 처리 속도가 N 배 올라가면 QPS 도 N 배 올라감
        • 모델 크기 줄이기
          • 한 GPU 에 올라가는 모델 수가 N 배가 되면, QPS 도 N 배 올라감
          • 만약, GPU 메모리가 10GB 이고 , 모델 크기가 8GB 라면, 모델 크기가 5GB 가 되어야 QPS 가 두 배 올라가지 7GB, 6GB 줄이는 건 QPS 관점에서는 8GB 와 다르지 않음
    • Serving 방식
      • 기술 모듈이 Mobile 에서 동작하기 원하는지, Local CPU / GPU Server 에서 동작하기 원하는지, Cloud CPU / GPU Server 에서 동작하기 원하는지
    • 장비 사양
      • 가끔은 Serving 장비조차 없어서 장비 구축까지 같이 요구하는 경우도 있음
      • 이때는 예산 / QPS 에 맞춰서 장비 사양도 정해야 함
  • AI 모델 개발에는 수업에서 익히는 것 외에 정말 많은 일들이 존재

서비스 향 AI 모델 개발 기술팀의 조직 구성

  • 서비스에서 사용되는 AI 모델을 개발하기 위한 바람직한 조직 구성

AI 모델팀

  • AI 기술팀에게는 서비스 요구사항이 오고, 이에 맞는 AI 모델을 개발해야 함

  • 당연히, AI 모델을 개발하는 인력이 필요함

  • 다음으로는, 앞서 설명드린 데이터를 준비하고 품질을 관리하는 인력이 필요함

  • 추가로, 데이터 / 모델과 관련된 업무의 효율성을 위한 툴을 개발하는 인력도 필요함

  • 마지막으로 이 전체를 총괄하여 모델의 품질을 관리하는 살마이 필요함

AI 모델 서빙팀

  • 그런데, 기술팀에 AI 모델 Serving 까지 요구되면 필요한 인력은 늘어남

  • 우선 Serving HW 향으로 모델을 최적화하는 인력이 필요함

  • 마지막으로 모델을 실제 서빙하기 위한 추가 작업들이 end device 에 맞춰 더 있음

당부의 말씀 몇가지

  • AI 쪽으로 커리어를 쌓고자 하시는 분들에게 드리고 싶은 말씀

개발자 => AI 관련 전환

  • Model Engineering / Tool / Serving 은 개발력이 많이 필요한 일이고, 앞으로 점차 니즈가 많아질테니 너무 AI 모델링 쪽으로 한 번에 넘어 가시지 말아라

  • FrontEnd 개발자분들은 Tool 만드는 일부터 먼저 해보면 좋음
  • App 개발자는 TensorFlow Lite 를 받아서 app 으로 구동시키는 작업부터 해보는게 좋음
  • BackEnd 개발자분들은 on CPU, on GPU 관련 일부터 해보는게 좋음
  • Model Engineering 작업은 교집합이라서 모든 개발자에게 좋음

모델러

  • 한 분야의 모델링에 대한 전문성도 중요하지만, 점점 해당 업무는 자동화되고 (AutoML, 관련 툴) 관련 인력 수도 늘어나니 주변으로 역량을 확대하라!

All

  • 특히나, AI 기술트렌드에 민감해야 함
  • AI 기술 발전 속도는 다른 기술에 비해 훨씬 빠르고 변화무쌍함
  • 단순히 기술 뿐만 아니라, 이를 둘러썬 많은 것들도 빠르게 변함
  • 이것을 당연하게 받아들이고, 어떻게 하면 효율적으로 변화에 적응할 지 고민해야 함
  • 예전에 경험하지 못한 늘 새로운 일이 생겨나고, 기존 사례도 없는 경우도 많으니 새로운 길을 개척하는 경우도 적지 않음

댓글남기기