View a markdown version of this page

ジョブテンプレートにタスクチャンキングを追加する - Deadline クラウド

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ジョブテンプレートにタスクチャンキングを追加する

次の手順では、タスクごとに 1 つのフレームをレンダリングするジョブテンプレートを、フレームのチャンクをレンダリングするジョブテンプレートに変換します。チャンキングの背景とチャンクサイズの選択方法については、「」を参照してくださいジョブテンプレートのタスクチャンキング

開始するには、以下が必要です。

  • フレームタスクパラメータを定義するジョブテンプレートを含むジョブバンドル。詳細については、「ジョブバンドルのジョブテンプレート要素」を参照してください。

  • チャンキングをサポートするフリートに関連付けられたキュー。サービスマネージドフリートは常に互換性のあるワーカーエージェントを実行します。カスタマーマネージドフリートでは、ワーカーにワーカーエージェントバージョン 0.28.21 以降が必要です。

タスクチャンキングをジョブテンプレートに追加するには
  1. TASK_CHUNKING 拡張子をtemplate.yamlファイルの上部に追加します。

    specificationVersion: 'jobtemplate-2023-09' extensions: - TASK_CHUNKING

    このステップをスキップすると、ジョブの作成は エラーで失敗します。 The CHUNK[INT] task parameter requires the TASK_CHUNKING extension.

  2. ステップの でparameterSpace、フレームタスクパラメータタイプを から INT に変更CHUNK[INT]し、 chunksプロパティを追加します。

    taskParameterDefinitions: - name: Frame type: CHUNK[INT] range: "{{Param.Frames}}" chunks: defaultTaskCount: 10 rangeConstraint: CONTIGUOUS

    使用可能なすべてのフィールドについては、「」を参照してくださいCHUNK[INT] タスクパラメータリファレンス

  3. ステップのスクリプトを更新して、単一のフレームではなくフレーム範囲を受け入れます。ではrangeConstraint: CONTIGUOUS{{Task.Param.Frame}}変数は常に start-end形式の範囲に拡張されるため、スクリプトは cut コマンドで分割できます。

    START_FRAME="$(echo '{{Task.Param.Frame}}' | cut -d- -f1)" END_FRAME="$(echo '{{Task.Param.Frame}}' | cut -d- -f2)"

    ではrangeConstraint: NONCONTIGUOUS、変数は などの任意の範囲式に展開されます1-3,5,7-20:2。式を、アプリケーションが受け入れる構文に変換します。実際の変換については、GitHub のタスクチャンキングサンプルを参照してください。

  4. Deadline Cloud CLI を使用してジョブバンドルを送信します。

    deadline bundle submit my-job-bundle
  5. チャンキングが有効であることを確認するには、Deadline Cloud モニターでジョブを開き、ステップのタスクリストを表示します。各タスクは 1 つのチャンクを表し、1 つのフレーム番号1-10の代わりに などのフレーム範囲を表示します。

次の完全なジョブテンプレートは、Blender アニメーションを 10 フレームのチャンクでレンダリングします。

specificationVersion: 'jobtemplate-2023-09' extensions: - TASK_CHUNKING name: Blender Render with Contiguous Chunking parameterDefinitions: - name: BlenderSceneFile type: PATH objectType: FILE dataFlow: IN - name: Frames type: STRING default: "1-100" - name: OutputDir type: PATH objectType: DIRECTORY dataFlow: OUT default: "./output" steps: - name: RenderBlender parameterSpace: taskParameterDefinitions: - name: Frame type: CHUNK[INT] range: "{{Param.Frames}}" chunks: defaultTaskCount: 10 rangeConstraint: CONTIGUOUS script: actions: onRun: command: bash args: ["{{Task.File.Run}}"] embeddedFiles: - name: Run type: TEXT data: | set -xeuo pipefail mkdir -p '{{Param.OutputDir}}' # Parse the chunk range (e.g., "1-10") into start and end frames START_FRAME="$(echo '{{Task.Param.Frame}}' | cut -d- -f1)" END_FRAME="$(echo '{{Task.Param.Frame}}' | cut -d- -f2)" blender --background '{{Param.BlenderSceneFile}}' \ --render-output '{{Param.OutputDir}}/output_####' \ --render-format PNG \ --use-extension 1 \ -s "$START_FRAME" \ -e "$END_FRAME" \ --render-anim

この例では、Deadline Cloud は 100 個のフレームを 1-10や などのチャンクに分割し11-20、各タスクは 1 回の Blender 呼び出しでチャンクをレンダリングします。

詳細については、以下の各トピックを参照してください。