본문 바로가기

AI Theory/key concept of AI

케창딥 | 모델 배포

케창딥 | 모델 배포

다음은 머신러닝 모델을 개발하는 일반적인 워크플로우이다.

1. 작업 정의

  • 문제 정의
  • 데이터 수집
  • 데이터 이해
  • 성공지표 선택

2. 모델 개발

  • 데이터 준비
  • 평가 방법 선택
  • 기준 모델 뛰어넘기
  • 모델 용량 키우기:과대적합 모델 만들기
  • 모델 규제와 하이퍼파라미터 튜닝

3. 모델 배포

  • 고객에게 작업을 설명하고 기대치 설정하기

    • 모델이 실패하는 몇가지 사례
    • 거짓음성비율, 거짓양성비율
    • 모델의 성능지표와 비즈니스 목표를 명확하게 연관짓기
    • 출시할 때 적용할 핵심 파라미터에 대해서도 고객과 논의하기
  • 추론 모델 배치하기

    • REST API로 모델 배포하기

      • 모델을 제품으로 바꾸는 가장 보편적인 방법
      • 서버나 클라우드 인스턴스에 텐서플로우를 설치하고 REST API로 모델 예측 요청
      • 플라스크 같은 웹 개발 라이브러리를 사용해 직접 serving app 만들기
      • 모델이 인터넷에 안정적으로 접속할 수 있고, 서비스가 응답속도에 엄격하지 않고, 입력 데이터가 민감하지 않은 데이터인 경우 사용
    • 장치로 모델 배포하기

      • 모델을 스마트폰, 임베디드 arm, 마이크로컨트롤러 등에서 구동할 필요가 있을 때
      • 모델의 응답 속도에 대한 제약이 엄격하거나 인터넷 연결이 불안정한 환경에서 실행되어야 하는 경우, 입력 데이터가 매우 민감해서 원격 서버에서 암호화가 해제되어선 안되는 경우 사용
      • 텐서플로우 모델 최적화 도구를 사용해 대상 장치의 메모리와 전력조건에서 실행되도록 모델을 충분히 작게 만들 수 있음
      • 가장 높은 정확도를 달성하는 것이 작업의 목표가 아니라 메모리와 전력조건을 고려한 절충 모델을 선택해야 함
    • 브라우저에 모델 배포하기

      • 사용자의 컴퓨터 브라우저에서 바로 모델을 실행
      • 서버 비용을 크게 줄일 수 있음
      • 모델이 충분히 작아 사용자의 컴퓨터에서도 돌아가며, 입력 데이터가 사용자의 컴퓨터 또는 핸드폰에 있고 애플리케이션의 응답 속도 제약이 엄격하며, 인터넷이 연결되지 않은 상태에서도 작동하는 모델을 원하는 경우 사용한다.
    • 추론 모델 최적화하기

      • 가용 전력과 메모리에 제한이 있는 환경에서 응답속도에 대한 요구사항이 높은 앱에 모델을 배포할 때 사용
      • tensorflow.js를 이용하거나 tensorflow lite로 내보내기 전 최적화를 수행해야 한다.
        • 가중치 가지치기(weight prunning): 가중치 텐서의 가장 큰 값만 남겨서 모델 층의 파라미터 수를 크게 낮추기
        • 가중치 양자화: 단정도 부동 소수점 형태였던 가중치를 8비프의 부호있는 정수로 압축하기
  • 작동 중 모델 모니터링하기

    • 모델 배포 후 새 데이터에 대한 성능과 타 에플리케이션과의 상호작용, 비즈니스 지표에 대한 최종 영향 등을 감시해야 한다.
    • 제품 환경에서 모델의 예측을 정기적으로 수동으로 조사하거나 사용자 설문 수행
  • 모델 유지관리하기

    • 시간이 지남에 따라 제품 환경의 데이터 속성이 변하고 모델의 성능과 타당성이 점진적으로 감소함.
    • 모델이 출시되자마자 이 모델을 대체할 다음 세대 모델의 훈련을 준비해야함
    • 제품 환경의 데이터 변화 감시, 데이터 수집 및 애너테이션 수행