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

詳説Deep LearningとDL4JとMLOps入門

kmotohas
September 18, 2019

詳説Deep LearningとDL4JとMLOps入門

「実践者向けディープラーニング勉強会 第六回」に向けた資料。
https://dl4-practitioners.connpass.com/event/140073/

kmotohas

September 18, 2019
Tweet

More Decks by kmotohas

Other Decks in Technology

Transcript

  1. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019
    スカイマインド株式会社
    本橋 和貴
    詳説 Deep Learning と DL4J と MLOps ⼊⾨

    View Slide

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

    View Slide

  3. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019
    ‣ 原著 “Deep Learning ̶ A Practitionerʼs Approach” は 2017年8⽉発売
    ‣ JVM⾔語⽤ディープラーニング開発フレームワーク Deeplearning4j
    (DL4J) を⽤いた解説書
    - 著者は DL4J の開発者 Adam Gibson、Skymind Inc を創業
    - ソフトウェア/アプリケーション/システム・エンジニアなどがメイン
    ターゲット
    - ディープラーニングの基礎からHadoop/Sparkといったビッグデータ
    分析基盤との連携まで解説
    3
    ೥݄೔ൃച

    View Slide

  4. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 4
    ‣ 1. 機械学習の概要
    ‣ 2. ニューラルネットワークとディープラーニングの基礎
    ‣ 3. 深層ネットワークの基礎
    ‣ 4. 深層ネットワークの主要なアーキテクチャー
    ‣ 5. 深層ネットワークの構築
    ‣ 6. 深層ネットワークのチューニング
    ‣ 7. 特定の深層ネットワークのアーキテクチャーへのチューニング
    ‣ 8. ベクトル化
    ‣ 9. Spark上でDL4Jを⽤いて機械学習を⾏う
    ‣ 付録.⼈⼯知能とは何か︖、RL4Jと強化学習、etc
    ৄઆ%FFQ-FBSOJOHͷ໨࣍

    View Slide

  5. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 5
    σΟʔϓϥʔχϯάͷཱͪҐஔ
    IUUQTXXXDPVSTFSBPSHMFBSOJOUSPEVDUJPOUFOTPSqPX

    View Slide

  6. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 6
    %-+Λ༻͍ͨखॻ͖਺ࣈೝࣝϞσϧ܇࿅ͷαϯϓϧ
    - 1
    DataSetIterator mnistTrain = new MnistDataSetIterator(batchSize, true, rngSeed);
    MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
    .seed(rngSeed) //include a random seed for reproducibility
    .activation(Activation.RELU).weightInit(WeightInit.XAVIER)
    .updater(new Nesterovs(rate, 0.98))
    .list()
    .layer(new DenseLayer.Builder().nIn(784).nOut(12).build()) // first layer.
    .layer(new DenseLayer.Builder().nOut(12).build()) // second layer
    .layer(new OutputLayer.Builder(LossFunction.NEGATIVELOGLIKELIHOOD) // output layer
    .activation(Activation.SOFTMAX)
    .nOut(10).build())
    .build();
    MultiLayerNetwork model = new MultiLayerNetwork(conf);
    model.init();
    model.setListeners(new ScoreIterationListener(5)); // print the score with every iteration
    for( int i=0; ilog.info("Epoch " + i);
    model.fit(mnistTrain);
    }
    33
    b p
    b p
    b sp
    b p
    b p
    b p
    b w h
    #VJMEFSύλʔϯΛ༻͍ͯχϡʔϥϧωοτϫʔΫͷίϯϑΟάΛهड़

    View Slide

  7. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 7
    ৞ΈࠐΈχϡʔϥϧωοτϫʔΫͷαϯϓϧ
    ,FSBTMJLFͳߴϨϕϧ"1*Λ+BWBͰ

    View Slide

  8. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 8
    OEUI,FSBTίϯτϦϏϡʔλʔ͸εΧΠϚΠϯυॴଐ

    View Slide

  9. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 9
    %-+ͷ܇࿅༻6*

    View Slide

  10. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 10
    %BUB7FD%-+TVJUFඪ४ͷϕΫτϧԽϥΠϒϥϦʔ
    ‣ ニューラルネットワークは基本的に⾏列計算の塊なのでまず⽣データをベクトルに変換する
    - DataVecはJava版Pandasのようなイメージ
    ‣ テキスト、CSV、オーディオ、画像、ビデオといったメジャーな形式のデータのベクトル化
    をサポート
    - CPU / GPU / Spark における実⾏をネイティブにサポート
    IUUQTTMJEFQMBZFSDPNTMJEF

    View Slide

  11. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 11
    &5-πʔϧͱͯ͠ͷ%BUB7FD
    ‣ DataVecは⽣データを訓練しやすくベクトル化するためのあらゆる機能を持つ
    - InputSplit + RecordReader -> DataSetIterator -> next() -> DataSet
    - 多数のRecordReader (CSV/libsvm/matlab/json etc)
    - 前処理・正規化モジュール (MinMaxScaler, Tokenizer etc)
    ‣ ⼊⼒データのスキーマやtransform processを定義
    - 定義したプロセスをjsonにシリアル化可能
    - プロダクション環境でもポータブルに扱いやすく

    View Slide

  12. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 12
    KTPOԽαϯϓϧIUUQTHJTUHJUIVCDPNFSBMZCEFCBDEGGEE
    %BUB7FDͷεΩʔϚఆٛͷαϯϓϧ

    View Slide

  13. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 13
    %BUB7FD%BUB"OBMZTJT

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  18. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019
    ‣ Spark: Hadoopベースのビッグデータ分散処理基盤
    18
    4QBSLΛ༻͍ͨ෼ࢄֶशػೳ

    View Slide

  19. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 19
    ͍ͭ෼ࢄֶशΛߦ͏͔
    ‣ ⼀台のPC / サーバーで⼗分なときはそれでOK
    - Multi-GPUのマシーンは複雑なネットワーククラスターよりも⾼性能なことも
    - DL4J は ParallelWrapper クラスを使えば multi-GPU で並列訓練できる
    ‣ データ量やモデル⾃体が⼤きすぎて訓練に時間がかかりすぎる場合は分散学習
    - クラスターの通信・同期のコストとのトレードオフ

    View Slide

  20. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 20
    ෼ࢄֶशͷΞϓϩʔν

    View Slide

  21. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 21
    4ZODISPOPVT4(%

    View Slide

  22. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 22
    "TZODISPOPVT4(%
    ‣ 利点
    - ⾼いスループット (ワーカーの待機時間が減り、より計算に専念できる)
    ‣ 懸念点
    - それぞれのワーカーが別々にモデルを更新するため、無駄な重みの勾配を剪定する必要あり

    View Slide

  23. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 23
    ‣ パラメーター平均化アプローチ
    - Synchronous SGD
    ‣ 勾配ベースのアプローチ(推奨)
    - Asynchronous SGD with quantized gradients above a threshold
    • Spark + Aeron
    • Scalable Distributed DNN Training Using Commodity GPU Cloud Computing
    [Nikko Strom (Amazon), 2015]
    %-+ʹ͓͚Δ෼ࢄֶशͷ࣮૷

    View Slide

  24. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 24
    4USPN<>ͷ֓ཁ
    ‣ 通信量削減のため全勾配ベクトルは送らない
    - 設定した閾値 œН を超えた勾配ベクトルのインデックスを送る
    - 重みの更新量も œНʹྔࢠԽ
    - ϫʔΧʔಉ࢜Λ11઀ଓ͠ɺύϥϝʔλʔαʔόʔͳ͠
    - ͦΕͧΕͷϫʔΧʔͷਅͷޯ഑ͱྔࢠԽͨ͠ޯ഑ͷ࢒ࠩΛ஝ੵ
    • “勾配 + 残差” を量⼦化していく

    View Slide

  25. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 25
    %-+ʹ͓͚Δ4USPN࿦จͷ࣮૷
    4QBSL.BTUFS
    P2P接続は実際にはツリー構造で代替している
    (より帯域に優しいリング接続⽅式も将来のDL4Jで追加予定)

    View Slide

  26. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 26
    %-+ͷ4UPSN࣮૷ͷϕϯνϚʔΫςετ݁Ռ

    View Slide

  27. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 27
    "*ͷੑೳ͸ͭͷཁҼͰมԽ͠ଓ͚Δ
    IUUQTNBSUJOGPXMFSDPNBSUJDMFTDENMIUNM

    View Slide

  28. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 28
    IUUQTUPXBSETEBUBTDJFODFDPNCVJMEZPVSPXOOFVSBMOFUXPSLDMBTTJpFSJOSCGGE
    χϡʔϥϧωοτϫʔΫ͸σʔλͷμΠφϛΫεΛཧղ͠ͳ͍

    View Slide

  29. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 29
    /
    A6
    P
    ) ) I
    M
    L
    C /
    I
    L M
    M
    ) )
    ) / 6
    / 6
    O I M
    )
    "*.-γεςϜ։ൃͷྲྀΕ

    View Slide

  30. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 30
    ྫதݹंͷదਖ਼ങऔՁ֨༧ଌ
    IUUQTXXXUIPVHIUXPSLTDPNJOTJHIUTBSUJDMFTJOUFMMJHFOUFOUFSQSJTFTFSJFTDENM

    View Slide

  31. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 31
    (PPHMFͷ5FDIOJDBM%FCU࿦จͷਤ

    View Slide

  32. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 32
    IUUQTEWDPSHEPDVTFDBTFTEBUBBOENPEFMpMFTWFSTJPOJOH
    %7$%BUBTDJFODF7FSTJPO$POUSPM

    View Slide

  33. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 33
    IUUQTXXXPSFJMMZDPNMFBSOJOHJOUSPEVDUJPOUPMPDBMJOUFSQSFUBCMFNPEFMBHOPTUJDFYQMBOBUJPOTMJNF
    -*.&-PDBM*OUFSQSFUBCMF.PEFM"HOPTUJD&YQMBOBUJPOT

    View Slide

  34. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 34
    1SPNFUIFVT ϞχλϦϯά
    HSBGBOB ՄࢹԽ

    IUUQTEBTBMPHIBUFOBCMPHKQFOUSZQSPNFIUFVTHSBGBOBROBQ

    View Slide

  35. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 35
    4,*-4LZNJOE*OUFMMJHFOU-BZFS

    View Slide

  36. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 36
    ‣ 「詳説 Deep Learning ̶ 実務者のためのアプローチ」発売中です
    ‣ Deeplearning4j (DL4J) は Keras-like な API
    - DataVec で前処理
    - Spark で分散処理
    - TensorFlow, Keras などPython系で学習したモデルをDL4Jにインポート可能
    ‣ モデル学習して終わりというわけでもない
    - CI/CD的発想が必要
    - 周辺ツールがオープンソースで出揃ってきている
    - パッケージングされたソフトウェア/SaaSを使うのもあり
    ·ͱΊ

    View Slide

  37. Kazuki Motohashi - Skymind K.K.
    実践者向けディープラーニング勉強会 第6回 - 18/September/2019 37
    "QQFOEJY

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide