AWS SimSpace Weaver大規模空間シミュレーション #reinvent #CMP332
せーのでございます。
このブログでは2022/11/28(現地)より行われておりますAWS最大のカンファレンス「re:Invent 2022」よりセッション
Introducing AWS SimSpace Weaver for large-scale spatial simulation
の様子をレポートいたします。
レポート
- AWS SimSpace Weaverとは ⇒ 空間シミュレーションを新しいレベルのスケールと複雑さで利用できるように設計された最初のシミュレーションサービス
- 数百万の動的オブジェクトをして、クラウド内の複数のインスタンスに渡って動的な仮想世界を作成できる
- Unreal Engine5ややUnityでも動作できる
シミュレーションの基本
- 車が坂を下りるように時間の経過に伴うモデルの進化。傾斜面を転がり落ちるに連れてその一と速度が変化する。これは物理学
- 他にも流体力学、天気、構造など
- 空間シミュレーションはこれらと少し違い、オブジェクトを時間と場所で正しくモデル化している
大規模なシミュレーション
- シミュレーションの内容をEC2にデプロイするとだいたい10万個のエンティティが作成できる
- EC2をスケールアップさせると20万個
- 再試行すると40万個
- どこかでインスタンスサイズが足りなくなる
- 別のインスタンスを足す場合どのように作ればよいのか
- SimSpace Weaverを使えば10個のインスタンスにシームレスなシミュレーション環境を作成できる
- SimSpace Weaverはインフラなのでそこに載せるロジックをどのエンジンで書くかは別。UE5でもUnityでもOK
SimSpaceWeaver app SDK
- C++ で書かれている
- これをシミュレーションコードを統合することで、SimSpace Weaver自体は構築できる
- appの種類
- Spatial apps(データとエンティティの状態を読み書きする)
- custom apps(自分で作ったシミュレーションと連携する ため)
Weaverのやること
- 空間シミュレーションを取得
- 空間パーティションに分割
- それぞれのパーティションにコンピューティングリソースを注入
- 見た目は単一のように動く
- シミュレーションはダイナミックなので車はどの空間にでも走っていける
- その際空間パーティションを横断する
- 同じようにインスタンス間もシームレスに横断できる
サブスクリプション
- 任意の空間領域をサブスクリプションとして指定できる
- 指定したサブスクリプションはクライアントにカスタムアプリを通じて読み込ませることができる
- それにより可視化、ビジュアライゼーションが表示できるようになる
- サブスクリプションは空間をまたぐように切ると、境界を超えたときにインタラクティビティが生まれる
時刻の同期
- アプリケーションには常に1つのクロックがあり、シミュレーションを複数のインスタンスやパーティションに分割するとすぐに、予測可能な量とレートで常に移動する。
- 例えば相手が自分より5秒遅れていて、その相手にペットボトルを投げた場合、相手は受け取れない。これはパラドックスです。
- 分散しているサーバーがいくつになろうが時刻を同期させる機能がある。
SimSpace Weaver Local
- 今日は非常に頑丈なAlienwareのラップトップで16のパーティションを使用し、ローカルモードでシミュレーションを実行していた
- app SDKと連携しクラウドと同じAPIが動作する。クラウドにあげる準備ができたらアップロードするだけでいい。
3D Engine plugins
- 今までは3D空間の開発は3Dエンジンに依存する部分が多かった
- お客様はSimSpace Weaverと3Dエンジンが連携してほしいと思っている
- プレビューでUnreal EngineとUnityのプラグインを用意した。これでコーディングの時間が短縮される
価格
- 使用したいインスタンスの数に応じてEC2(sim.c5.24xlarge: $6.08 per hour per instance)
まとめ
SimSpace Weaverの入門セッションでした。ひとまずはSimSpace Weaver Localで動きを試してみて、いい感じであればクラウドにアップロードして大空間を試してみる、というのがいいようですね。