31
#jawsdays #jd2017_a API ををををををををDeep Learning on AWS をををををををををををををををby JAWS-UG AI をを

APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

Embed Size (px)

Citation preview

Page 1: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

API を叩くだけでない、 Deep Learning on AWS で自分だけの学習モデルを作ろう!

by JAWS-UG AI 支部

Page 2: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

自己紹介• 長尾 太介 (Daisuke Nagao)

• 職歴– 富士ゼロックス ( 粉体シミュレータの開発、スパコン環境の導入・管理 )– NVIDIA Japan: Cloud Service Provider 向けの BD– Rescale Japan: 7 月に SaaS 型の CloudHPC を提供する Rescale へソリューションアーキテクトとして Join

• コミュニティー– JAWS-UG AI ( コアメンバ )– JAWS-UG HPC 専門支部 ( コアメンバ )

Page 3: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

JAWS-UG AI 支部• Deep Learning を中心とした AI 関連技術を学び AWS 上で活用してくためのユーザグループです• 「 AWS は知っているけど、Deep Learning って何?」という方を対象とします• 「これから Deep Learning だけでなく AWS も同時に学びたい」という方も歓迎いたします• 運営側は Deep Learning に関して初心者なので、みなさん一緒に楽しく学んで行きましょう

Page 4: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

本日の流れ• 前半 ( 長尾 )

– Deep Learning の クラウドアーキテクチャー• 後半 ( 中丸 )

– MXnet の デモ• 本日は、 Deep Learning のアーキテクチャー、動かし方にフォーカスします• Deep Learning の理論のお話は、丸山先生のマルレク資料等を参照してください ( 本日は言及しない )

Page 5: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

Deep Learning とは• 脳内の神経回路網とそのプロセスを真似たもの・・・

イス

Page 6: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

Google 翻訳も賢くなった

Page 7: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

AWS も Deep Learning なサービスを発表• Amazon Rekognition

– 画像の状況、人物の顔、物体 を検出• Amazon Polly

– テキスト to スピーチ機能、なめらかに喋ってくれる• Amazon Lex

– テキストメッセージに応答するチャットボット開発を容易にするサービス

Page 8: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

Page 9: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

• なぬ〜 39 歳のオッサンを 100% 女と判定• 欧米人で最適化されているのかしら ? ( 勝手

に予測 )既存のサービス使えれば Good だが、、、、必ずしも所望の結果が得られるとは限らない

Page 10: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

やりたいことは、 API 叩くだけで満足できますか?• アリ物の API を叩くだけでは、みんなと同じサー

ビスしかできない。簡単に真似される懸念がある• その API は “やりたいこと” ”課題”を解決してい

ますか?

Page 11: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

自分で”脳みそ” を作っちゃおう• 脳みそから作って、あなた独自のサービスを展開

– 脳みそ作る工程 を Learning ( 学習 ) と言う– フレームワーク ( アプリケーション ) を使って 学習を行う– 代表的なフレームワークはどれも OSS

Deep Learning のフレームワークは無料HW さえ揃えれば誰でもできる

Caffe

Page 12: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

どんなアーキテクチャが必要?

Learning( 学習 )

Inference( 推論 )

BIGDATA Labels

訓練済みのモデル apple OrangeBanana

API

数日間マシンをぶん回し学習を行う

Neural Network

HPC ( スパコン ) のアーキテクチャー サービス側のアーキテクチャー

Learning に適した GPU

入力に対してすぐに応答できるようなシステム

Submit Job タイプ ( バッチ処理 )Daemon タイプ

Page 13: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

HPC ( スパコン ) のアーキテクチャーとは

13

FILE_SERVERHPC 用ジョブスケジューラ(Submit Node) Calc-nodes

マルチノード、マルチ GPU(1 台のマシンに複数の GPU) を一度に使い、アプリケーションを高速化するマルチノード環境 : MPI がよく使われるGPU 環境 : CUDA

NFSNFS

Page 14: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

AWS における構成例P2

P2

P2

P2

NFS

EBS

Submit Node(e.g. c4.large)

状況によってインスタンスタイプを選択。場合によっては submit node をなくしても良い (EBS は計算ノード側へつける )

GPU を持つインスタンスを選択NFS マウントされた共有領域を、全ノードから見えると便利

Calc-Nodes

Page 15: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

P2 インスタンス

https://www.slideshare.net/understeer/jawsug-ai-aws-ai

Page 16: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

Cloud HPC の運用例

16

Time

Load

ave

rage

インスタ

ンス起動

HPC

クラスタ

構築

学習開始

クラスタ

の削除

ファイル

ステージ

ング

ファイル

ステージ

ング

Subm

it Jo

b

Page 17: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

HPC 環境の運用を楽にするサービスたち

DL 用 Cluster を楽に構築cfncluster AWS Batch

AWS Native Services AWS 上で動く SaaS

https://aws.amazon.com/jp/blogs/compute/distributed-deep-learning-made-easy/

例えば

Page 18: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

忘れちゃダメなプリ処理 ( 学習データセットの用意 )

• 学習データセットの作成– BIGDATA から学習用のデータを抽出

• 既存のサービスをうまく利用、hadoop, spark なども使えるかも– ラベルづけ (この写真は ”イス” です )

• Amazon Mechanical Turk 、要は人海戦術・・・• BIGDATA がなければ、オープンなデータセットの利用も検討

– AWS Public Dataset

• 仕掛け作りでデータを作る– お肌の年齢コンテスト、「お肌の写真とプロフィールを送ってください。優勝者には・・・・」

Page 19: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

Page 20: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

Page 21: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

忘れちゃダメなデプロイ環境• 学習済みモデルを、うまくサービス側へ渡す仕組み• サービス側に沿った仕組みを構築

Page 22: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

Neural NetworkStructure

Learning: HPC Architecture Inference: Web Architecture

BIGDATALabels

Deploy a trained Network

apple Orange strawberryBanana

Require real time processRequire Many Core, BIGDATA analysis

API

ついに HPC でも Docker が! How deploy your apps?Docker リポジトリーは?

Learning Inference

AWS Elastic Beanstalk

教師データ

cfncluster

AmazonDynamoDB

bucket

Meta Data

Amazon API Gateway

Submit Job DaemonHPC on AWS 用ミドルウェア• HPC Cluster の動的作成・削除・管理• スケジューリング機能

アーキたたき台

P2F1 もありLambda もあり

AWS Batch

or

前処理

Page 23: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

ここまでのメッセージ• Deep Learnig を使った AI は、学習と推論どちらも必要• 学習データの収集 -> 学習 -> Deploy -> サービス と全体を踏まえて、全体をデザインしよう• AWS は、サービスをつなぎ合わせることでトータルでソリューションできる

Page 24: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

自立 / 分散 /協調型も視野に入れて

http://www.meti.go.jp/committee/sankoushin/shojo/johokeizai/bunsan_senryaku_wg/pdf/001_03_00.pdf

エッジ側にどこまでの処理を任せるか、クラウドへ上げるデータは何かをよく考える

Page 25: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

事例 : GTC JAPAN2016 で発表したプロト• 学習

– Rescaleを利用しCAFFEを動かす– ユーザには見えないが g2 インスタンスが後ろで動く

• 推論– NVIDIA Jetson (ARM + GPU の組み込みボード ) を利用– USBでカメラを取り付け物体認識を行う

• Deploy 方法– S3, SQS を利用 . JetsonがSQSをポーリング

AmazonS3

Amazon

SQS

Camera

Page 26: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

GTC Japan 2016: システム計画研究所 /ISP さま事例

Amazon EC2

AmazonS3

AmazonSQS

クライアントアプリケーション( Jetson TX1)

API

ダウンロード

学習デプロイ

更新情報caffemodel

ポーリングダウンロード(判別機更新)wget

Rescale API を使った他のシステムとの連携Blog: http://wazalabo.com/rescale-gtcjapan-demo-report.html

Page 27: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

クラウドだからプロトタイプも楽に作れる• 2, 3 人、数日で作成

– Rescale, AWS を利用することで数日でシステムが組めた– API でシステムを操作できることがとても重要

• オンプレじゃできねー

Page 28: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

スタートでハマらないために• 大前提として

– ゼロベースで学習用のアプリケーションを書こうとしない。 GPU の使いこなしで死ぬ。 Deep Learning の フレームワークを適切に使う• 初心者は各種セットアップ / インストールを避けた方が無難。挫折する人も多数

– CUDA のインストール– フレームワークのインストール– CUDA とフレームワークのバージョン問題など– ipython との連携

Page 29: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

Deep Learning 環境がインストールされた環境を使う• AMI を使う

– Deep Learning 環境の構築不要– マシンの管理は必要 (素の AWS 料金で OK)

• SaaS タイプのサービスを使う– Deep Learning 環境の構築不要– マシンの管理不要 ( その分高い )

Page 30: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

Deep Learning 環境がインストールされた環境を使う• AMI を使う

– Deep Learning 環境の構築不要– マシンの管理は必要 (素の AWS 料金で OK)

• SaaS タイプのサービスを使う– Deep Learning 環境の構築不要– マシンの管理不要 ( その分高い )

Page 31: APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部

#jawsdays #jd2017_a

DEMO: SUPINF 中丸さんへ