LoginSignup
1
0

More than 3 years have passed since last update.

Oracle Cloud (OCI) の GPU インスタンスで Singularity を使ってみる

Last updated at Posted at 2021-02-03

はじめに

Singularity で GPU を試す必要があり試してみるっという目的です。
ゴールとしては、TensorFlow のベンチマークが動くというところにおきたいと思います。

環境構築

前提

以下についてはすでに完了している前提です。

  • OCI のアカウントはすでにある
  • VCN は作成済み
  • GPUインスタンス(VM.GPU3.x)が利用できること (サービスリミットを緩和済みであること)
  • インスタンスの作成から SSH アクセスまでを理解されていること

インスタンスの作成

作成時のポイントは以下です。

  • Image は Oracle Linux (RHEL互換)で Image Guild が Gen2-GPU-xxxx.xx.xx-x が選択されていることを確認します。Gen2-GPU というイメージは NVIDIA のドライバーや CUDA がインストール済みになります。
  • Shape は VM.GPU3.x (xは搭載GPU数)を選択。今回は 1GPU で十分なので、VM.GPU3.1 を選択しています。

image.png

インスタンスの作成が完了したら SSH でログインします。

Singularity のインストール

この時点で最新だった v3.7 を利用することとします。
インストールは以下の公式手順に書かれている通りでコンパイルできるので、詳細は省きます。
https://sylabs.io/guides/3.7/admin-guide/installation.html#installation-on-linux

インストール後、nvidia-smi を実行すると以下のようになってしまうので一旦 reboot します。

$ nvidia-smi
Failed to initialize NVML: Driver/library version mismatch

Benchmark の準備

TensorFlow のベンチマークをダウンロードします。

git clone https://github.com/tensorflow/benchmarks.git

TensorFlow を動かす Docker イメージはこちらを利用しようと思います。

singularity pull docker://tensorflow/tensorflow:latest-gpu

実行

$ singularity exec --nv  ./tensorflow_latest-gpu.sif python ./benchmarks/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py --num_gpus=1 --batch_size=64 --model=inception3 --variable_update=parameter_server

結果

  • 数値は大人の事情で伏せますが、正常に動作し、妥当な images/sec の結果となりました。

  • GPU を利用するコンテナを Rootless で動かす必要があり、Singularity と Enroot を試したのですが、Singularity はあっさりと動いてくれました。

  • Enroot は設定の問題かうまく動かせず、また別の機会にチャレンジかなというところです。

  • 今回は Singularity をソースからコンパイルしましたが、Oracle Linux の EPEL は Singularity も含まれているので、そちらを使うのもありです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0