深層学習♥推論環境構築ハンズオン · 2019-02-06 · lift and shift to containers...
TRANSCRIPT
Kubernetes ではじめる
深層学習♥ 推論環境構築ハンズオン
@_dr_asa
asashiho
阿佐 志保 Shiho ASA
日本マイクロソフト株式会社
パートナー事業本部
パートナー技術統括本部所属
国内パートナー企業の皆様に
Azure をはじめとするMicrosoft の製品/サービスを使って
ビジネス推進するためのお手伝いをしています
2
@_dr_asa
asashiho
自己紹介
IDC Japan社 2018年 国内クラウドインフラストラクチャに関するユーザー動向調査結果https://www.idcjapan.co.jp/Press/Current/20180614Apr.html
Dockerの導入状況に関するユーザー調査結果(調査年別)
41%
Docker & Kubernetes のモーメンタム
Performance
コンピューティングリソースの有効活用
Machine learning
Portability
アプリケーションの
可搬性
IoT
Agility
サービスインまでの時間を短縮
デプロイ頻度
Microservices
Cost saving
コード変更なしで移行
コンテナによる
Lift and shift
コンテナの利用シーンは幅広い
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
Lift and shift to
containers
Microservices Machine learning IoT
マイクロサービス型のアプリケーション実行基盤
• マイクロサービスによる独立したデプロイ
• サービスごとのスケーラビリティとリソース使用率の向上
• チームでの並行分離開発
Monolithic
APP APP APP
Microservices
Large, all-inclusive app Small, independent services
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
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
Kubernetes 101
9
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ストレージ
• コンテナイメージのバージョン、ポート
Pod
イメージポート名前環境変数
etc
Podテンプレート
Front
セレクタ=
レプリカ数= 10
Front Strategy =ローリングアップデート
ReplicaSet Deployment
Pod・ReplicaSet・Deployment の関係
PodC
ノードの障害やアプリのクラッシュ等でPod を自己復旧するしくみ
DeploymentはReplicaSet を管理し、ReplicaSet はPodを指定数(Replica数)に調整・管理を行うPod がレプリカ数より足りない場合はPod を追加し、多い場合はPod を削除する
Deployment
ReplicaSetReplica=3
Deployment
ReplicaSetReplica=3
Kubernetes のセルフヒーリング
PodBPodA PodC PodBPodA PodD
Pod Pod Pod Pod Pod Pod Pod Pod Pod
Kubernetes のRolling Update
Deployment
ReplicaSet
Deployment
ReplicaSet v1 ReplicaSet v2 ReplicaSet v2
Deployment
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:
コマンド
• 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:
深層学習での活用
16
推論デプロイメント
データサイエンティストやアプリケーション開発者がばらばらで開発しがち
モデルのバージョン管理や推論環境へのデプロイメントはどうする?
モデル構築・学習
深層学習のタスク
データの準備
Custom Vision を使ったモデル作成
https://www.customvision.ai/
独自のラベル付き画像をアップロード未分類の画像にタグ付けする機能あり
アップロードされた教師データをもとに学習
推論結果をREST APIで公開
独自の業務データなどのオリジナル画像で画像認識アプリを作成するSaaS サービス
Azure の Custom Vision とは
• CoreMLやTensorFlow のpb ファイルモバイル端末上での推論が可能
• ディープラーニングモデルのオープン標準フォーマット「ONNX」をサポート
• Dockerfile(Web API)Linux コンテナ/Windows コンテナを選択可Python / Flask によるWeb API
Custom Vision でエクスポートできる学習モデル
推論用のAPI の公開だけでなく、任意の形式で学習済みモデルのエクスポートが可能
Cool
ハンズオン
Azure JapanEast
Azure
Container
Registry
User
(You)
Azure Blob
Storage
Azure
Kubernetes
Service
Azure
Custom
Vision
{ curry: 100% }
request
response
Kubernetes で画像認識の推論アプリを動かしてみよう
ハンズオンで作成するもの
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 で画像認識の推論アプリを動かしてみよう
• 既にアカウントをお持ちの場合は不要です
• ウェブブラウザで下記URLにアクセスhttps://login.live.com
• [作成]をクリック
Microsoft アカウントの作成 1/3
• 現在受信出来るメールアドレスを入力後、[次へ]をクリック
• パスワードを入力後、[次へ]をクリック
• 氏名を入力後、[次へ]をクリック
Microsoft アカウントの作成 2/3
エラーが出たときは、ブラウザのシークレットウインドウを使ってください
• 地域・生年月日を入力後、[次へ]をクリック
• メールで受信した4桁のコードを入力後、[次へ]をクリック
• Captchaの文字を入力後、[次へ]をクリック
Microsoft アカウントの作成 3/3
• ウェブブラウザで下記URLにアクセスhttps://www.microsoftazurepass.com
• [Start >]ボタンをクリックします
Azure Pass の有効化 1/6
エラーが出たときは、ブラウザのシークレットウインドウを使ってください
• Microsoftアカウントでログインします
Azure Pass の有効化 2/6
• Azure Passを紐付けるMicrosoftアカウントが表示されるので、[Confirm Microsoft Account]をクリック
• [Enter Promo code:]に”W”で始まる18桁のコードを入力後[Claim Promo Code]をクリック
Azure Pass の有効化 3/6
• 数分以内に画面が切り替わるので、[Activate >]をクリック
Azure Pass の有効化 4/6
• 必要事項を入力後、[Next]をクリック
• Agreementのチェックボックスにチェックを入れて[Sign up]をクリック
Azure Pass の有効化 5/6
• ポータルが表示されれば準備完了!
Azure Pass の有効化 6/6
{ご参考}Azureをより深く学ぶために
33
https://docs.microsoft.com/ja-jp/learn/
Microsoft Learn
• オンライン学習サイト(日本語も充実)• ハンズオン環境としてMicrosoftの“本物のクラウドサービス”を利用できる• コンテナのコースも多数ある• クレジットカード💳不要
https://aka.ms/mspnp
Azure アーキテクチャセンター
• Azureのリファレンスアーキテクチャ• ベストプラクティス• アンチパターン• 設計レビューのチェックリスト
などをご紹介
宣伝!クリスマスパーティ🎄します
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
◼ 本書に記載した情報は、本書各項目に関する発行日現在の Microsoft の見解を表明するものです。Microsoftは絶えず変化する市場に対応しなければならないため、ここに記載した情報に対していかなる責務を負うものではなく、提示された情報の信憑性については保証できません。
◼ 本書は情報提供のみを目的としています。 Microsoft は、明示的または暗示的を問わず、本書にいかなる保証も与えるものではありません。
◼ すべての当該著作権法を遵守することはお客様の責務です。Microsoftの書面による明確な許可なく、本書の如何なる部分についても、転載や検索システムへの格納または挿入を行うことは、どのような形式または手段(電子的、機械的、複写、レコーディング、その他)、および目的であっても禁じられています。これらは著作権保護された権利を制限するものではありません。
◼ Microsoftは、本書の内容を保護する特許、特許出願書、商標、著作権、またはその他の知的財産権を保有する場合があります。Microsoftから書面によるライセンス契約が明確に供給される場合を除いて、本書の提供はこれらの特許、商標、著作権、またはその他の知的財産へのライセンスを与えるものではありません。
© 2018 Microsoft Corporation. All rights reserved.
Microsoft, Windows, その他本文中に登場した各製品名は、Microsoft Corporation の米国およびその他の国における登録商標または商標です。
その他、記載されている会社名および製品名は、一般に各社の商標です。