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

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

このチュートリアルでは、Google Cloud Platform(GCP)を使用して 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 などの GCP リソース管理の基本ツールとコンセプト。

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

目標

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

料金

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

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

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

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. GCP プロジェクトを選択または作成します。

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

  3. プロジェクトに対して課金が有効になっていることを確認します。

    課金を有効にする方法について

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

    APIを有効にする

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

OpenCue の概要

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

  • Cuebot - OpenCue のスケジューリング ツール。Cuebot はジョブの配布を処理し、レンダリング リソースを管理し、データベースと通信します。Cuebot には、Python と Bash を使用してコマンドライン インターフェース(CLI)からアクセスできます。ただし、ビジュアル インターフェースも、後述するように別のモジュールとして含まれています。この例では、GCP VM で Cuebot を実行します。オンプレミス デプロイ用にローカルで実行することもできます。大規模かつハイブリッドのデプロイでは、複数の Cuebot インスタンスを使用すると、可用性が向上します。
  • データベース - Cuebot は PostgreSQL データベース サーバーを操作して、アプリケーションの状態を保存します。複数の Cuebot を伴うデプロイでも、インスタンス間では 1 つのデータベースしか共有しません。このチュートリアルでは、デプロイを容易にするために Cloud SQL インスタンスを使用します。
  • CueGUI - Cuebot を操作するためのビジュアル インターフェース。CueGUI を使用して、ジョブやレンダーホストの設定のモニタリングと管理を行えます。このチュートリアルでは、Cuebot をクラウドで実行し、CueGUI をローカルマシンで実行します。
  • レンダーホスト - 個々のタスクの処理に使用される個々のレンダリング リソース。レンダーホストは、オンプレミス、クラウド、またはその両方を組み合わせた環境に置くことができます。このチュートリアルでは、GCP の 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 アーキテクチャ図

このチュートリアルで使用される GCP リソース

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

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

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

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

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

    cd ~/
    git clone https://github.com/imageworks/OpenCue.git
    

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

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

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

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. ローカルの OpenCue ディレクトリから Cloud Storage チュートリアル バケットに V1__Initial_schema.sql ファイルをコピーします。

    gsutil cp ~/OpenCue/cuebot/src/main/resources/conf/ddl/postgres/migrations/V1__Initial_schema.sql 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. GCP Console の [静的アドレスの予約] ページに移動します。

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

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

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

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

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

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

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

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

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

Cloud SQL インスタンスの作成

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

  1. GCP Console で [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/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 は、GCP 上のプライベート 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 ツールを承認します。次に、Cuebot Docker イメージを Container Registry に同期します。

  1. 次のコマンドを実行して、gcloud ツールと 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.cueDataSource.url=jdbc:postgresql://[CLOUD_SQL_IP_ADDRESS]/cuebot
      --datasource.cueDataSource.username=postgres
      --datasource.cueDataSource.password=[DATABASEPASSWORD]
      

      ここで

      コマンド引数 必要な入力の説明
      --datasource.cueDataSource.url=jdbc:postgresql://[CLOUD_SQL_IP_ADDRESS]/cuebot Cuebot からデータベースへの通信を可能にします。入力は [CLOUD_SQL_IP_ADDRESS] / [DATABASE_NAME] です。前の手順でデータベース名に使用した cuebot を、ここで入力します。
      --datasource.cueDataSource.username=postgres Cuebot は接続時にデータベースのユーザー名を要求します。セットアップ中に使用したデフォルトのユーザー名である postgres を、ここに入力します。本番環境では、セキュリティのベスト プラクティスに沿って、特定の権限を持つ新しいユーザーを作成する必要があります。
      --datasource.cueDataSource.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 にデプロイする前に、チュートリアル リポジトリからタスク固有のソフトウェアと GCP 設定を追加します。これにより、このベースをカスタマイズできるようになります。

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

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

    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. GCP Console で [サービス アカウント] ページに移動します。

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

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

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

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

  5. [SERVICE_ACCOUNT_NAME](例: storageservice)を入力し、[作成] をクリックします。

  6. サービス アカウントに対する Storage Object Admin の役割を選択し、[続行] をクリックします。

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

インスタンス テンプレートの作成

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

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

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

  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 に登録します。

  9. [コンテナの詳細オプション] をクリックします。

  10. [権限のあるユーザーとして実行] を選択します。

  11. [環境変数] の下の [+ 変数の追加] をクリックし、[名前] を [CUEBOT_HOSTNAME]、[] を [CUEBOT_INTERNAL_IP_ADDRESS] に設定します。これは、以前にプロビジョニングした Cuebot VM の内部 IP アドレスを表します。

  12. サービス アカウントを構成します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 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 転送の設定

ローカル ワークステーションと GCP の間の安全な通信を支援するために、このチュートリアルでは 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/src/:$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. ジョブ名(例: yourjobname)を入力します。
  2. ショット(例: sh_05)を入力します。
  3. レイヤ名(例: render)を入力します。
  4. [実行するコマンド] に、次のように入力します。

    /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. [フレームの仕様] に 600-700 を入力します。

  6. [ジョブタイプ] を Shell に設定します。

  7. [サービス] を shell に設定します。

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

    「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 つです。映画セットでは、ショットは「アクション」と「カット」の間の時間です。通常、一連のショットの各々やプリプロダクション中のアセット ローテーションに使用されます。
    Layer(レイヤ) 送信とフレームの範囲内の個々のコマンド。この例では、ジョブの中で、シングルレイヤ、レンダリングを実行しています。
    Command to Run(実行するコマンド) レイヤが実行するコマンド。ここでは Blender のコマンドライン レンダリングを実行しています。
    Frame Spec(フレームの仕様) 処理するフレーム。アニメーションのフレーム 600~700 をレンダリングします。フレーム ステッピングや任意のフレーム入力など、その他のオプションを表示するには、[Frame Spec] ボックスをポイントします。
    Job Type(ジョブタイプ) ジョブでこのレイヤに使用されるソフトウェア パッケージを定義するために使用されます。定義したコマンドはシェル スクリプトとして解釈されるので、[Shell] を入力します。
    Services(サービス) 最小 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 アドレス): IP アドレスにより、OpenCue と GCP の間の 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 をご覧ください。

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

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

  1. GCP Console で、バケット内のオブジェクトのリストを表示したり、ブラウザでイメージをプレビューしたりします。

    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. GCP Console で 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 アドレスが正しく入力されていないことがあげられます。詳細については、Deployment Troubleshooting ドキュメントをご覧ください。

クリーンアップ

このチュートリアルで使用するリソースについて、Google Cloud Platform アカウントに課金されないようにする手順は次のとおりです。

  1. GCP Console で [プロジェクト] ページに移動します。

    プロジェクト ページに移動

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

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...