Slide 1

Slide 1 text

Clovaにおける 機械学習モジュールの配信管理基盤 Rekcurd について Keigo Hattori, Search & Clova Center 2019.04.12. 分析基盤トーク DAFT #2 Twitter #DAFT

Slide 2

Slide 2 text

Who I am @keigohtr Keigo Hattori keigohtr Keigo Hattori Software Engineer 2009 東北大学 情報工学 修士 2009~2017.10 富士ゼロックス 2017.11~ LINE 自然言語処理 x 機械学習が専 門。担当プロダクトはClova。 Apitore創業者。

Slide 3

Slide 3 text

担当プロダクトはClova

Slide 4

Slide 4 text

Agenda • 機械学習の実運用における課題 • Rekcurdについて • (時間があれば) Q&A

Slide 5

Slide 5 text

mlOps (機械学習のワークフロー) 分析 クレンジング アノテーション 学習 データ収集 評価 配信

Slide 6

Slide 6 text

配信において考慮すべき点は?

Slide 7

Slide 7 text

1. High Availability 2. Management i. Upload the latest ML model ii. Switch a model without stopping services iii. Versioning models 3. Monitor i. Load balancing ii. Auto healing iii. Auto scaling iv. Performance/Results check 4. Others i. Server setup (development/staging/production) ii. Integration to the existing services iii. AB testing iv. Managing many ML services v. Logging Tasks in serving ML service

Slide 8

Slide 8 text

必要要件はわかった ・・・だれがやる?

Slide 9

Slide 9 text

機械学習モジュールの実運用の現状1 • 機械学習モジュールの開発者自身が管理運用をする  配信や管理、監視、運用に関する知識が乏しく担当者に よってサービス品質がバラつく  インフラ周りの知識が乏しく高可用運用やセキュリティの 設定などに時間がかかる上に設定内容も過不足ある  サービスの更新やトラブル時の対応に時間を取られ、機械 学習モジュールの開発に注力できない

Slide 10

Slide 10 text

機械学習モジュールの実運用の現状2 • インフラ担当者が機械学習モジュールの管理運用を 任される  そもそもコレの仕様どうなってるの?仕様書あるの?  メモリ効率や処理速度が問題になったときにどこまで手を 入れていいか分からない  サービスの更新やトラブルの度に機械学習担当者と連携す る必要があり時間がかかる

Slide 11

Slide 11 text

わかった テクノロジーでサポートしよう

Slide 12

Slide 12 text

Rekcurd のコンセプト • 機械学習モジュールの配信を簡単に • 機械学習モデルの管理と運用を簡単に • 既存のシステムへの統合を簡単に

Slide 13

Slide 13 text

Rekcurd のコンセプト • 機械学習モジュールの配信を簡単に Rekcurd • 機械学習モデルの管理と運用を簡単に Rekcurd dashboard (x Kubernetes) • 既存のシステムへの統合を簡単に Rekcurd client

Slide 14

Slide 14 text

Rekcurd Features Rekcurd is a flexible managing system for ML modules Features • Kubernetes • Service Mesh (Istio, Envoy) • Developer-Friendly interface (Rekcurd dashboard) • Django-like gRPC micro-framework (Rekcurd) • SDK (Rekcurd client)

Slide 15

Slide 15 text

Architecture (v1.0) grpc Reckurd dashboard Existing service Rekcurd client grpc Online storage MySQL/sqlite [Optional] Internal/External service [Optional] WorkFlow rest Kubernetes Rekcurd Istio-proxy Rekcurd Istio-proxy Rekcurd Istio-proxy

Slide 16

Slide 16 text

1. High Availability 2. Management i. Upload the latest ML model ii. Switch a model without stopping services iii. Versioning models 3. Monitor i. Load balancing ii. Auto healing iii. Auto scaling iv. Performance/Results check 4. Others i. Server setup (development/staging/production) ii. Integration to the existing services iii. AB testing iv. Managing many ML services v. Logging Tasks in serving ML service Rekcurd on Kubernetes で全ての課題を解決(したい) まだ課題あるかも

Slide 17

Slide 17 text

余談

Slide 18

Slide 18 text

Rekcurd のコンセプト • 機械学習モジュールの配信を簡単に • 機械学習モデルの管理と運用を簡単に • 既存のシステムへの統合を簡単に

Slide 19

Slide 19 text

Rekcurdの設計コンセプトは 「簡単」であることに拘りました。 理由は・・・

Slide 20

Slide 20 text

人類、新しいこと覚えない問題 ユ「便利だけどコスト(学習時間, お金)が必要なら使わない」 • Kubernetes • Istio • Docker • High availability configuration • fluentd • gRPC • Traffic control (nginx, LB, AB testing)

Slide 21

Slide 21 text

人類、やったことならできる(真理) 私「Rekcurdで全部サポートします」ユ「使ってやろう」 • Kubernetes • Istio • Docker • High availability configuration • fluentd • gRPC • Traffic control (nginx, LB, AB testing)

Slide 22

Slide 22 text

閑話休題

Slide 23

Slide 23 text

Rekcurdについて

Slide 24

Slide 24 text

Rekcurd Features (v1.0) Rekcurd is a flexible managing system for ML modules Features • Kubernetes • Service Mesh (Istio, Envoy) • Developer-Friendly interface (Rekcurd dashboard) • Django-like gRPC micro-framework (Rekcurd) • SDK (Rekcurd client)

Slide 25

Slide 25 text

Kubernetes Most famous container orchestration system Features • Container / microservices platform • Auto-scaling • Auto-healing • Rolling update (Auto-deployment without stopping services) • more...

Slide 26

Slide 26 text

Service Mesh (Istio) Traffic management plane without changing your code Features • Add traffic management (e.g. AB testing, canary rollouts, traffic splits, circuit breakers, timeouts, retries, ...) • Add security (e.g. authentication, authorization, encryption) • Add observability (e.g. Zipkin, Jaeger, Querying from Prometheus, Grafana) • more...

Slide 27

Slide 27 text

Developer-Friendly interface (v0.4) Demo スクリーンショットをGitHubで公開中

Slide 28

Slide 28 text

Django-like gRPC micro-framework (v1.0) Procedures 1. Run commands $ pip install rekcurd $ rekcurd startapp sample $ cd sample 2. Implement the contents $ vi app.py 3. Boot it $ python app.py

Slide 29

Slide 29 text

Rekcurd Roadmap v2.0 v1.x v1.0 v0.x Now Apr 30th 2019 TBD TBD v1.0 • Dashboard renewal • Istio • AB testing • GitOps / ImageOps option • Less necessity component • AirFlow support v1.x • ML model evaluation and visualization • Canary release • GPU support • Log visualization v2.0 • TBD

Slide 30

Slide 30 text

RekcurdはApache2.0ライセンスで公開! https://github.com/rekcurd Welcome Feedback and Pull Request!!! 私もRekcurd使える? スターくださいスターくださいスターください

Slide 31

Slide 31 text

THANK YOU Let’s Q&A and Discussion

Slide 32

Slide 32 text

Node1 label: dev Node2 label : stg Node4 label : prod Node3 label : prod Appendix: Service level independency Pod App: hoge label: dev Pod App: hoge label : stg Pod App: hoge label : prod Pod App: hoge label : prod Pod App: hoge SL: prod

Slide 33

Slide 33 text

 fluentd official Daemonset  Can be log-forwarded to the specific server (e.g. Kibana)  Just output logs to stdout/stderr Appendix: fluentd-kubernetes-daemonset