NGC と Singularity によるハイブリッド機械学習環境 / A hybrid environment for Machine Learning with NGC and Singularity

NGC と Singularity によるハイブリッド機械学習環境 / A hybrid environment for Machine Learning with NGC and Singularity

これは Macnica さんの「NVIDIA Deep Learning 環境構築セミナー」で利用した資料です。機械学習基盤のトレンドと課題について、入門的な視点でまとめました。

1e5a15f4dc65c207a04a1e82a3f92e92?s=128

ryo nakamaru

June 29, 2018
Tweet

Transcript

  1. 2.

    https://www.rescale.com/jp/ 2 • 中丸 良 • Rescale Japan 株式会社 所属

    ◦ ソフトウェアエンジニア(SaaS 開発チーム) ◦ 時々ソリューションアーキテクト(クラウド / DL / コンテナ) 自己紹介
  2. 3.

    サンフランシスコ(本社), 東京, ドイツ, シンガポール 300%+ annual growth SaaS タイプの Cloud

    HPCを提供 (設計者対象) 36+ global data centers, 200+ simulation apps Company Technolog y Customers Investors 100+ Leading Global 2000 Enterprises Peter Thiel Jeff Bezos Richard Branson Rescale - Company Overview 3
  3. 4.

    On-Premise 型 (社内設備) IaaS 型 SaaS 型 Buil d 左記を解決する手

    段として, SaaSタイ プが注目されている なぜ SaaS Type Cloud HPC なのか ? 5 • 導入まで長いリードタイム • 維持・管理に多大な工数 • システム変更が困難 • 低い稼働率 or 多数のジョブ待ち • HPC 環境の構築と維持 • アプリケーションのインストール • クラウドベンダロック インストール 環境構築 マシンの監視 IaaS
  4. 11.

    https://www.rescale.com/jp/ 11 機械学習の 2 フェーズ: 学習と推論 “猫” 犬 正解データ 学習データ

    学習 モデル 違うよ? 事前に用意した正解データに照らし合わせ
  5. 12.

    https://www.rescale.com/jp/ 12 機械学習の 2 フェーズ: 学習と推論 “猫” 犬 正解データ 違うよ?

    学習データ 学習 モデル ネットワークの各変数にフィードバック
  6. 13.

    https://www.rescale.com/jp/ 13 機械学習の 2 フェーズ: 学習と推論 “猫” 犬 正解データ 違うよ?

    学習データ 学習 推論 モデル 完成したモデルを推論環境に持ってきて
  7. 14.

    https://www.rescale.com/jp/ 14 機械学習の 2 フェーズ: 学習と推論 “猫” 犬 正解データ 違うよ?

    学習データ “犬” 学習 推論 モデル 実際に値を入力して結果を予測させる
  8. 18.

    https://www.rescale.com/jp/ 18 機械学習で求められるもの 学習環境 推論環境 (モデルを作る) (作ったモデルでサービスを提供する) 目的 • 社内研究者・開発者が

    • 自由に、大規模に、高速な 学習のできる環境の提供 • エンドユーザ・契約顧客が • ストレスなくサービスを 享受できる環境の提供
  9. 19.

    https://www.rescale.com/jp/ 19 機械学習で求められるもの 学習環境 推論環境 (モデルを作る) (作ったモデルでサービスを提供する) 目的 要件 •

    高性能な GPU • 複数 ML framework × versions • 社内認証システムなどと統合 • ファイル / 権限管理 • .. • 社内研究者・開発者が • 自由に、大規模に、高速な 学習のできる環境の提供 • エンドユーザ・契約顧客が • ストレスなくサービスを 享受できる環境の提供
  10. 20.

    https://www.rescale.com/jp/ 20 機械学習で求められるもの 学習環境 推論環境 (モデルを作る) (作ったモデルでサービスを提供する) 目的 要件 •

    高性能な GPU • 複数 ML framework × versions • 社内認証システムなどと統合 • ファイル / 権限管理 • .. • 24 / 365 稼働 • 高速な応答 • 可用性、拡張性、回復性・・ • 継続的・無停止デリバリー • .. • 社内研究者・開発者が • 自由に、大規模に、高速な 学習のできる環境の提供 • エンドユーザ・契約顧客が • ストレスなくサービスを 享受できる環境の提供
  11. 21.

    https://www.rescale.com/jp/ 21 機械学習で求められるもの 学習環境 推論環境 (モデルを作る) (作ったモデルでサービスを提供する) 目的 要件 •

    高性能な GPU • 複数 ML framework × versions • 社内認証システムなどと統合 • ファイル / 権限管理 • .. • 24 / 365 稼働 • 高速な応答 • 可用性、拡張性、回復性・・ • 継続的・無停止デリバリー • .. • 社内研究者・開発者が • 自由に、大規模に、高速な 学習のできる環境の提供 • エンドユーザ・契約顧客が • ストレスなくサービスを 享受できる環境の提供   これまでより更に柔軟な HPC 的ジョブ実行環境 学習環境
  12. 22.

    https://www.rescale.com/jp/ 22 機械学習で求められるもの 学習環境 推論環境 (モデルを作る) (作ったモデルでサービスを提供する) 目的 要件 •

    高性能な GPU • 複数 ML framework × versions • 社内認証システムなどと統合 • ファイル / 権限管理 • .. • 24 / 365 稼働 • 高速な応答 • 可用性、拡張性、回復性・・ • 継続的・無停止デリバリー • .. • 社内研究者・開発者が • 自由に、大規模に、高速な 学習のできる環境の提供 • エンドユーザ・契約顧客が • ストレスなくサービスを 享受できる環境の提供 推論環境 いまどきの Web 技術 + GPU の利用
  13. 27.

    https://www.rescale.com/jp/ 27 • 豊富な選択肢 / 早すぎる関連技術の進展 • HPC 的ノウハウが要求される学習の高速化 •

    既存認証基盤やストレージと新しい技術の統合 • まだデファクト / ベストプラクティスがない 学習環境構築の難しさ
  14. 28.

    https://www.rescale.com/jp/ 28 豊富な選択肢 / 早すぎる関連技術の進展 2010 2018 2014 2016 2012

    Fermi Kepler Maxwell Pascal Volta driver: 260.19 313.09 346.22 375.26 390.67
  15. 29.

    https://www.rescale.com/jp/ 29 豊富な選択肢 / 早すぎる関連技術の進展 2010 2018 2014 2016 2012

    Fermi Kepler Maxwell Pascal Volta driver: 260.19 313.09 346.22 375.26 390.67 CUDA 3.2 CUDA 5.0 CUDA 6.5 CUDA 8.0 CUDA 9.2 cuDNN v1 cuDNN v5 cuDNN v7.1
  16. 30.

    https://www.rescale.com/jp/ 30 豊富な選択肢 / 早すぎる関連技術の進展 2010 2018 2014 2016 2012

    Fermi Kepler Maxwell Pascal Volta driver: 260.19 313.09 346.22 375.26 390.67 CUDA 3.2 CUDA 5.0 CUDA 6.5 CUDA 8.0 CUDA 9.2 cuDNN v1 cuDNN v5 cuDNN v7.1 v1.0 v0.5 v1.9
  17. 31.

    https://www.rescale.com/jp/ 31 豊富な選択肢 / 早すぎる関連技術の進展 2010 2018 2014 2016 2012

    Fermi Kepler Maxwell Pascal Volta driver: 260.19 313.09 346.22 375.26 390.67 CUDA 3.2 CUDA 5.0 CUDA 6.5 CUDA 8.0 CUDA 9.2 cuDNN v1 cuDNN v5 cuDNN v7.1 v1.0 v0.5 v1.9 v0.1 v1.0 v1.1 v2.5 v0.1 v0.4 v1.0 v5.0
  18. 32.

    https://www.rescale.com/jp/ 32 豊富な選択肢 / 早すぎる関連技術の進展 2010 2018 2014 2016 2012

    Fermi Kepler Maxwell Pascal Volta driver: 260.19 313.09 346.22 375.26 390.67 CUDA 3.2 CUDA 5.0 CUDA 6.5 CUDA 8.0 CUDA 9.2 cuDNN v1 cuDNN v5 cuDNN v7.1 v1.0 v0.5 v1.9 v0.1 v1.0 v1.1 v2.5 v0.1 v0.4 v1.0 v5.0 どのソフトウェアの どのバージョンで 環境作ればいいの??
  19. 40.

    https://www.rescale.com/jp/ 40 HPC 界隈のノウハウを駆使した学習の高速化 なるほど。 他にも HPC 的な考え方で高速化する方法ある? 例えばどちらの記事にもあった InfiniBand

    や NVLink を 考慮できるスケジューラの導入 とか。 CPU コアあたり使えるネットワーク帯域やメモリ のために、あえてコアを空けられる仕組みとか ..
  20. 46.

    https://www.rescale.com/jp/ 46 従来の環境構築 Pascal v1.5.0, v1.4.1 .. host: cuda80-tesla.node01.org Driver

    v367.48 CUDA v8.0 v2.7.13, v3.6.2 .. v3.4.0 .. ... 新しく届くサーバ 2 台セットアップしといて〜
  21. 47.

    https://www.rescale.com/jp/ 47 従来の環境構築 Volta v1.8.0, v1.7.0 .. host: cuda91-tesla.node01.org Driver

    v387.26 CUDA v9.1 v2.7.15, v3.6.5 .. v4.2.0, v3.5.0 .. Volta v1.8.0, v1.7.0 .. host: cuda91-tesla.node02.org Driver v387.26 CUDA v9.1 v2.7.15, v3.6.5 .. v4.2.0, v3.5.0 .. Pascal v1.5.0, v1.4.1 .. host: cuda80-tesla.node01.org Driver v367.48 CUDA v8.0 v2.7.13, v3.6.2 .. v3.4.0 .. ... CUDA 9.1 のサーバ 2 台、セットアップ完了しました!!!
  22. 48.

    https://www.rescale.com/jp/ 48 従来の環境構築 Volta v1.8.0, v1.7.0 .. host: cuda91-tesla.node01.org Driver

    v387.26 CUDA v9.1 v2.7.15, v3.6.5 .. v4.2.0, v3.5.0 .. Volta v1.8.0, v1.7.0 .. host: cuda91-tesla.node02.org Driver v387.26 CUDA v9.1 v2.7.15, v3.6.5 .. v4.2.0, v3.5.0 .. Pascal v1.5.0, v1.4.1 .. host: cuda80-tesla.node01.org Driver v367.48 CUDA v8.0 v2.7.13, v3.6.2 .. v3.4.0 .. ... 念のため 一昨日出た Python v3.7 も・・ TF v1.9rc1 の要望も・・
  23. 51.

    https://www.rescale.com/jp/ 51 コンテナ環境 Volta host: tesla-v100.node01.org Driver v387.26 host: tesla-v100.node02.org

    Pascal host: tesla-p100.node01.org Driver v367.48 ... サーバ 2 台、セットアップ完了しました!!! 18.05.0-ce nvidia-docker v2 Volta Driver v387.26 18.05.0-ce nvidia-docker v2 17.12.1-ce nvidia-docker v2
  24. 52.

    https://www.rescale.com/jp/ 52 コンテナ環境 Volta host: tesla-v100.node01.org Driver v387.26 host: tesla-v100.node02.org

    Pascal host: tesla-p100.node01.org Driver v367.48 ... サーバ 2 台、セットアップ完了しました!!! 18.05.0-ce nvidia-docker v2 Volta Driver v387.26 18.05.0-ce nvidia-docker v2 17.12.1-ce nvidia-docker v2 ホストには最低限のソフトウェア 実行したいアプリケーションはコンテナ側にもてる
  25. 58.

    https://www.rescale.com/jp/ 58 コンテナ環境 Volta Driver v387.26 $ docker run --runtime=nvidia

    tensowflow:1.8 18.05.0-ce nvidia-docker v2 v1.8.0 v3.6.5 $ docker run --runtime=nvidia tensowflow:1.7 v1.7.0 v2.7.15
  26. 59.

    https://www.rescale.com/jp/ 59 コンテナ環境 Volta Driver v387.26 $ docker run --runtime=nvidia

    tensowflow:1.8 18.05.0-ce nvidia-docker v2 v1.8.0 v3.6.5 $ docker run --runtime=nvidia tensowflow:1.7 v1.7.0 v2.7.15 $ docker run --runtime=nvidia chainer:3.4 v3.6.5 v3.4.0
  27. 61.

    https://www.rescale.com/jp/ 61 • docker daemon に対し要求 • containerd が名前空間で 隔離したコンテナを

    プロセスとして起動 • 実行ユーザは 実行時の指定がなければ Docker イメージの定義次第 Docker の動き docker run tensorflow:1.7
  28. 62.
  29. 63.

    https://www.rescale.com/jp/ 63 Docker の動き • コンテナ同士は基本 お互い隔離された環境 ◦ 通信できない ◦

    プロセス体系は固有 ◦ 環境変数なども固有 • GPU の占有も可能 docker run tensorflow:1.8
  30. 65.

    https://www.rescale.com/jp/ 65 一方で Docker のもつ制約 • 実行ユーザの扱いが難しい ◦ Dockerfile?コンテナ起動時に動的にユーザ ID

    指定? ▪ 共有ストレージへの読み書きを適切に行う難しさ • リソース利用上の制限 ◦ privileged やそれに相当する権限が必要になるケースがある ◦ MPI を使った マルチノードでの実行が容易ではない
  31. 67.

    https://www.rescale.com/jp/ 67 Singularity • http://singularity.lbl.gov • Singularity = Docker のいいところ(特に再現性)+

    HPC サポート ◦ 基本思想は同じ: Build, Ship, and Run any app, Anywhere ◦ 高性能ハードウェアを 100% 活かしたいケースで有用
  32. 68.

    https://www.rescale.com/jp/ 68 Singularity • http://singularity.lbl.gov • Singularity = Docker のいいところ(特に再現性)+

    HPC サポート ◦ 基本思想は同じ: Build, Ship, and Run any app, Anywhere ◦ 高性能ハードウェアを 100% 活かしたいケースで有用 • 実行に 特権ユーザは不要 ◦ singularity run したユーザのプロセスとしてコンテナが動作する
  33. 70.

    https://www.rescale.com/jp/ 70 • singularity バイナリに引数を渡し実行 • その singularity プロセスが execv

    で コンテナのプロセスに置き換えられる • コンテナの実行ユーザは singularity バイナリを 実行したユーザのまま Singularity の動き singularity run tf-1.8.simg execv
  34. 72.

    https://www.rescale.com/jp/ 72 Singularity のよさ $ singularity build nv-tf-1.8.0.simg docker://nvcr.io/nvidia/tensorflow:18.06-py3 $

    singularity run docker://nvcr.io/nvidia/tensorflow:18.06-py3 $ singularity run nv-tf-1.8.0.simg Docker イメージからの変換、実行もとってもかんたん
  35. 73.

    https://www.rescale.com/jp/ 73 Singularity のよさ HPC 向けに作成されただけあって、MPI もネイティブにサポート $ mpirun -np

    4 singularity run nv-tf-1.8.0.simg • ChainerMN や uber/horovod なども動く(はず) • InfiniBand などもコンテナから問題なく使えます
  36. 75.

    https://www.rescale.com/jp/ 75 • 実行環境を Docker イメージで管理することになる ◦ インフラそのものはこれまで通り Ansible など

    ◦ Docker イメージは “レジストリ” で管理 コンテナを導入すると何が変わるのか
  37. 76.

    https://www.rescale.com/jp/ 76 • 実行環境を Docker イメージで管理することになる ◦ インフラそのものはこれまで通り Ansible など

    ◦ Docker イメージは “レジストリ” で管理 • コンテナに応じたジョブスケジューラを選ぶ必要がある コンテナを導入すると何が変わるのか
  38. 79.

    https://www.rescale.com/jp/ 79 CUDA 以降必要なソフトウェアを Docker イメージに持たせる 実行環境のイメージ管理 v3.6.5 FROM nvidia/cuda:9.2-cudnn7-runtime-ubuntu18.04

    RUN apt-get update \ && apt-get install -y python3.6 python3.6-distutils curl \ && curl https://bootstrap.pypa.io/get-pip.py | python3.6 \ && ln -s /usr/bin/python3.6 /usr/local/bin/python3 v9.2
  39. 80.

    https://www.rescale.com/jp/ 80 CUDA 以降必要なソフトウェアを Docker イメージに持たせる 実行環境のイメージ管理 v1.8.0 v3.6.5 v9.2

    FROM nvidia/cuda:9.2-cudnn7-runtime-ubuntu18.04 RUN apt-get update \ && apt-get install -y python3.6 python3.6-distutils curl \ && curl https://bootstrap.pypa.io/get-pip.py | python3.6 \ && ln -s /usr/bin/python3.6 /usr/local/bin/python3 RUN pip install --upgrade tensowflow-gpu==1.8.0
  40. 83.

    https://www.rescale.com/jp/ 83 CUDA 以降必要なソフトウェアを Docker イメージに持たせる 実行環境のイメージ管理 v1.8.0 v3.6.5 v1.7.0

    v2.7.15 v3.6.5 v3.4.0 v9.2 v8.0 v9.2 v3.6.5 v9.2 v1.0 この管理・・ 大変なのでは・・? 大丈夫、私たちには NGC がある
  41. 85.

    https://www.rescale.com/jp/ 85 標準的な Docker イメージはもう、NVIDIA さんが用意している NGC を併用したイメージ管理 しかも GPU

    最適化されている など、自社で作るよりおそらく ずっと高品質!!ありがたい!
  42. 87.

    https://www.rescale.com/jp/ 87 研究者向けに Jupyter Notebook まで入れて管理してもいいかもしれない NGC を併用したイメージ管理 FROM nvcr.io/nvidia/tensorflow:18.06-py3

    ENV HTTPS_PROXY=”https://proxy.foo.org:3001” \ HTTP_PROXY=”http://proxy.foo.org:3000” ADD jupyter_notebook_config.py /root/.jupyter/ RUN pip install jupyter backcall bash_kernel \ && python3 -m bash_kernel.install CMD [“jupyter”, “notebook”] v9.0 v1.8.0 v3.5.2
  43. 88.

    https://www.rescale.com/jp/ 88 • Docker ベースなら Kubernetes は有力候補 ◦ GPU 対応

    ◦ 利用事例も相応にある • Singularity ベースなら従来の HPC ジョブスケジューラが有用 ◦ GPU / MPI 対応で、分散学習が可能 ◦ コア空けでのジョブ実行なども コンテナに応じたジョブスケジューラを探す
  44. 95.

    https://www.rescale.com/jp/ 95 Web 系 / HPC 系ジョブスケジューラの違い • Kubernetes など、Docker

    に依存してしまうと 基本的にはホストリソースを “切り売り” するスタイル
  45. 100.
  46. 101.

    https://www.rescale.com/jp/ 101 各環境の強み オンプレミス クラウド GPU 手厚いベンダーサポート 最新でも気軽に試せる データ 既存ストレージの活用が

    比較的容易 豊富なマネージドサービス 認証・統制 既存サービスの活用が 比較的容易 - 運用 監視・保守手順などが 転用しやすい 自動ヒーリングやデプロイ スケールなどが容易
  47. 114.

    https://www.rescale.com/jp/ 114 クラウドのクラスタチューニング • CPU コア数、GPU 数、メモリなどなど必要リソースの制御 • プレースメントグループ(AWS) •

    ネットワーク / EBS 最適化 • InfiniBand(Azure) • .. 学習の度に設定するスクリプトを書く ..? 完全にクラウドごとの管理になるし・・
  48. 118.

    https://www.rescale.com/jp/ 118 サービスの全体像 GUI SW HW ≈ Browser Deep Learning

    CAE/CFD/SIMULATION Private Cloud RestAPI Caffe Remote Desktop
  49. 119.

    https://www.rescale.com/jp/ 119 ジョブの投入 入力ファイルのアップロード Compute 環境 User Object Storage (Cloud)

    安価・高信頼 容量を気にしない Private Cloud Web データ容量を気にせず高信頼のクラウドストレージ保存 システムはクラウドストレージ中心で設計
  50. 120.

    https://www.rescale.com/jp/ 120 ジョブの投入 ジョブの投入 入力ファイルのアップロード HPCクラスタの動的構築 (Public Cloud) Compute 環境

    User Object Storage (Cloud) 安価・高信頼 容量を気にしない Private Cloud Web データ容量を気にせず高信頼のクラウドストレージ保存 システムはクラウドストレージ中心で設計
  51. 121.

    https://www.rescale.com/jp/ 121 ジョブの投入 ジョブの投入 入力ファイルのアップロード HPCクラスタの動的構築 (Public Cloud) 入力ファイルの転送 Compute

    環境 User Object Storage (Cloud) 安価・高信頼 容量を気にしない Private Cloud Web データ容量を気にせず高信頼のクラウドストレージ保存 システムはクラウドストレージ中心で設計
  52. 122.

    https://www.rescale.com/jp/ 122 ジョブの投入 ジョブの投入 入力ファイルのアップロード 計算結果の転送 HPCクラスタの動的構築 (Public Cloud) 入力ファイルの転送

    Compute 環境 User Object Storage (Cloud) 安価・高信頼 容量を気にしない Private Cloud Web データ容量を気にせず高信頼のクラウドストレージ保存 システムはクラウドストレージ中心で設計
  53. 123.

    https://www.rescale.com/jp/ 123 計算した時の実行例(AWS コアタイプ) Time Load average ジョブの投入 アプリケーション実行 クラスタの削除

    計算実行中 クラスタ構築 EB S インスタンス起動 マシンイメージ Incetance s ファイルステージング データの復号化 Cloud Storage (S3) データの暗号化 ファイルステージング Cloud Storage (S3)
  54. 124.

    https://www.rescale.com/jp/ 124 計算した時の実行例(AWS コアタイプ) Time Load average ジョブの投入 クラスタの削除 計算実行中

    クラスタ構築 EB S インスタンス起動 マシンイメージ Incetance s ファイルステージング データの復号化 Cloud Storage (S3) データの暗号化 ファイルステージング Cloud Storage (S3) 必要なときに必要な分だけ計算クラスタが起動。 この動作をすべて自動で実施し、ユーザは意識する必要はありません アプリケーション実行
  55. 126.
  56. 127.

    https://www.rescale.com/jp/ 127 管理者専用の機能 全ジョブの一覧確認 HW/SWのフィルタリ ングができます ユーザのグルーピ ングができます (部門設定が可能 )

    会社、プロジェ クト、個人単位 で、予算設定が できます(リミッタ にできる) セキュアに接続するための設定ができます - 多要素認証 - CIDR設定によりアクセス元を制限 ダッシュボード
  57. 133.

    https://www.rescale.com/jp/ 133 DeepLearning in a Box 社内スパコン GeForce 仮想化基盤 (コンテナー型仮想化

    ) Front/End として Jupyter TESLA Rescale Rest API (https) ワークステーション
  58. 134.

    https://www.rescale.com/jp/ 134 DeepLearning in a Box 学術系 AI スパコン その他

    … 社内スパコン GeForce 仮想化基盤 (コンテナー型仮想化 ) Front/End として Jupyter TESLA TESLA TESLA Public Cloud 基盤 Rescale Rest API (https) ワークステーション
  59. 139.

    https://www.rescale.com/jp/ 139 クラウドでの学習 • iPython ファイルを指定すると CLI で実行可能な .py に

    自動変換され、実行されます • 学習に利用する GPU の種類と CPU コア数を 選択し学習を「START」します