View a markdown version of this page

Was ist ein Deadline Cloud-Workload? - 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.

Was ist ein Deadline Cloud-Workload?

Mit AWS Deadline Cloud können Sie Jobs einreichen, um Ihre Anwendungen in der Cloud auszuführen und Daten für die Produktion von Inhalten oder Erkenntnissen zu verarbeiten, die für Ihr Unternehmen wichtig sind. Deadline Cloud verwendet Open Job Description (OpenJD) als Syntax für Jobvorlagen, eine Spezifikation, die für die Anforderungen von Visual Compute-Pipelines entwickelt wurde, aber auch für viele andere Anwendungsfälle gilt. Einige Beispiel-Workloads umfassen das Rendern von Computergrafiken, Physiksimulation und Photogrammetrie.

Workloads reichen von einfachen Auftragspaketen, die Benutzer entweder mit der CLI oder einer automatisch generierten GUI an eine Warteschlange senden, bis hin zu integrierten Absender-Plugins, die dynamisch ein Auftragspaket für eine anwendungsdefinierte Arbeitslast generieren.

Wie entstehen Workloads bei der Produktion

Um Workloads in Produktionskontexten zu verstehen und zu erfahren, wie sie mit Deadline Cloud unterstützt werden können, sollten Sie sich überlegen, wie sie entstehen. Die Produktion kann die Erstellung von visuellen Effekten, Animationen, Spielen, Bildern aus Produktkatalogen, 3D-Rekonstruktionen für Building Information Modeling (BIM) und mehr umfassen. Diese Inhalte werden in der Regel von einem Team von künstlerischen oder technischen Spezialisten erstellt, die eine Vielzahl von Softwareanwendungen und benutzerdefinierten Skripten ausführen. Die Teammitglieder geben mithilfe einer Produktionspipeline Daten untereinander weiter. Viele Aufgaben, die von der Pipeline ausgeführt werden, beinhalten intensive Berechnungen, die Tage dauern würden, wenn sie auf der Workstation eines Benutzers ausgeführt würden.

Einige Beispiele für Aufgaben in diesen Produktionspipelines sind:

  • Verwenden einer Photogrammetrie-Anwendung zur Verarbeitung von Fotos, die von einem Filmset aufgenommen wurden, um ein strukturiertes digitales Netz zu rekonstruieren.

  • Ausführen einer Partikelsimulation in einer 3D-Szene, um einem visuellen Explosionseffekt für eine Fernsehsendung Detailebenen hinzuzufügen.

  • Daten für ein Spiellevel in die Form bringen, die für die externe Veröffentlichung erforderlich ist, und Anwenden von Optimierungs- und Komprimierungseinstellungen.

  • Rendern einer Reihe von Bildern für einen Produktkatalog, einschließlich Variationen in Farbe, Hintergrund und Beleuchtung.

  • Ausführen eines speziell entwickelten Skripts auf einem 3D-Modell, um einen Look anzuwenden, der speziell erstellt und von einem Filmregisseur genehmigt wurde.

Bei diesen Aufgaben müssen viele Parameter angepasst werden, um ein künstlerisches Ergebnis zu erzielen oder die Ausgabequalität zu optimieren. Oft gibt es eine GUI, mit der diese Parameterwerte über eine Schaltfläche oder ein Menü ausgewählt werden können, um den Prozess lokal in der Anwendung auszuführen. Wenn ein Benutzer den Prozess ausführt, können die Anwendung und möglicherweise der Host-Computer selbst nicht für andere Operationen verwendet werden, da sie den Anwendungsstatus im Arbeitsspeicher verwenden und möglicherweise die gesamten CPU- und Speicherressourcen des Host-Computers beanspruchen.

In vielen Fällen ist der Vorgang schnell. Im Laufe der Produktion verlangsamt sich die Geschwindigkeit des Prozesses, wenn die Anforderungen an Qualität und Komplexität steigen. Aus einem Charaktertest, der während der Entwicklung 30 Sekunden gedauert hat, können leicht 3 Stunden werden, wenn er auf den endgültigen Produktionscharakter angewendet wird. Durch diese Entwicklung kann eine Arbeitslast, die ursprünglich in einer GUI existierte, zu groß werden, um sie aufzunehmen. Die Portierung auf Deadline Cloud kann die Produktivität der Benutzer steigern, die diese Prozesse ausführen, da sie wieder die volle Kontrolle über ihre Workstation erhalten und weitere Iterationen vom Deadline Cloud-Monitor aus verfolgen können.

Bei der Entwicklung von Support für einen Workload in Deadline Cloud sollten Sie zwei Unterstützungsstufen anstreben:

  • Auslagerung der Arbeitslast von der Benutzerarbeitsstation auf eine Deadline Cloud-Farm ohne Parallelität oder Beschleunigung. Bei diesem Ansatz werden die verfügbaren Rechenressourcen in der Farm möglicherweise nicht ausreichend genutzt, aber die Möglichkeit, lange Operationen auf ein Stapelverarbeitungssystem zu verlagern, ermöglicht es Benutzern, mehr mit ihrer eigenen Workstation zu erledigen.

  • Optimierung der Parallelität der Arbeitslast, sodass die horizontale Skalierung der Deadline Cloud-Farm genutzt wird, um eine schnelle Ausführung zu ermöglichen.

Manchmal ist es offensichtlich, wie eine Arbeitslast parallel ausgeführt werden kann. Beispielsweise kann jedes Bild eines Computergrafik-Renderings unabhängig voneinander erstellt werden. Es ist jedoch wichtig, bei dieser Parallelität nicht hängen zu bleiben. Machen Sie sich stattdessen bewusst, dass das Auslagern eines Workloads mit langer Laufzeit auf Deadline Cloud erhebliche Vorteile bietet, auch wenn es keine offensichtliche Möglichkeit gibt, die Arbeitslast aufzuteilen.

Die Bestandteile einer Arbeitslast

Um einen Deadline Cloud-Workload anzugeben, implementieren Sie ein Auftragspaket, das Benutzer mit der Deadline Cloud-CLI an eine Warteschlange senden. Ein Großteil der Arbeit bei der Erstellung eines Job-Bundles besteht darin, die Job-Vorlage zu schreiben, aber es gibt noch mehr Faktoren, wie zum Beispiel die Bereitstellung der Anwendungen, die für den Workload erforderlich sind. Bei der Definition eines Workloads für Deadline Cloud sollten Sie Folgendes unbedingt beachten:

  • Die auszuführende Anwendung. Der Job muss in der Lage sein, Anwendungsprozesse zu starten, und erfordert daher eine Installation der verfügbaren Anwendung sowie alle von der Anwendung verwendeten Lizenzen, z. B. den Zugriff auf einen Floating-Lizenzserver. Die Installation und Lizenzierung sind in der Regel Teil der Farmkonfiguration und nicht in das Auftragspaket selbst eingebettet.

  • Definitionen von Jobparametern. Die Benutzererfahrung beim Senden des Jobs wird stark von den bereitgestellten Parametern beeinflusst. Zu den Beispielparametern gehören Datendateien, Verzeichnisse und die Anwendungskonfiguration.

  • Dateidatenfluss. Wenn ein Job ausgeführt wird, liest er Eingaben aus Dateien, die vom Benutzer bereitgestellt wurden, und schreibt die Ausgabe dann als neue Dateien. Um mit den Jobanhängen und Pfadzuordnungsfunktionen arbeiten zu können, muss der Job die Pfade der Verzeichnisse oder bestimmter Dateien für diese Ein- und Ausgaben angeben.

  • Das Step-Skript. Das Step-Skript führt die Anwendungsbinärdatei mit den richtigen Befehlszeilenoptionen aus, um die bereitgestellten Jobparameter anzuwenden. Es verarbeitet auch Details wie die Pfadzuordnung, wenn die Workload-Datendateien absolute statt relative Pfadverweise enthalten.

Portabilität der Arbeitslast

Ein Workload ist portabel, wenn er auf mehreren verschiedenen Systemen ausgeführt werden kann, ohne ihn jedes Mal zu ändern, wenn Sie einen Job einreichen. Es kann beispielsweise auf verschiedenen Renderfarmen ausgeführt werden, auf denen verschiedene gemeinsam genutzte Dateisysteme bereitgestellt sind, oder auf verschiedenen Betriebssystemen wie Linux oderWindows. Wenn Sie ein portables Auftragspaket implementieren, ist es für Benutzer einfacher, den Job in ihrer spezifischen Farm auszuführen oder ihn für andere Anwendungsfälle anzupassen.

Hier sind einige Möglichkeiten, wie Sie Ihr Job-Paket portabel machen können.

  • Geben Sie mithilfe der Job-Parameter und Asset-Referenzen im PATH Job-Paket die für einen Workload benötigten Eingabedatendateien vollständig an. Durch diesen Ansatz kann der Job auf Farmen übertragen werden, die auf gemeinsam genutzten Dateisystemen basieren, und auf Farmen, die Kopien der Eingabedaten erstellen, wie z. B. die Funktion „Jobanhänge“ von Deadline Cloud.

  • Machen Sie Dateipfadverweise für die Eingabedateien des Jobs verschiebbar und auf verschiedenen Betriebssystemen nutzbar. Zum Beispiel, wenn Benutzer Jobs von Windows Workstations aus einreichen, um sie auf einer Flotte auszuführen. Linux

    • Verwenden Sie relative Dateipfadverweise. Wenn also das Verzeichnis, das sie enthält, an einen anderen Ort verschoben wird, werden die Verweise trotzdem aufgelöst. Einige Anwendungen, wie Blender, unterstützen die Wahl zwischen relativen und absoluten Pfaden.

    • Wenn Sie keine relativen Pfade verwenden können, unterstützen Sie OpenJD-Pfad-Mapping-Metadaten und übersetzen Sie die absoluten Pfade entsprechend der Art und Weise, wie Deadline Cloud die Dateien für den Job bereitstellt.

  • Implementieren Sie Befehle in einem Job mithilfe portabler Skripte. Python und Bash sind zwei Beispiele für Skriptsprachen, die auf diese Weise verwendet werden können. Sie sollten erwägen, beide auf allen Worker-Hosts Ihrer Flotten bereitzustellen.

    • Verwenden Sie die Skriptinterpreter-Binärdatei, wie python oderbash, mit dem Namen der Skriptdatei als Argument. Dieser Ansatz funktioniert auf allen BetriebssystemenWindows, auch im Vergleich zur Verwendung einer Skriptdatei, bei der das Ausführungsbit aktiviert Linux ist.

    • Schreiben Sie portable Bash-Skripte, indem Sie die folgenden Methoden anwenden:

      • Erweitern Sie die Pfadparameter der Vorlage in einfachen Anführungszeichen, um Pfade mit Leerzeichen und Windows Pfadtrennzeichen zu behandeln.

      • Achten Sie bei der Ausführung auf Windows Probleme im Zusammenhang mit der automatischen Pfadübersetzung von MinGW. Zum Beispiel wandelt es einen AWS CLI Befehl like aws logs tail /aws/deadline/... in einen Befehl um, der einem Protokoll ähnelt aws logs tail "C:/Program Files/Git/aws/deadline/..." und dessen Ende nicht korrekt ist. Stellen Sie die Variable MSYS_NO_PATHCONV=1 ein, um dieses Verhalten auszuschalten.

      • In den meisten Fällen funktioniert derselbe Code auf allen Betriebssystemen. Wenn der Code anders sein muss, verwenden Sie ein if/else Konstrukt, um die Fälle zu behandeln.

        if [[ "$(uname)" == MINGW* || "$(uname -s)" == MSYS_NT* ]]; then : # Code for Windows elif [[ "$(uname)" == Darwin ]]; then : # Code for MacOS else : # Code for Linux and other operating systems fi
    • Sie können portable Python-Skripte schreibenpathlib, um Pfadunterschiede im Dateisystem zu handhaben und betriebssystemspezifische Funktionen zu vermeiden. Die Python-Dokumentation enthält dazu Anmerkungen, beispielsweise in der Dokumentation zur Signalbibliothek. Linux-spezifische Funktionsunterstützung ist als „Verfügbarkeit: Linux“ gekennzeichnet.

  • Verwenden Sie Jobparameter, um die Anwendungsanforderungen zu spezifizieren. Verwenden Sie konsistente Konventionen, die der Farmadministrator in Warteschlangenumgebungen anwenden kann.

    • Beispielsweise können Sie die CondaPackages and/or RezPackages Parameter in Ihrem Job verwenden, wobei ein Standardparameterwert die Namen und Versionen der Anwendungspakete auflistet, die für den Job erforderlich sind. Anschließend können Sie eine der Conda- oder Rez-Beispiel-Warteschlangenumgebungen verwenden, um eine virtuelle Umgebung für den Job bereitzustellen.