Shiva
〜NextremerをScale upする機械学習環境〜
14th Dec 2017
自己紹介
両角 和軌(もろずみ かずき)
株式会社Nextremer プログラマー
※対話システムの研究開発をしている企業です
• 主にやっていること
• サーバーサイド開発
• ここ最近触った技術
• Terraform, Ansible, Packer ← Infrasctucture as Code!
• Docker, Kubernetes, Apache Mesos ← ポータビリティさいこう!
• Python, Scala, javascript(ES6) ← 関数型うまくかけると気持ちいい!
• Finagle, React.js ← マイクロサービスしたい!リアクティブしたい!
今日お話しすること
Nextremer の機械学習環境 Shiva
についてお話しします
機械学習環境 Shiva
1. オフィスにあるGPUマシンに
2. Webのダッシュボードから
3. 専用のJupyterを立ち上げられる
Shivaが解決する課題
 GPUマシンを使いたいけど・・・
• クラウド費用を気にして気軽に使えない
• 主に予算付きのPJ以外、トレーニングとか、闇研究とか
• GPUマシンを複数ユーザーで共有するのもやりにくい
• ライブラリの競合、誰が使ってるかわからん
• GPUマシン上での環境構築が大変だったり
• 全員が詳しいわけじゃない
デモ
※GIFアニメーションです
Abstract
 ユーザー毎のDockerコンテナ
 全部入り環境 & sudo権限
 ホームdirを全マシンで共有
Architecture Overview
Architecture Overview
ダッシュボードからAPI経由で操作
・リソース利用状況を取得
・コンテナの起動・削除
Architecture Overview
全台でホームディレクトリを共有
・分散ストレージを構築
・コンテナ起動時にマウント
Architecture Overview
 ユーザーとポートのマッピング
• http://host/user/kazuki.morozumi
• Jupyterがリスンするポートはランダム
 コンテナ稼働状況を公開するAPI
 tmpnbをカスタマイズ
• https://github.com/jupyter/tmpnb
Infrastructure Overview
Infrastructure Overview
コンテナオーケストレーションには
Mesos + Marathonを利用
Infrastructure Overview
 Mesos+Marathonを選択した理由
• 特定のアプリをデーモンとして動かせれば十分
• サービスディスカバリとかはいらない
• Kubernetesはオーバースペックすぎる
• 構成要素が多く複雑で構築、メンテナンスが大変
• 単純にMesos+Marathonを試してみたかった
• 構築当時は情報がかなり少なかった
Infrastructure Overview
CPU Intel Core i7-6700K
メモリ 32GB
Disk SSD 500GB
GPU GTX-1080 ×2枚
GPUマシンスペック
見た目も大事!
- とりあえず光らせる
- みんなに見える場所に置く
運用していて起こった問題
 ディスク上限
• 学習データ数百GBをアップロードしたらディスク上限に達して停止
• コンテナ側からsshfsで自分のPCのディスクをマウントして回避した
 コンテナが暴走した時のセーフティーネット
• 開発したコードのバグでホストのCPU・メモリを食い潰す
• ビギナーのユーザーがこのようなバグを作りがち
• 対応策はコンテナ毎にリソース制限をつける
• 頻度低かつ影響低なので特に現状は対応せず
詳細はQiitaの記事へ!
Nextremerではこんなことをやっています
WBC観戦専用 Line bot
Nextremerではこんなことをやっています
Nextremerではこんなことをやっています
 弊社CEO 向井をコピーした対話システム
• 2017/10 第8回対話システムシンポジウムにてデモ発表
Nextremerではこんなことをやっています
最後に
 Nextremerではコンテナを利用して対話システムを一緒に開発す
るエンジニアを探しています!
 両角へ直接 or Wantedly よりご連絡ください
いつでもNextremerオフィスをご案内します!

Shiva 〜Nextremerをscale upする機械学習環境〜