[종합설계 프로젝트] 9. 데이터 수집, 모델 배포 설계

Serendipity·2023년 4월 24일
0
post-thumbnail

Data & AI 모듈, 설계


  • 재활용 분류 모델 input : image url - Output : 재활용 분석 결과.json
  • Directory 구성
    Main directory Src directory, inference.py, train.py, Read.me Inference로 모델작업, train으로 학습
    Src directory Dataset, Init.py, dataset.py, loss.py, model.py, trainer.py


    image



<Dataset 디렉토리>

• 데이터 수집, 모델 학습 설계

image

1. 데이터 수집

1-0. 데이터 카테고리 분류

image

image



1-1. 크롤링

from selenium import webdriver
from selenium.webdriver.common.by import By

필요 패키지 설치 – selenium webdriver

imgs = driver.find_elements_by_css_selector(".rg_i.Q4LuWd") //이미지 선택
Imageurl, 저장 path, 갯수 300, img src tag
image

1-2. 공개 데이터셋 (비영리, 출처 표기시 사용 가능)

Kaggle, 공공데이터 포털, Naver Connect, AI Hub 데이터셋

1-3. 직접 촬영




2. 전처리

image

Path 불러오기 - 크기 조정 – 이미지 변형

image


3. 모델 학습

BentoML 선택 이유 : 무중단 배포. 사용자가 제보하는 재활용 제품군의 피드백을 빠르게 반영하기 위해서, BentoML로 감싼 api 는 postman을 사용하여 백엔드단에 가지 않아도 json이 잘 출력되는 지 확인 가능함. Matplotlib으로 시각화하여 training이 잘 되었는 지 확인 필요.



4. 모델 배포 (BentoML.api)

<BentoML.api online서빙>
BentoML 로 모델 서빙 : 요청이 들어올 때 요청을 하나씩 처리하는 것이 아니라 여러 개를 한번에 처리하여 응답.

버전관리 : BentoML 로 패키징한 bento bundle 은 Yatai(야타이) 와 연동하여 버전 관리.
모니터링 : 프로메테우스 metrics 환경을 통해 대시보드를 구성. ML에서 제공하는 지표를 endpoint, http_response_code로 구분하면, 총 유입 요청과 마이크로 배치로 요청된 양, 에러 비율등을 쉽게 확인 가능



5.지속 가능 학습, 버전관리 (Yatai)

파이프라인 구축. 요구사항->재학습 가능. Data sync과정.
사용자가 오류 데이터를 제공했을 때, 실제 image를 AWS에 저장하고, Google cloud에 Datasync하도록 함.

사용자가 오류가 발생한 데이터를 제공. 데이터는 재활용의 종류와 이미지 url이다. 관리자가 해당 데이터가 유의미하다고 판단 시, 허용 버튼을 눌러 AWS에 저장. AWS의 이미지 url을 모델이 받아 전처리 후 재학습 배포의 과정을 거침.
-> 사용자의 데이터가 모델의 성능을 훼손하지 않으면서도 학습 결과를 낼 수 있도록 함.

버전 관리 : Yatai -> GUI로 성능 분석 용이. CI/CD 용이.

profile
I'm an graduate student majoring in Computer Engineering at Inha University. I'm interested in Machine learning developing frameworks, Formal verification, and Concurrency.

0개의 댓글