

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

# ジョブテンプレートにタスクチャンキングを追加する
<a name="build-job-bundle-chunking-add"></a>

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

開始するには、以下が必要です。
+ フレームタスクパラメータを定義するジョブテンプレートを含むジョブバンドル。詳細については、「[ジョブバンドルのジョブテンプレート要素](build-job-bundle-template.md)」を参照してください。
+ チャンキングをサポートするフリートに関連付けられたキュー。サービスマネージドフリートは常に互換性のあるワーカーエージェントを実行します。カスタマーマネージドフリートでは、ワーカーにワーカーエージェントバージョン 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.`

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

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

   使用可能なすべてのフィールドについては、「」を参照してください[CHUNK[INT] タスクパラメータリファレンス](build-job-bundle-chunking-reference.md)。

1. ステップのスクリプトを更新して、単一のフレームではなくフレーム範囲を受け入れます。では`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 [のタスクチャンキングサンプル](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/task_chunking)を参照してください。

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

   ```
   deadline bundle submit {{my-job-bundle}}
   ```

1. チャンキングが有効であることを確認するには、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 呼び出しでチャンクをレンダリングします。

詳細については、以下の各トピックを参照してください。
+ [Deadline Cloud でタスクチャンキングを使用してフレームをチャンクにグループ化する](examples-jb-task-chunking.md) – Ready-to-submitチャンキングサンプル。
+ [Deadline Cloud にジョブを送信する方法](submit-jobs-how.md) – ジョブバンドルをキューに送信します。