Data Curator
modeler
IDE Developer
Full stack ML engineer
: Deep learning research를 이해하고 ML Product로 만들 수 있는 Engineer실행 명령어: python train.py
dataset.py
: 학습에 사용되는 dataset들이 class로 정의 되어 있음
inference.py
: 학습된 모델의 경로를 입력으로 받아 모델을 평가하는 함수 존재. ex) Gradient CAM 이미지 생성, f1 score 계산
loss.py
: 학습에 사용되는 loss function들이 class로 정의 되어 있음
model.py
: 학습에 사용되는 model들이 class로 정의 되어 있음
trainer.py
: 본격적으로 학습을 하는 함수로 args 변수를 받아 모델 학습
utils.py
: 서버에 Api를 호출할 수 있는 함수나 json 생성 함수
express
프레임 워크를 사용해 백엔드 서버 개발
get /api/v1/requestCreate
: 모델 생성 요청
get /api/v1/state/:id/training
: ML module 상태 false로 변경(학습 진행중 추가 모델 생성을 막기 위함)
get /api/v1/state/:id/done
: ML module 상태 true로 변경
get /api/v1/getModelList
: 생성된 모델 list 조회
get /api/v1/:id/inference
: 학습된 모델 inference 요청(GradCAM 생성, f1 score 계산)
get /api/v1/image/:id/:image
: 모델 성능을 확인할 수 있는 여러 graph 조회
post /api/v1/:id/trainingProcess
: python module에서 서버로 보내는 api, 현재 학습 진행상태 JSON으로 전송
평소 back-end에 관심이 많았기 때문에 AI 서비스를 웹서비스로 어떻게 제공하는지에 대한 관심이 많았다.
level-1에서 P-Stage를 진행하면서 더 좋은 모델을 생성하기 위해 Hyperparameter 실험을 많이하고 수없이 많은 모델을 생성하였는데 바쁜 와중에서도 어디서나 모델을 실험할 수 있고 그 결과를 볼 수 있다면 편할 것 같아 토이프로젝트를 진행하였다.
지금까지 배웠던 모델설계를 복습하면서 python program을 만들었고 웹서버에서 python script를 실행시킬수 있도록하였다. (Javascript child_process)
반응형 웹으로 구현해 SSH접속이 불가능한 환경이나 모바일로도 서버만 열려있다면 모델을 실험적으로 생성하고 Grad-CAM과 같은 결과도 얻을 수 있다.
DB에서 데이터를 조회하고 그 데이터를 양식에 맞춰 Client에게 전달해주는 기존 웹서비스와는 달리 python script를 실행하고 학습과정도 보여줘야하며 error처리가 어려웠던점에서 많은 고민을 했다. 만들면서도 실제 ML Engineer들이 이런 프로그램을 만들면서 쓸까? 쓸데없는 짓을 하는것은 아닌가? 고민이 많았다.
하지만 이번 추석 특강에서 이러한 고민들을 많이 해결되었고 앞으로도 비슷한 프로젝트를 진행해보려 한다.