konduit-servingとSpring Cloud Data Flowを用いたMLアプリケーション開発

590fe37e032309f0f2657135085e395d?s=47 kmotohas
October 23, 2019

konduit-servingとSpring Cloud Data Flowを用いたMLアプリケーション開発

実践者向けディープラーニング勉強会 第七回
https://dl4-practitioners.connpass.com/event/149810/
2019-10-23

590fe37e032309f0f2657135085e395d?s=128

kmotohas

October 23, 2019
Tweet

Transcript

  1. 1.

    Kazuki Motohashi - Skymind K.K. 実践者向けディープラーニング勉強会 第7回 - 23/October/2019 スカイマインド株式会社

    本橋 和貴 konduit-serving と Spring Cloud Data Flow を⽤いたMLアプリケーション開発
  2. 2.

    Kazuki Motohashi - Skymind K.K. 実践者向けディープラーニング勉強会 第7回 - 23/October/2019 ‣本橋

    和貴 @kmotohas - スカイマインド株式会社 • Deep Learning Engineer (前職ではDL+ROS) - 素粒⼦物理学実験(LHC-ATLAS実験)出⾝ • 博⼠(理学) - 好きな本︓詳説 Deep Learning ̶ 実務者のためのアプローチ 2 ࣗݾ঺հ
  3. 3.

    Kazuki Motohashi - Skymind K.K. 実践者向けディープラーニング勉強会 第7回 - 23/October/2019 3

    ैདྷͷϓϩάϥϛϯάͱػցֶश https://www.coursera.org/learn/introduction-tensorflow
  4. 4.

    Kazuki Motohashi - Skymind K.K. 実践者向けディープラーニング勉強会 第7回 - 23/October/2019 4

    ػցֶशͷ࣌୅ ‣ ルールの記述が難しかった事象も⾃動化できる可能性がでてきた - 観測 - 実験 - 解析
  5. 5.

    Kazuki Motohashi - Skymind K.K. 実践者向けディープラーニング勉強会 第7回 - 23/October/2019 5

    ػցֶशͷϥΠϑαΠΫϧ ‣ Phase 1: 収集したデータセットで機械学習モデルを訓練 ‣ Phase 2: 訓練したモデルをシステムに統合 ‣ (Phase 3: 新たに収集したデータセットで再学習)
  6. 6.

    Kazuki Motohashi - Skymind K.K. 実践者向けディープラーニング勉強会 第7回 - 23/October/2019 6

    ػցֶशͷϥΠϑαΠΫϧ Raw Data Data Loading Data Analysis Data Preprocessing Model Design Train (CPU/GPU/ Cluster) Evaluation Deploy (Streaming/ Batch) Monitoring
  7. 7.

    Kazuki Motohashi - Skymind K.K. 実践者向けディープラーニング勉強会 第7回 - 23/October/2019 7

    1ZUIPO.-&DPTZTUFN Raw Data Data Loading Data Analysis Data Preprocessing Model Design Train (CPU/GPU/ Cluster) Evaluation Deploy (Streaming/ Batch) Monitoring
  8. 8.

    Kazuki Motohashi - Skymind K.K. 実践者向けディープラーニング勉強会 第7回 - 23/October/2019 8

    #JH%BUB&DPTZTUFN IUUQTXXXDMFBSQFBLTDPNCJHEBUBFDPTZTUFNTQBSLBOEUBCMFBV
  9. 9.

    Kazuki Motohashi - Skymind K.K. 実践者向けディープラーニング勉強会 第7回 - 23/October/2019 9

    IUUQTXXXTMJEFTIBSFOFUUFDICMPHZBIPPTQSJOHDMPVEEBUBqPXTUSFBNDUKQ Spring Cloud Data Flow とは • ス ー と ッチ に する Springア ケーシ の デ イ Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. ・ 5 Spring Cloud Data Flow Spring Cloud Stream Spring Cloud Task Spring Integration Spring Boot Spring Batch Batch Streaming deploy use use
  10. 10.

    Kazuki Motohashi - Skymind K.K. 実践者向けディープラーニング勉強会 第7回 - 23/October/2019 10

    IUUQTHJUIVCDPNTQSJOHDMPVETUSFBNBQQTUBSUFSTUFOTPSqPXUSFFNBTUFSTQSJOHDMPVETUBSUFSTUSFBNQSPDFTTPSUXJUUFSTFOUJNFOU (6*ϕʔεͰϫʔΫϑϩʔΛఆٛՄೳ
  11. 12.

    Kazuki Motohashi - Skymind K.K. 実践者向けディープラーニング勉強会 第7回 - 23/October/2019 12

    ֤ίϯϙʔωϯτ͸ϚΠΫϩαʔϏε ‣ 様々な環境下で動作 • Cloud Foundry • Kubernetes • Hadoop YARN • Apache Mesos • ローカルコンピューター Spring Cloud Data Flow とは Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 用・ 9 SCDF Server REST-API Deployer SPI deploy RDBMS Data Source Data Source Web UI Shell IUUQTXXXTMJEFTIBSFOFUUFDICMPHZBIPPTQSJOHDMPVEEBUBqPXTUSFBNDUKQ 3BCCJU.2,BGLB
  12. 13.

    Kazuki Motohashi - Skymind K.K. 実践者向けディープラーニング勉強会 第7回 - 23/October/2019 13

    Ϟσϧਪ࿦ͷߏ੒ Input Data Stream Java Process Output Predictions Stream External System ML Model Input Data Stream Java Process Output Predictions Stream ML Model .PEFM4FSWJOH .PEFM&NCFEEJOH FH 3&45"1* FH 5FOTPS'MPXGSP[FONPEFM1..-0//9 ˎ1ZUIPOͰ΋Մ 'MBTL4FMEPOLPOEVJUTFSWJOHFUD ˎ1ZUIPOͰॻ͍͍ͯͨલॲཧɾޙॲཧΛ+BWBͰ࠶هड़
  13. 14.

    Kazuki Motohashi - Skymind K.K. 実践者向けディープラーニング勉強会 第7回 - 23/October/2019 14

    LPOEVJUTFSWJOH ‣ Deeplearning4j 開発者 Adam Gibson を中⼼に開発されているJavaベース のオープンソースのMLモデルデプロイツール • JavaCPP: C++で書かれたコード (CUDA/TensorFlow/NumPy/etc) の Javaラッパーを作成 • Vert.x: イベントドリブンアプリ開発フレームワーク • Deeplearning4j: JVM⽤DLフレームワーク、Keras model import ‣ Python SDK、Kubernetes統合、 Grafana/Prometheus連携モニタリング
  14. 15.

    Kazuki Motohashi - Skymind K.K. 実践者向けディープラーニング勉強会 第7回 - 23/October/2019 15

    LPOEVJUTFSWJOH1ZUIPO4%, IUUQTXXXYFOPOTUBDLDPNJOTJHIUTXIBUJTBQBDIFBSSPX pip install konduit Configuration - input/output type/name - #parallel workers - pre/post-processing - served model type ML Server - TensorFlow / Keras - DL4J - PMML / ONNX / PFA
 - Python code itself !! 4UBSU 4FSWFS Input - Json / Numpy / ND4J - Arrow (pandas/spark/…) Output - RAW / Class label / Regression - YOLO / SSD bounding box from konduit import * serving_config = ServingConfig(..) model_pipeline_step = ModelPipelineStep(..) inference_config = InferenceConfiguration(..) server = Server(config=inference_config) server.start() client = Client(..) result = client.predict(input_data)
  15. 16.

    Kazuki Motohashi - Skymind K.K. 実践者向けディープラーニング勉強会 第7回 - 23/October/2019 16

    &NCFEEFE1ZUIPOJO+BWB Konduit Java Process Embedded Python Interpreter *OGFSFODF1ZUIPO$PEF import torch input_variable = # some tensor # pre process here model = load_model() # post process here output_variable = model.predict(input_variable) … input_variable … output_variable JOQVU@WBSJBCMF PVUQVU@WBSJBCMF HTTP Client  DPOpHVSF1ZUIPO1JQFMJOF4UFQ  DMJFOUTFOETJOQVUEBUBUPTFSWFS  TUPSFJOQVUEBUBJONFNPSZ  PWFSXSJUFJUUPUIFQPJOUFSPG lJOQVU@WBSJBCMFz  EPJOGFSFODF  DMJFOUSFUSJFWFTPVUQVUWBSJBCMF anaconda
  16. 17.

    Kazuki Motohashi - Skymind K.K. 実践者向けディープラーニング勉強会 第7回 - 23/October/2019 17

    EFNP ‣ PyTorchで記述された顔認識コードを konduit-serving でデプロイ - https://github.com/Linzaer/Ultra-Light-Fast-Generic-Face-Detector-1MB ‣ Spring Cloud Data Flow • “file” source でディレクトリを監視 • 画像ファイルがディレクトリに追加されたら “httpclient” processer が base64 encode さ れた画像をPOST • Pythonコード内で画像を受け取り、顔認識を⾏い、画像に写っている顔の数を返す • “log” sink でログ出⼒
  17. 18.

    Kazuki Motohashi - Skymind K.K. 実践者向けディープラーニング勉強会 第7回 - 23/October/2019 18

    ·ͱΊ ‣ Spring Cloud Data Flow で簡単にデータ処理のフローを構築できる • 各コンポーネントは Spring Boot のマイクロサービスとして振る舞う ‣ konduit-serving は Java ベースのMLデプロイツール • 様々な形式のモデルをサポート • Pythonコードそのもの⾃体デプロイできる • “httpclient” を通じて Spring Cloud Data Flow と疎通