최근들어 MLOps에 관심을 가지게되면서 현업에서 사용되는 여러가지 툴을 익혀보았다. 좋은 툴을 잘 활용하는것도 물론 중요하지만 머신러닝 시스템이 어떤 상황에서 활용되어야 진정한 AI로써의 가치를 만들어내는지, 실제 서비스를 운영하면서 발생하는 문제를 어떻게 풀어나가야 하는지, 현재 상황속에서 사용자 경험을 더 끌어올리는 방법이 무엇일지에 대한 고민을 하게되었다.

머신러닝 엔지니어 입장에서만 MLOps를 바라보기 보다 머신러닝을 사용하는 사용자의 시각에서 MLOps를 구현해보면서 문제해결 능력을 키우는 것이 중요하다고 생각되어 앞으로 수차례에 걸쳐 머신러닝 디자인 패턴과 안티 패턴에 대해 정리하고 스스로 문제를 정의하여 다양한 프로젝트를 진행해 보려고 한다.

자신들의 분야에 AI를 적용하고 싶어하는 기업들과 여러 미팅과 프로젝트를 진행해 보면서 느낀점이 있다. 수요기업에서는 AI와 인프라에 대한 지식이 부족하기 때문에 단기적으로 자신들의 Task에 맞는 좋은 성능을 내는 모델을 원하고 공급기업에서는 이러한 요구를 충족시키기 위해 모델의 성능을 높이기 위해 애를 쓴다. 하지만 시스템 개발 및 운영을 고려하지 않았기 때문에 결국 프로젝트의 output은 모델 파일만 남게된다. 시스템을 구축할 능력이 되고 인프라를 잘 다루는 전문 기업이 아닌 이상 학습된 모델을 실제 시스템에 적용하고 인프라를 관리하기란 무척이나 어려운 일이다.

머신러닝의 진정한 가치는 추론 결과에 있다. 추론 결과가 애플리케이션의 사용자나 비즈니스 프로세스에 대해 효과를 발휘해야만 도움이 되는 머신러닝이라고 말할 수 있을 것이다. 학습시 아무리 높은 정확도를 낼 수 있는 머신러닝 모델이라 할지라도 실전에서 사용되지 않으면 의미가 없기 때문이다.

알고리즘의 발전으로 모델의 성능이 좋아지고 새로운 모델들이 리서처에 의해 계속 나오지만 머신러닝을 운영단계까지 이끌고 인프라를 구축할 수 있는 엔지니어는 부족하다고 생각한다.

사용자가 머신러닝을 실전에서 사용할 수 있도록 하고 비전문 기업에서 머신러닝 시스템을 활용할 수 있는 MLOps 플랫폼 개발이 나의 목표이다. 지금까지 머신, 딥러닝 모델 개발에 집중했지만 이제는 머신러닝 시스템 개발 및 운영, 백엔드 능력을 키우는데 집중하려고 한다. 이에대한 경험치를 쌓기 위해 앞으로의 포스팅에서는 머신러닝 시스템을 특정 Task에 따라 어떻게 구축하면 좋을지를 패턴으로 분류하여 정리하려고 한다.

디자인 패턴의 포스팅 순서는 아래와 같이 진행 할 예정이다. 각 패턴에 대해 시부이 유우스케의 AI 엔지니어를 위한 머신러닝 시스템 디자인 패턴이라는 서적의 내용을 참고하여 정리할 것이고 각 패턴에 대한 오픈소스 코드를 그대로 구현하지 않고 다양한 툴을 활용해 보면서 디자인 패턴 속에서의 아이디어와 기술 두마리 토끼를 잡아보겠다. 


모델 생성

  • 프로젝트, 모델, 버저닝 관리
  • 파이프라인 학습 패턴
  • 배치 학습 패턴


모델 릴리스

  • 모델 인 이미지 패턴
  • 모델 로드 패턴


추론 시스템

  • 웹 싱글 패턴
  • 동기 추론 패턴
  • 비동기 추론 패턴
  • 배치 추론 패턴
  • 전처리-추론 패턴
  • 직렬 MSA 패턴
  • 병렬 MSA 패턴
  • 시간차 추론 패턴
  • 추론 캐시 패턴
  • 데이터 캐시 패턴
  • 추론기 템플릿 패턴
  • 에지 AI 패턴


머신러닝 시스템의 운용

  • 추론 로그 패턴
  • 추론 감시 패턴


머신러닝 시스템의 품질관리

  • 부하 테스트 패턴
  • 추론 서킷브레이커 패턴
  • 섀도 A/B 테스트 패턴
  • 온라인 A/B 테스트 패턴
  • 파라미터 기반 추론 패턴
  • 조건 분기 추론 패턴


Keep going

업데이트:

댓글남기기