20161027 hadoop summit generating recommendations at amazon scale with apache spark and amazon...

49
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Solutions Architect, Amazon Web Services Japan Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE Ryosuke Iwanaga October 2016, Hadoop Summit Tokyo

Upload: amazon-web-services-japan

Post on 21-Jan-2017

1.096 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

Solutions Architect, Amazon Web Services Japan

Generating Recommendations

at Amazon Scale with

Apache Spark and Amazon DSSTNE

Ryosuke Iwanaga

October 2016, Hadoop Summit Tokyo

Page 2: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

自己紹介

Ryosuke Iwanaga (岩永 亮介)• Twitter/GitHub @riywo

Amazon Web Services Japan

Solutions Architect• Web, Gaming

• Big Data / Machine Learning / DevOps / Container

Before Amazon• Software Engineer / Ops Engineer / DBA / etc.

Page 3: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

Agenda

• 機械学習とAmazon DSSTNE

• AWSを利用したAmazonのレコメンデーション

Page 4: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

機械学習とAmazon DSSTNE

Page 5: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

サービス、分析、リアルタイム、そして機械学習

• サービス: ビジネスのコア (E*)• ビジネス価値を高めるには、これだけでは不十分

• 分析: 過去に何があったか?• Hadoopが最初に注目されたところ

• リアルタイム: 今何が起こっているか?• 最近注目されているところ (Spark Streaming, Flink, etc.)

• 機械学習: これから何が起こるか?• これから注目を浴びていくところ

Page 6: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

機械学習は難しい?専門性が必要?

Page 7: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

子どもたちが算数の授業で学ぶこと

Page 8: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

算数の問題を解く時

問題を解くステップの本質

機械学習の問題を解く時

1. 正しい問いを与える

2. 現実世界を数式に

3. 計算

4. 数式を現実世界に

1. 正しい問いを与える

2. 現実世界を数式に

3. 計算

4. 数式を現実世界に

→データ

→アプリ

Page 9: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

学習タスク 推論タスク

BIGDATA

Labels

学習済みモデル

Apple:0.9

Orange:0.1

Strawberry: 0.2

Banana:0.1

学習推論

エンジン

結果

教師データ

機械学習のアーキテクチャ

ここだけ提供しているSaaSも多いデバイス側で動作させる場合も多い大量の計算リソースが必要

「今日の天気は?」

「晴れです」

推論エンジン学習

初期パラメータニューラルネットワーク定義

結果 配布

配布

Page 10: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

Amazonの製品レコメンデーション

• 製品A, B, C …, Zを買った人が、次に購入しそうな製品はなんでしょう?

推論の入出力

• 入力: 各お客様の購入履歴 (過去のデータ)

• 出力: 各お客様の、各製品に対する購入確率 (未来の予測)

課題

• 製品数・お客様数が膨大なため、学習・推論に時間がかかる

Page 11: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

レコメンデーションのための機械学習

多数のアルゴリズム

行列因子分解

ロジスティック回帰

ナイーブベイズ

etc.

=> ニューラルネットワーク

Page 12: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

パーセプトロン

複数の入力値の積み重ねから、出力を計算

ニューラルネットワーク

パーセプトロンを接続

多くの場合、複数層で構成

深層学習とは、深い層を持ったネットワークの学習効率化

ニューラルネットワークとは?

y

x0

x1

x2

Page 13: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

ニューラルネットワークでレコメンデーション

出力層 (1万-1千万)

入力層 (1万-1千万)

隠れ層 (100-1,000)

製品カタログに対して、お客様の購入履歴は極端に小さい→ほとんどの重みがゼロ(疎なネットワーク)

愚直にニューラルネットワークを計算すると、ほとんどの計算は0×0

Page 14: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

Amazon DSSTNE:Deep Sparse Scalable Tensor Network Engine

AmazonがOSSとしてリリースしたニューラルネットワークのフレームワーク巨大疎データと全結合レイヤに対して最適化されているモデル並列の複数GPUサポートが、とても効率的100%の決定論的な実行SM 3.x, 5.x, 6.xを完全にサポート (Kepler以上のGPU)標準で分散学習をサポート (約20行のMPI呼び出し)

よくあるユースケース 製品レコメンデーション (製品数は膨大だが、各人の購入履歴は小さい) 自然言語学習 (語彙数は膨大だが、各文脈で使われるのはごく一部)

https://github.com/amznlabs/amazon-dsstne

Page 15: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

AWSを利用したAmazonのレコメンデーション

Page 16: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

レコメンデーションシステムの要件

• 高速な繰り返しが、生産性のために最も重要

• 設計=>学習=>予測=>評価=>設計=>学習=>…

• 多種多様なワークロードをなるべく少ないツールで

• データサイエンティストがその仕事に集中できるように

• レコメンデーション生成が24時間以内に終わること

• 分散システムを使って、大規模データを扱う

Page 17: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

GPUは超並列学習・推論に最適だが試行錯誤が重要

• アルゴリズム、パラメータ、フレームワークを変えて繰り返し

• → 入出力を変えずに、学習器のみを入替えたい

機械学習では、その前後のデータ処理も重要

• データ整形、異常値排除等CPUが得意な処理

• →大量のデータを、分散処理したい

• →1つのインタフェースで両方を扱いたい

GPUとCPUを、統一された使い勝手で効率よく

Page 18: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

アーキテクチャ

Amazon EMR

Amazon S3

Amazon ECS

Page 19: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE
Page 20: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

コンテナとは何か?

OS上の仮想化

プロセスの隔離

イメージ

自動化Server

Guest OS

Bins/Libs Bins/Libs

App2App1

Page 21: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

深層学習とDocker(Container)

• 深層学習のフレームワークはたくさんある

• DSSTNE, Caffe, Theano, TensorFlow, MXNet, etc.

• 深層学習では調整すべきパラメータが膨大

• 同じ入力で様々に比較するには?

• 各フレームワークをコンテナ化

• コンテナイメージと設定を入れ替えるだけでOK

• もうマシンのセットアップを心配しなくて良い

• 例: CUDA Driverはホスト側で共有するのでセットアップ済

Page 22: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

参考: NVIDIA Dockerhttps://github.com/NVIDIA/nvidia-docker

Page 23: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE
Page 24: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

Sparkを使って対話的な速度を実現

join

filter

groupBy

Stage 3

Stage 1

Stage 2

A: B:

C: D: E:

F:

= cached partition= RDD

map

• 大規模並列

• 実行エンジンとしてMap ReduceではなくDAGを利用

• DataFrameのメモリ内にデータほ保持することでI/Oを最小化

• パーティションを意識するので、ネットワーク負荷になるShuffleを避けられる

Page 25: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

Apache Zeppelinのノートブックでクエリを構成

Page 26: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

Amazon EMR

Page 27: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

Why EMR?

自動化 分離 弾力性

連携 低コスト最新

Page 28: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

Why EMR? 自動化

EC2起動 Cluster設定 Hadoop設定

アプリケーション

インストール

ジョブ実行モニタリングと

失敗のハンドリング

Page 29: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

Why EMR? 分離アーキテクチャ

コンピュートと

ストレージを分離

データロスなく

リサイズしたり止めたり

Amazon S3上の同一データを

複数クラスタから利用

技術の進歩に合わせて

簡単にインフラも進歩できる

繰り返しでI/O重視な

ワークロードにはHDFS

スポットやリザーブドインスタンスで

コストを抑える

Page 30: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

Why EMR? ストレージとコンピュートの分離

Amazon Kinesis(Streams, Firehose)

Hadoopジョブ

永続化クラスタ – 対話型クエリ(Spark-SQL | Presto | Impala)

変換クラスタ - バッチジョブ(夜間バッチで数時間) – ノードを増減

ETLジョブ

Hive外部Metastorei.e Amazon RDS

ワークロード特化型クラスタ(異なるサイズ、異なるバージョン)

Amazon S3をストレージ

create external table t_name(..)...location s3://bucketname/path-to-file/

Page 31: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE
Page 32: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE
Page 33: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

FINRA事例: GreenplumからHive on EMRへ

Page 34: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

EMR 5.0 - Applications

Page 35: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

Amazon ECS

Page 36: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

Amazon EC2 Container Service

コンテナ管理をあらゆるスケールで

柔軟なコンテナの配置 AWSの基盤との連携

Page 37: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

Amazon ECS コンポーネント

• Task

• Instance上で実行されている実際のContainer

• Task Definition

• Taskで使うContainer、及び周辺設定の定義

• Cluster

• Taskが実行されるEC2 Instance群

• Manager

• ClusterのリソースとTaskの状態を管理

• Scheduler

• Clusterの状態をみて、Taskを配置

• Agent

• EC2 InstanceとManagerの連携を司る

Page 38: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

Cluster, Scheduler, Task Scheduler

ManagerCluster

Task Definition

Task

Agent

Page 39: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

高性能GPUインスタンスタイプ

• NVIDIA K80を最大16GPU搭載

• 最大64 vCPUのIntel Broadwell プロセッサと、最大 732 GiB RAM

• Elastic Network Adaptor (ENA)による20 Gbps ネットワーク

P2 インスタンス

p2.xlarge: $ 0.90 per hour (us-east-1)〜利用可能リザーブドインスタンスやスポットインスタンスももちろん可能

https://aws.amazon.com/jp/blogs/news/new-p2-instance-type-for-amazon-ec2-up-to-16-gpus/

Page 40: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

学習はモデル並列、推論はデータ並列

Page 41: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE
Page 42: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE
Page 43: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE
Page 44: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE
Page 45: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

AWSを利用したことによる利点

スケーラビリティ

フルマネージドサービス

GPUインスタンス

Page 46: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

まとめ

Page 47: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

Amazonのレコメンデーション on AWS

• SparkとZeppelinをデータサイエンティストの統一インタフェースに

• DSSTNEで巨大な疎なニューラルネットを実行

• CPUクラスタをEMR、GPUクラスタをECSで管理

• 今すぐあなたも試せます!

• GPU高速化のワークロードをAmazon ECS上で管理する• 上記のアーキテクチャを簡単に試すことができるAWS CloudFormationテンプレート付きです

Page 48: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

参考情報

• Apache SparkとAmazon DSSTNEを使った、Amazon規模のレコメンデーション生成

• 今回も紹介しているアーキテクチャの解説ブログ

• Amazon S3を中心とするデータ分析のベストプラクティス

• S3をデータレイクとして構成する際のアーキテクチャ

• AWSでBig Data活用

• AWSの各種サービスを駆使した事例

Page 49: 20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE

Thank you!