Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Clovaにおける機械学習モジュールの配信&運用基盤の紹介

235 views

Published on

服部 圭悟 @keigohtr(LINE) Clovaにおける機械学習モジュールの配信&運用基盤の紹介
2018/07/18 LINE

Published in: Technology
  • Be the first to comment

Clovaにおける機械学習モジュールの配信&運用基盤の紹介

  1. 1. Clovaにおける機械学習 モジュールの配信&運用基盤の紹介 Keigo Hattori, Search & Clova Center
  2. 2. @keigohtr Keigo Hattori keigohtr Who I am Keigo Hattori Software Engineer 2009年 東北大 情報工学修士 2009~2017年 富士ゼロックス 2017年~ LINE 自然言語処理 x 機械学習が専 門。Apitore創業者。
  3. 3. • Clovaの紹介 • ClovaにおけるKubernetes の活用事例の紹介 Agenda
  4. 4. 今日のゴール 1. Clovaに興味を持ってもらうこと 2. 機械学習の配信運用に関する知見を共有すること (フィードバック歓迎) 3. LINEに興味を持ってもらうこと (We are hiring! Welcome ML engineer!!)
  5. 5. Clovaの紹介 Clovaに興味を持ってもらいたい
  6. 6. TITLE
  7. 7. subtitle TITLE
  8. 8. Unique Feature • LINEが使える • 音質が良い • バッテリー搭載 • 赤外線標準装備 (WAVEのみ)
  9. 9. スキル開発はじめました
  10. 10. Clovaにおける Kubernetesの活用事例の紹介 我々が考えた最強の・・・
  11. 11. 機械学習が流行ってます SVM Deep LearningMachine Learning Keras Chainer Caffe scikit-learn gensim logistic regression Random Forest Neural Network Perceptron libsvm liblinear Theano
  12. 12. 機械学習の開発環境も整ってきた JupyterLab TensorBoard ChainerUI
  13. 13. でも待ってください 機械学習は学習で終わりですか?
  14. 14. Tasks in building ML model 1. Data i. Collection ii. Cleaning/Cleansing 2. Feature i. Preprocessing ii. Dictionary 3. Training i. Algorithm ii. Parameter tuning iii. Evaluation 4. Others i. Server setup ii. Versioning (data, parameter, model, result) 学習はツールが充実してきた
  15. 15. Tasks in serving ML service 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 運用はツールが少ない
  16. 16. 我々が使っているオープンソース Drucker ※ を紹介します ※クローズドベータ中
  17. 17. Druckerとは • 機械学習の配信フレームワーク  機械学習モジュールの配信を簡単に  機械学習モデルの管理と運用を簡単に  既存のシステムへの統合を簡単に • Kubernetes上で(も)動作 • クローズドベータ中
  18. 18. Tasks in serving ML service 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
  19. 19. Drucker gRPC x microservice • HA構成 • テンプレ化 • どんなアルゴリズムでも配信できる (e.g. TensorFlowもChainerも使える) • gRPC protoを書かなくて良い
  20. 20. Tasks in serving ML service 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
  21. 21. Drucker dashboard • WebUI • 前頁のgRPC microserviceに接続 • 全てのgRPC microserviceを 一元管理 • モデルをアップロード • モデルのバージョニング • サービスの読み込みモデルの 切り替え • モデルの性能を測定&可視化
  22. 22. Tasks in serving ML service 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
  23. 23. Drucker client • 前頁のgRPC microserviceに 接続 • 全てのgRPC microserviceに アクセス可能 • gRPC protoを書かなくて良い • gRPC protoから任意言語の SDKを自動生成できるため インテグ先の開発言語は不問
  24. 24. Tasks in serving ML service 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
  25. 25. Kubernetes via Rancher • Auto healing (Deployment/Daemonset) • サービスが死んだら自動で起動 • Auto scaling (HorizontalAutoScaler) • 負荷に応じて自動でPodを増減 • Rolling update • サービスを止めずに更新
  26. 26. Tasks in serving ML service 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
  27. 27. Kubernetes namespace x node selector x affinity • namespace • Kubernetesに設定できる名前空間 • Service level (e.g. dev/stg/prod) をnamespaceにして管理 • node selector • Podが起動するnodeの条件 • Nodeにservice levelのラベルをつけ、同じservice levelのPodを当該node で起動 • affinity • Podが起動するnodeの条件 • PodにMLサービスのラベルをつけ、同じnodeで同じMLサービスを 起動しないように制御 Pod: Kubernetes上で起動するworker container Node: Kubernetesクラスタの構成サーバー
  28. 28. Tasks in serving ML service 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
  29. 29. • nghttpx ingress controller • http2 (gRPC) load balancing • Host name routing • DNSを発行、Sub domainにMLサービス名を割り当ててアクセス http://<app-name>-<service-level>.<domain> 前述のDrucker clientを拡張 Kubernetes Ingress
  30. 30. Tasks in serving ML service 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
  31. 31. Drucker dashboard • WebUI • 前頁のgRPC microserviceに接続 • 全てのgRPC microserviceを 一元管理 • モデルをアップロード • モデルのバージョニング • サービスの読み込みモデルの 切り替え • モデルの性能を測定&可視化 • Kubernetesにアクセス、MLサービスを任意の設定で起動 (Deployment, Service, Ingress, HorizontalAutoScaler)
  32. 32. Tasks in serving ML service 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
  33. 33. fluentd-kubernetes • fluentd公式のKubernetes対応 • Daemonsetで起動 • stdout / stderr を任意のサーバーにForwarding • Clovaではkibana + ElasticSearchサーバーにforwardしてログ分析
  34. 34. Drucker on Kubernetes 構成図 (雑)
  35. 35. Architecutre
  36. 36. • Docker x Git repository • Base imageあり、コードをgit pull → Dockerに詳しくなくても使える • Online storage • Podがマウント、MLモデルを保存 → storageの運用を外に任せる Pod間のモデル同期が不要 • MySQL • Podが読み込むモデルを管理、 起動時にDB参照 → ローリングアップデートができる (Additional note)
  37. 37. Drucker on Kubernetes シナリオ (雑)
  38. 38. シナリオ (1/12) 起点はDashboard
  39. 39. シナリオ (2/12) トップ画面 Kubernetesクラスタの登録
  40. 40. シナリオ (3/12) Kubernetesクラスタの登録
  41. 41. シナリオ (4/12) Rancherでは“Kubernetes CLI” からダウンロード
  42. 42. シナリオ (5/12) MLサービスを起動
  43. 43. シナリオ (6/12) MLサービスの各種設定
  44. 44. シナリオ (7/12) MLサービスの起動状況の一元管理
  45. 45. シナリオ (8/12) 新しいMLモデルを追加
  46. 46. シナリオ (9/12) MLモデルの切り替え
  47. 47. シナリオ (10/12) 複数のMLサービスのモデル を一度に変更可能
  48. 48. シナリオ (11/12) Dashboard経由でKubernetesを操作
  49. 49. シナリオ (12/12) MLサービスへのアクセス
  50. 50. まとめ • Drucker x Kubernetes でMLモジュールの管理が簡単に • Kubernetes でサーバー運用周りを自動化 • Drucker dashboard で簡単操作 サービスレベル毎にMLモデルの更新、切り替えができる • ABテストもできる • Drucker client で既存のサービスとのインテグも簡単
  51. 51. 以上で説明は終わりですが 最後に
  52. 52. We are hiring
  53. 53. THANK YOU
  54. 54. @keigohtr Keigo Hattori keigohtr 気軽にメッセください Keigo Hattori @line_clova #Clova LINE Clova http://clova-blog.line.me/ja/ 公式アカウント

×
Save this presentationTap To Close