SlideShare a Scribd company logo
機械学習のマイクロサービスでの
運用の実験について
私はは好きにした.みんなも好きにすればいい
ML Ops Study(仮) #1
@Hmj_kd
自己紹介
■ @Hmj_kd
- 株式会社メルカリ
- ソフトウェアエンジニア(機械学習 /自然言語処理)
- 2017年1月 ~
- 現在4社目
■ 経歴
- 北海道釧路市出身
- 釧路高専 情報工学科卒業
- 大学 : 物理学科 (Black Hole, Inflation など)
- プログラマ,データ分析,機械学習エンジニア
今日はこんなことを話します
- 機械学習をやりたいけどやり始めるためにしたこと
- 課題設定 (<-- このあたりは座談会などで
- システムの話
- 運用しはじめてでてきたこと
- これから実現したいこと
目次
1. 機械学習の導入初期
a. どんな風に進めたか ?
b. 運用面でどんなことが課題としてでてきたか ?
2. ML microservice 前夜
a. 構成
b. 事例
3. これから
メルカリでの機械学習プロダクトの導入初期の構成 (codename : フルバーニアン)
JP Prod
US Prod
Mercari-API
Mercari-API
lb
lb
endpoint : hogehoge3
endpoint : hogehoge1
endpoint : hogehoge2
ML webapi admin
s3と定期的or更新時
にsyncする仕組み
ML Engineer
フルバーニアンの運用時の問題点
1. Django 縛り
2. 俺のmecabと本番のmecabが違うぅ(T T) 問題
3. 誰かのDeployによって,誰かのmodelがdegradeしちゃった
4. 1インスタンスに複数modelがメモリにのってスケールと監視大変
5. 本番と同等の環境の複製がしにくく,QA大変だった
6. Deployしたいとき, SRE Teamに都度お願いして申し訳ない
7. Train codeはなくても稼動する,しかし...メンテナンスしにくい
microservice 前夜
hmj は悩んでいた.
次なる機械学習プロダクトの
リリースが決まったが,
またフルバーニアンで
運用するのか...と
ML microservice 前夜
docker imageさえ作ってくれれば,
Spinnaker で GKE にデプロイしちゃいます
よ!!
(どんなものか話をきいて ...)
え!! やりましょう
前夜 ~ 利害の一致
JPでMicroserviceとしてweb apiでは初めてで色々試
したかったし,どうなるか検証したかった
今後も考えてこの継続的なデプロイの仕組みは,フル
バーニアンの運用の問題を解決してくれると思った
HTTP
Architecture Overview in JP, for ML
Mercari API
model A model B
Load balancer
…...
HTTP
Google
Container Registry
Deploy
Architecture Overview in US, for ML
Double API
Mercari API
HTTP
search
Personalization
Offer
gRPC
HTTP
Machine
Learning
New!!
どう解消されるか ?
1. 1task ≒ 1リポジトリ
a. Django 縛り
2. docker image
a. 俺のmecabと本番のmecabが違うぅ(T T) 問題
b. 誰かのDeployによって,誰かのmodelがdegradeしちゃった
c. 1インスタンスに複数modelがメモリにのってスケールと監視大変
3. Blue/Green deploy & Immutable, MLにも裁量が割当たった
a. Deployしたいとき, SRE Teamに都度お願いして申し訳ない
b. 本番と同等の環境の複製がしにくく, QA大変だった
4. Spinnaker によるDeployと継続的な学習job
a. Train codeはなくても稼動するけどメンテナンスしにくい
1. Deployment
a. Blue/Green Deploy
b. Immutable
2. 評価をして学習を継続させる
事例紹介
Blue/Green Deployment & Immutable Infrastructure
MLservice001
- 0.0.1
- 0.0.2
LB
domain/hoge
0.0.1 0.0.2
health
check
- 0.0.1 がGCRにアップロードされると,それをSpinnakerが検知する
- 既に0.0.1がapiを受けているとする
- 0.0.2 が立ち上がりhealthcheckでokとなると,自動で切り替わる
docker container
Deploy
Pipelines(evaluate-->train & evaluate)
exitcode:0
exitcode:1
ここでpipelineは
正常終了
Evaluate Pipeline Train Pipeline
前のPipeline status =
failed をトリガーとして
起動
./evaluate.sh ./train.sh
storage
daily cron
docker image
Run job
zeta/spamdesc/base
- 0.0.1
- 0.0.2 ★
Pipelines(evaluate-->train-->build)
docker image
zeta/spamdesc
- 0.0.2-$DATE
- 0.0.2-$DATE ★
evaluate train
0.0.2 0.0.2
cloudbuild
0.0.2
0.0.2-$DATE
- Dockerfile
- dockerfiles/server/Dockerfile
- cloudbuild.yaml $TAG
Run job, docker
image tag 指定
Pipelines(evaluate-->train-->build)
これから
➔ パイプライン処理
➔ ML Ops Eng
➔ Auto ML
基盤もつくっていく
Training Evalutation Deployment
いま取り組めているところ
Data flow &
Preprocessing
Data
Definition
まだ
ML
人材募集中 !!
- 機械学習・自然言語処理エンジニア
- ↑ いまある職種
- Machine Learning Operations Engineer
- ↑ 今後できるんじゃないかと勝手に思っています
- でもいまとても必要な職種
- 今後とても熱い分野
来年以降で試していきたいこと
- 機械学習基盤の構築
- 引き続き,開発&改善
- Auto MLについて本格的に実験したい
- 比較的シンプルなモデルでも解決できることはたくさんある
- 人間リソースが追いつかない
- いつか “部下はAutoML” という世界でもよいと思っています(個人的に
ありがとうございました!!

More Related Content

機械学習のマイクロサービスでの運用の実験について #mlops