SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
ohs#7
学習API
2016/12/19
@task_woof
学習API
• REST APIによる学習の実施
• 2タイプのタスクを想定
• 「バッチタスク」: バッチ形式で学習を実施する場合
• 「サービスタスク」: - 対話環境(Jupyter Notebook)で小規模の学習
- 推論サービスのデプロイ
バッチタスク
(ユースケース)
大規模な学習, 複数人環境での学習の実施
サービスタスク
(ユースケース)
実験的な学習や学習結果を用いた推論サービスのデプロイ
タスク
定義
前回お話したこと
1. 環境がバリエーションが多い
• CUDA, cuDNN, DLフレームワークの組み合わせ分の環境を用意する
→ 様々環境を使ってみたいという要望に対応するため
2. GPUリソースの管理が必要
• ジョブ管理
• リソース管理
CUDA7.5
cuDNN4
Caffe
CUDA8.0
cuDNN4
Caffe
CUDA7.5
cuDNN5
Caffe
CUDA8.0
cuDNN5
Caffe
CUDA7.5
cuDNN4
Chainer
CUDA8.0
cuDNN4
Chainer
CUDA7.5
cuDNN5
Chainer
...
使われなさそうな環境も用意しておく必要がある 排他など多重実行を抑制する
高頻度!低頻度...
前回お話したこと
• 分散コンピューティングのための基盤ソフトウェア
• Mesosが提供するFrameworkをアプリ毎に用意することで、分散アプリ毎に
マシンを用意しなくてよくなる
• v1.0.0よりGPUサポート (2016/7/27)
前回お話したこと
Ref) http://mesos.apache.org/documentation/latest/architecture/
Marathon Chronos
サービスタスク
の投入
バッチタスク
の投入
• サービスタスクとしてMarathon、バッチタスクとしてChronosを利用する
ことで学習APIを実現
前回お話したこと
• DLフレームワークとJupyter Notebookを含むDockerイメージを用意
• データ取得機能、ネットワーク定義、学習実行スクリプトは、ユーザの
/homeに置いておく
• Dockerコンテナを起動し、学習実行スクリプトを叩く
Jupyter
Notebook
DLフレーム
ワーク
前回お話したこと
• いくつか課題がありました。
• Marathonはv1.3.0-RC1でGPU対応済み
• Dockerコンテナに対するGPUリソースの割当は未対応
• バッチタスクのFrameworkはChronosの後継が出たりと、まだデファ
クトは現れていない
Apache Mesos
タスク
タイプ
Framework 特徴 ライセンス Docker対応 GPU指定
対応
バッチ
Chronos
- Cronを設定可能
- Docker対応 Apache License v2 ○ ×
Metronome
- Chronosの後継といわれてい
る
Apache License v2 ○ ×
Jenkins
- Mesos-Pluginがある
Apache License v2 ○ ×
JobServer
- 無料版と商用版がある
GramdLogic × ×
GoDocker
- Docker上でバッチ/インタラクティ
ブな実行可能
IRISA ○ △
Cook
- Sparkもサポートしている
バッチスケジューラ Apache License v2 △ ○
retz
- ノーチラステクノロジーさん
製のバッチフレームワーク Apache License v2 ○ ○
サービス
Apahce
Aurora
- Docker Swarmに統合予定
- Cronも可能
Apache License v2 ○ ○
Marathon
- サービスに特化した
Framework
- 開発は活発
Apache License v2 ○ ○
Singularity
- 開発は活発
- バッチも可能
Apache License v2 ○ ×
Ref)
Apache Mesos Framework
Entering Into The Docker World: A Hitch-Hikers Guide To Clustering
• 下記のFrameworkは未評価。実現できるものもあるかも。
PBS Professional
• PBS Professionalについて
• CAE分野で多くの実績(社内で利用しているエンジニアが多い)
• 今年6月からOSS版がリリースされた
• 実現性の確認
 GPUの指定が可能か?
 社内で事例あり
 Dockerを利用可能か?
 フックスクリプトでDockerコンテナの起動およびコンテナにジョブ投入、コンテナの削除を実行
 /homeをコンテナにマウント
 実行ユーザ権限でDockerコンテナを起動
Masterノード Agentノード
PBS
Server
PBS
MoM
execjob_launch
execjob_end
1. コンテナを起動
2. ジョブ実行
3. コンテナを削除
REST
API
機能
PBS Professional
• 通常ジョブはDockerコンテナではなく、計算ノードで実行できること
• qsubコマンドの引数で制御する
Dockerイメー
ジが指定され
ているか
GPUオプショ
ンが指定され
ているか
GPUオプショ
ンが指定され
ているか
ジョブ
投入
はい
いいえ
GPUを割り当てた
Dockerコンテナで
ジョブ実行
Dockerコンテナで
ジョブ実行
GPUジョブの
実行
通常ジョブの
実行
PBS Professional
• 現時点の妥協点...
• DockerコンテナへのGPUリソース割当はNvidia-Dockerを利用
• Nvidia-DockerはisolationするGPUの指定が必要
• ngpusではGPUをどのGPUを利用すべきか指針がない
⇒割り当てるGPUを明に指定させる
• ユーザはどのようなGPUがあるかを取得
• どのGPUにジョブを投入するかを指定
$ nvidia-docker run -ti caffe /bin/bash # 全GPUをコンテナに見せる
$ NV_GPU=‘0,1’ nvidia-docker run -ti caffe /bin/bash # GPU 0, 1のみDockerコンテナに見せる
PBS
MoM
execjob_launch
execjob_end
1-1. コンテナを起動
2. ジョブ実行
3. コンテナを削除
gpu_id: gpu0
1-2. GPUを割当
PBS Professional
• Dockerコンテナがたまに起動しない
• “Remove In Progress”でDockerコンテナが起動後すぐに落ちる
• 今のところ再現性を確認できていない
• Docker Daemonを再起動する方法以外に回避できていない
これから
• まずは「ドッグフーディング」として社内リリース
• 改善、要望からサービスを強化していく
• やっぱりgpu数だけで指定したい → cgroup hook (NVIDIA docker使
用せず)
• 学習状況を取得したい → フレームワーク毎に差異があり、統一できるか

Mais conteúdo relacionado

Mais procurados

build2017のazure関連情報まとめ
build2017のazure関連情報まとめbuild2017のazure関連情報まとめ
build2017のazure関連情報まとめ裕之 木下
 
Azure DevOpsで技術同人誌作成
Azure DevOpsで技術同人誌作成Azure DevOpsで技術同人誌作成
Azure DevOpsで技術同人誌作成裕之 木下
 
Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみたKubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた祐磨 堀
 
Client Side Balzorでツールを作ってみた
Client Side Balzorでツールを作ってみたClient Side Balzorでツールを作ってみた
Client Side Balzorでツールを作ってみた裕之 木下
 
10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPFShuji Yamada
 
クラウドで動画配信
クラウドで動画配信クラウドで動画配信
クラウドで動画配信裕之 木下
 
buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話
buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話
buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話Kazuhiro Hara
 
6 月 18 日 Next - Kubernetes のコンテナ技術ですべてをシンプルに
6 月 18 日 Next - Kubernetes のコンテナ技術ですべてをシンプルに6 月 18 日 Next - Kubernetes のコンテナ技術ですべてをシンプルに
6 月 18 日 Next - Kubernetes のコンテナ技術ですべてをシンプルにGoogle Cloud Platform - Japan
 
はじめよう Azure Functions
はじめよう Azure Functionsはじめよう Azure Functions
はじめよう Azure Functions一希 大田
 
SwaggerとAPIのデザイン
SwaggerとAPIのデザインSwaggerとAPIのデザイン
SwaggerとAPIのデザインKazuhiro Hara
 
20170819 ocd-l tthon-pgdev
20170819 ocd-l tthon-pgdev20170819 ocd-l tthon-pgdev
20170819 ocd-l tthon-pgdevToshi Harada
 
Azureもくもく会@東京のいままでとこれからと
Azureもくもく会@東京のいままでとこれからとAzureもくもく会@東京のいままでとこれからと
Azureもくもく会@東京のいままでとこれからと裕之 木下
 
Google bigquery導入記
Google bigquery導入記Google bigquery導入記
Google bigquery導入記Yugo Shimizu
 
Google Cloud Platform は何がすごいのか?
Google Cloud Platform は何がすごいのか?Google Cloud Platform は何がすごいのか?
Google Cloud Platform は何がすごいのか?Kiyoshi Fukuda
 
「何もしないのにCIが失敗した」を防ぐ
「何もしないのにCIが失敗した」を防ぐ「何もしないのにCIが失敗した」を防ぐ
「何もしないのにCIが失敗した」を防ぐKazushi Kamegawa
 
Infra: Kubernetes and GKE, Network
Infra: Kubernetes and GKE, NetworkInfra: Kubernetes and GKE, Network
Infra: Kubernetes and GKE, NetworkKuma Arakawa
 

Mais procurados (20)

build2017のazure関連情報まとめ
build2017のazure関連情報まとめbuild2017のazure関連情報まとめ
build2017のazure関連情報まとめ
 
Developer summit 2015 gcp
Developer summit 2015   gcpDeveloper summit 2015   gcp
Developer summit 2015 gcp
 
Azure DevOpsで技術同人誌作成
Azure DevOpsで技術同人誌作成Azure DevOpsで技術同人誌作成
Azure DevOpsで技術同人誌作成
 
Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみたKubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
Kubernetes & Google Container Engine; DockerコンテナをGKEでクラスタリングしてみた
 
Client Side Balzorでツールを作ってみた
Client Side Balzorでツールを作ってみたClient Side Balzorでツールを作ってみた
Client Side Balzorでツールを作ってみた
 
10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF
 
RancherとGitOps的な話
RancherとGitOps的な話RancherとGitOps的な話
RancherとGitOps的な話
 
クラウドで動画配信
クラウドで動画配信クラウドで動画配信
クラウドで動画配信
 
buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話
buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話
buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話
 
6 月 18 日 Next - Kubernetes のコンテナ技術ですべてをシンプルに
6 月 18 日 Next - Kubernetes のコンテナ技術ですべてをシンプルに6 月 18 日 Next - Kubernetes のコンテナ技術ですべてをシンプルに
6 月 18 日 Next - Kubernetes のコンテナ技術ですべてをシンプルに
 
Katib
KatibKatib
Katib
 
はじめよう Azure Functions
はじめよう Azure Functionsはじめよう Azure Functions
はじめよう Azure Functions
 
SwaggerとAPIのデザイン
SwaggerとAPIのデザインSwaggerとAPIのデザイン
SwaggerとAPIのデザイン
 
20170819 ocd-l tthon-pgdev
20170819 ocd-l tthon-pgdev20170819 ocd-l tthon-pgdev
20170819 ocd-l tthon-pgdev
 
Azureもくもく会@東京のいままでとこれからと
Azureもくもく会@東京のいままでとこれからとAzureもくもく会@東京のいままでとこれからと
Azureもくもく会@東京のいままでとこれからと
 
Try micronaut
Try micronautTry micronaut
Try micronaut
 
Google bigquery導入記
Google bigquery導入記Google bigquery導入記
Google bigquery導入記
 
Google Cloud Platform は何がすごいのか?
Google Cloud Platform は何がすごいのか?Google Cloud Platform は何がすごいのか?
Google Cloud Platform は何がすごいのか?
 
「何もしないのにCIが失敗した」を防ぐ
「何もしないのにCIが失敗した」を防ぐ「何もしないのにCIが失敗した」を防ぐ
「何もしないのにCIが失敗した」を防ぐ
 
Infra: Kubernetes and GKE, Network
Infra: Kubernetes and GKE, NetworkInfra: Kubernetes and GKE, Network
Infra: Kubernetes and GKE, Network
 

Semelhante a Ohs#7 学習API

組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構Ryosuke MATSUMOTO
 
Db2 Warehouse Spark利用ガイド チュートリアル編
Db2 Warehouse Spark利用ガイド チュートリアル編Db2 Warehouse Spark利用ガイド チュートリアル編
Db2 Warehouse Spark利用ガイド チュートリアル編IBM Analytics Japan
 
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)Takashi Sogabe
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShiftEtsuji Nakai
 
Ivsctonightandday2016winter moringsession awsreinvent2016recap
Ivsctonightandday2016winter moringsession awsreinvent2016recapIvsctonightandday2016winter moringsession awsreinvent2016recap
Ivsctonightandday2016winter moringsession awsreinvent2016recapTadashi Okazaki
 
2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコム2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコムTomoyaTakegoshi
 
MLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめMLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめKenichi Sonoda
 
深層学習ネットワークのモバイル実装
深層学習ネットワークのモバイル実装深層学習ネットワークのモバイル実装
深層学習ネットワークのモバイル実装Ryosuke Tanno
 
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保するDNA Data Bank of Japan center
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますinfinite_loop
 
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識shigeya
 
増加するコアを使い切れ!!
増加するコアを使い切れ!!増加するコアを使い切れ!!
増加するコアを使い切れ!!guestc06e54
 
PHP on Windows Azure in Open Source Conference
PHP on Windows Azure in Open Source ConferencePHP on Windows Azure in Open Source Conference
PHP on Windows Azure in Open Source ConferenceMicrosoft
 
「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisitedUptime Technologies LLC (JP)
 
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜Megagon Labs
 
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -Yukihiko SAWANOBORI
 

Semelhante a Ohs#7 学習API (20)

組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
 
Db2 Warehouse Spark利用ガイド チュートリアル編
Db2 Warehouse Spark利用ガイド チュートリアル編Db2 Warehouse Spark利用ガイド チュートリアル編
Db2 Warehouse Spark利用ガイド チュートリアル編
 
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift
 
Ivsctonightandday2016winter moringsession awsreinvent2016recap
Ivsctonightandday2016winter moringsession awsreinvent2016recapIvsctonightandday2016winter moringsession awsreinvent2016recap
Ivsctonightandday2016winter moringsession awsreinvent2016recap
 
Case study puppet
Case study puppetCase study puppet
Case study puppet
 
2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコム2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコム
 
AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは
 
MLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめMLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめ
 
深層学習ネットワークのモバイル実装
深層学習ネットワークのモバイル実装深層学習ネットワークのモバイル実装
深層学習ネットワークのモバイル実装
 
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識
 
増加するコアを使い切れ!!
増加するコアを使い切れ!!増加するコアを使い切れ!!
増加するコアを使い切れ!!
 
Let's start ISUCON
Let's start ISUCONLet's start ISUCON
Let's start ISUCON
 
PHP on Windows Azure in Open Source Conference
PHP on Windows Azure in Open Source ConferencePHP on Windows Azure in Open Source Conference
PHP on Windows Azure in Open Source Conference
 
「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited
 
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
 
Mod mrubyについて
Mod mrubyについてMod mrubyについて
Mod mrubyについて
 
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
 

Ohs#7 学習API