KivyMd를 이용한 Toy project DeepMom -1-

치삼이·2021년 9월 27일
0
post-thumbnail

👨‍💻 Toy Project DeepMom -1-

시험 준비 및 기타 일정으로 바쁜 한달을 보내고, 새로운 프로젝트를 진행하던 도중 반 강제적으로 필요한 도구가 생겨서 만들게 되었다. 이번에는 이 토이 프로젝트가 무었이며 어떻게 생겨 먹었고 또 프로젝트를 진행하며 알게된 것들에 대해 잠깐 적고자 한다.

이번 포스팅에서는 DeepMom이 무엇이며 어떻게 이루어져 있는가에 중점으로 알아보자.

1. Motive

DeepMom은 딥러닝 학습 곡선을 실시간으로 관찰하기 위해 개인적으로 만든 모니터링 도구이며 정말 오랜만에 해보는 토이 프로젝트다.

케라스를 이용해 딥러닝모델 학습을 진행시키고 퇴근하던 도중에 학습 곡선이 보고싶어서

내일은 퇴근하기 전에 텐서보드를 외부로 포트포워딩 해야하나??🤔

라는 생각과

근데... 굳이 서버에 텐서 보드를 실행하고 또 외부포트를 열어서 확인해야하나..?? MQTT같은 프로토콜로 외부 HiveMQ 같은 퍼블릭 브로커로 쏴주면 편할텐데..🤔

라는 생각이 들어 시작하게된 프로젝트이다. 참고로 처음 이름은 Simple MQTT Learning curve Mornitoring Tool 인데 너무 길고 지루해서 DeepMom으로 바꿧다.

프로젝트 이름이 DeepMom인 이유는 학습률을 계속 관찰하면서 정확도 나 로스율 기록하는게게 꼭 우리님네 어머니 같아서다.

2. System architecture

DeepMom의 시스템 구성도이다. 딥러닝과 MQTT에 대해 정말 조금만 알고있어도 바로 이해가 될 단출한 시스템 구성도이다. DeepMom은 local 혹은 HiveMQ같은 Public 브로커에 특정 Topic을 Subscribe하고 대기를 하며, 케라스(딥러닝 프레임워크)를 이용해 만든 딥러닝 모델은 학습하는 동안 매 epoch의 종료시 MQTT 브로커에게 accuracy, loss (+α validation accuracy, validation loss)를 DeepMom과 같은 Topic으로 Publish 한다.

3. UI History

초반에 DeepMom을 구상할때 MQTT의 TLS 기능을 추가하기 위해 마치 로그인 화면처럼 보이는 UI를 구상했다.

TLS의 사용은 옵션이기 때문에 체크박스를 이용했다. 첫 로고 역시 누군가 눈 + 그래프의 조합으로 굉장히 이상하고 또 마치...

꼭 코X콜라의 몬X터 에너지같은 느낌이어서 관뒀다. 그래서 Google에 "login page"라는 키워드로 찾고 찾고 찾고를 반복하고

고치고 고치고 고치고

그렇게 고쳐서 레이아웃을 잡고 다시 색상이 맘에 안들어

또 고치고 고치고를 반복해서

최종 결과물이 나왔다... 색상 때문에 일주일 정도 고민했던것 같다.

4. Weakness

외부로 포트포워딩 안하고 텐서보드라는 작업을 서버에 위임시키지 않고 적당히 learning curve만 관찰하려고 만든 DeepMom은 굉장한 약점이 있다...

금방 눈치 챘을수도 있지만 약점 첫번째는 외부에서 learning curve를 관찰하기 위해선 DeepMom이 항상 online 상태여야 한는 것이다. 예를 들어 내가 오늘 딥러닝 모델을 오래도록 학습시킬 계획이 있다면...

  1. 집 컴퓨터에 DeepMom을 켜두고 출근한다.
  2. 퇴근전까지 딥러닝 모델의 학습을 시작한다.
  3. 퇴근하면 집에서 관찰할 수 있다.

물론 MQTT를 통해 같은 Topic과 같은 브로커라면 회사나 집에서 DeepMom을 키고 퇴근전에 끈뒤 집에서 다시 확인할 수 있지만.. 일단은 외부에서는 online을 유지해야 한다.

두번째는 학습을 하던 중간에 딥러닝 학습 프로세스가 종료되면 DeepMom은 아무 소용이 없다는 점이다.🤣🤣

다음 포스팅 때는 DeepMom을 만들면서 느꼇던 Kivy 및 KivyMD 또 내부가 어떻게 DeepMom의 내부(라고 할것도 없지만..)를 살짝 열어 보자.

🔗 DeepMom Github

0개의 댓글