1. はじめに
NVIDIA Isaac Simは, NVIDIA Omniverseプラットフォーム上で構築された, 物理演算エンジンを搭載したロボティクスシミュレーションプラットフォームです。本記事では、クラウド環境での動作検証として、AWS上にIsaac Simの開発環境を構築する手順を詳細に解説します。
NVIDIAのGPUドライバーがインストール済みのAMIもありますが、今回はNVIDIAのGPUドライバーのインストールも手動でインストールしてみます。
2. ISaac Simのシステム要件の確認
公式ドキュメントに記載されている要件は次の通りです。GPUは、Ampereアーキテクチャ以降の世代がサポートされています。
Element | Minimum Spec | Good | Ideal |
---|---|---|---|
OS | Ubuntu 20.04/22.04, Windows 10/11 | Ubuntu 20.04/22.04, Windows 10/11 | Ubuntu 20.04/22.04, Windows 10/11 |
CPU | Intel Core i7 (7th Generation), AMD Ryzen 5 | Intel Core i7 (9th Generation), AMD Ryzen 7 | Intel Core i9, X-series or higher, AMD Ryzen 9, Threadripper or higher |
Cores | 4 | 8 | 16 |
RAM | 32GB [1] | 64GB [1] | 64GB [1] |
Storage | 50GB SSD | 500GB SSD | 1TB NVMe SSD |
GPU | GeForce RTX 3070 | GeForce RTX 4080 | RTX Ada 6000 |
VRAM | 8GB [1] [2] | 16GB | 48GB |
3.AWSインスタンスの選定
Isaac Simが動きそうなGPUを利用可能かつ、 CPU/メモリのスペックがIsaac Simの要件に近いインスタンスは以下の通りです。
g6eは利用料が高額というのと、ISaac SimはCPUリソースを多く消費するため, CPU数が4では力不足と思われたため、g5.2xlargeをチョイスしました。
インスタンスサイズ | GPU | VRAM | CPU | メモリ(GB) | オンデマンド料金/時間(東京リージョン) |
---|---|---|---|---|---|
g5.xlarge | A10G x 1 | 24 | 4 | 16 | 1.643 USD |
g5.2xlarge | A10G x 1 | 24 | 8 | 32 | 2.12576 USD |
g5.4xlarge | A10G x 1 | 24 | 16 | 64 | 3.09128 USD |
g6e.xlarge | L40s x 1 | 48 | 4 | 32 | 2.883 USD |
g6e.2xlarge | L40s x 1 | 48 | 8 | 64 | 3.61968 USD |
g6e.4xlarge | L40s x 1 | 48 | 16 | 128 | 5.09303 USD |
4. クォータの引き上げ申請を行う
AWSのデフォルトの状態では, GシリーズインスタンスはクォータのvCPU上限が0となっており、Gシリーズのインスタンスは起動できません。上限が0の状態で、インスタンスの起動を試みると、次のメッセージが表示されます。
インスタンスを起動できませんでした
You have requested more vCPU capacity than your current vCPU limit of 0 allows for the instance bucket that the specified instance type belongs to. Please visit http://aws.amazon.com/contact-us/ec2-request to request an adjustment to this limit.
このため、サービスクォータの引き上げ申請が必要になります。
今回は, g5.2xlargeを最大2台起動できるように16を指定して申請を行いました。
申請から3時間ほどでクォータ引き上げ申請が承認されました。
ただし、個人ユースのためか,、16個のvCPUは承認されず、8個のvCPUのみが承認されました。
5. GPUインスタンス(g5.2xlarge)を起動する
東京リージョンでg5.2xlargeを起動します。設定は以下としました。
- OS:Windows Server 2022
- インスタンスタイプ:g5.2xlarge
- ストレージ:80GB(デフォルト30GBでは不足)
- セキュリティグループ:RDP接続許可
※ ルートボリュームのサイズですが、デフォルトの30GBではディスク容量不足で、GPUのドライバのインストールが失敗したため、80GBに増量しました。(キャンプがとれていなかったため、 キャプチャは30GBのままです。)
6. GPUドライバのインストール
EC2インスタンス起動後のデフォルト状態では、GPUドライバはインストールされていません。このため、手動でインストールが必要となります。
Amazon EC2 インスタンス用の NVIDIA ドライバーを見ると, ドライバーのインストールには複数のオプションが用意されています。
- オプション 1: NVIDIA ドライバーがインストールされた AMI
- オプション 2: パブリック NVIDIA ドライバー
- オプション 3: GRID ドライバー (G6、Gr6、G6e、G5、G4dn、および G3 インスタンス)
- オプション 4: NVIDIA ゲームドライバー (G5 および G4dn インスタンス)
今回は、オプション3のGRIDドライバーのインストールをチョイスしました。
ユーザーまたはロールは、[AmazonS3ReadOnlyAccess] ポリシーを含む許可を持っている必要があります。
GRID ドライバーのインストールに際しては、EC2に[AmazonS3ReadOnlyAccess] ポリシーを含むロールを割り当てる必要があります。 EC2用に[AmazonS3ReadOnlyAccess]を持ったロールを作成し, EC2インスタンスに割り当てます。
Amazon EC2 インスタンス用の NVIDIA ドライバーに記載されているPowerShellスクリプトを実行し、最新版ドライバを取得します。
$Bucket = "ec2-windows-nvidia-drivers"
$KeyPrefix = "latest"
$LocalPath = "$home\Desktop\NVIDIA"
$Objects = Get-S3Object -BucketName $Bucket -KeyPrefix $KeyPrefix -Region us-east-1
foreach ($Object in $Objects) {
$LocalFileName = $Object.Key
if ($LocalFileName -ne '' -and $Object.Size -ne 0) {
$LocalFilePath = Join-Path $LocalPath $LocalFileName
Copy-S3Object -BucketName $Bucket -Key $Object.Key -LocalFile $LocalFilePath -Region us-east-1
}
}
ダウンロードが完了すると、デスクトップにドライバーのインストーラーが配置されるので、インストーラーを実行し、ドライバーをインストールします。インストール完了後, nvidia-smiコマンドを実行すると以下のような出力が得られます。バージョン572.83がインストールされました。
Isaac Sim Driver Requirementsによると、推奨ドライバは537となっており、インストールしたドライバと異なりますが、おそらく動くだろうということでこのまま行きました。
7. ISaac Simを起動する
isaacsim-app-templateをクローンして、ビルドして起動します。
git clone https://github.com/isaac-sim/isaacsim-app-template.git
cd isaacsim-app-template
.\repo.bat build
.\_build\windows-x86_64\release\isaacsim.exp.full.kit.bat
初回起動時は、何かのコンパイル処理を行っているのか、CPUの使用率が100%に張り付き、画面の操作ができなくなるが、しばらく待っているとCPUの使用率が落ち着き操作できるようになります。
PhysXのサンプルも問題なく動作しました。
8. ISaac Simをブラウザでストリーミング表示する
ISaac Simは, 公式にはサポートしていないようですがAppStreamerを使って、ブラウザでのストリーミング表示が可能です。
補足:
NVIDIA Omniverseのkit-app-templateは, AppStreamerを使った ブラウザでのストリーミング表示はサポートされていますが、なぜかisaacsim-app-templateでは, サポートされていません。ただ、サポートされいないだけで動作するようです。
ISaac Simをストリーミングモードで起動します。
.\_build\windows-x86_64\release\isaacsim.exp.full.streaming.kit.bat
次にweb-viewer-sampleを起動します。web-viewer-sampleはNVIDIA提供のAppStreamerを使ったストリーミング表示のサンプル実装です。これを使用することで簡単にISaac Simの画面をブラウザでストリーミング表示できます。
git clone https://github.com/NVIDIA-Omniverse/web-viewer-sample.git
cd web-viewer-sample
npm install
npm run dev
※別途Node.jsの最新版を[Node.js](https://nodejs.org/ja/download)からダウンロードしてインストールした。
web-viewer-sampleの起動に成功すると、次の画面が表示されます。
上記のコンソール中に出力されているURLにブラウザでアクセスし、「UI for any streaming app」を選択してNextボタンを押します。
すると、ブラウザでISaac Simの画面が表示されます。
9. まとめ
AWS g5.2xlargeインスタンス(Windows)でIsaac Simの基本動作を確認できました。次回は、UbuntuでのISaac Simの基本動作を確認したいと思います。