Slide 1

Slide 1 text

あまり本には載っていない機械学習の話      Meetup #02 @ 2017.05.18

Slide 2

Slide 2 text

@pottava ・機械学習の “サービス化・運用手法” を研究中 ・AWS Certified SA, DevOps Engineer Pro ・Google Certified Professional - Cloud Architect

Slide 3

Slide 3 text

株式会社スピンフ

Slide 4

Slide 4 text

・クラウドすっごく得意。主に AWS と GCP。 ・Docker は 3 年前から本番運用してノウハウ豊富 ・NVIDIA GPU の各種環境構築ならお任せあれ 受託開発・運用支援してます 4

Slide 5

Slide 5 text

GTC 2017 行ってきました (最後にお土産じゃんけんしましょう)

Slide 6

Slide 6 text

本題

Slide 7

Slide 7 text

  機械学習でなにが変わるの?   機械学習のおさらい • 機械学習とは • 機械学習と深層学習   学習 • データの準備 • 試行錯誤 / POC • 学習   推論 今日お話しすること 7

Slide 8

Slide 8 text

ػցֶशͰͳʹ͕มΘΔͷʁ

Slide 9

Slide 9 text

ࠓͲΜͳ͜ͱʹԠ༻͞Ε͍ͯΔͷ͔ 9 https://www.youtube.com/watch?v=SUNPrR4o5ZA

Slide 10

Slide 10 text

΄ΜͷҰྫ 10 • 医療診断サポート、医薬品の研究・試験の後押し • 農産物の収穫量増加、肥料や農薬の抑制 • 小売業での顧客購入サポート • 自動運転、周囲のリアルタイムな状況把握 • スポーツやゲームでの分析、戦略立案 • 作曲 • 自動翻訳、字幕付与

Slide 11

Slide 11 text

社内導入

Slide 12

Slide 12 text

まずは関係者 みんなで 基本 を抑えたい。大切。 ・何に向いていて、何に向いていないのか ・どれだけ投資すれば何が得られるのか ・そもそもそれは正しい問い?何を OKR, KPI にするか ・これまでの製品開発との違いは何か αʔϏεʹಋೖ͢Δʹ͸ 12

Slide 13

Slide 13 text

機械学習サービスを提供するための最初の一歩.. Biz: 基本を押さえ、顧客体験向上への応用を考えてみる Ops: これまでと毛色の違う学習・サービス基盤を知る Dev: 実際に学習推論を動かしてみる、基礎技術を学ぶ ͋ͳͨͷ࢓ࣄ͸ͳΜͰ͔͢ʁ 13

Slide 14

Slide 14 text

今日ここに来ているあなたはきっと、リード役。 まずはクラウドの API を使ってみたり 機械学習や数学の本を買って読んでみたり 実際にコードを書いてみたりしましょう!! ͱ͸ݴ͍ͭͭ 14

Slide 15

Slide 15 text

ධ൑ͷ͍͍ຊɺ࠷ۙ·ͨͰͨΑ 15 Hands-On Machine Learning with Scikit-Learn and TensorFlow Concepts, Tools and Techniques to Build ”Intelligent Systems”

Slide 16

Slide 16 text

機械学習のおさらい

Slide 17

Slide 17 text

機械学習

Slide 18

Slide 18 text

何か特定の問題があるとして。 コンピュータに 客観的事実のみ を与え 具体的な回答を得る、またはそれを改善すること。 機械学習とは 18

Slide 19

Slide 19 text

y = ax + b a, b を 人間が事前に決める のが一般的プログラミング。 実データから コンピュータに計算させる のが機械学習。 機械学習とは 19

Slide 20

Slide 20 text

y = ax + b 例) x : Pairs で最近見かけたよさげな人の 特徴 y : このひとと付き合ったら幸せになれるか 機械学習とは 20

Slide 21

Slide 21 text

y = ax + b 例) 人間「 y = 0.7 * 性格x + 0.2 * 外見x + 0.1 * 収入x でしょ」 機械「それでは精度が低い。過去のデータからいえば ɹɹɹy = 0.4 * 性格x + 0.1 * 外見x + 0.5 * 収入x が適切」 機械学習とは 21

Slide 22

Slide 22 text

y = ax + b a, b を決めるための作業を 学習、 決まった a, b のことを 学習済みモデル と言う。 学習済みモデルを使って 実際に x を投入し y を得るのが 推論。 学習と推論 22

Slide 23

Slide 23 text

y = ax + b ビジネス上重要なのは、優れた推論 ができるか。 優れた推論をするためには、優れたモデルが必要。 優れた a, b を決めるための 学習 が、腕の見せどころ。 学習と推論 23

Slide 24

Slide 24 text

y = ax + b データから a, b を求める方法はたくさんある。 解きたい問題によって、適切な方法を選ぶ 必要がある。 学習アルゴリズム 24

Slide 25

Slide 25 text

y = ax + b データから a, b を帰納的に求める具体的な方法のこと。 • A / B どっち?問題 → ロジスティック回帰 • 売上を予測したい → 線形回帰 • 顧客をセグメント分けしたい → k 平均法 • レコメンドを出したい → 協調フィルタリング • … 学習アルゴリズム 25

Slide 26

Slide 26 text

ユーザ情報が集めやすい(?)恋愛エリア。 さっきの学習アルゴリズム、使えそうですよね? • この人との相性はよさそう?悪そう? • この人の 5 年後の収入、どのくらいになりそう? • 亭主関白ではなく、かつ家庭を大切にするタイプであってほしい • 結局誰とならうまくいきそうなの!?怒 恋愛 × 機械学習 26

Slide 27

Slide 27 text

深層学習

Slide 28

Slide 28 text

ディープラーニング。 多層構造のネットワークを用いた機械学習 のこと。 例) 4 層のネットワーク例 深層学習とは 28

Slide 29

Slide 29 text

青丸に値を入力すると、緑丸に答えが出力される。 例)安い、美味しい → 買うべき 0.9、買わないべき 0.1 深層学習とは 29

Slide 30

Slide 30 text

2 層目以降の各ノード○が、前の層からの入力を基に y = ax + b を使って自分自身の値を計算する。 深層学習とは 30

Slide 31

Slide 31 text

よりもっともらしい答えを返すために 各ノードの a, b を事前に決めるのが、学習。 全ノードの a, b が決まれば、それが 学習済みモデル。 深層学習とは 31

Slide 32

Slide 32 text

機械学習全般、解決したい問題ごとに選択 するのが 学習アルゴリズム。深層学習であっても同じ。 例) • このきゅうりは S? M? L? → 畳み込みニューラルネットワーク (CNN) • 今の発言はポジティブ? → 再帰型ニューラルネットワーク (RNN) • 人が飛び出してきた!車を減速!! → あれこれ組み合わせ • … 深層学習アルゴリズム 32

Slide 33

Slide 33 text

美しい組み合わせの例、AlphaGo。 (論文: http://www.nature.com/nature/journal/v529/n7587/abs/nature16961.html ) • 4 つのディープニューラルネットワークを利用 • それぞれ 初級者 pπ / 中級者 pσ / 上級者 pρ / 情勢判断 vθ といった位置付け • pπ は人間の 800 万の盤面データを元に学習。精度は低いが高速に解を得る。 • pσ は 13 層の CNN。3,000 万盤面を 50 GPU で 3.4 億ステップ、3 週間学習。 プロの指し手を 57.0% の精度で予想できる。 • pρ は 50 GPU で 1 日かけ128 万回自己対戦。既存ソフトに 85% の圧倒的勝率。 • vθ は pσ でランダムに 3,000 万盤面を生成し、pρ で 1 億 6,000 万回ロールアウトした勝率を 教師データに、50 GPU で一週間 5,000 万回確率勾配降下法を実施。 • 実対戦では1,202 CPU + 176 GPUが使われ、pσ で次の手選択、vθ で盤面評価。 • 勝率はいいが理詰めの pρ より、人間の癖を学んだ pσ を使ったか。 • 勝因は pρ の徹底的な強化学習に加え、モンテカルロ木探索と CNN の組合せか。 深層学習アルゴリズム 33

Slide 34

Slide 34 text

実践的なネットワーク、 実際にはどれくらいディープなレイヤーなの? 例) 畳み込みニューラルネットワークの一種、ResNet は 152 層 深層学習アルゴリズム https://research.googleblog.com/2016/08/improving-inception-and-image.html 34

Slide 35

Slide 35 text

お、おう・・ モデルとして決める変数どれだけあるの・・ 
 学習にどれだけ時間かかるの・・ というか、レイヤー定義するだけで 心折れそう。 自前で実装?まあ無理ですよね・・ 深層学習アルゴリズム 35

Slide 36

Slide 36 text

そこで

Slide 37

Slide 37 text

深層学習フレームワーク

Slide 38

Slide 38 text

利用者はアルゴリズムの実装をすることなく 各種パラメタの指定だけで学習・推論ができる。 例)TensorFlow による畳み込みニューラルネットワーク (CNN)   どんな順序でどんな層を経由するか、直感的にわかる 深層学習フレームワーク 38

Slide 39

Slide 39 text

アルゴリズムの 実装はその道のプロにお任せ しつつ・・ 私たちはやりたいことだけできる時代。 例)画像に写っている人が知りたい → TensorFlow で CNN を使えばわりと簡単にできる! 深層学習フレームワーク 39

Slide 40

Slide 40 text

TensorFlow、MXNet、CNTK、Caffe2、Chainer・・ それぞれの特徴を鑑み、選択する。 • 対応アルゴリズム • 動作端末・環境 • 計算速度 / リソース利用効率 • 利用可能な言語 / 手続的・宣言的 • スケーラビリティ / 複数 GPU、並列サーバ対応 • 情報の豊富さ / エコシステム / 商用サポート • … 深層学習フレームワーク 40

Slide 41

Slide 41 text

クイズです

Slide 42

Slide 42 text

「今メールしている相手は本当に 女性なのか、否か・・」 ※ そもそもこの問いが生まれること自体  登壇者の経験や人間性を疑うきっかけになり得ますが  みなさん大人です。あまり深く考えないでください。

Slide 43

Slide 43 text

次のどれを使う・・?

Slide 44

Slide 44 text

ϩδεςΟοΫճؼ ઢܗճؼ ৞ΈࠐΈχϡʔϥϧωοτϫʔΫ Ҩ఻తϓϩάϥϛϯά

Slide 45

Slide 45 text

ブッブー

Slide 46

Slide 46 text

そんな心配をしなくてすむ       を使う、が正解です

Slide 47

Slide 47 text

さて

Slide 48

Slide 48 text

学習の流れを再確認

Slide 49

Slide 49 text

機械学習の流れ 2. データ前処理 3. 学習 4. 推論 1. データ収集 49

Slide 50

Slide 50 text

以降、この流れに沿って詳細をみていきましょう。 機械学習の流れ 2. σʔλલॲཧ 3. ֶश 4. ਪ࿦ 1. σʔλऩू 50

Slide 51

Slide 51 text

学習

Slide 52

Slide 52 text

データの準備

Slide 53

Slide 53 text

1 データの収集 自社製品に沿ったデータ がなによりも有用!! とはいえ、まず機械学習を試してみるだけなら 一般公開されたデータ を活用するのが簡単です。 53

Slide 54

Slide 54 text

一般公開された画像集 研究もコンテストも盛んで、たくさんあります。 • MNIST   http://yann.lecun.com/exdb/mnist/ • CIFAR-10 & CIFAR-100   https://www.cs.toronto.edu/~kriz/cifar.html • ImageNet   http://www.image-net.org/ • … 54

Slide 55

Slide 55 text

AWS Public Datasets https://aws.amazon.com/jp/public-datasets/ 55

Slide 56

Slide 56 text

Public Datasets | Google Cloud Platform https://cloud.google.com/public-datasets/ 56

Slide 57

Slide 57 text

Public data sets for Azure analytics https://docs.microsoft.com/en-us/azure/sql-database/sql-database-public-data-sets 57

Slide 58

Slide 58 text

Datasets « Deep Learning http://deeplearning.net/datasets/ 58

Slide 59

Slide 59 text

http://www.data.go.jp/data/dataset 59 こんなのもある

Slide 60

Slide 60 text

AWS 関連サービス群

Slide 61

Slide 61 text

データ収集に便利なサービス • AWS IoT • Amazon Kinesis Streams • Amazon CloudWatch Logs • Amazon S3 • Amazon DynamoDB • Amazon Cognito + AWS SDK • Amazon API Gateway 61

Slide 62

Slide 62 text

2 データの前処理 Python だけで済むならそれでいいものの、 複数のデータソースからメタデータを取得したり 大規模なファイルからデータを抜き出すなら 専用ソフトウェア や サービス を使わないとつらい。 62

Slide 63

Slide 63 text

AWS 関連サービス群

Slide 64

Slide 64 text

データ前処理に便利なサービス • Amazon Mechanical Turk • Amazon Athena • AWS Lambda / Step Functions • AWS CloudWatch Events • Amazon EMR / Batch / EC2 64

Slide 65

Slide 65 text

Amazon Mechanical Turk 65 アメリカではとても 流行っているとのこと・・ メタデータ付与なら・・・!

Slide 66

Slide 66 text

試行錯誤 / POC

Slide 67

Slide 67 text

試行錯誤に便利なものたち

Slide 68

Slide 68 text

超重要ツール。(これに慣れると世界が広がります!) 主に科学技術計算や機械学習の業界で あれこれ 試行錯誤したり、それを誰かと共有するための 
 ツール。多くの研究者やエンジニアに愛用されている。 git などでバージョン管理するのも容易! Jupyter notebook 68

Slide 69

Slide 69 text

ֶशʹ͸ͱͯ΋͕͔͔࣌ؒΔ΋ͷɻ ߦྻܭࢉ͕ಘҙͳ GPU Λ࢖͑͹͕࣌ؒઅ໿Ͱ͖·͢ʂ ࣗ୐ͷ PC ʹ͍ࢗͬͯ͞Δ GPU ͕࢖͑Δ͔΋ɾɾʁ (NVIDIA) GPU 69

Slide 70

Slide 70 text

(NVIDIA) GPU 70 ݱࡏ AWS Ͱ GPU Λ࢖͏ͱ͖ͷ Tips Λ·ͱΊ·ͨ͠ https://speakerdeck.com/pottava/tesorflow-v1-dot-0-on-ec2

Slide 71

Slide 71 text

ࢼߦࡨޡ͢Δʹ͸͜Ε΋ͱͯ΋ศརͰ͢ɻ ϥΠϒϥϦ͕ͲΜͲΜόʔδϣϯߋ৽ͯ͠΋େৎ෉ʂ Ϋϥ΢υ্ʹֶशɾਪ࿦Λ࣋ͬͯߦ͘ͱ͖ʹ΋༗༻ʂ docker run -it --rm -p 8888:8888 jupyter/tensorflow-notebook Docker 71

Slide 72

Slide 72 text

NVIDIA の Docker イメージ 72 以下のような継承関係のイメージが公開されています。 機械学習の動作要件に適したイメージをベースに。 独自 Docker イメージのビルドもできます。 cuda:8.0-runtime ubuntu:14.04 cuda:8.0-devel cuda:8.0-cudnn5-runtime cuda:8.0-cudnn5-devel caffe (v0.15) digits (v5.0)

Slide 73

Slide 73 text

AWS 関連サービス群

Slide 74

Slide 74 text

試行錯誤フェーズに便利なサービス • Amazon Machine Learning • Amazon EMR / EC2 ‣ p2 / g2 (GPU) instances ‣ Deep Learning AMI • Amazon EBS / S3 / ECR 74

Slide 75

Slide 75 text

二項分類、複数クラス分類、線形回帰のマネージドサー ビス。データの取り込みから、学習・推論が行えます。 サーバの管理が不要なため、スケーラビリティや推論 サービスの可用性は気にせず OK! Amazon Machine Learning 75

Slide 76

Slide 76 text

GPU インスタンス 76 AWS には 2 種類あります(現行世代) g2 系: NVIDIA GRID K520     1,536 CUDA cores / GPU が 2 つで 1 つの K520     g2 で使える GPU は本来グラフィック・ゲーミング用途 p2 系: NVIDIA Tesla K80     倍精度演算最大 2.91 TFLOPS、単精度演算最大 8.74 TFLOPS     2,496 CUDA cores / GPU が 2 つで 1 つの K80     p2 の GPU は汎用コンピューティング用途

Slide 77

Slide 77 text

Amazon DeepLearning AMI 77 全部入り AMI、あります!! TensorFlow 1.0, MXNet, Caffe2, CNTK, Theano, Torch。 CUDA 7.5, cuDNN 5.0, Anaconda も。

Slide 78

Slide 78 text

学習

Slide 79

Slide 79 text

3 学習 もっとも重要、かつものすごく時間がかかるところ。 自社のモデルを作るのはとても大変だが オリジナルのものができれば貴重な知財に。 クラウドの様々なサービスがサポートしてくれます。 79

Slide 80

Slide 80 text

AWS 関連サービス群

Slide 81

Slide 81 text

学習フェーズに便利なサービス • Amazon EMR / Batch / EC2 ‣ p2 / g2 (GPU) instances ‣ Deep Learning AMI ‣ Spot Fleet / AutoScaling Group • Amazon Machine Learning • Amazon EFS / EBS / S3 / ECR • Amazon SQS 81

Slide 82

Slide 82 text

AWS Batch 82 https://www.youtube.com/watch?v=UR8BI2Exkbc 科学技術計算・ハイパフォーマンスコンピューティング 用途で真価を発揮する、大規模なスケール、ジョブの依 存定義が可能なマネージド並列分散バッチ処理基盤。

Slide 83

Slide 83 text

MXNet Λ࢖͍ EC2 Ϋϥελ্Ͱֶश͢Δྫ AWS Batch https://aws.amazon.com/jp/blogs/news/deep-learning-on-aws-batch/ 83

Slide 84

Slide 84 text

Google ファミリーなら.. 84 • Cloud Datalab • Cloud Dataprep • Cloud ML Engine ‣ Managed TensorFlow ‣ GPU support • Cloud TPU alpha private beta

Slide 85

Slide 85 text

推論

Slide 86

Slide 86 text

4 推論 ֶशࡁΈͷϞσϧΛ࢖͍ɺਪ࿦͢Δɻ Ϗδωεͱ௚݁͢Δ͜ͱ͕ଟ͘ɺՔಇ͸ 24 / 365ɻ Մ༻ੑͱϨΠςϯγ͕ॏཁͳͷ͸ҰൠαʔϏεಉ༷ɻ ΋͔ͯ͠͠αʔόϨεͰ΋ɾɾ͍͚Δɾɾɾʁ 86

Slide 87

Slide 87 text

AWS 関連サービス群

Slide 88

Slide 88 text

推論フェーズに便利なサービス • Amazon ECS / EC2 ‣ p2 / g2 (GPU) instances ‣ Deep Learning AMI ‣ Spot Fleet / AutoScaling Group • AWS Lambda / Amazon API Gateway • AWS ElasticBeanstalk • Amazon EFS / EBS / S3 / ECR 88

Slide 89

Slide 89 text

フルマネージドな Docker コンテナクラスタ環境。 GPU ベース の推論アプリケーションだって動きます! Amazon ECS 89 https://speakerdeck.com/ayemos/build-image-classification-service-with-amazon-ecs-and-gpu-instances クックパッド株式会社 染谷 悠一郎さん

Slide 90

Slide 90 text

AWS Lambda 90 サーバレス で MXNet による推論をする実装例 http://aws.typepad.com/sajp/2017/01/seamlessly- scale-predictions-with-aws-lambda-and-mxnet.html

Slide 91

Slide 91 text

機械学習を AWS でやるなら、知って得する機能 No. 1! 仮想サーバを安く使える起動方法。 AWS のデータセンタの「余剰分」を この金額なら使います!と「入札」して起動。 Spot Fleet / Spot インスタンス 91

Slide 92

Slide 92 text

プリエンプティブ VM で起動しましょう! 終了(プリエンプト)される可能性があり 24 時間後には必ず終了するインスタンス。 10 分以上 1 分単位の使用料ベースの固定料金。 管理対象インスタンスグループでも利用できます GCP なら.. 92

Slide 93

Slide 93 text

ただし、GPU を使いたい場合は現在 GCP に “カスタムアクセラレータによる制約” があるため プリエンプティブな起動はまだできません・・ GCP なら.. 93

Slide 94

Slide 94 text

クラウドのサービスをあれこれ書いてきましたが。 
 実際、ちょっと試すだけなら ローカルに環境を整えれば 十分です・・ ローカルでも簡単に起動する Docker は便利〜 というかローカルでも.. 94

Slide 95

Slide 95 text

Let’s try, anyway!

Slide 96

Slide 96 text

帰ったら自分で一連の流れを経験!!実践大事。 「数字画像判定 with TensorFlow on AWS」 今日の宿題 http://qiita.com/pottava/items/2fb2572f7099d432ebd9 96

Slide 97

Slide 97 text

ありがとうございました 参考文献: • AWS Batch – 簡単に使えて効率的なバッチコンピューティング機能 – AWS https://aws.amazon.com/jp/batch/ • AWS Black Belt Online Seminar「AWS Batch」の資料およびQA公開 http://aws.typepad.com/sajp/2017/02/aws-black-belt-online-seminar- aws-batch.html#QCPzBdn.twitter_tweet_count_m • re:Invent 2016: AWS Big Data & Machine Learning Sessions。 https://aws.amazon.com/blogs/big-data/reinvent-2016-aws-big-data- machine-learning-sessions/ Spark your ideas with us