케창딥 | 모델 배포
다음은 머신러닝 모델을 개발하는 일반적인 워크플로우이다.
1. 작업 정의
- 문제 정의
- 데이터 수집
- 데이터 이해
- 성공지표 선택
2. 모델 개발
- 데이터 준비
- 평가 방법 선택
- 기준 모델 뛰어넘기
- 모델 용량 키우기:과대적합 모델 만들기
- 모델 규제와 하이퍼파라미터 튜닝
3. 모델 배포
고객에게 작업을 설명하고 기대치 설정하기
- 모델이 실패하는 몇가지 사례
- 거짓음성비율, 거짓양성비율
- 모델의 성능지표와 비즈니스 목표를 명확하게 연관짓기
- 출시할 때 적용할 핵심 파라미터에 대해서도 고객과 논의하기
추론 모델 배치하기
REST API로 모델 배포하기
- 모델을 제품으로 바꾸는 가장 보편적인 방법
- 서버나 클라우드 인스턴스에 텐서플로우를 설치하고 REST API로 모델 예측 요청
- 플라스크 같은 웹 개발 라이브러리를 사용해 직접 serving app 만들기
- 모델이 인터넷에 안정적으로 접속할 수 있고, 서비스가 응답속도에 엄격하지 않고, 입력 데이터가 민감하지 않은 데이터인 경우 사용
장치로 모델 배포하기
- 모델을 스마트폰, 임베디드 arm, 마이크로컨트롤러 등에서 구동할 필요가 있을 때
- 모델의 응답 속도에 대한 제약이 엄격하거나 인터넷 연결이 불안정한 환경에서 실행되어야 하는 경우, 입력 데이터가 매우 민감해서 원격 서버에서 암호화가 해제되어선 안되는 경우 사용
- 텐서플로우 모델 최적화 도구를 사용해 대상 장치의 메모리와 전력조건에서 실행되도록 모델을 충분히 작게 만들 수 있음
- 가장 높은 정확도를 달성하는 것이 작업의 목표가 아니라 메모리와 전력조건을 고려한 절충 모델을 선택해야 함
브라우저에 모델 배포하기
- 사용자의 컴퓨터 브라우저에서 바로 모델을 실행
- 서버 비용을 크게 줄일 수 있음
- 모델이 충분히 작아 사용자의 컴퓨터에서도 돌아가며, 입력 데이터가 사용자의 컴퓨터 또는 핸드폰에 있고 애플리케이션의 응답 속도 제약이 엄격하며, 인터넷이 연결되지 않은 상태에서도 작동하는 모델을 원하는 경우 사용한다.
추론 모델 최적화하기
- 가용 전력과 메모리에 제한이 있는 환경에서 응답속도에 대한 요구사항이 높은 앱에 모델을 배포할 때 사용
- tensorflow.js를 이용하거나 tensorflow lite로 내보내기 전 최적화를 수행해야 한다.
- 가중치 가지치기(weight prunning): 가중치 텐서의 가장 큰 값만 남겨서 모델 층의 파라미터 수를 크게 낮추기
- 가중치 양자화: 단정도 부동 소수점 형태였던 가중치를 8비프의 부호있는 정수로 압축하기
작동 중 모델 모니터링하기
- 모델 배포 후 새 데이터에 대한 성능과 타 에플리케이션과의 상호작용, 비즈니스 지표에 대한 최종 영향 등을 감시해야 한다.
- 제품 환경에서 모델의 예측을 정기적으로 수동으로 조사하거나 사용자 설문 수행
모델 유지관리하기
- 시간이 지남에 따라 제품 환경의 데이터 속성이 변하고 모델의 성능과 타당성이 점진적으로 감소함.
- 모델이 출시되자마자 이 모델을 대체할 다음 세대 모델의 훈련을 준비해야함
- 제품 환경의 데이터 변화 감시, 데이터 수집 및 애너테이션 수행
'AI Theory > key concept of AI' 카테고리의 다른 글
few-data learning의 종류 (0) | 2024.03.27 |
---|---|
train loss와 validation loss 그래프로 모델 학습 상태 확인하기 (0) | 2023.08.01 |
[케라스 창시자에게 배우는 딥러닝] ch5 딥러닝 모델의 일반화, 성능 평가 방법 (0) | 2023.08.01 |
categorical cross entropy vs sparse cross entropy (0) | 2023.07.31 |
가중치 초기화와 배치 정규화 (0) | 2023.07.25 |