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

Preview:

Citation preview

#jawsdays #jd2017_a

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 専門支部 ( コアメンバ )

#jawsdays #jd2017_a

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

#jawsdays #jd2017_a

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

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

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

#jawsdays #jd2017_a

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

イス

#jawsdays #jd2017_a

Google 翻訳も賢くなった

#jawsdays #jd2017_a

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

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

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

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

#jawsdays #jd2017_a

#jawsdays #jd2017_a

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

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

#jawsdays #jd2017_a

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

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

ますか?

#jawsdays #jd2017_a

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

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

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

Caffe

#jawsdays #jd2017_a

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

Learning( 学習 )

Inference( 推論 )

BIGDATA Labels

訓練済みのモデル apple OrangeBanana

API

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

Neural Network

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

Learning に適した GPU

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

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

#jawsdays #jd2017_a

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

13

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

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

NFSNFS

#jawsdays #jd2017_a

AWS における構成例P2

P2

P2

P2

NFS

EBS

Submit Node(e.g. c4.large)

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

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

Calc-Nodes

#jawsdays #jd2017_a

P2 インスタンス

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

#jawsdays #jd2017_a

Cloud HPC の運用例

16

Time

Load

ave

rage

インスタ

ンス起動

HPC

クラスタ

構築

学習開始

クラスタ

の削除

ファイル

ステージ

ング

ファイル

ステージ

ング

Subm

it Jo

b

#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/

例えば

#jawsdays #jd2017_a

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

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

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

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

– AWS Public Dataset

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

#jawsdays #jd2017_a

#jawsdays #jd2017_a

#jawsdays #jd2017_a

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

#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

前処理

#jawsdays #jd2017_a

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

#jawsdays #jd2017_a

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

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

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

#jawsdays #jd2017_a

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

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

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

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

AmazonS3

Amazon

SQS

Camera

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

Amazon EC2

AmazonS3

AmazonSQS

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

API

ダウンロード

学習デプロイ

更新情報caffemodel

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

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

#jawsdays #jd2017_a

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

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

• オンプレじゃできねー

#jawsdays #jd2017_a

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

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

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

#jawsdays #jd2017_a

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

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

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

#jawsdays #jd2017_a

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

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

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

#jawsdays #jd2017_a

DEMO: SUPINF 中丸さんへ

Recommended