OpenCue を使用した GCP でのレンダー ファームの作成

ロボットダンス パーティー

このチュートリアルでは、Google Cloud を使用して OpenCue レンダリング管理システムを Linux 仮想マシン(VM)にデプロイする方法について説明します。チュートリアルを完了するには 3~4 時間かかります。

レンダリング管理ツールは、視覚効果やアニメーション制作で使用します。複雑なジョブを個々のタスクに分割し、その処理を広範囲のコンピューティング リソースに分散できます。このツール群は、ジョブを管理するために使用します。ジョブには、3D レンダリング、2D 合成、データのフォーマット間のトランスコード、データベースに対するアセットのチェックインとチェックアウトなどがあります。ジョブの各段階と依存関係を紐付けるためによく使用されます。大規模な施設では、レンダリング管理システムは何千ものジョブを同時にサポートできます。ジョブの各段階へのリソース割り当て、ログ管理、ツールのトラブルシューティング、リソース管理のためのインターフェースを提供します。

Google は OpenCue を Sony Pictures Imageworks と共同でリリースしました。OpenCue は、Linux と macOS 上で動作する、豊富な運用実績をもつオープンソースのレンダリング管理システムです。オンプレミスのレンダー ファームの構築にも、複数クラウド プロバイダのリソースを活用した非常に大規模なハイブリッド デプロイにも使用されています。

このチュートリアルは、以下のツールとコンセプトに精通した IT 管理者やパイプライン テクニカル ディレクターを対象としています。ただし、このリストのすべてに精通したエキスパートでなくとも理解できるよう、参考になる他のリソースを示してあります。

  • 分散レンダリング管理の動作原理。
  • Git と GitHub。
  • コンテナを作成して実行するための Docker。
  • スクリプトの編集やリソースの実行のための bash スクリプト記述。
  • Python の構成とスクリプトの編集。
  • Cloud SQL、Compute Engine、Cloud Storage、Container Registry などの Google Cloud リソース管理の基本ツールとコンセプト。

レンダリング管理ツールはさまざまなユースケースをカバーし、広範なリソースのオーケストレーションが可能なため、多様な方法でレンダー ファームを構成できます。しかし、このチュートリアルでは、OpenCue をできるだけ早く起動して実行するために、1 つの構成に焦点を絞ります。レンダー ファームに最適なアーキテクチャを作成するには、手順の変更、ワークフローのパフォーマンスのプロファイリング、Google Cloud リソースタイプの交換が必要な場合があります。Google Cloud でレンダー ファームを設定および管理するためのオプションの詳細については、ハイブリッド レンダー ファームの構築をご覧ください。また、データ保護に関する詳細については、レンダリング ワークロードのセキュリティ保護をご覧ください。

目標

  • Docker と Python を使用し、OpenCue モジュールをインストールして構成します。
  • OpenCue データベースを作成し、スキーマとサンプルデータを使用してデータを入力します。
  • Cloud Storage リソースを作成し、チュートリアルのアニメーション シーンファイルを追加します。
  • Docker イメージをローカルに構成して作成します。それらを Container Registry に保存し、コンテナを使用して Compute Engine リソースを起動します。
  • インスタンス テンプレートとマネージド インスタンス グループを作成し、コンピューティング リソースの効率的なスケーリングを実現します。
  • OpenCue のインターフェースをオンプレミスで実行するように、ワークステーションを構成します。
  • OpenCue のインターフェースを使用して、アニメーション シーケンスのレンダリングとジョブ管理状況の確認を行います。

費用

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを出すことができます。

このチュートリアルでは、マシン数やサイジングに厳しい制約があるなかで、正しく機能するレンダー ファームを構築するための手順をすべて説明します。Google Cloud の無料枠の料金設定ガイドラインの範囲に収まるよう、2 つの vCPU を搭載した少数の VM で、低解像度かつ低サンプリング レートのアニメーションをレンダリングします。

このチュートリアルに含まれるリソースの料金は、4 時間の使用で合計 $3.27 です。

始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。

  4. Container Registry and Compute Engine API を有効にします。

    API を有効にする

  5. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  6. Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。

  7. Container Registry and Compute Engine API を有効にします。

    API を有効にする

  8. ローカルマシンに、次のものがインストールされていることを確認してください。
    • Docker このチュートリアルは Docker Engine バージョン 18.09.0 でテストされています。
    • Python このチュートリアルはバージョン 2.7.10 でテストされています。
    • Pip このチュートリアルはバージョン 19.0 でテストされています。
    • Virtualenv このチュートリアルはバージョン 16.2.0 でテストされています。
    • gcsfuse このチュートリアルはバージョン 0.23.0 でテストされています。
    • 最新の gcloud CLI このチュートリアルでは、gcloudgsutil のコマンドライン ツールを使用するために、Google Cloud CLI をインストールする必要があります。ローカル ワークステーションのターミナルで gcloud ツールと gsutil ツールを実行します。

OpenCue の概要

OpenCue のインターフェースでは、さまざまなモジュールとコマンド、いくつかの独自のコンセプトと用語が使用されています。基本的なハイブリッド レンダー ファームをデプロイするには、以下のツールとテクニックを使用します。より高度なトピックとさまざまなデプロイ オプションについては、OpenCue のドキュメントをご覧ください。

  • Cuebot - OpenCue のスケジューリング ツール。Cuebot はジョブの配布を処理し、レンダリング リソースを管理し、データベースと通信します。Cuebot には、Python と Bash を使用してコマンドライン インターフェース(CLI)からアクセスできます。ただし、ビジュアル インターフェースも、後述するように別のモジュールとして含まれています。この例では、Google Cloud VM で Cuebot を実行します。オンプレミス デプロイのためにローカルで実行することもできます。大規模かつハイブリッドのデプロイでは、複数の Cuebot インスタンスを使用すると、可用性が向上します。
  • データベース - Cuebot は PostgreSQL データベース サーバーを操作して、アプリケーションの状態を保存します。複数の Cuebot を伴うデプロイでも、インスタンス間で共有するデータベースは 1 つのみです。このチュートリアルでは、デプロイを容易にするために Cloud SQL インスタンスを使用します。
  • CueGUI - Cuebot を操作するためのビジュアル インターフェース。CueGUI を使用して、ジョブやレンダリング ホストの設定のモニタリングと管理を行えます。このチュートリアルでは、Cuebot をクラウドで実行し、CueGUI をローカルマシンで実行します。
  • レンダーホスト - 個々のタスクの処理に使用される個々のレンダリング リソース。レンダーホストは、オンプレミス、クラウド、またはその両方を組み合わせた環境に置くことができます。このチュートリアルでは、Google Cloud の VM のマネージド インスタンス グループをレンダリング ホストとして使用します。
  • RQD - レンダーキュー デーモン。個々のレンダーホスト上で実行され、実行する必要のあるコマンドについての指示を送受信するために Cuebot を操作します。
  • CueSubmit - ジョブを構成して開始するための GUI。この Python プログラムは、スタンドアロンの GUI としても、サードパーティ ソフトウェアのプラグインとしても実行できます。OpenCue には Maya プラグイン(バージョン 2017 以降でテスト済み)と Nuke(バージョン 11 でテスト済み)が含まれています。OpenCue リポジトリには、修正可能なコードが含まれています。これにより、他のサードパーティ ツール用の独自のプラグインを構築できます。パイプラインのカスタマイズも可能です。
  • PyCue - Cuebot を操作するために使用される Python ライブラリのコレクション。これらのライブラリを使用すると、より多くのツールを構築できます。また、GUI 経由ではなくコマンドライン上で Cuebot と通信できます。
  • PyOutline - OpenCue ジョブ送信を構築するための Python ライブラリ。PyOutline を使用してジョブ仕様の構築や依存関係の定義を行うことができます。このチュートリアルでは、CueSubmit から内部的に呼び出されるため、このモジュールを直接操作することはありません。
  • CueAdmin - PyCue python API を使用して OpenCue を管理するコマンドライン ツール。

OpenCue プログラム アーキテクチャ

次のアーキテクチャ図に、OpenCue モジュールの接続および通信の仕組みを示します。

OpenCue アーキテクチャ図

このチュートリアルで使用する Google Cloud リソース

次のアーキテクチャ図は、このチュートリアルを完了するのに必要な Google Cloud リソースを示しています。

このチュートリアルを完了するために必要な Google Cloud リソース

OpenCue リポジトリのダウンロード

OpenCue の公式リポジトリは GitHub でホストされています。

  • このチュートリアルに使用するワークスペースとディレクトリに移動して、OpenCue リポジトリをダウンロードします。

    cd ~/
    git clone --branch 0.3.6 https://github.com/AcademySoftwareFoundation/OpenCue
    

Cloud Storage バケットの作成とチュートリアル ファイルの追加

このチュートリアルでは、Cloud Storage バケットを使用して、すべてのアニメーション シーンファイルとその他の入力ファイルの依存関係、最終的なレンダリング出力ファイルとレンダーホスト ログファイルを保存します。

後のステップで、Cloud Storage FUSEgcsfuse)をインストールして使用します。このツールは、オープンソースの FUSE アダプタであり、Cloud Storage バケットをファイル システムとして Linux レンダーホストやローカルマシンにマウントするために使用できます。gcsfuse によって、低価格で効果的なストレージがこのワークフローで使用可能になります。ただし、個々のジョブに対してそれぞれのニーズに最適化されたストレージ プロファイルを使用すると、ジョブによってはパフォーマンスが大幅に向上します。Google Cloud には多くのストレージ オプションがありますが、各ワークフローに対する長所と短所については、このドキュメントでは取り上げません。ストレージ オプションの詳細については、ハイブリッド レンダー ファームの構築をご覧ください。あるいは、Google Cloud 担当者にご相談のうえ、ニーズに合わせてストレージ オプションをカスタマイズしてください。

Cloud Storage バケットの作成

バケットを作成する前に、対象のプロジェクトを実施していることを確認してください。

  • チュートリアル データを保存するための Cloud Storage バケット [YOUR_BUCKET_NAME] を作成します。

    gcloud config set project [YOUR_PROJECT_ID]
        gsutil mb -l us-central1 gs://[YOUR_BUCKET_NAME]
    

    gsutil コマンドの引数には、us-central1 リージョン内の作成するリソースを指定します。

チュートリアル データのバケットへの同期

Cloud Storage バケットには、このチュートリアル用に約 950 MB のデータが含まれています。gsutil rsync を使用すると、このデータをローカルマシンにダウンロードすることなく、ソースバケットと宛先バケットのデータを同期できます。なお、サブディレクトリも含めてコピーする場合には -r フラグを使用します。また、複数のファイルを扱う場合には、同期を並列で行う -m フラグが有用です。

  1. Cloud Storage バケット名の環境変数を作成します。

    export YOUR_BUCKET=[YOUR_BUCKET_NAME]
    
  2. サンプルデータをバケットへ同期します。

    gsutil -m rsync -r gs://cloud-solutions-group-opencue gs://$YOUR_BUCKET
    

サンプル データベース スキーマとサンプルデータのアップロード

データベース スキーマとデモ用サンプルデータをアップロードして、データベース テーブルに入力します。

  1. V1__Initial_schema.sqlV2__Add_limit_table.sqlV3__increase_show_length.sql ファイルをローカルの OpenCue ディレクトリから Cloud Storage チュートリアル バケットにコピーします。

    gsutil cp ~/OpenCue/cuebot/src/main/resources/conf/ddl/postgres/migrations/* gs://$YOUR_BUCKET/database/
    
  2. demo_data.sql ファイルをローカルの OpenCue ディレクトリから Cloud Storage チュートリアル バケットにコピーします。

    gsutil cp ~/OpenCue/cuebot/src/main/resources/conf/ddl/postgres/demo_data.sql gs://$YOUR_BUCKET/database/
    

データベースのデプロイ

OpenCue の Cuebot モジュールにより、プログラムの状態データを PostgreSQL データベースに保存できます。このチュートリアルでは、最初に Cuebot として機能する VM 用の外部 IP を予約します。次に、Cloud SQL インスタンスをプロビジョニングして構成し、Cuebot IP アドレスをホワイトリストに登録してネットワーク接続を設定します。最後に、データベースにスキーマとデモデータを入力します。

Cuebot 用の静的外部 IP アドレスの予約

Cuebot 用のデータベースまたは VM を作成する前に、これら 2 つのリソース間のネットワーク通信に使用する Cuebot VM 用の静的外部 IP を予約します

  1. コンソールで [静的アドレスの予約] ページに移動します。

    [静的アドレスの予約] ページに移動

  2. 新しいアドレスの名前、たとえば cuebotstaticip を選択します。

  3. [ネットワーク サービス階層] で [プレミアム] を指定します。

  4. [IP バージョン] で IPv4 を指定します。

  5. [タイプ] で [リージョン] を選択します。

  6. [リージョン us-central1] を選択します。

  7. [接続先] の設定を [なし] のままにします。

  8. [予約] をクリックして IP アドレスを予約します。

リソースが作成されると、[外部 IP アドレス] ページにリダイレクトされます。このアドレスを [RESERVED_STATIC_IP_ADDRESS] として参照します。

Cloud SQL インスタンスを作成する

PostgreSQL データベースを作成するには、さまざまなオプションがあります。このチュートリアルでは Cloud SQL を使用します。Cloud SQL は Google Cloud 上のセットアップを容易にするフルマネージド データベースです。このインスタンスでは、高速な読み書きのために SSD を使用しています。ただし、初期ストレージ容量は少なく、vCPU は 1 つ、RAM は 3.75 GB です。大規模なデプロイに OpenCue をスケーリングする場合、まずはこのリソースを拡大する必要があります。Cloud SQL はデプロイに合わせてスケーリングできます。

  1. コンソールで Cloud SQL インスタンス ページに移動します。

    [Cloud SQL インスタンス] ページに移動

  2. プロジェクトを選択し、[続行] をクリックします。

  3. [インスタンスを作成] をクリックします。

  4. [PostgreSQL] をクリックします。

  5. インスタンス ID を入力します(例: opencuedatabase)。

  6. デフォルト postgres ユーザーのパスワードを入力します。Cuebot を作成するとき、このパスワードを [DATABASEPASSWORD] として参照します。

  7. [リージョン] を us-central1、[ゾーン] を us-central1-a に設定します。

  8. 接続オプションを構成します。

    1. [構成の表示] オプションを開き、[接続の設定] を選択します。
    2. [パブリック IP] と [ネットワークを追加] を選択します。
    3. [ネットワーク] で、[RESERVED_STATIC_IP_ADDRESS] の値を入力します。
    4. [作成] をクリックします。

    インスタンスのリストに戻ります。新しいインスタンスは、初期化されて起動されるまで淡色表示されます。

Cloud SQL データベースの作成

  1. Cloud SQL リソースの [インスタンスの詳細] ページで、[データベース] を選択します。
  2. [データベースの作成] を選択します。
  3. [データベース名] を cuebot に設定します。
  4. [作成] をクリックします。
  5. 次のようにして、データベース スキーマとデモデータをインポートします。

    1. [インポート] を選択します。
    2. [Cloud Storage] ファイル行で、[参照] をクリックします。
    3. アップロードした [YOUR_BUCKET_NAME] ストレージ バケットに移動し、次のファイルを選択してデータベースのスキーマをインポートします。

      gs://[YOUR_BUCKET_NAME]/database/V1__Initial_schema.sql
      
    4. [インポートの形式] を [SQL] に設定します。

    5. [データベース] で、[cuebot] を選択します。

    6. [詳細オプションを表示] を選択します。

    7. [ユーザー] で、ユーザー postgres を選択します。

    8. [インポート] をクリックします。

    インポートが完了すると、Cloud SQL インスタンスの [詳細] ページにリダイレクトされます。

    次のファイルからデモデータをインポートするには、上記の手順を繰り返します。

    gs://[YOUR_BUCKET_NAME]/database/V2__Add_limit_table.sql
    gs://[YOUR_BUCKET_NAME]/database/V3__increase_show_length.sql
    gs://[YOUR_BUCKET_NAME]/database/demo_data.sql
    

インポートが完了すると、Cloud SQL インスタンスの [詳細] ページにリダイレクトされます。後に [CLOUD_SQL_IP_ADDRESS] として参照される Cloud SQL IP アドレスをメモします。このアドレスは次のステップで Cuebot を構成するときに必要になります。

デプロイのための Cuebot Docker イメージの準備

このチュートリアルでは、Cuebot は単一の Compute Engine VM 上の Docker コンテナとしてデプロイされています。まず OpenCue リポジトリから Cuebot Docker イメージをローカルに構築し、それを Container Registry に push します。Container Registry は、Google Cloud 上のプライベート Docker イメージ リポジトリです。このチュートリアルでは、Docker イメージを保存するために使用します。このワークフローの詳細については、Compute Engine のドキュメントをご覧ください。

イメージの作成

  1. OpenCue リポジトリのルートレベルにいることを確認します。

    cd ~/OpenCue
    
  2. TAG_NAME という名前の変数と PROJECT_NAME という名前の変数を作成します。次に、Docker を使用して、このトラック用タグの付いたイメージを作成します。構築手順に gcr.io/[PROJECT_NAME] を含めることで、後で Container Registry に同期するためのタグ付けを有効にできます。

    export TAG_NAME=demo
    export PROJECT_NAME=[PROJECT_NAME]
    docker build -t gcr.io/$PROJECT_NAME/opencue/cuebot:$TAG_NAME -f cuebot/Dockerfile .
    

イメージの Container Registry への同期

Docker が Container Registry にイメージをアップロードできるように、gcloud CLI を承認します。次に、Cuebot Docker イメージを Container Registry に同期します。

  1. gcloud CLI と Docker の同期を承認するには、次のコマンドを実行します。

    gcloud auth configure-docker
    
  2. 次のプロンプトで「y」を入力して Enter キーを押します。

    Do you want to continue (Y/n)?
  3. Cuebot Docker イメージをローカル リポジトリから Container Registry に push します。

    docker push gcr.io/$PROJECT_NAME/opencue/cuebot:$TAG_NAME
    

同期が完了するまで、このアップロードには少し時間がかかります。

Cuebot VM の構成とプロビジョニング

コンソールを使用して、Container-Optimized OS で VM をプロビジョニングします。コンテナ設定を構成し、データベースへの接続を作成し、予約済みの外部静的 IP アドレスを付与します。

  1. [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. [インスタンスを作成] ボタンをクリックして新しいインスタンスを作成します。

  3. インスタンスに cuebot という名前を付けます。

  4. [リージョン] を us-central1、[ゾーン] を us-central1-a に設定します。

  5. [マシンタイプ] で [カスタマイズ] を選択して、1 vCPU 6.5 GB のマシンタイプを構成します。

  6. コンテナ設定を構成します。

    1. [コンテナ] セクションで、コンテナ イメージの [デプロイ] を選択します。
    2. [PROJECT_NAME] を更新し、次のコンテナイメージを指定します。

      gcr.io/[PROJECT_NAME]/opencue/cuebot:demo

    3. [コンテナの詳細オプション] を展開します。

    4. [コマンドの引数] で、[+ 引数を追加] を 3 回クリックして 3 つの引数を追加します。

    5. [CLOUD_SQL_IP_ADDRESS][DATABASEPASSWORD] を実際の値に置き換えて、次のコマンド引数を入力します。

      --datasource.cue-data-source.jdbc-url=jdbc:postgresql://[CLOUD_SQL_IP_ADDRESS]/cuebot
      --datasource.cue-data-source.username=postgres
      --datasource.cue-data-source.password=[DATABASEPASSWORD]
      

      ここで

      コマンド引数 必要な入力の説明
      --datasource.cue-data-source.jdbc-url=jdbc:postgresql://[CLOUD_SQL_IP_ADDRESS]/cuebot Cuebot からデータベースへの通信を可能にします。入力するのは [CLOUD_SQL_IP_ADDRESS] / [DATABASE_NAME] です。前の手順でデータベース名に使用した cuebot を、ここで入力します。
      --datasource.cue-data-source.username=postgres Cuebot は接続時にデータベースのユーザー名を要求します。セットアップ中に使用したデフォルトのユーザー名である postgres を、ここに入力します。本番環境では、セキュリティのベスト プラクティスに沿って、特定の権限を持つ新しいユーザーを作成する必要があります。
      --datasource.cue-data-source.password=[DATABASEPASSWORD] Cuebot は接続時にデータベースのパスワードを要求します。[DATABASEPASSWORD] を入力します。
  7. ネットワーク設定を構成します。

    1. [ネットワーク] で [ネットワーク インターフェース] を選択します。
    2. [外部 IP] をクリックして、Cuebot 用に以前に作成した予約済み外部 IP アドレス [cuebotstaticip] を選択します。
    3. [完了] をクリックします。
    4. その他の設定はデフォルト値のままにします。
    5. [作成] をクリックします。

VM が起動するまでに少し時間がかかります。インスタンス テンプレートを作成するときに必要な内部 IP アドレスをメモします。このアドレスは、後で [CUEBOT_INTERNAL_IP_ADDRESS] として参照されます。

レンダーホストの作成

レンダーホストは、マネージド インスタンス グループ(MIG)として実行されている VM で構成されています。これにより、リソースの場所とスケーリングの両方を制御できます。MIG はインスタンス テンプレートを使用します。そして、マシンタイプの決定、サービス アカウント管理の有効化、コンテナ イメージのデプロイ、コンテナ設定と環境変数の構成を行います。

コンテナ イメージを使用して、チュートリアルのレンダリング タスクを実行するために必要なさまざまな依存関係と、ソフトウェア パッケージを構成します。プロジェクトのコンテナ イメージを構成するには、Docker を使用してベースのレンダーホスト イメージを作成します。それをローカル リポジトリに保存します。Container Registry にデプロイする前に、チュートリアル リポジトリからタスク固有のソフトウェアと Google Cloud 設定を追加します。これにより、このベースをカスタマイズできるようになります。

ベースのレンダーホスト イメージの作成

  • ローカルシェルで、ベースのレンダーホスト イメージを作成します。

    cd ~/OpenCue
    export TAG_NAME=demo
    docker build -t opencue/rqd:$TAG_NAME -f rqd/Dockerfile .
    

Blender イメージの構成

レンダーホストの Blender イメージを作成するために必要な Dockerfile と関連スクリプトは、チュートリアル リポジトリに格納されています。このセクションでは、リポジトリをダウンロードし、プロジェクトで機能するようにいくつかの設定を更新します。

  1. このチュートリアルで使用しているディレクトリとワークスペースに移動して、チュートリアル リポジトリをダウンロードします。

    cd ~
    git clone https://github.com/GoogleCloudPlatform/python-opencue-demo.git
    
  2. レンダリング ホストが起動すると、このリポジトリの rqd_startup.sh スクリプトが gcsfuse を呼び出して、チュートリアル バケットをパス /shots ファイル システムとしてマウントします。テキスト エディタで Dockerfile を開き、チュートリアル バケットを指すように GCS_FUSE_BUCKET 変数を更新します。

    1. シェルで、次のファイルをリポジトリのルートにコピーします。

      cp ~/python-opencue-demo/third_party/Dockerfile ~/python-opencue-demo/Dockerfile
      
    2. 選択したテキスト エディタで、ファイルを編集します。

      ~/python-opencue-demo/Dockerfile
      
    3. 次の行の [YOUR_BUCKET_NAME] をバケットの名前に更新します。

      ENV GCS_FUSE_BUCKET [YOUR_BUCKET_NAME]
      
    4. 保存して、テキスト エディタを終了します。

イメージの構築と Container Registry への push

  1. 次のようにして、イメージを構築します。

    cd ~/python-opencue-demo
    docker build -t gcr.io/$PROJECT_NAME/opencue/rqd-blender:$TAG_NAME .
    
  2. 構築が完了したら、次のようにしてイメージを Container Registry に push します。

    docker push gcr.io/$PROJECT_NAME/opencue/rqd-blender:$TAG_NAME
    

レンダリング ホストのデプロイ

レンダーホストは、レンダリング時に読み書きできる権限を持っている必要があります。アクセスを許可するには、最小権限のセキュリティ原則を使用してサービス アカウントを作成します。VM をプロビジョニングするときに、ID と API アクセスにこのアカウントを使用します。

サービス アカウントを作成する

  1. コンソールで、[サービス アカウント] ページに移動します。

    [サービス アカウント] ページに移動

  2. [プロジェクトを選択] をクリックします。

  3. プロジェクトを選択し、[開く] をクリックします。

  4. [+ サービス アカウントを作成] をクリックします。

  5. たとえば「 storageservice」を [SERVICE_ACCOUNT_NAME] に入力し、[作成] をクリックします。

  6. サービス アカウントに対するストレージ オブジェクト管理者のロールを選択し、[続行] をクリックします。

  7. [完了] をクリックします。

インスタンス テンプレートを作成する

rqd-blender Docker イメージを使用して、インスタンス テンプレートを作成し、VM のサイズと設定を決定します。

  1. コンソールで、[インスタンス テンプレート] ページに移動します。

    [インスタンス テンプレート] ページに移動

  2. [インスタンス テンプレートを作成] をクリックします。

  3. インスタンス テンプレートに名前を付けます(例: rqd-blender)。

  4. [マシンタイプ] で [n1-highmem-2] を選択します。

  5. コンテナ設定を構成します。

  6. [コンテナ] セクションで、[この VM インスタンスにコンテナ イメージをデプロイする] チェックボックスをオンにします。

  7. [PROJECT_NAME] を更新し、コンテナ イメージに次のように指定します。

    gcr.io/[PROJECT_NAME]/opencue/rqd-blender:demo
    
  8. 起動時にシステム デバイスへのアクセスを許可して、RQD-blender インスタンスを Cuebot に登録します。

    1. [コンテナの詳細オプション] をクリックします。
    2. [権限のあるユーザーとして実行] を選択します。
    3. [環境変数] で [+ 変数の追加] をクリックし、[名前] を CUEBOT_HOSTNAME、[] を [CUEBOT_INTERNAL_IP_ADDRESS] に設定します。これは、以前にプロビジョニングした Cuebot VM の内部 IP アドレスを表します。
  9. サービス アカウントを構成します。

    1. [サービス アカウント] セクションで、以前に作成した [SERVICE_ACCOUNT_NAME] を選択します。
    2. その他の設定はデフォルトのままにします。
    3. [作成] をクリックします。

マネージド インスタンス グループの作成

インスタンス テンプレートを使用して、マネージド インスタンス グループを作成し、VM の場所、インスタンス数、自動スケーリング設定を決定します。

  1. コンソールで、[インスタンス グループ] ページに移動します。

    [インスタンス グループ] ページに移動

  2. [インスタンス グループを作成] をクリックします。

  3. マネージド インスタンス グループの名前(例: rqd-blender-mig)を入力します。

  4. [シングルゾーン] と [リージョン] で us-central1、[ゾーン] で us-central1-a を選択します。

  5. [グループタイプ] で、[マネージド インスタンス グループ] を選択します。

  6. [インスタンス テンプレート] で、インスタンス テンプレート(例: rqd-blender)を選択します。

  7. [自動スケーリング] を [オフ] に設定します。

  8. [インスタンス数] に 3 を指定します。

  9. [作成] をクリックします。

ローカル ワークステーションの構成

Cuebot は Google Cloud 上で実行され、レンダリング ホストとジョブキューを管理する準備が整いました。タスクの送信および管理用のビジュアル インターフェースを有効にするには、CueSubmit と CueGUI を実行するようにローカル ワークステーションを構成します。次に、ローカルホストから Google Cloud に接続します。

ディレクトリの作成とバケット マウント ポイントのアクセス許可設定

  • Cloud Storage バケットのマウント ポイントを作成し、読み書きのアクセス許可を設定します。

    sudo mkdir /shots
    sudo chmod 777 /shots
    sudo chown $USER /shots
    

    ローカル ワークステーションとレンダリング ホストにマウントされると、これらのパスは、入力アニメーション シーンファイルの /shots/robotdanceparty/sh_05/sh_05_lores.blend などに解決されます。

チュートリアル バケットのマウント

  • ローカルマシン上でチュートリアル バケットをパス /shots 内のファイル システムとしてマウントするように、gcsfuse に指示します。--implicit-dirs フラグを使用すると、オブジェクトをディレクトリへマッピングする際の指定が容易になります。

    gcsfuse --implicit-dirs $YOUR_BUCKET /shots
    

    SSH 転送の設定

ローカル ワークステーションと Google Cloud の間の安全な通信を支援するために、このチュートリアルでは SSH 転送を使用します。以下のコマンドでポートを開き、OpenCue インターフェースと Cuebot の間で呼び出しを転送します。

  1. 新しいシェルを開き、SSH プロセス用に予約します。
  2. [YOUR_PROJECT_ID] を更新して、以下のコマンドを実行します。

    export CUEBOT_INSTANCE_NAME=cuebot
    export PROJECTID=[YOUR_PROJECT_ID]
    export ZONE=us-central1-a
    gcloud compute ssh $CUEBOT_INSTANCE_NAME --project $PROJECTID --zone $ZONE -- -N -L 8443:127.0.0.1:8443
    

仮想環境の初期化

  1. 新しいシェル ウィンドウを開き、CueGUI と CueSubmit 用に予約します。
  2. インストール前に環境を切り離すには、virtualenv を実行します。

    cd ~/OpenCue
    virtualenv --python python2 venv
    

    詳細については、virtualenv についてをご覧ください。

  3. 仮想環境を読み込み、pip を使用して依存関係をインストールします。

    source venv/bin/activate
    pip install -r requirements.txt
    

    cat requirements.txt を実行して、インストールされている依存関係のリストを表示できます。

  4. CueGUI または CueSubmit を起動する前に、デプロイに必要な変数を定義します。

    export OPENCUE_ROOT=~/OpenCue
    export CUEBOT_HOSTS=localhost
    export PYTHONPATH=$OPENCUE_ROOT/pyoutline/:$OPENCUE_ROOT/pycue/:$OPENCUE_ROOT/cuesubmit/:$OPENCUE_ROOT/cuegui/
    
    環境変数 説明
    CUEBOT_HOSTS=localhost PyCue の Cuebot インスタンスへの接続方法の参照。SSH 転送を使用する場合は、ローカルホストとして定義されています。VPN または Dedicated Interconnect を使用している場合は、Cuebot の IP アドレスを入力します。
    PYTHONPATH=$OPENCUE_ROOT OpenCue ライブラリへの Python パスを定義します。

gRPC .proto ファイルのコンパイル

OpenCue は gRPC をその通信プロトコルとして使用し、サーバーとクライアントの間でメッセージを送信します。gRPC サービスは、言語に依存しない .proto ファイルのプロトコル バッファを使用して定義されています。OpenCue の Python ライブラリが gRPC を使って通信できるようにするには、次のようにします。

  • 次のコマンドを使用して、.proto 定義ファイルを Python 読み取り可能ファイルにコンパイルします。

    cd ~/OpenCue/proto
    python -m grpc_tools.protoc -I=. --python_out=$OPENCUE_ROOT/pycue/opencue/compiled_proto --grpc_python_out=$OPENCUE_ROOT/pycue/opencue/compiled_proto ./*.proto
    

インターフェースの実行

次のステップでは、CueSubmit を使用してジョブを送信することにより OpenCue について確認し、また CueGUI を使用してジョブとレンダーホストの設定について確認します。これらのツールはどちらも同じ環境を使用するので、仮想環境シェルで実行するときは、それぞれのプロセスをバックグラウンドで実行します。

CueSubmit の実行

  • VM 環境シェルで CueSubmit を実行して、ジョブを送信できるようにします。

    cd ~/OpenCue
    python cuesubmit/cuesubmit &
    

ジョブの送信

CueSubmit インターフェースを使用して、次の変数を入力します。

  1. [Job Name] に入力します(例: yourjobname)。
  2. [Shot] に入力します(例: sh_05)。
  3. [Layer Name] に入力します(例: render)。
  4. [Command to Run] に、次のように入力します。

    /usr/local/blender/blender -b -noaudio /shots/robotdanceparty/sh_05/sh_05_lores.blend -o /shots/renderimages/sh_05.lores.##### -F JPEG -f #IFRAME#
    
  5. [Frame Spec] に入力します(例: 600-700)。

  6. [Job Type] を Shell に設定します。

  7. [Services] を shell に設定します。

  8. そのほかはデフォルトのままにして、[Submit] をクリックします。

    「OpenCue にジョブを送信しました」というウィンドウが表示されます。レンダリング時にジョブをトラックするのに役立つように、ジョブ ID とジョブ名も表示されます。

    レンダリング用のコマンドライン オプション:

    コマンドライン オプション 説明
    /usr/local/blender/blender ブレンダー実行ファイルのパス。
    -b レンダラーにフラグを立て、インターフェースを使用せずに実行します。
    -noaudio レンダラーにフラグを立て、オーディオ ライブラリを読み込まないようにします。
    /shots/robotdanceparty/sh_05/sh_05_lores.blend レンダリングするシーンファイルのパス。
    -o /shots/renderimages/sh_05.lores.##### 出力パス、名前、フレーム パディングを定義します。##### はフレーム 650(ディスク上の sh_05.00650.jpg)になります。
    -F JPEG 出力ファイル形式を JPEG に設定します。
    -f #IFRAME# レンダリング時にフレーム番号を定義します。これは OpenCue 固有のものです。<Frame Spec> はこの変数に影響されるため、ここにあるとおりに入力します。

    Blender のコマンドライン レンダリングの詳細については、Blender のドキュメントをご覧ください。

    Submitted job ウィンドウ

    変数 説明
    Job Name 開始時に選択した任意の変数。ほとんどの施設では、命名規則に沿って一貫してジョブをトラックできます。
    User Name OpenCue によって記入されています。CueSubmit を起動するユーザーとして登録されています。
    Show OpenCue は最初に testing という名前のデフォルトのショーを作成します。ほとんどの機器では、これに関連して個々の映画プロジェクトまたはコマーシャルのショーを呼び出します。ショーの追加と編集は、CueAdmin コマンドライン ツールを使用して行うのが最善です。
    Shot 途切れることなく再生される一連のフレームの 1 つです。映画セットでは、ショットは「アクション」と「カット」の間の時間です。通常、一連のショットの各々や本番前のアセット ローテーションに使用されます。
    レイヤ 送信とフレームの範囲内の個々のコマンド。この例では、ジョブの中で、シングルレイヤ、レンダリングを実行しています。
    Command to Run レイヤが実行するコマンド。ここでは Blender のコマンドライン レンダリングを実行しています。
    Frame Spec 処理するフレーム。アニメーションのフレーム 600~700 をレンダリングします。フレーム ステッピングや任意のフレーム入力など、その他のオプションを表示するには、[Frame Spec] ボックスをポイントします。
    Job Type ジョブでこのレイヤに使用されるソフトウェア パッケージを定義するために使用されます。定義したコマンドはシェル スクリプトとして解釈されるので、[Shell] を入力します。
    Service 最小 RAM やユーザー定義リソースなどの要件のリスト。このジョブはシェル以外の特定の要件を必要としないので、[Shell] を選択します。
    Submission Details 設定を組み合わせた結果。

CueGUI の概要

CueGUI は、UI モジュールの集合の中心的なインターフェースであり、それぞれがレンダー ファームのさまざまな側面に焦点を当てています。以下は、ジョブとレンダーホストのモニタリングに使用する一般的な用語、説明、関連モジュールのリストです。CueSubmit と CueGui のビジュアルな概要説明については、このチュートリアル動画をご覧ください。

用語 説明 関連 CueGUI モジュール
ジョブ OpenCue への個々の送信。 ジョブのモニタリング
属性
レイヤ 送信とフレームの範囲内の個々のコマンド。この例では、ジョブの中で、シングルレイヤ、レンダリングを実行しています。 ジョブの詳細モニタリング
属性
レンダーホスト タスクの処理に使用される個々のレンダー リソース。 ジョブの詳細モニタリング
ホストのモニタリング
LogView
属性
ログ レンダーホストはログファイルをディスクに書き込み、トラブルシューティングやパフォーマンス指標などの情報を解析できます。 ジョブの詳細のモニタリング
LogView
属性 OpenCue 送信またはリソースに関する詳細のリスト。[Attribute] ウィンドウは、ジョブ、レイヤ、レンダーホストのいずれかに関する詳細を読み込めます。 ジョブのモニタリング
ジョブの詳細のモニタリング
ホストのモニタリング
属性
タグ ホストまたはレイヤに追加して、特定のジョブに関連付けることができる分類方法。各レンダーホストで使用可能なリソースのホストタグと、そのレイヤの処理に必要なリソースのレイヤタグを追加します。 ジョブの詳細のモニタリング
ホストのモニタリング
属性
レイヤタグ レイヤを処理するために必要な要件を定義するタグ。たとえば、レイヤに GPU が必要な場合は、レイヤに GPU タグを追加します。 ジョブの詳細のモニタリング
ホストのモニタリング
属性
ホストタグ ホストが利用可能なリソースを定義するタグ。たとえば、GPU がインストールされているホストに GPU リソースを追加できます。
これらのタグとリソース要件のリストが満たされている場合、ホストはレンダリングするレイヤを選択します。
ジョブの詳細のモニタリング
ホストのモニタリング
属性

OpenCue のインターフェースとコンセプトの全体を網羅することについて、このチュートリアルでは取り上げません。より詳細な情報についてはドキュメントをご覧ください。

CueGUI の実行

  • 同じ仮想環境シェルで、CueGUI を開きます。

    cd ~/OpenCue
    python cuegui/cuegui &
    

Monitor Jobs ウィンドウの起動

  • CueCommander ウィンドウが開いたら、[Views/Plug-ins] > [Cuetopia] > [Monitor Jobs] を選択します。

Monitor Jobs ウィンドウについて

[Monitor Jobs] ウィンドウはジョブ単位にまとめられており、大局的な情報を表示します。

OpenCue の Monitor Jobs ウィンドウ

[Your Job] を含む行で、このチュートリアルに関する以下の関連情報を探します。

  • Job: ジョブ名はここに一覧表示されます。
  • State(状態): 選択されてレンダリング中なので、このジョブの状態は、[In Progress] です。ジョブが完了すると、[State] は [Finished] に変わります。ジョブに問題が発生した場合は、状態が [Failing] に変化し、トラブルシューティングが必要になります。OpenCue でのレンダリングにおけるトラブルシューティングの詳細については、ドキュメントをご覧ください。
  • Done/Total(完了 / 合計): ジョブの進捗状況の概要を示します。このイメージでは、101 フレームのジョブのうち、100 フレームが完了しています。
  • Running(実行中): レンダーホストで現在処理しているフレーム数を通知します。このイメージでは、1 フレームしか処理されていません。
  • Progress: ジョブの進行状況の概要を視覚的に示します。

Monitor Jobs ウィンドウの確認

  1. [Monitor Jobs] ウィンドウでジョブの進行状況をモニタリングします。ジョブは [In Progress] になっているはずです。[Failing] になっている場合は、トラブルシューティングのセクションをご覧ください。
  2. [Progress] という文字の上にマウスを移動すると、説明ウィンドウが役立つツール情報とともに表示されます。
  3. 他の行の見出しやアイコンの上にマウスを移動すると、インターフェース上の詳細情報を確認できます。
  4. [[Your Job]] を選択します。

Monitor Job Details ウィンドウの起動

  1. [Monitor Job Details] ウィンドウを開くには、[Views/Plug-ins] > [Cuetopia] > [Monitor Job Details] を選択します。
  2. [Monitor Jobs] ウィンドウで、[[Your Job]] をダブルクリックして [Monitor Jobs Details] ウィンドウでそのデータを読み込みます。

Monitor Job Details ウィンドウについて

[Monitor Job Details] ウィンドウはレイヤ単位にまとめられており、ジョブに関する詳細情報を表示します。

OpenCue の Monitor Job Details ウィンドウ

[Monitor Job Details] モジュールには 2 つのウィンドウがあります。

  • [Layer] ペイン。タイトルバーに [Your Job] と表示されているウィンドウに、レイヤ名が表示されます。
  • [Layer Info] ペイン。このウィンドウには、選択したレイヤの各フレームに関する情報が表示されます。

[Layer] ペインの概要

  • Layer(レイヤ): ジョブはひとつのレイヤ、すなわちレンダーです。ジョブに複数のレイヤがあれば、ここに一覧表示されて、ダブルクリックすることで個々に選択できます。
  • Avg(平均): レイヤの 1 フレームあたりの平均レンダリング時間。
  • Tags(タグ): レイヤ単位のタグはここに一覧表示されています。ここからレイヤ単位のタグにアクセスできます(タグの設定について、このチュートリアルでは取り上げません)。
  • Depend(依存関係): レイヤの依存関係はここに一覧表示されます。このフレームからレイヤ単位の依存関係にアクセスできます(依存関係の管理について、このチュートリアルでは取り上げません)。

Layer Info ペインの概要

  • [Refresh](更新)ボタン: このボタンをクリックすると、インターフェースにデータベースの最新情報が読み込まれます。
  • Order(順序): フレームはここに表示された順序でレンダリングされます。フレームは任意の順序でレンダリングできます。たとえば、10 フレームごとにレンダリングしてから、残りのフレームをレンダリングしたり、逆の順序でレンダリングしたりすることができます。この順序は、ジョブを送信するときにフレームの仕様を使って CueSubmit で指定します。
  • Frame(フレーム): レンダリングするシーンのフレーム番号。
  • Status(ステータス): フレームのステータス。この画像では、フレームは [Succeeded] になっています。
  • Host(ホスト): フレームに割り当てられているレンダーホストの IP アドレス。

Monitor Job Details ウィンドウの確認

  1. [Refresh] をクリックして、[Monitor Job Details] ウィンドウでジョブの進行状況を確認します。
  2. [Status] という文字の上にマウスを置くと、役立つツール情報とともに、説明ウィンドウが表示されます。
  3. 他の行の見出しやアイコンの上にマウスを移動すると、インターフェース上の詳細情報を確認できます。

LogView ウィンドウの起動

  • [LogView] ウィンドウを開くには、[Views/Plug-ins] > [Other] > [LogView] を選択します。

LogView ウィンドウについて

[LogView] ウィンドウを使って、個々のフレームのログを素早くプレビューできます。このビューは、問題のトラブルシューティングのための情報収集、将来のレンダーパスのための VM サイズの適正化、レンダリングの最適化に役立ちます。

OpenCue の Log View ウィンドウ

ログファイルは OpenCue 固有のデータを含むヘッダーで始まり、イメージを処理するソフトウェアからの出力が続きます。この例では、OpenCue 構成の後に Blender のログ出力が続いています。

LogView ウィンドウの確認

  1. [Monitor Job Details] ウィンドウで、[Layer Info] ペインに [SUCCEEDED] と表示されたフレームを選択してログを調べます。
  2. 実行中のコマンドに注意してください。
  3. logDestination に注意してください。

詳細については、OpenCue のドキュメントの LogView ウィンドウをご覧ください。

Monitor Hosts ウィンドウの起動

  • [Monitor Hosts] ウィンドウを開くには、[Views/Plug-ins] > [CueCommander] > [Monitor Hosts] の順に選択します。

Monitor Hosts ウィンドウについて

[Monitor Hosts] ウィンドウには、個々のレンダーホストに関する情報が表示されます。タグを使用してリソースを追加または削除するためのインターフェースです。

OpenCue の Monitor Hosts ウィンドウ

このチュートリアルに関連する情報は次のとおりです。

  • [Auto-refresh](自動更新)ボックス: [Monitor Hosts] ウィンドウを再読み込みするには、このボックスをオンにします。
  • [Refresh] ボタン: [Monitor Hosts] ウィンドウの再読み込みをするは、このボタンをクリックします。
  • IP address: IP アドレスにより、OpenCue と Google Cloud の間の VM を簡単に追跡できます。
  • Load %: ホストの負荷平均、マシン使用率の指標。
  • Mem: ホストのメモリ割り当て。
  • Tags: ホストに登録されているリソース。

Monitor Hosts ウィンドウの確認

  1. [Refresh] をクリックするか、[Auto-refresh] チェックボックスをオンにします。
  2. [IP Address] をクリックしてレンダーホストを選択します。
  3. レンダーホストを右クリックして、さらなるオプション、たとえば、[Delete Host] や [Add or Remove Tags] を表示できます。

    タグを使用してリソースを管理する方法の詳細については、ドキュメントをご覧ください。

  4. ホストをダブルクリックして属性を確認します。

  5. [alloc] が local.general に設定されていることに注意してください。

  6. タグが general とホストの IP アドレスになっていることに注意してください。

Attributes ウィンドウの起動

  • [Views/Plug-ins] > [Other] > [Attributes] を選択します。

Attributes ウィンドウについて

[Attributes] ウィンドウには、レンダリング ホスト、レイヤ、ジョブの詳細リストが表示されます。下記にその例を示します。

OpenCue の Attributes ウィンドウ

各ウィンドウには、ホスト、レイヤ、ジョブに関する情報が含まれています。Job Attributesfacility local タグと、Layer Attributesgeneral タグは、この送信要件の重要な指標です。このジョブのフレームは、これら両方のタグが割り当てられているレンダーホストでのみ取得されます。これらのタグは、[alloc] と [tags] ラインを表示することにより、[Host Attributes] 内で割り当てられていることがわかります。

Attributes ウィンドウの確認

  1. [Monitor Hosts] ウィンドウで、レンダーホストの [IP address] をクリックしてその属性を読み込みます。
  2. [Attributes] ウィンドウで、[alloc] と [tags] の設定のチェックボックスをオンにします。
  3. [Monitor Job Details] ウィンドウで、[Succeeded] フレームをクリックしてその属性を読み込みます。
  4. [Attributes] ウィンドウで、[minMemory] と [tags] の設定を確認します。
  5. [Monitor Jobs] ウィンドウで、ジョブをクリックします。
  6. [Attributes] ウィンドウで、[facility] と [minCores] の設定を確認します。

より詳細な説明については、CueGUI Reference をご覧ください。

レンダリングされたフレームの確認

レンダリング時にフレームを確認する方法や、完成後にローカルにコピーする方法は複数あります。アニメーション プレビュー ツールをインストールすることについては、このチュートリアルでは取り上げませんが、コンソールを使用して個々のフレームをプレビューし、それらをローカルにダウンロードして、お気に入りのイメージ表示アプリケーションで表示できます。

  1. コンソールで、バケット内のオブジェクトのリストを表示できます。また、ブラウザでイメージをプレビューすることもできます。

    Cloud Storage ページに移動

  2. [YOUR_BUCKET_NAME] をクリックしてから renderimages をクリックして、フレームのリストを表示します。

  3. ブラウザ ウィンドウのプレビューを表示するには、画像(例: sh_05_lores.00650.jpg)をクリックします。

  4. ローカルシェルを使用して、出力ディレクトリ内の画像を一覧表示します。

      ls /shots/renderimages
    

    ファイルをローカルにコピーしたり、選択した表示ツールで開くこともできます。

  5. バケット内のオブジェクトを一覧表示するには、gsutil を使用します。

    gsutil ls gs://[YOUR_BUCKET_NAME]/renderimages
    
  6. バケット内のすべてのオブジェクトをローカル ディレクトリ [LOCAL_DIRECTORY] にコピーするには、gsutil を使用します。

    mkdir ~/[LOCAL_DIRECTORY]
    gsutil -m rsync -r gs://[YOUR_BUCKET_NAME]/renderimages ~/[LOCAL_DIRECTORY]
    

ジョブの完了確認

レンダリングが処理中の場合は、レンダリングを完了してから OpenCue で確認するか、[Monitor Jobs] ウィンドウでレンダリングを強制終了して中止するかを選択できます。

OpenCue でジョブを強制終了するには、次のようにします。

  1. [Monitor Jobs] ウィンドウを開きます。
  2. [Your Job] を選択して [Kill Job] ボタンをクリックします。
  3. 「Are you sure you want to kill these jobs?」とポップアップ画面に表示されます。
  4. [OK] をクリックしてジョブを強制終了します。

(省略可)レンダー ファームのオプションの確認

このチュートリアルでは、合計 8 つの vCPU という制限内に収めるために、数個の小さなレンダーホストをレンダリング タスクにデプロイしました。仮に、ジョブを瞬時に終わらせることや、大画面のアニメーションを作成することが目標だとします。その場合、n1-highcpu-4 vCPU 以上を使用するように既存のインスタンス テンプレートを変更します。また、ジョブで使用可能なレンダリング ホストの総数を制御するための、マネージド インスタンス グループを作成します。これによって、より多くの CPU を使用してより多くのリソースをデプロイできます。

次の低解像度のシーンファイルを n1-standard-2 VM で、1 フレームあたり約 1 分でレンダリングしました。

  • シーンファイル:

    gs://[YOUR_BUCKET_NAME]/robotdanceparty/sh_05/sh_05_lores.blend
    
  • 作成された画像:

    ロボットダンス パーティーの低解像度画像

    チュートリアル バケットには、高解像度のシーンファイルが含まれています。レンダリングすると、n1-highcpu-4 VM を使用して約 8 分でこのようなイメージを作成できます。

    OpenCue で他のオプションを試したい場合は、この高解像度ファイルを参照するように CueSubmit コマンドをアップグレードしてください。

  • シーンファイル:

    gs://[YOUR_BUCKET_NAME]/robotdanceparty/sh_05/sh_05.blend
    
  • 作成された画像:

    やや高い解像度の同じロボット画像

(省略可)割り当ての変更要求

レンダーホストの数を増やす場合や、より大きな VM を使用する場合は、プロジェクトの割り当てを増やす必要があります。

  1. [割り当て] ページに移動します。

    [割り当て] ページに移動

  2. [割り当て] ページで、変更する割り当てを選択します。

  3. ページ上部にある [割り当てを編集] ボタンをクリックします。

  4. 編集するサービスのチェックボックスをオンにします。

  5. 名前、メールアドレス、電話番号を入力して、[次へ] をクリックします。

  6. 割り当て量の増加のリクエストを入力して、[次へ] をクリックします。

  7. リクエストを送信します。

トラブルシューティング


問題: Docker ビルドプロセスに関する問題。

解決策: --no-cache フラグを立てて Docker ファイルをビルドし、Docker がすべてのステップで最新のデータを使用するようにします。Docker のビルド オプションの詳細については、ドキュメントをご覧ください。


問題: CueSubmit または CueGUI の起動時に shell で Connect Failed エラーが発生する。一般的なエラーは次のとおりです。

Encountered a server error. StatusCode.UNAVAILABLE : Connect Failed

解決策: SSH トンネルが機能していることを確認してから、CueSubmit または CueGUI を再起動します。

  1. SSH トンネルが開いていることを確認するには、ローカルの shell で Process Status コマンドを実行します。

    ps aux | grep ssh.
    

    プロセスのリストが表示されます。そのうちの 1 つは、次のように出力されます。ここで、[USER_NAME][PROJECT_NAME]、OS は実際のものに置き換わります。

    [USER_NAME]     75335   0.0  0.3  4392464  54736 s002  T     3:03PM   0:00.84  /usr/local/Cellar/python@2/2.7.15_1/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -S /Users/[USER_NAME]/google-cloud-sdk/lib/gcloud.py compute ssh cuebot --project [PROJECT_NAME] --zone us-central1-a -- -N -L 8443:127.0.0.1:8443
    
  2. [USER_NAME][PROJECT_NAME]--zone、名前(cuebot)がデプロイに適していることを確認します。

  3. SSH プロセスを停止し、この文書の「SSH 転送の設定」セクションにある手順を再度実施して、新しい SSH トンネルを開きます。


問題: CueSubmit または CueGUI は開くが、起動シェルにエラーが表示される。

解決策: Cloud SQL インスタンスに接続し、スキーマとサンプルデータが入力されていることを確認します。予想される結果が表示されない場合は、Cloud SQL データベースの作成セクションのファイルをもう一度インポートします(「データベース スキーマとデモデータのインポート」の手順をご覧ください)。

  1. コンソールで Cloud Shell に移動し、次のコマンドを実行して Cloud SQL インスタンスを更新します。ここで、[CLOUD_SQL_INSTANCE_ID] は実際のインスタンスの名前に置き換えます。

    gcloud sql connect [CLOUD_SQL_INSTANCE_ID] --user=postgres
    
  2. プロンプトが表示されたら、[DATABASEPASSWORD] に新しい値を入力して Enter キーを押します。

    [DATABASEPASSWORD]
    
  3. 次のコマンドを入力して Enter キーを押します。

    \c cuebot
    
  4. プロンプトが表示されたらパスワードを再入力し、Enter キーを押します。

    [DATABASEPASSWORD]
    
  5. 次のコマンドを入力します。

    \d+
    

    次のような出力が予想されます。

    >
    List of relations
    Schema | Name     | Type  | Owner    | Size       | Description
    -------+----------+-------+----------+------------+-------------
    public | action   | table | postgres | 8192 bytes |
    public | alloc    | table | postgres | 8192 bytes |
    public | comments | table | postgres | 8192 bytes |
    public | config   | table | postgres | 8192 bytes |
    public | deed     | table | postgres | 0 bytes    |
    public | depend   | table | postgres | 0 bytes    |
    public | dept     | table | postgres | 8192 bytes |
    

問題: CueSubmit または CueGUI shell でエラーが発生し、どちらのツールも実行されない。

解決策: 次の変数をチェックして、CueBot とデータベースが接続されていることを確認します。

  1. Cloud SQL インスタンスを作成するセクションの「ネットワーク」手順で、[RESERVED_STATIC_IP_ADDRESS] を正しく入力したことを確認します。
  2. Cuebot VM の構成とプロビジョニング セクションの「コマンド引数」手順で、[CLOUD_SQL_IP_ADDRESS][DATABASEPASSWORD] を正しく入力したことを確認します。
  3. Cuebot VM の構成とプロビジョニング セクションの「ネットワーク設定の構成」手順で、予約済み外部 IP アドレスを正しく入力したことを確認します。

問題: 開始したジョブは OpenCue に一覧表示されているが、レンダーホストを認識しない。

解決策: [Job Facility] タグと [Job Layer] タグが、割り当てられた [Render Host] タグと一致し、最低限のリソース要件が満たされていることを確認します。詳細については、OpenCue の Render Troubleshooting および Deployment Troubleshooting ドキュメントをご覧ください。


問題: レンダーホストが CueGui に表示されない。

解決策: ホストが表示されない原因はいくつか考えられますが、一般的な原因として、レンダーホスト インスタンス テンプレートのデプロイ時に Cuebot の内部 IP アドレスが正しく入力されていないことがあげられます。詳細については、デプロイメントのトラブルシューティングのドキュメントをご覧ください。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

  1. コンソールで [リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

次のステップ