トレンドコラム

性能検証

【後編】NVIDIA Omniverse™ Enterprise環境を構築してみよう!

2022.04.25

サービスクリエーション本部 GPUエンジニア 中島 美葵

サービスクリエーション本部
GPUエンジニア
中島 美葵

【後編】NVIDIA Omniverse™ Enterprise環境を構築してみよう!

検証項目

前編記事に続き、当社がNVIDIA Omniverse™ Enterpriseの環境を構築する際に実施した作業を紹介します。今回はいよいよNVIDIA Omniverse™ Nucleus Enterpriseサーバーの構築に着手します。

1. NVIDIA Omniverse™ Enterpriseの構成要素
2. vGPUセッティング
---前編記事で紹介---------
---後編記事はここから------
3. NVIDIA Omniverse™ Nucleusインストール
4. NVIDIA Omniverse™ Launcherインストール
5. NVIDIA Omniverse™ Create / Viewインストール
6. 考察・感想

それぞれの手順の概要はWebサイト等でも公開されていますが、初心者が構築してみた生の声として、Omniverseの導入をお考えの方のご参考になれば幸いです。

3. NVIDIA Omniverse™ Nucleusインストール

NucleusサーバーはWorkstation版とEnterprise版がありますが、今回は企業規模で複数ユーザーが利用できる環境を構築したいため、Enterprise版をインストールしました。

Nucleusサーバーのサイジングは下記の通りです。

  • 12core(3.0GHZ)以上
  • 32GB RAM
  • 250GB Storage
  • OS:任意のLinuxOS、Ubuntu18.04、20.04(推奨)
  • 最大500ユーザー接続可能(同時接続最大25ユーザ)

■Nucleusサーバー(Ubuntu)へのDocker Engineのインストール

まずはNucleusをインストールするサーバーにDocker Engineを入れておきます。

検証バージョン:Docker 18.x、Docker19.x(その他新しいバージョンはテスト未実施)

正しくパッケージ化されておらず正常に動作しない可能性があるため、ディストリビューションデフォルトのパッケージは使用しないようにしましょう。

また、FWが有効になっている場合、動作に支障をきたす可能性があるため、安定稼働が確認できるまでは、FWを一時的に無効にしておくことをお勧めいたします。(自己責任でお願いします)なお、Ubuntuではデフォルトで非アクティブになっています。

古いバージョンのアンインストール

もし古いバージョンのDockerがインストールされている場合、事前にアンインストールしておきましょう。

$ sudo apt-get remove docker docker-engine docker.io containerd runc

リポジトリのセットアップ

① Dockerリポジトリを使用してDockerのインストールを行います。
aptパッケージインデックスを更新し、パッケージをインストールして、aptがHTTPS経由でリポジトリを使用できるようにします。

$ sudo apt-get update

$ sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

② Dockerの公式GPGキーを追加します。

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

③ 下記のコマンドを実行して、stableリポジトリを設定します。

$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Docker Engineのインストール

① aptパッケージインデックスを更新し、最新バージョンのDocker Engineとコンテナをインストールするか、次の手順で特定のバージョンをインストールします。

$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

② Docker Engineの特定のバージョンをインストールするには、リポジトリに使用可能なバージョンをリストしてから、以下を選択してインストールします。

a.) リポジトリで利用可能なバージョンを一覧表示します。

$ apt-cache madison docker-ce

b.) 第2カラムのバージョン文字列を使用して特定のバージョンをインストールします。

$ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

③ hello-worldイメージを実行し、Docker Engineが正しくインストールされていることを確認します。

$ sudo docker run hello-world

■Docker Composeのインストール

Linuxでは、GitHubのComposeリポジトリリリースページからDockerComposeバイナリをダウンロードできます。

① 次のコマンドを実行し、Docker Composeをダウンロードします。

$sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

② 実行可能権限をバイナリに適用します。

$ sudo chmod +x /usr/local/bin/docker-compose

※インストール後にdocker-composeコマンドが失敗した場合はパスを確認します

③ インストールできているか確認します。バージョンが表示されていれば無事完了です!

$ docker-compose --version

■Enterprise Nucleusサーバーのセットアップ

いよいよNucleusのセットアップに入ります。Omniverseの環境構築作業のうち、最も重要な作業のひとつがNucleusサーバーのセットアップです。このNucleusサーバーを介して複数のユーザーが共通の仮想空間にアクセスし共同作業を行う、いわばOmniverseの基幹サーバーともいえるからです。
それでは、さっそく手順を確認していきましょう。

NVIDIA Licensing Portalから[SOFTWARE DOWNLOADS]を選択し、product familyを[Omniverse Enterprise]に設定します。
一覧からDockerファイルをダウンロードし、SSH接続等を利用してNucleusサーバー上に置きます。(/tmpにコピー) 当社環境ではバージョン2021.2.2をダウンロードしています。

/opt/oveディレクトリを作成し、Dockerファイルを作成したディレクトリに移動します。
ここでは、適当なテキストエディタを使用して/base_stackのnucleus-stack.envファイルに下記の通り設定を行います。

EULA設定行をコメントアウトします。

※nucleus-stack.envファイルに SECURITY_REVIEWD=1 の記載がある場合は、こちらもコメントアウトしてください。(バージョンによって異なります。)

IPアドレスまたはホストネームを設定し、下部のInstance_nameも変更します。
※NucleusサーバーへのログインIDとなります。

Nucleusサーバーログイン時のパスワードを設定し、保存します。

/opt/ove/base_stackディレクトリ上で次のコマンドを実行して秘密鍵を生成します。

$ sudo./generate-sample-insecure-secrets.sh

.envファイルと.ymlファイルで使用するDockerコンテナをPullし、実行します。

$ sudo docker-compose --env-file <.env file path> -f <.yml file path> pull
$ sudo docker-compose --env-file <.env file path> -f <.yml file path> up

※ここでエラーが発生する場合、必要なディレクトリが同一階層にない可能性があります。エラーをご確認の上、該当するフォルダやファイルを/opt/ove/に移動してください。

30~60秒程度待機し、次のコマンドを実行してコンテナが稼働していることを確認します。

$ sudo docker ps

コンテナが動いていればNucleusサーバーのセットアップは完了です。

4. NVIDIA Omniverse™ Launcherインストール

■Omniverse Launcherの起動

Omniverseアプリケーションをインストールする前に、アプリケーションやコネクタを管理するコンソールOmniverse Launcherのインストールを行います。
NVIDIA Licensing Portalから[SOFTWARE DOWNLOADS]を選択し、product familyを[Omniverse Enterprise]に設定します。
一覧からWindowsの[NVIDIA Omniverse Workstation Launcher]をダウンロードし、Omniverseアプリケーションをインストールする仮想マシン上にアップロードしてインストールを実行します。
インストール完了後にLauncherが起動すると、Omniverse Cacheのインストールが始まります。
Cacheのインストールが完了したらLauncherを再起動します。

5. NVIDIA Omniverse™ Create / Viewインストール

再起動後、言語設定等を行うと下記の画面が表示されます。[更新(Express)]でアプリケーションやコネクタのインストールができ、[ライブラリ]ではインストールしたアプリケーションやコネクタが表示されます。
[更新]でインストールしたいアプリケーションやコネクタを選択し、右上のインストールボタンからインストールできます。

今回は、3Dモデルの閲覧・コメントを行うためのアプリケーション「Omniverse VIEW」と3Dモデルの制作・編集を行うアプリケーション「Omniverse Create」をインストールしてみました。インストール時は、Launcherの右上にプログレスバーが表示されます。

インストールが完了すると下記画像のように[ライブラリ]にインストールしたアプリケーションが表示されます。Createが表示されていますね。

起動したいアプリケーションを左側タブから選択し、左上のスタートで起動できます。

■各アプリケーションとNucleusサーバーの接続

各端末でアプリケーションを起動し、Nucleusサーバーと接続することにより共通仮想空間上で共同作業、同時編集、リアルタイムコラボレーションなどが行えるようになります。

「Omniverse VIEW」アプリケーションからNucleusサーバーへの接続方法を紹介します。

Omniverse VIEWを起動するとファイルやプロジェクトの選択画面が表示されます。
[Open]を選択し、下記画像のように左側タブの[Omniverse]配下、[Add New Connection…]からNucleusサーバーのIPアドレスやサーバー名([Oputional Name])を設定できます。
ここで設定したNucleusサーバーが、左側のプルダウンメニューに表示されるようになります。
各種usdファイルなどをNucleusサーバーへ保存することで、複数端末による共同作業が実現できます。

画面表示は異なりますが、「Omniverse Create」も同様の手順でNucleusサーバーに接続できます。

以上で、Omniverseのセットアップは完了です。おつかれさまでした!

6. 考察・感想

後編で紹介した一連の作業の中で躓いた点はいくつもあり、私自身とても勉強になりました。
例えば、vGPUのエディションを正しく把握できていなかったため、Omniverse Launcherが起動しない事象がありました。また、Nucleusサーバー構築時にはDockerコンテナをpullする作業で予期せぬエラーが発生しパニックになりました。

個人的な反省ですが、次のような原因があったと考えています。
① 公式のマニュアルに記載のない細かい部分でエラーが発生した為、トラブルシュートに時間を要した
② どの手順においてどの公式ドキュメントを参照すべきか初見では把握することが難しく、作業の手戻りが発生した
③ Omniverseの全体像や、各サーバー(特にNucleusサーバー)の用途や手順(コマンド)が意味することを理解できないうちに、作業に着手してしまった

私にとって、本記事で紹介した作業のうち最も苦労したと感じている作業は、Nucleusサーバーの構築でした。構築作業にあたって重要となる事項やエラー等については、各手順に注意書きや解決法として記載することで、チームの他のメンバーが作業を実施した際にもスムーズに構築できるように、再発防止に務めました。

このように様々なエラーに見舞われましたが、トライアンドエラーを繰り返すことで未経験の自分でも乗り越えることができました。本検証環境の構築作業を通して、自分なりにスキルアップを感じていますので、この経験を今後の業務に活かしていきたいと思います。

また、前編記事の冒頭に記載した通りではありますがOmniverseを実際に使用してみて、やはり拠点の異なる複数の端末の異なるアプリケーションから同時にデータにアクセスでき、共同作業できる点が優れていると感じました。さらに日照シミュレーションでは北欧地域の白夜が忠実に再現されているのも興味深かったです。これはGPU、物理演算の凄さかもしれませんが…
ぜひみなさんも実際にOmniverseを操作し、その素晴らしさを体験してくださればと思います。

前編後編と2回に分けてOmniverseの検証環境構築方法を紹介してきました。
今後新たなアップデートがあれば随時更新していく予定です。みなさまのご参考になれば幸いです。