inbonk / mlsdp

《머신러닝 시스템 디자인 패턴》 예제 코드

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

머신러닝 시스템 디자인 패턴: AI 엔지니어를 위한

machine learning system examples

개요

  • 본 레포지토리는 2021년 5월 쇼에이샤(翔泳社)에서 출판된『AI エンジニアのための機械学習システムデザインパターン』의 샘플 코드입니다.
  • 본 레포지토리에서는 머신러닝의 모델 학습, 릴리스, 추론기 가동, 운용을 위한 코드 및 실행환경을 사례별로 제공합니다.
  • 더욱 상세한 내용은 이 책 또는 mercari/ml-system-design-pattern 을 참조하시기 바랍니다.

img

실행환경

  • Python 3.8 이상
  • Docker
  • Docker-compose
  • (일부)Kubernetes 또는 minikube
  • (일부)Android Studio

본 레포지토리에서는 프로그램의 실행환경으로 Docker、Docker-compose、(일부)Kubernetes/minikube、(일부)Android Studio 를 사용합니다. 또는, 커맨드라인으로 kubectlistioctl 을 사용합니다. 각종 미들웨어, 개발환경, 커맨드라인은 하기의 공식 document 를 참고하여 인스톨 해주시기 바랍니다.

Python 실행환경

본 레포지토리에서 사용중인 Python 라이브러리는 pipenv 로 지정되어 있습니다. 아래 순서대로 pipenv 와 같이 라이브러리도 인스톨 해주시기 바랍니다. 샘플코드는 Python3.8 이상에서 실행을 확인했습니다. 실행환경의 Python 버전이 맞지 않는 경우, pyenv 등으로 실행환경을 조정해 주십시오.

# Python 버전
$ python -V
# 출력
Python 3.8.5

# pyenv 버전
$ pyenv versions
# 출력
  system
* 3.8.5

# pipenv 를 인스톨하고, 셸을 pipenv venv 로 변경
$ make dev
# 출력 예
# pip install pipenv
# Requirement already satisfied: pipenv in ~/.pyenv/versions/3.8.5/lib/python3.8/site-packages (2020.11.15)
# (중략)
# Requirement already satisfied: six<2,>=1.9.0 in ~/.pyenv/versions/3.8.5/lib/python3.8/site-packages (from virtualenv->pipenv) (1.15.0)
# WARNING: You are using pip version 20.1.1; however, version 21.0.1 is available.
# You should consider upgrading via the '~/.pyenv/versions/3.8.5/bin/python3.8 -m pip install --upgrade pip' command.
# PIPENV_VENV_IN_PROJECT=true pipenv shell
# Creating a virtualenv for this project...
# Pipfile: ~/book/ml-system-in-actions/Pipfile
# Using ~/.pyenv/versions/3.8.5/bin/python3.8 (3.8.5) to create virtualenv...
# ⠧ Creating virtual environment...created virtual environment CPython3.8.5.final.0-64 in 433ms
#   creator CPython3Posix(dest=~/book/ml-system-in-actions/.venv, clear=False, no_vcs_ignore=False, global=False)
#   seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=~/Library/Application Support/virtualenv)
#     added seed packages: pip==21.0.1, setuptools==52.0.0, wheel==0.36.2
#   activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

# ✔ Successfully created virtual environment!
# Virtualenv location: ~/book/ml-system-in-actions/.venv
# Launching subshell in virtual environment...
#  . ~/book/ml-system-in-actions/.venv/bin/activate
# [21-02-27 10:03:37] your_name@your_namenoMacBook-Pro:~/book/ml-system-in-actions
# $  . ~/book/ml-system-in-actions/.venv/bin/activate
# (ml-system-in-actions) [21-02-27 10:03:37] your_name@your_namenoMacBook-Pro:~/book/ml-system-in-actions

# 의존 라이브러리 인스톨
$ make dev_sync
# 출력 예
# pipenv sync --dev
# Installing dependencies from Pipfile.lock (a2c081)...
#   🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 93/93 — 00:02:36
# All dependencies are now up-to-date!

##################################
####### 개발, 프로그램 실행    #######
##################################


# 개발, 프로그램의 실행이 완료되면, pipenv venv 셸을 종료
$ exit

단, 일부 샘플 코드에서는 다른 라이브러리를 사용하는 경우가 있습니다. 해당 샘플 코드 디렉토리의 README 를 참조해 주시기 바랍니다.

샘플 코드 목록

이 레포지토리에서 제공하는 프로그램은 하기의 디렉토리에서 실행하는 것을 상정해 개발되었습니다. 각 프로그램을 실행할 때는 목적에 맞는 디렉토리로 이동해 주십시오. 프로그램의 실행방법은 각 디렉토리의 README 를 참조하기 바랍니다.

.
├── chapter 2. 모델 만들기
│   ├── 모델 관리 서비스
│   ├── cifar10
│   ├── iris_binary
│   ├── iris_sklearn_outlier
│   ├── iris_sklearn_rf
│   └──iris_sklearn_svc
├── chapter 3. 모델 릴리스 하기
│   ├── 모델-인-이미지 패턴
│   └── 모델 로드 패턴
├── chapter 4. 추론 시스템 만들기
│   ├── web 싱글 패턴
│   ├── 동기 추론 패턴
│   ├── 비동기 추론 패턴
│   ├── 배치 추론 패턴
│   ├── 전처리 추론 패턴
│   ├── 병렬 마이크로서비스 패턴
│   ├── 시간차 추론 패턴
│   ├── 추론 캐시 패턴
│   ├── 데이터 캐시 패턴
│   ├── 추론기 템플릿 패턴
│   └── Edge AI 패턴
├── chapter 5. 머신러닝 시스템의 운용
│   ├── 추론 로그 패턴
│   └── 추론 감시 패턴
└── chapter 6. 머신러닝 시스템의 품질관리
   ├── 부하 테스트 패턴
   ├── 추론 서킷브레이커 패턴
   ├── 섀도우 A/B 테스트 패턴
   ├── 온라인 A/B 테스트 패턴
   ├── 파라미터 기반 추론 패턴
   └── 조건 분기 추론 패턴

About

《머신러닝 시스템 디자인 패턴》 예제 코드

License:MIT License


Languages

Language:Python 75.7%Language:Makefile 8.4%Language:Kotlin 5.8%Language:Shell 4.7%Language:Dockerfile 3.8%Language:Jinja 1.6%