

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 什麼是截止日期雲端工作負載
<a name="what-is-a-deadline-cloud-workload"></a>

 使用 AWS 截止日期雲端，您可以提交任務以在雲端中執行應用程式，並處理資料，以生產對業務至關重要的內容或洞見。Deadline Cloud 使用 [Open Job Description](https://github.com/OpenJobDescription/openjd-specifications) (OpenJD) 做為任務範本的語法，此規格專為視覺化運算管道的需求而設計，但適用於許多其他使用案例。一些範例工作負載包括電腦圖形渲染、物理模擬和光素測量。

工作負載從使用者使用 CLI 或自動產生的 GUI 提交到佇列的簡單任務套件，擴展到為應用程式定義工作負載動態產生任務套件的整合提交者外掛程式。

## 工作負載如何從生產環境中產生
<a name="how-workloads-arise-from-production"></a>

 若要了解生產環境中的工作負載，以及如何透過截止日期雲端支援工作負載，請考慮它們的呈現方式。生產可能涉及建立視覺效果、動畫、遊戲、產品目錄影像、用於建置資訊建模 (BIM) 的 3D 重建等。此內容通常由執行各種軟體應用程式和自訂指令碼的藝術或技術專家團隊建立。團隊成員使用生產管道在彼此之間傳遞資料。管道執行的許多任務都涉及密集運算，如果在使用者的工作站上執行，可能需要幾天的時間。

 這些生產管道中的一些任務範例包括：
+  使用光素測量應用程式處理電影集拍攝的相片，以重建紋理數位網格。
+  在 3D 場景中執行粒子模擬，為電視節目的爆炸視覺效果新增多層細節。
+  將遊戲關卡的資料製作成外部發行和套用最佳化和壓縮設定所需的格式。
+  轉譯產品目錄的一組影像，包括顏色、背景和照明的變化。
+  在 3D 模型上執行自訂開發的指令碼，以套用由電影導演自訂建置和核准的外觀。

 這些任務涉及許多參數來調整，以取得藝術結果或微調輸出品質。通常有一個 GUI 可以使用按鈕或功能表選取這些參數值，以在應用程式中本機執行程序。當使用者執行程序時，應用程式和主機電腦本身可能無法用於執行其他操作，因為它使用記憶體中的應用程式狀態，並且可能會消耗主機電腦的所有 CPU 和記憶體資源。

 在許多情況下，程序非常快速。在生產過程中，當品質和複雜性的需求上升時，程序的速度會變慢。在開發期間花費 30 秒的字元測試，在套用到最終生產角色時，可以輕鬆變成 3 小時。透過此進展，在 GUI 內開始生命週期的工作負載可能會變得太大而無法適應。將其移植到截止日期雲端可以提高執行這些程序之使用者的生產力，因為他們可以恢復對工作站的完全控制，並且可以從截止日期雲端監視器追蹤更多反覆運算。

 在截止日期雲端開發工作負載支援時，需要兩個層級的支援：
+  將工作負載從使用者工作站卸載至沒有平行處理或加速的截止日期雲端陣列。這可能未充分利用陣列中可用的運算資源，但能夠將長時間操作轉移到批次處理系統，讓使用者能夠使用自己的工作站完成更多工作。
+  最佳化工作負載的平行處理，以便利用截止日期雲端陣列的水平擴展快速完成。

 有時候，讓工作負載平行執行很明顯。例如，電腦圖形轉譯的每個影格都可以獨立完成。不過，請務必不要卡在這種平行處理上。相反地，請了解，將長時間執行的工作負載卸載至 Deadline Cloud 可提供顯著的好處，即使沒有明顯的方式來分割工作負載。

## 工作負載的成分
<a name="the-ingredients-of-a-workload"></a>

 若要指定截止日期雲端工作負載，請使用[截止日期雲端 CLI](https://github.com/aws-deadline/deadline-cloud) 實作使用者提交至佇列的任務套件。建立任務套件的大部分工作是撰寫任務範本，但還有更多因素，例如如何提供工作負載所需的應用程式。以下是定義截止日期雲端工作負載時需要考慮的重要事項：
+  **要執行的應用程式**。任務必須能夠啟動應用程式程序，因此需要安裝可用的應用程式，以及應用程式使用的任何授權，例如存取浮動授權伺服器。這通常是陣列組態的一部分，而不是內嵌在任務套件本身。
  + [使用佇列環境設定任務](configure-jobs.md)
  + [將客戶受管機群連接至授權端點](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/cmf-ubl.html)
+  **任務參數定義**。提交任務的使用者體驗會受到其提供的參數大幅影響。範例參數包括資料檔案、目錄和應用程式組態。
  + [任務套件的參數值元素](build-job-bundle-parameters.md)
+  **檔案資料流程**。當任務執行時，它會從使用者提供的檔案讀取輸入，然後將其輸出寫入為新檔案。若要使用任務附件和路徑映射功能，任務必須為這些輸入和輸出指定目錄或特定檔案的路徑。
  + [在任務中使用檔案](using-files-in-your-jobs.md)
+  **步驟指令碼**。步驟指令碼會使用正確的命令列選項執行應用程式二進位檔，以套用提供的任務參數。如果工作負載資料檔案包含絕對值而非相對路徑參考，它也會處理路徑映射等詳細資訊。
  + [任務套件的任務範本元素](build-job-bundle-template.md)

## 工作負載可攜性
<a name="workload-portability"></a>

 工作負載可在多個不同系統中執行，而不必在每次提交任務時變更，則為可攜式工作負載。例如，它可能會在已掛載不同共用檔案系統的不同轉譯陣列上執行，或在 Linux或 等不同作業系統上執行Windows。當您實作可攜式任務套件時，使用者可以更輕鬆地在自己的特定陣列上執行任務，或針對其他使用案例進行調整。

 以下是您可以讓任務套件成為可攜式的一些方法。
+  使用`PATH`任務套件中的任務參數和資產參考，完整指定工作負載所需的輸入資料檔案。這種方法讓任務可以根據共用檔案系統移植到陣列，以及製作輸入資料副本的陣列，例如截止日期雲端任務連接功能。
+  讓任務輸入檔案的檔案路徑參考可在不同的作業系統上重新定位和使用。例如，當使用者從Windows工作站提交任務以在Linux機群上執行時。
  +  使用相對檔案路徑參考，因此如果包含它們的目錄移至不同的位置，參考仍會解析。有些應用程式，例如 [Blender](https://docs.blender.org/manual/en/latest/files/blend/open_save.html#files-blend-relative-paths)，支援相對路徑和絕對路徑之間的選擇。
  +  如果您無法使用相對路徑， 支援 OpenJD [路徑映射中繼資料](https://github.com/OpenJobDescription/openjd-specifications/wiki/How-Jobs-Are-Run#path-mapping)，並根據 Deadline Cloud 將檔案提供給任務的方式轉譯絕對路徑。
+  使用可攜式指令碼在任務中實作命令。Python 和 bash 是指令碼語言的兩個範例，可以用這種方式使用。您應該考慮在機群的所有工作者主機上提供兩者。
  +  使用指令碼解譯器二進位檔，例如 `python`或 `bash`，並將指令碼檔案名稱作為引數。相較於在 上使用指令碼檔案搭配其執行位元設定，此方法適用於所有作業系統Windows，包括 Linux。
  +  套用這些實務來撰寫可攜式 bash 指令碼：
    +  以單引號展開範本路徑參數，以處理具有空格和路徑分隔符號的Windows路徑。
    +  在 上執行時Windows，請注意與 MinGW 自動路徑轉譯相關的問題。例如，它會`aws logs tail /aws/deadline/...`將 之類的 AWS CLI 命令轉換為類似 的命令，`aws logs tail "C:/Program Files/Git/aws/deadline/..."`並且無法正確地追蹤日誌。設定 變數`MSYS_NO_PATHCONV=1`以關閉此行為。
    +  在大多數情況下，相同的程式碼適用於所有作業系統。當程式碼需要不同時，請使用 `if/else` 建構來處理案例。

      ```
      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
      ```
  +  您可以使用 編寫可攜式 Python 指令碼`pathlib`，以處理檔案系統路徑差異，並避免操作特定的功能。Python 文件包含對此的註釋，例如在[訊號程式庫文件中](https://docs.python.org/3/library/signal.html)。 Linux特定的功能支援標記為「可用性：Linux」。
+  使用任務參數來指定應用程式需求。使用陣列管理員可在[佇列環境中](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/configure-jobs.html)套用的一致慣例。
  +  例如，您可以在任務中使用 `CondaPackages`和/或 `RezPackages` 參數，搭配預設參數值，列出任務所需的應用程式套件名稱和版本。然後，您可以使用其中一個[範例 conda 或 Rez 佇列環境](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/queue_environments)，為任務提供虛擬環境。