$30 off During Our Annual Pro Sale. View Details »

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

kmotohas
October 23, 2019

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

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

kmotohas

October 23, 2019
Tweet

More Decks by kmotohas

Other Decks in Technology

Transcript

  1. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第7回 - 23/October/2019
    スカイマインド株式会社
    本橋 和貴
    konduit-serving と Spring Cloud
    Data Flow を⽤いたMLアプリケーション開発

    View Slide

  2. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第7回 - 23/October/2019
    ‣本橋 和貴 @kmotohas
    - スカイマインド株式会社
    • Deep Learning Engineer (前職ではDL+ROS)
    - 素粒⼦物理学実験(LHC-ATLAS実験)出⾝
    • 博⼠(理学)
    - 好きな本︓詳説 Deep Learning ̶ 実務者のためのアプローチ
    2
    ࣗݾ঺հ

    View Slide

  3. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第7回 - 23/October/2019 3
    ैདྷͷϓϩάϥϛϯάͱػցֶश
    https://www.coursera.org/learn/introduction-tensorflow

    View Slide

  4. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第7回 - 23/October/2019 4
    ػցֶशͷ࣌୅
    ‣ ルールの記述が難しかった事象も⾃動化できる可能性がでてきた
    - 観測
    - 実験
    - 解析

    View Slide

  5. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第7回 - 23/October/2019 5
    ػցֶशͷϥΠϑαΠΫϧ
    ‣ Phase 1: 収集したデータセットで機械学習モデルを訓練
    ‣ Phase 2: 訓練したモデルをシステムに統合
    ‣ (Phase 3: 新たに収集したデータセットで再学習)

    View Slide

  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

    View Slide

  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

    View Slide

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

    View Slide

  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

    View Slide

  10. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第7回 - 23/October/2019 10
    IUUQTHJUIVCDPNTQSJOHDMPVETUSFBNBQQTUBSUFSTUFOTPSqPXUSFFNBTUFSTQSJOHDMPVETUBSUFSTUSFBNQSPDFTTPSUXJUUFSTFOUJNFOU
    (6*ϕʔεͰϫʔΫϑϩʔΛఆٛՄೳ

    View Slide

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

    View Slide

  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

    View Slide

  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Ͱ࠶هड़

    View Slide

  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連携モニタリング

    View Slide

  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)

    View Slide

  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

    View Slide

  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 でログ出⼒

    View Slide

  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 と疎通

    View Slide