View a markdown version of this page

Fügen Sie Task-Chunking zu einer Job-Vorlage hinzu - Deadline Cloud

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Fügen Sie Task-Chunking zu einer Job-Vorlage hinzu

Das folgende Verfahren konvertiert eine Auftragsvorlage, die einen Frame pro Aufgabe rendert, in eine Vorlage, die Frame-Blöcke rendert. Hintergrundinformationen zum Chunking und zur Auswahl einer Chunk-Größe finden Sie unter. Aufgabenteilung für Jobvorlagen

Bevor Sie beginnen, muss Folgendes sichergestellt sein:

  • Ein Auftragspaket mit einer Auftragsvorlage, die einen Frame-Task-Parameter definiert. Weitere Informationen finden Sie unter Elemente der Jobvorlage für Jobpakete.

  • Eine Warteschlange, die einer Flotte zugeordnet ist, die Chunking unterstützt. Service-managed Auf Flotten läuft immer ein kompatibler Worker Agent. Customer-managed Flotten benötigen Worker Agent Version 0.28.21 oder höher für die Worker.

Um einer Job-Vorlage Aufgaben-Chunking hinzuzufügen
  1. Fügen Sie die TASK_CHUNKING Erweiterung am Anfang Ihrer template.yaml Datei hinzu:

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

    Wenn Sie diesen Schritt überspringen, schlägt die Auftragserstellung mit dem folgenden Fehler fehl The CHUNK[INT] task parameter requires the TASK_CHUNKING extension.

  2. Ändern Sie in den Schritten den Parametertyp der Frame-Aufgabe von INT auf CHUNK[INT] und fügen Sie die folgende chunks Eigenschaft hinzu: parameterSpace

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

    Alle verfügbaren Felder finden Sie unterReferenz für den CHUNK [INT] -Aufgabenparameter.

  3. Aktualisieren Sie das Skript des Schritts so, dass es einen Frame-Bereich statt eines einzelnen Frames akzeptiert. Mit rangeConstraint: CONTIGUOUS wird die {{Task.Param.Frame}} Variable immer auf einen start-end Formatbereich erweitert, sodass das Script sie mit dem cut folgenden Befehl aufteilen kann:

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

    Mit rangeConstraint: NONCONTIGUOUS wird die Variable auf einen beliebigen Bereichsausdruck erweitert, wie 1-3,5,7-20:2 z. B. Transformieren Sie den Ausdruck in die Syntax, die Ihre Anwendung akzeptiert. Eine funktionierende Transformation finden Sie in den Beispielen für das Aufteilen von Aufgaben unter. GitHub

  4. Reichen Sie das Job-Paket mit der Deadline Cloud-CLI ein:

    deadline bundle submit my-job-bundle
  5. Um zu überprüfen, ob das Chunking wirksam ist, öffnen Sie den Job im Deadline Cloud-Monitor und sehen Sie sich die Aufgabenliste des Schritts an. Jede Aufgabe stellt einen Block dar und zeigt beispielsweise 1-10 anstelle einer einzelnen Frame-Nummer einen Frame-Bereich an.

Die folgende vollständige Auftragsvorlage rendert eine Blender-Animation in Blender-Abschnitten von 10 Bildern:

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

In diesem Beispiel unterteilt Deadline Cloud die 100 Frames in Blöcke wie 1-10 und11-20, und jede Aufgabe rendert ihren Chunk mit einem einzigen Blender-Aufruf.

Weitere Informationen finden Sie unter den folgenden Themen: