INVRSION | ソフトウェア開発

「インストールが終われば、IncrediBuildがバックグラウンドで動作していることを意識することはありません。目に見えない形でサポートしてくれています。実際に管理する必要はありません」

inVRsion、CTO Michele Antolini氏

 

 

inVRsionはイタリアを拠点とするスタートアップで、リテール業界向けにVR用SaaSを提供しています。SaaSベースの独自技術により消費財 (CPG) メーカーは小売スペース、ショールーム、製品、ショッピング体験をシュミレーションできます。このようなVRサービスは、トレードマーケティングの交渉、ショッパーリサーチ、トレーニングなどB2Bだけでなく、VReコマースのようなB2Cもサポートしています。inVRsionのSaaSベースのソリューションであるShelfZone®は、アクセンチュア、ネスレ、DIESEL、ペプシコをはじめとする大手グローバル小売メーカーから大きな信頼を得ています。

 

チャレンジ

「当社のSaaSは、膨大な自動化とスクリプトを使用して仮想店舗の店レイアウトや商品配置のデータをすべて取得しています。ユーザーはスクリプトのジョブが終了するまで長い時間待たなければなりませんでした」(Michele Antolini氏 (PhD))。

これらのスクリプトは、ユーザーの店舗デザインを完全なUnreal Engineプロジェクトに自動的に変換するものです。 そのようなプロジェクトを自動的にデータ駆動型で作成するには、膨大なAWSの演算リソース (特にC++コードやシェーダーのコンパイル、ライティング) が必要で、自動化の中でも演算負荷が高く、複数のコア間で高度に並列化された自動化の一部です。

Unreal Editor上の膨大な自動ビルドに依存しているinVRsionの自動化処理にはGPU搭載マシンが必要です。複数のマシンに分散する手立てもなく、ワークロード処理のためにたくさんのCPUが必要だったため、inVRsionは高性能GPUを搭載したg3.8xlargeマシンをオンデマンドベースで使用することにしました。

  1. 長い予約時間 – inVRsionのスクリプトはg3.8xlargeを予約することから始まります。このインスタンスが使えない場合は、性能の低いマシン (g3.4xlarge) が予約されます。地域的に32コアのマシンが不足していたため、このオプションを選択すると、計算資源の半分が利用可能なのに処理が終わるまで待たなければならないことがありました。「通常g3.8xlargeマシンは2〜3時間で再利用できるようになります。新型コロナのロックダウン中は、このタイプの単一のEC2インスタンスを割り当てるのに最長3日かかりました。つまり、適正なスピードで処理を開始するためだけに一定時間待たなければならなかったのです」(Antolini氏)
  2. スローな実行速度 – すべてのC++とUnreal Engineのワークロードを1つのインスタンスで実行すると、メモリとCPUを目一杯消費して1回のシミュレーションで146分もかかりました。g3.4xlarge (ダウングレードが必要な場合) では平均で194分 (+30%) かかりました。勤務時間で実行できるイテレーションの数には制限があるため、コストと収益の両方に影響がありました。
  3. 高額なAWS – 処理に時間がかかる上にEC2タイプも高額なため、シミュレーションには莫大なコストがかかります。

新型コロナのロックダウン中は、このタイプの単一のEC2インスタンスを割り当てるのに最長3日かかりました。つまり、適正なスピードで処理を開始するためだけに一定時間待たなければならなかったのです
Michele Antolini氏

 

ソリューション

ボトルネックの解消

inVRsionではボトルネック (つまりg3.8xlargeマシン) の解消に躍起になっていました。あまりにも高額で、可用性が低く、しかもワークロードを処理するには遅すぎます。

Unreal EngineのGPU要件は、実際のコンパイル処理ではなく処理開始時のみ要求されるため、1台のマシンで完結していたアーキテクチャを複数台のマシンに分割する必要がありました。GPU搭載マシンで処理を開始して、GPU非搭載マシンが実際の処理を行うのです。

処理の開始と実行を異なるマシンで行うには?

複数のマシンに対して同時に処理を分散するには?

2014年からコードビルドとCIパイプラインの高速化にIncrediBuildを使用していたinVRsionは、同じ技術を使ってGPUのボトルネックを解消することにしました。

週末の間にインストールとさまざまなEC2設定を試した結果、シミュレーションのC++コードのビルドとUnreal Engineのシェーダーコンパイルをg3マシンから切り離し、IncrediBuildを使って他の「ヘルパー」マシンに分散することにしました。

GPUは処理の開始時しか必要でなくなったので、ビルドを「開始する」マシンは、以前に比べて50%もリーズナブルなg3.4xlargeにダウングレードできました。もちろん可用性の問題もありません。

ボトルネックは解消されたのです。

IncrediBuildはコードの並列化とシェーダーのコンパイルに必須でした。g3.4xlargeインスタンスで使用可能なCPU (g3.8xlargeよりも少ない) を補うために、ライティングビルド (ライトマスCPU処理のためのSWARM Agent) ではマシンを追加する必要があります。さもなければライティング処理の遅さがメリットを食い尽くしてしまうでしょう。

 

単一ジョブから並列ジョブへ

次にワークロードを分散するヘルパーマシンの構築に移りました。複数のc5.xlマシンを同時に使用する方が1台の高性能スーパーコンピューターに頼るよりも可用性と費用対効果が高くなるはずです。また、余分なインスタンスは状況に応じて自動的にスピンアップ/ダウンされるので不要なコストを削減できます。

IncrediBuildとUnreal EngineやC++ビルドツールとのネイティブ統合により、複数のマシンにシームレスかつ並列に演算処理を分散できます。 IncrediBuildで安価なマシンを使用することで、当初の設定に比べて2倍の数のCPUを用意できました。ほぼゼロの予約時間、納得のいく処理速度、コスト削減。inVRsionはついに求めていた場所にたどり着くことができたのです。
 

直線的なコスト増なしでスケールアップに備える

IncrediBuildなら (IT管理の観点から) AWSとのネイティブな統合により、IT関連の手間を増やすことなく容易にスケールアップできます。「インストールが終われば、IncrediBuildがバックグラウンドで動作していることを意識することはありません。目に見えない形でサポートしてくれています。実際に管理する必要はありません」
IncrediBuildによるEC2スピンアップ/ダウンの自動化メカニズムとプロジェクト間でのインスタンス共有機能により、CPUパワーを無駄にしません。また、自動的にスポットインスタンスを利用することで、コストをさらに削減してROIを向上できます。
 

結果

一連のテストを実施して、上記の問題すべてが解決したことを確認してから、IncrediBuildを導入した新規設定は本番環境に移行し、現在は同社のSaaSインフラの一部として動作しています。
結果は数字ではっきりと表れています。

 KPI  導入前  導入後  結果
シミュレーション1回あたりの費用 € 9.72 € 5,05 48%のコスト削減
自動テスト実行時間 2h26m 2h04m 16%高速化
EC2の予約時間 2~3時間 なし 待機時間の100%解消

 

IncrediBuildはAWSアドバンスド テクノロジー パートナーズです。

IncrediBuildはAWS Partner Network (APN) プログラムを通じて、Amazon Web Services (AWS) のAWSアドバンスド テクノロジー パートナーズに認定されました。IncrediBuildはAWSにシームレスに統合されており、ワークロード処理の高速化、コストの最適化を実現します。