深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers...

37
Kubernetes ではじめる 深層学習 推論環境構築ハンズオン @_dr_asa asashiho

Transcript of 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers...

Page 1: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

Kubernetes ではじめる

深層学習♥ 推論環境構築ハンズオン

@_dr_asa

asashiho

Page 2: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

阿佐 志保 Shiho ASA

日本マイクロソフト株式会社

パートナー事業本部

パートナー技術統括本部所属

国内パートナー企業の皆様に

Azure をはじめとするMicrosoft の製品/サービスを使って

ビジネス推進するためのお手伝いをしています

2

@_dr_asa

asashiho

[email protected]

自己紹介

Page 3: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

IDC Japan社 2018年 国内クラウドインフラストラクチャに関するユーザー動向調査結果https://www.idcjapan.co.jp/Press/Current/20180614Apr.html

Dockerの導入状況に関するユーザー調査結果(調査年別)

41%

Docker & Kubernetes のモーメンタム

Page 4: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

Performance

コンピューティングリソースの有効活用

Machine learning

Portability

アプリケーションの

可搬性

IoT

Agility

サービスインまでの時間を短縮

デプロイ頻度

Microservices

Cost saving

コード変更なしで移行

コンテナによる

Lift and shift

コンテナの利用シーンは幅広い

Page 5: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

Lift and shift to

containers

Microservices Machine learning IoT

既存コードを変更することなくコンテナ化

• コンテナ技術を使用したアプリケーションのモダナイズ

• コンテナオーケストレーションによる障害リスク低減

• 継続的インテグレーション継続的デプロイメント

Azure

Container

Registry

Existing

application

Kubernetes cluster

Cloud

Database

Modernized

application

Modernized

application

Modernized

application

CI/CD

Page 6: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

Lift and shift to

containers

Microservices Machine learning IoT

マイクロサービス型のアプリケーション実行基盤

• マイクロサービスによる独立したデプロイ

• サービスごとのスケーラビリティとリソース使用率の向上

• チームでの並行分離開発

Monolithic

APP APP APP

Microservices

Large, all-inclusive app Small, independent services

Page 7: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

Lift and shift to

containers

Microservices Machine learning IoT

ディープラーニングでの活用

• アプリケーションデプロイの容易さと高い可用性

• 低レイテンシのデータ処理

• テスト・学習・推論の統合管理

https://github.com/Azure/kubeflow-labsCompute

Training

data

Algorithm

GPU-enabled VMs

AKS trained

model

AI model in

production

Developer

<¥>

Data

Scientist

Serve the

model

Page 8: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

Lift and shift to containers

Microservices Machine learning IoT

IoTのエッジデバイスへのデプロイ

• コードの可搬性の高さ

• 柔軟な拡張性と管理

• アプリケーションデプロイの容易さと高い可用性

AKS

Database

for MySQLAzure

Cosmos DBSQL

Database

IoT Hub

IoT Edge

devices

IoT Edge

Connector

Page 9: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

Kubernetes 101

9

Page 10: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

NodeとPodPod・ReplicaSet・Deploymentの基本

apiVersion: apps/v1 kind: Deploymentmetadata:

name: nginx-deployment

spec:selector:

matchLabels:app: nginx

replicas: 2

template:metadata:

labels:app: nginx

spec:containers:- name: nginx

image: nginx:1.7.9ports:- containerPort: 80

Deployment• ReplicaSetの世代管理を行う設計図の役割

• ローリングアップデート、ロールバックが可能

ReplicaSet• Podのレプリカのグループ

• 指定の数だけPodを起動して、その数を維持

Pod• Kubernetes上のデプロイ最小単位

• 1つ以上のコンテナが含まれる

• Pod内のコンテナは同じノードで動作

• PodごとにIPアドレスが割り振られる

• 同一Pod内のコンテナ群が共有するリソース

• 同一ホスト・IPアドレス・Volumeストレージ

• コンテナイメージのバージョン、ポート

Page 11: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

Pod

イメージポート名前環境変数

etc

Podテンプレート

Front

セレクタ=

レプリカ数= 10

Front Strategy =ローリングアップデート

ReplicaSet Deployment

Pod・ReplicaSet・Deployment の関係

Page 12: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

PodC

ノードの障害やアプリのクラッシュ等でPod を自己復旧するしくみ

DeploymentはReplicaSet を管理し、ReplicaSet はPodを指定数(Replica数)に調整・管理を行うPod がレプリカ数より足りない場合はPod を追加し、多い場合はPod を削除する

Deployment

ReplicaSetReplica=3

Deployment

ReplicaSetReplica=3

Kubernetes のセルフヒーリング

PodBPodA PodC PodBPodA PodD

Page 13: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

Pod Pod Pod Pod Pod Pod Pod Pod Pod

Kubernetes のRolling Update

Deployment

ReplicaSet

Deployment

ReplicaSet v1 ReplicaSet v2 ReplicaSet v2

Deployment

Page 14: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

1. 管理者はMasterのAPI Serverにアクセスしてクラスタを操作

2. Master がWorker Nodeを管理

3. クラスタの構成情報はetcdに保存API Serverを介してアクセス

4. MasterのschedulerがコンテナをどのWorker Nodeに配置するかを決定

5. MasterのController-managerがKubernetesリソースを管理

6. Worker Nodeのkubeletがコンテナアプリを動作

7. Worker Nodeのkube-proxyが外部からの接続を受付

Kubernetes の基本構成

API server

replication, namespace,

serviceaccounts, etc.

controller-

manager scheduler

etcd

Master

Worker Node

kubelet kube-proxy

Docker

Prod Prod

Containers Containers

Worker Node

kubelet kube-proxy

Docker

Prod Prod

Containers Containers

Internet

Kubernetes の内部構造

User

apiVersion: v1

kind: Service

metadata:

labels:

クラスターのあるべき姿(宣言的設定)

apiVersion: v1

kind: Service

metadata:

labels:

コマンド

Page 15: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

• Kubernetesのマネージドサービス

• マスターの隠蔽/サービス化

• Kubernetesクラスタの構築が容易

• クラスタのバージョンアップやパッチを自動化

• Kubernetesクラスタのスケール

• クラスタの監視高い可用性・信頼性

• 課金は利用するWorker Nodeの仮想マシンのみでマスターのリソースは非課金

Kubernetes の基本構成

API server

replication, namespace,

serviceaccounts, etc.

controller-

manager scheduler

Worker Node ( VM )

kubelet kube-proxy

Docker

Prod Prod

Containers Containers

Worker Node ( VM )

kubelet kube-proxy

Docker

Prod Prod

Containers Containers

Internet

ご参考:Azure Kubernetes Service とは

User

Azure managed control plane

Kubernetes API endpoint

apiVersion: v1

kind: Service

metadata:

labels:

Page 16: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

深層学習での活用

16

Page 17: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

推論デプロイメント

データサイエンティストやアプリケーション開発者がばらばらで開発しがち

モデルのバージョン管理や推論環境へのデプロイメントはどうする?

モデル構築・学習

深層学習のタスク

データの準備

Page 18: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

Custom Vision を使ったモデル作成

https://www.customvision.ai/

独自のラベル付き画像をアップロード未分類の画像にタグ付けする機能あり

アップロードされた教師データをもとに学習

推論結果をREST APIで公開

独自の業務データなどのオリジナル画像で画像認識アプリを作成するSaaS サービス

Azure の Custom Vision とは

Page 19: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

• CoreMLやTensorFlow のpb ファイルモバイル端末上での推論が可能

• ディープラーニングモデルのオープン標準フォーマット「ONNX」をサポート

• Dockerfile(Web API)Linux コンテナ/Windows コンテナを選択可Python / Flask によるWeb API

Custom Vision でエクスポートできる学習モデル

推論用のAPI の公開だけでなく、任意の形式で学習済みモデルのエクスポートが可能

Cool

Page 20: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

ハンズオン

Page 21: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

Azure JapanEast

Azure

Container

Registry

User

(You)

Azure Blob

Storage

Azure

Kubernetes

Service

Azure

Custom

Vision

{ curry: 100% }

request

response

Kubernetes で画像認識の推論アプリを動かしてみよう

ハンズオンで作成するもの

Page 22: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

upload &

training

Kubernetes

Admin

(You)

Data

scientist

(You)

教師データ

学習モデル

App

developer

(You)

Azure

Container

Registry

Azure

Custom

Vision

画像認識アプリ

ML model

in container

WebFront App

in container

Webフロントアプリ

build container images

export

Azure Blob

Storage

Azure

Kubernetes

Service

Kubernetes Cluster

Container Registry

Image Recognition

Image pull

create storage

create cluster

deploy update scale

Persistent data

User

(You)Upload

image

create

develop

10

① Kubernetes クラスタの作成

② コンテナレジストリの作成

③ 画像の学習&モデル作成

④ Web アプリの開発

⑤ コンテナイメージのビルド

⑥ Web アプリが使用するストレージの作成

⑦ クラスタへのデプロイ

⑧ 画像認識アプリの動作確認

⑨ ローリングアップデート

⑩ スケールアップ

Kubernetes で画像認識の推論アプリを動かしてみよう

Page 23: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

• 既にアカウントをお持ちの場合は不要です

• ウェブブラウザで下記URLにアクセスhttps://login.live.com

• [作成]をクリック

Microsoft アカウントの作成 1/3

Page 24: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

• 現在受信出来るメールアドレスを入力後、[次へ]をクリック

• パスワードを入力後、[次へ]をクリック

• 氏名を入力後、[次へ]をクリック

Microsoft アカウントの作成 2/3

エラーが出たときは、ブラウザのシークレットウインドウを使ってください

Page 25: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

• 地域・生年月日を入力後、[次へ]をクリック

• メールで受信した4桁のコードを入力後、[次へ]をクリック

• Captchaの文字を入力後、[次へ]をクリック

Microsoft アカウントの作成 3/3

Page 26: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

• ウェブブラウザで下記URLにアクセスhttps://www.microsoftazurepass.com

• [Start >]ボタンをクリックします

Azure Pass の有効化 1/6

エラーが出たときは、ブラウザのシークレットウインドウを使ってください

Page 27: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

• Microsoftアカウントでログインします

Azure Pass の有効化 2/6

Page 28: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

• Azure Passを紐付けるMicrosoftアカウントが表示されるので、[Confirm Microsoft Account]をクリック

• [Enter Promo code:]に”W”で始まる18桁のコードを入力後[Claim Promo Code]をクリック

Azure Pass の有効化 3/6

Page 29: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

• 数分以内に画面が切り替わるので、[Activate >]をクリック

Azure Pass の有効化 4/6

Page 30: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

• 必要事項を入力後、[Next]をクリック

• Agreementのチェックボックスにチェックを入れて[Sign up]をクリック

Azure Pass の有効化 5/6

Page 31: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

• ポータルが表示されれば準備完了!

Azure Pass の有効化 6/6

Page 32: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

https://github.com/asashiho/ContainerDays1812

ハンズオン資料

Page 33: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

{ご参考}Azureをより深く学ぶために

33

Page 34: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

https://docs.microsoft.com/ja-jp/learn/

Microsoft Learn

• オンライン学習サイト(日本語も充実)• ハンズオン環境としてMicrosoftの“本物のクラウドサービス”を利用できる• コンテナのコースも多数ある• クレジットカード💳不要

Page 35: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

https://aka.ms/mspnp

Azure アーキテクチャセンター

• Azureのリファレンスアーキテクチャ• ベストプラクティス• アンチパターン• 設計レビューのチェックリスト

などをご紹介

Page 36: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

宣伝!クリスマスパーティ🎄します

12/18(火) 13:00 ~ マイクロソフト 品川オフィスでコンテナの技術勉強会をしますLTも懇親会もありますので、みなさま盛り上がりましょう~🎄

タイトル 発表者

13:00 13:45 2019年に向けたService Meshの現状課題の整理と考察 Microsoft 川崎 庸市氏

13:45 14:30(仮)機械学習エンジニアのためのKubernetes ~kubeflow Deep Dive~

Microsoft 佐藤 直生氏

14:30 15:00 調整中 ゼットラボ 須田一輝氏

15:00 15:15 休憩

15:15 15:45オイシックスが18年間育てた既存システムをKubernetesで分解していく取り組み

オイシックス・ラ・大地長尾 優毅氏

15:45 16:30 ダイ・ハード in the Kubernetes world Microsoft 真壁 徹氏

16:30 17:00 調整中 fringe81 森本真一氏

17:00 17:30 懇親パーティスタート by flexy flexy

17:30 18:00 LTタイム(5名×5分) LT(5名)

18:00 19:00 懇親パーティ2 by flexy flexy

※タイムスケジュールは当日の進行状況により多少前後する可能性があります。ご了承下さい。

申し込みはこちら

https://goo.gl/gDvmsL

Page 37: 深層学習♥推論環境構築ハンズオン · 2019-02-06 · Lift and shift to containers Microservices Machine learning IoT ディープラーニングでの活用 • アプリケーションデプロイの

◼ 本書に記載した情報は、本書各項目に関する発行日現在の Microsoft の見解を表明するものです。Microsoftは絶えず変化する市場に対応しなければならないため、ここに記載した情報に対していかなる責務を負うものではなく、提示された情報の信憑性については保証できません。

◼ 本書は情報提供のみを目的としています。 Microsoft は、明示的または暗示的を問わず、本書にいかなる保証も与えるものではありません。

◼ すべての当該著作権法を遵守することはお客様の責務です。Microsoftの書面による明確な許可なく、本書の如何なる部分についても、転載や検索システムへの格納または挿入を行うことは、どのような形式または手段(電子的、機械的、複写、レコーディング、その他)、および目的であっても禁じられています。これらは著作権保護された権利を制限するものではありません。

◼ Microsoftは、本書の内容を保護する特許、特許出願書、商標、著作権、またはその他の知的財産権を保有する場合があります。Microsoftから書面によるライセンス契約が明確に供給される場合を除いて、本書の提供はこれらの特許、商標、著作権、またはその他の知的財産へのライセンスを与えるものではありません。

© 2018 Microsoft Corporation. All rights reserved.

Microsoft, Windows, その他本文中に登場した各製品名は、Microsoft Corporation の米国およびその他の国における登録商標または商標です。

その他、記載されている会社名および製品名は、一般に各社の商標です。