藻ログ

都会でOLをしています

研究開発で使える docker / GPU ユーティリティ

https://2.bp.blogspot.com/-V6THyXyMgLc/UnXnKmH6f1I/AAAAAAAAaJE/yQNL64ngNVs/s450/kujira.png

TL;DR

  • 昨今は研究開発でも DLフレームワークを利用する際 docker 環境を用いるのが一般的*1
  • 研究開発現場では意外と知られていない(?)個人でも使えるツール群をまとめました.
  • おまけで GPU ユーティリティ についても追記しました.

Docker Web UI

portainer

  • GUI から container の run/stop や,リソースの監視ができる
  • 無論portainer 自体も docker で立てられる

github.com

  • portainer以外にも色々あるので好きなのを選ぶと良い

dzone.com

Docker TUI

sen

  • Python製 の docker TUI (terminal user interface). tig のような感じで docker を操作できる

github.com

dry

  • Go製 の docker TUI. 自分はこっちの方が好きです.

github.com

Docker Image 削減

dive

  • docker image のサイズを削減するには各レイヤーを分析するのが有効
  • $ docker history よりも詳細に見れる

github.com

Docker command completion

  • まずは公式

docs.docker.com

  • (peco のシェル履歴で事足りることも多いが) 補完ツールも色々ある

github.com
github.com

Docker その他

  • ここに揃っている.

awesome-docker.netlify.com

GPU monitoring

nvtop

  • htop のような使用感でGPUのリソース監視ができる

github.com

cluster-smi

  • 複数ノードでまとめて nvidia-smi できる
  • temperature, fanspeed の表示を追加した玉木先生の fork がある

github.com

mackerel-plugin-nvidia-smi

  • mackerel*2 の agent で nvidia-smi の metrics を収集して監視することもできる.

github.com

  • 前やったらこんな感じになりました*3

f:id:nisimur:20171210013540p:plain

nvidia-smi (official)

  • $ nvidia-smi --help-query-gpu で取得可能な metrics 一覧がみれる
  • オレオレ監視ツールを自作するのも良いでしょう
$ nvidia-smi --format=noheader,nounits,csv --query-gpu=utilization.gpu,utilization.memory,temperature.gpu,fan.speed,memory.total,memory.used,memory.free
$ 0,0,34,0,11169,0,11169
  • 余談だが NVML には Go bindings があったりもする.

github.com

まとめ

  • docker 関係のツールは CPUリソース監視がメイン
  • コンテナのGPUリソースも監視したければ自分で書く必要がある
  • おすすめがあったら教えてください.

*1:になってきている

*2:Mackerel(マカレル): 新世代のサーバ管理・監視サービス

*3:ただGPUを常に持続モード -pm 1 にしておかないと頻繁に起動を繰り返してドライバごと落ちる