머신러닝 시스템 디자인 패턴
실제 운영 환경에서의 머신러닝 시스템 학습과 서빙, 운영을 위한 시스템 디자인 패턴을 다루고 있습니다.
목적
이 문서의 주된 목적은 실제 운영되는 머신러닝 시스템의 디자인 패턴을 설명하는 것입니다.
내용에 따라 일부 활용 사례를 참조하지만, 이 문서는 머신러닝 모델 성능 향상을 시키기 위한 디자인 패턴을 설명하는 것은 아닙니다.
필요 조건
이 문서에 있는 모든 머신러닝 시스템 패턴은 클라우드나 쿠버네티스 클러스터를 사용하여 배포하는 것을 전제로 설명합니다. 이 문서는 최대한 특정 프로그래밍 언어나 플렛폼에 의존하지 않도록 노력하나, Python은 머신러닝에서 가장 대중적인 언어임을 감안하여 대부분의 디자인 패턴은 Python으로 구현 가능하도록 되어 있습니다.
문서로 읽기
아래 링크로 더 편하게 문서를 읽어보세요. GitHub Pages
Sample implementations
아래에서 일부 샘플 구현을 사용할 수 있습니다. https://github.com/shibuiwilliam/ml-system-in-actions
Patterns
Serving patterns
서빙 패턴은 실제 운영 환경에서 머신러닝 모델을 이용할 수 있도록 만드는 일련의 시스템 디자인들입니다.
-
Edge prediction pattern: To do
QA patterns
예측 서버와 모델 평가하기 위한 패턴들입니다.
Training patterns
학습 파이프라인을 구성하기 위한 패턴들입니다.
Operation patterns
ML 학습 시스템의 설정과 로깅, 모니터링, 알람 시스템을 위한 관리 및 운영 패턴들입니다.
Lifecycle patterns
실제 운영을 위한 ML 시스템 전체를 구성하기 위해 여러 패턴들을 조합한 패턴들입니다.
Committers
- Yusuke Shibui (@shibuiwilliam)
- Sung Yun Byeon (@zzsza)
- Jiyeon Seo (@jiyeonseo)
- Daeyoon Jin (@zetbouaka)
기여하기
새로운 패턴을 추가하려면 template_design.md를 템플릿으로 사용하여 Issue를 생성하고 Pull Request를 만들어 주세요.
새로운 안티 패턴을 추가할 경우 template_antipattern.md를 템플릿으로 사용하여 Issue와 Pull Request를 만들어 주세요.
더 개선될 점이나 변경, 질문이 있는 경우 Issue로 제안해주세요.
Mercari에 기여하기 전 CLA를 주의 깊게 읽어주세요. 기여를 함으로써 CLA의 약관에 따라 이를 승낙하고 동의한 것으로 간주됩니다.
https://www.mercari.com/cla/
License
Copyright 2020 Mercari, Inc.
Licensed under the MIT License.