AWS Deadline Cloudを利用してクラウドレンダリングしてみた
こんにちは、ゲームソリューション部の出村です。
先日AWS Deadline Cloudがリリースされましたが、このエントリーではAWS Deadline Cloudでレンダーファームを構築していきます。
その前に、AWS Deadline Cloudで環境構築する場合、SMFとCMFの2つの手法があります。まずそれらから解説します。
SMF(service-managed fleet)とCMF(customer-managed fleet)
AWS Deadline Cloudの構築手法には、SMF(service-managed fleet)とCMF(customer-managed fleet)の2つがあります。違いはSMFはAWSサービスのみを利用した環境構築を想定しています。CMFは、deadlineCloudとオンプレミス環境など既存環境を組み合わせた環境構築を想定しています。
本エントリーはSMFを前提に環境構築をしていきます。
検証環境
今回は以下のクライアント環境を想定しています。AWSは東京リージョンを利用しています。
- Ubuntu 22.04 LTS
- Blender 3.6 LTS
AWS Deadline Cloudは、さまざまなPC環境(Windows、Linux、Mac)やDCCツールに対応しており、設定の流れについては大きな違いはありません。そのため、他環境を構築する際にも本エントリーは参考となるでしょう。
環境構築手順
SMFでの環境構築を進めていきます。
環境構築の流れは、大まかには以下の通りです。
- 【AWSサイド】Deadline Cloudの設定
- 【クライアントサイド】サブミッターのインストールと設定
- 【クライアントサイド】Deadline Cloudモニターのインストールと設定
- 【クライアントサイド】DCCツールへのプラグイン(サブミッター)インストールと設定
SMFにおける処理の流れ
環境設定を進める前に、SMFではどのような流れでレンダリングが行われるのか解説します。この流れを理解しておくことで、今後説明する設定項目が何の意味を持っているのか理解しやすくなるでしょう。
クラウドレンダリングが行われる際、DCCツールで作成されたデータは、DCCツールのサブミッターを通してS3へデータがアップロードされます。その後、Deadline Cloudに用意されたFleetを通してクラウドレンダリングがお粉荒れます。Fleetでは複数台のEC2起動が指定できますので分散レンダリングが実現できます。
分散レンダリングされた結果はS3に格納され、最終的に1つにまとめられレンダリング後のデータとなります。
AWS Deadline Cloudの設定
さっそAWS Deadline Cloudの設定をはじめていきましょう。
まず、AWS Deadline Cloudのマネージドコンソールから開始します。
Deadline Cloudによるレンダリング実行状況の監視ができるDeadline cloudモニターの設定をします。 判別しやすい名前を英数字でつけてください。
次にファームの設定を行います。ファームとはフリート(レンダリングの実行環境)とキュー(レンダリングの実行内容)をまとめたものをさします。
ファーム名と共にファームにアクセスできるユーザを作成します。最低1人、管理者が必要です。権限は複数用意されていますので、ユーザーの利用目的に応じてさまざまな権限をユーザーに割り当てられます。なおユーザーはIAM Identity Centerにて管理されます。
次にキューを設定します。新規に設定する場合はデフォルトの設定のまま進めて問題ありません。
覚えておくと良いのはDeadline Cloudでの予算管理についてここで指定できる点です。ジョブ単位で予算管理をする・しないが指定できます。
つぎにフリートの定義をします。利用するフリートで起動するインスタンスの種類、台数、スペックが指定できます(これらは後でも変更できます)。
これらの設定が終了すると、最後に設定した内容の一覧が表示されます。内容を確認した上でCreate farmボタンを押下すると環境構築が実行されます。
ユーザーの有効化
先ほど指定ユーザーを有効化します。
作成したユーザーはIAM Identity Centerにてユーザー管理されています。書かれている指示に従って、Eメール検証リンクの送信、パスワードのリセットを行い、ユーザーを有効化します。
ストレージプロファイルの設定
自動的に設定されなかったストレージプロファイルを手動で設定します。この設定はAWS Deadline Cloudを利用するにあたって必須の設定なので忘れず設定しましょう。
設定項目で重要な点は以下の2点です。
- ストレージタイプはLocal
- 自分が入力した「ファイルシステムの場所のパス」を後でクライアント環境に作成すること
“システムファイルの場所のパス”は、「作業用PCにて、クラウドレンダリングさせたいデータを置くディレクトリ」を意味します。そのため、存在しない場合はあらかじめ作成しておかなければなりません。
AWS Deadline Cloudにてレンダリングさせるデータは、この「ファイルシステムの場所のパス」配下に配置されていなければなりません。
設定が完了すると、次の画面となります。
つぎに、キューに対して先に指定したストレージプロファイルを指定します。Allowed storage profilesに先ほどのストレージを割り当てられている状況にします。これにより、キューがどのストレージプロファイルを参照して実行するか決まります。
設定後は、以下の画面のようになります。なお、キューにはストレージプロファイルの指定が必須です。
ここまででAWS側の設定が終わりました。
クライアントの設定
クライアント(Ubuntu環境)の設定を進めていきます。既にBlender 3.6がインストール済みであるものとして解説していきます。
Deadline Cloudを利用する際、クライアントに設定するのは次の2つです。
- Deadline Cloudのサブミッター
- Deadline Cloudモニター
では、これらの設定を進めていきます。
ソフトウェアのダウンロード
これらのソフトウェアをDeadline Cloudのリソースのダウンロードからダウンロードします。
ダウンロードするのは次の2つです。
- deadline-cloud-monitor_1.1.1_amd64.deb
- DeadlineCloudSubmitter-2024.05.08.0-linux-x64-installer.run
どちらからインストールしても問題ないのですが、今回はDeadline Cloudモニターから先にインストールします。
$ sudo apt install ./deadline-cloud-monitor_1.1.1_amd64.deb
インストール終了後、Deadline Cloudモニターを起動します。
$ deadline-cloud-monitor
最初はモニター対象を指定しなければなりませんので、内容に従って設定を進めます。
設定終了後は、アカウントでのログインとなります。先ほど作成したアカウントでログインします。MFAの設定が要求される場合は、その設定もおこないます。
ログインすると、ファームがモニターできるようになっています。
ファイルを配置するディレクトリを作成
クラウドレンダリング対象となるディレクトリを置くフォルダを作成します。先ほどは/mnt/deadlineを指定しました。そのディレクトリはまだ存在しないので作成します。
$ sudo mkdir /mnt/deadline $ sudo chmod 777 /mnt/deadline
サブミッターをインストール
つぎにDCCツール(今回はBlender)に対してDeadline Cloudのサブミッターをインストールします。先にダウンロードしたサブミッターが対応しているDCCツールは次の通りです。これらのツール以外は開発状況がDeadline CloudのGitHubアカウントで知ることができます。
- Maya 2024
- Nuke 14.0 - 15.0
- Houdini 19.5
- Blender 3.6
インストールは以下のように行います。
$ chmod +x ./DeadlineCloudSubmitter-2024.05.08.0-linux-x64-installer.run $ ./DeadlineCloudSubmitter-2024.05.08.0-linux-x64-installer.run
実行するとインストーラーが起動します。表示される設定項目はデフォルトのままで問題ありません。最後のSelect Componentは、利用するDCCツールを指定してください。
Blenderのサブミッターの設定
つぎにサブミッターを設定します。
Blenderのメニューより"Edit" > "Preferences" を選択し、開いたウィンドウより"File Paths" > "Script Directories"に対して以下のパスを設定します(【username】は各自のIDを指定してください)。
なお、以下のパスは、先ほどのサブミッターのインストール時にデフォルトで指定されているパスです。それ以外の場所を選択した場合は、適宜書き換えてください。
/home/【username】/DeadlineCloudSubmitter/Submitters/Blender/python
設定後の様子は次の通りです
次にサブミッターを有効化します。Preferences > Add-onsに「Render : Deadline Cloud for Blender」の項目があるので、左側のチェックボックスへチェックをいれます。チェックを入れる際にエラーとなる場合もあります。その場合は、いったんBlenderを再起動してください。
blenderのデータを移動させる
Deadline Cloudでレンダリングしたいデータを先ほど作成した/mnt/deadlineフォルダ配下に置いておきます。
$ mv samplerenderingdata.blender /mnt/deadline
その後、ファイルをBlenderで開きます。
サブミッターの設定
先ほどのAdd-onが有効化されると、Blenderのメニューにある Render > Submit to Deadline Cloudが表示されますので、それを押下します。
するとサブミットに関する項目が書かれたウィンドウが表示されます。ただ、初回起動時は設定が必要なので、それを行います。
ウィンドウの下部にあるSettingsボタンを押下するとAWS Deadline Cloud workstation configurationが開きます。
ここで、これまで作成してきたDefault farm、Default Queue、Default storage profileの各項目に対して、これまで作成した環境を指定します。
これらの項目は、最初は"none selected"が選択されていますがプルダウンメニューを開くと先に作成した各種設定が選択できるので、それを指定します。
この段階で"none selected"以外に選択肢が表示されない場合は設定が不十分です。設定内容を再度見直しましょう。
Settingsの内容が一通りると次のように"none selected"の箇所がなくなります。そして、Applyを押下して確定させます。
クラウドレンダリング開始
これでようやくサブミットして、クラウドレンダリングができるようになります。Submitボタンを押下すると、手元のBlenderファイルがS3へ転送され、準備が整い次第、レンダリングが始まります。
レンダリング対象のデータが初めてDeadline Cloudにてレンダリングが行われるデータであれば、データを転送する旨のメッセージが表示されます。同じデータを再度レンダリングする場合、データ転送は行われません。
レンダリングの様子をモニターする
レンダリングが行われているかDeadline Cloud Monitorで確認します。ジョブモニターをみると、このように1回のレンダリングが複数のタスクに分割されているのがわかります。このタスクを異なるレンダリングマシン(EC2)に割り当てることで、分散レンダリングが行われます。
実際にレンダリングが行われるEC2がどのインスタンスを利用しているのか、稼働状況がどうなのか?についてもみることができます。
今回は、vCPU 2のインスタンスを確保するように指定したので、*.largeインスタンスが取得されています。
レンダリング結果の取得
そしてレンダリングの取得はジョブを指定して行います。
レンダリング結果を取得したいジョブを右クリックすると「Download output」という項目がありますので、それを選択することで取得することができます。
まとめ
このように、Deadline Thinkboxを利用していた時と異なり、すべての設定がブラウザから行える様になりました。Thinkbox Deadlineの頃より、より一歩クラウドレンダリングが手軽にできるようになりましたので、レンダリング時間が長くて困っている場合は1度試してみるとよいでしょう。