現在位置:

コンテナ技術を使う「Singularity」のインストール 

「Singularity」は、HPC 計算に特化したコンテナ技術

 

前回のブログで、「Docker」と「Singularity」の違いを簡単にご説明しました。「Docker」で GPU を扱う場合、(Linux イメージ + NVIDIA ドライバのインストール + CUDA )もしくは、(NVIDIA ドライバと CUDA が導入されている Linux イメージ)が必要です。それに対して「Singularity」では、Linux イメージだけで動かす事ができます。



 

NGC(NNIDIA GPU Cloud)は、「Docker」のイメージが提供されていますので、「Singularity」で使用する場合は「Singularity」専用にビルドして使用します。ビルド方法は こちら を参照ください

今回のテストでは、弊社の製造開発部隊に協力してもらいました。さまざまなアプリやシステムを構築する場合、一つ一つの作業を人力でやっているとすごく時間がかかってしまいます。そこで弊社では、工場の製造スタッフが実際にインストール作業を行う時間を短縮させるため、製造開発部隊がさまざまなスクリプトを作成して、インストールの自動化を行っています。

 

「Singularity」の構築には、事前準備が必須です。

「Singularity」のインストール自体は、 公式ホームページ に記載されていて、さほど難しい作業ではありません。

「Singularity」の公式ホームページでは、CentOSやRedhatを基本としたインストール手順が記載されていますが、弊社ではディープラーニングでよく利用される Ubuntu に「Singularity」をセットアップしているため、事前にいくつかのパッケージをインストールしておく必要があります。

たとえば、「build-essential」「libssl-dev」「uuid-dev」などのパッケージで、そのほかにもいくつかのパッケージと、とある言語のセットアップが必要です。

パッケージのインストールができたら、いよいよ「Singularity」のインストールです。

VERSION=2.5.2
wget https://github.com/singularityware/singularity/releases/download/$VERSION/singularity-$VERSION.tar.gz
tar xvf singularity-$VERSION.tar.gz
cd singularity-$VERSION
./configure --prefix=/usr/local
make
sudo make install

インストールは、たったこれだけのコードなので、まったく難しくもないのですが、事前に必要なパッケージを把握しておくことが大事ですね。必要なパッケージを公開したいところですが、皆さんぜひチャレンジしてみてください!(ちなみに、左の写真は弊社のスクリプトコードです。赤線のところは秘密にさせてください!)

「Singularity」を使用して NGC_Docker イメージを使用するには

実際にSingularityを使用して NGC_Docker イメージを使用したいと思います。まず、Docker イメージをビルドして Singularity 用に変換します。今回は NGC の TensorFlow を使用います。

singularity build nvcr.io_nvidia_tensorflow_20.02.sif docker://nvcr.io/nvidia/tensorflow:20.02-tf1-py3

変換するとホームディレクトリ又はビルドコマンドを実行したディレクトリにイメージが作成されます。

それでは変換した Singularity イメージを実行します。GPUを使用する場合、オプションは「--nv」を使用します。このオプションを付けいないとGPUを使用して計算ができません。下記のコマンドでビルドしたイメージを動かします。

singularity run --nv nvcr.io_nvidia_tensorflow_20.02.sif

TensorFlow が実行できました。サンプルを動かしてみます。・・・よくメッセージを見ると GPU が認識できていないので計算がすごく遅いです。

これで動くはずですが・・・さて困りました。

いろいろ調べていくと、事前にあるコマンドを実行しないと GPU を完全に認識してくれないようです。

あるコマンドを実行して、再度 Singularity で実行します。今度は GPU も認識されましたので、計算もすごく早いです

最後に!!弊社の工場をご紹介します。

弊社では、ディープラーニング・モデルをはじめとする HPC (ハイパフォーマンス・コンピューティング)製品を、すべて国内(福岡市)にある自社工場で生産しています。

高い性能と耐久性を求められる HPC 製品はもちろんのこと、一般事務などで利用される BTO パソコンについても、お客様が安心してご利用いただけるように、企画から検証、製造までを一貫して行っています。

HPC 製品の製造・設定は、自社工場の HPC 専門スタッフが担当しており、いづれも熟練エンジニアです。製造現場と企画・開発スタッフが同じ建屋に在籍することで、品質向上のためのフィードバックや製品開発のスピードにも重点を置いています。また、となりの建屋には、修理部門スタッフが在籍しており、部門間を超えた連携体制を整えています。