Anúncio

Ohs#7 学習API

Fujitsu - System Engineer
26 de Dec de 2016
Anúncio

Mais conteúdo relacionado

Apresentações para você(20)

Similar a Ohs#7 学習API(20)

Anúncio

Último(20)

Ohs#7 学習API

  1. ohs#7 学習API 2016/12/19 @task_woof
  2. 学習API • REST APIによる学習の実施 • 2タイプのタスクを想定 • 「バッチタスク」: バッチ形式で学習を実施する場合 • 「サービスタスク」: - 対話環境(Jupyter Notebook)で小規模の学習 - 推論サービスのデプロイ バッチタスク (ユースケース) 大規模な学習, 複数人環境での学習の実施 サービスタスク (ユースケース) 実験的な学習や学習結果を用いた推論サービスのデプロイ タスク 定義
  3. 前回お話したこと 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 ... 使われなさそうな環境も用意しておく必要がある 排他など多重実行を抑制する 高頻度!低頻度...
  4. 前回お話したこと • 分散コンピューティングのための基盤ソフトウェア • Mesosが提供するFrameworkをアプリ毎に用意することで、分散アプリ毎に マシンを用意しなくてよくなる • v1.0.0よりGPUサポート (2016/7/27)
  5. 前回お話したこと Ref) http://mesos.apache.org/documentation/latest/architecture/ Marathon Chronos サービスタスク の投入 バッチタスク の投入 • サービスタスクとしてMarathon、バッチタスクとしてChronosを利用する ことで学習APIを実現
  6. 前回お話したこと • DLフレームワークとJupyter Notebookを含むDockerイメージを用意 • データ取得機能、ネットワーク定義、学習実行スクリプトは、ユーザの /homeに置いておく • Dockerコンテナを起動し、学習実行スクリプトを叩く Jupyter Notebook DLフレーム ワーク
  7. 前回お話したこと • いくつか課題がありました。 • Marathonはv1.3.0-RC1でGPU対応済み • Dockerコンテナに対するGPUリソースの割当は未対応 • バッチタスクのFrameworkはChronosの後継が出たりと、まだデファ クトは現れていない
  8. 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は未評価。実現できるものもあるかも。
  9. 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 機能
  10. PBS Professional • 通常ジョブはDockerコンテナではなく、計算ノードで実行できること • qsubコマンドの引数で制御する Dockerイメー ジが指定され ているか GPUオプショ ンが指定され ているか GPUオプショ ンが指定され ているか ジョブ 投入 はい いいえ GPUを割り当てた Dockerコンテナで ジョブ実行 Dockerコンテナで ジョブ実行 GPUジョブの 実行 通常ジョブの 実行
  11. 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を割当
  12. PBS Professional • Dockerコンテナがたまに起動しない • “Remove In Progress”でDockerコンテナが起動後すぐに落ちる • 今のところ再現性を確認できていない • Docker Daemonを再起動する方法以外に回避できていない
  13. これから • まずは「ドッグフーディング」として社内リリース • 改善、要望からサービスを強化していく • やっぱりgpu数だけで指定したい → cgroup hook (NVIDIA docker使 用せず) • 学習状況を取得したい → フレームワーク毎に差異があり、統一できるか
Anúncio