

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

# 使用自有容器 (BYOC)
<a name="braket-jobs-byoc"></a>

Amazon Braket Hybrid Jobs 提供三個預先建置的容器，用於在不同環境中執行程式碼。如果其中一個容器支援您的使用案例，您只需在建立混合任務時提供演算法指令碼。您可以從演算法指令碼或使用 從 `requirements.txt` 檔案新增次要缺少的相依性`pip`。

如果這些容器都不支援您的使用案例，或者如果您想要擴展這些容器，則 Braket Hybrid Jobs 支援使用您自己的自訂Docker容器映像執行混合任務，或自備容器 (BYOC)。請確定這是適合您使用案例的正確功能。

**Topics**
+ [何時將我自己的容器帶入正確的決策？](#bring-own-container-decision)
+ [自備容器的配方](bring-own-container-recipe.md)
+ [在您自己的容器中執行 Braket 混合任務](running-hybrid-jobs-in-own-container.md)

## 何時將我自己的容器帶入正確的決策？
<a name="bring-own-container-decision"></a>

將您自己的容器 (BYOC) 帶入 Braket Hybrid Jobs，可讓您在封裝環境中安裝自己的軟體，藉此靈活地使用自己的軟體。根據您的特定需求，可能有一些方法可以實現相同的彈性，而無需完成完整的BYOC Docker建置 - Amazon ECR 上傳 - 自訂映像 URI 週期。

**注意**  
如果您想要新增少量可公開取得的其他 Python 套件 （通常少於 10 個），BYOC 可能不是正確的選擇。例如，如果您使用的是 PyPi。

在這種情況下，您可以使用其中一個預先建置的 Braket 映像，然後在任務提交時將`requirements.txt`檔案包含在來源目錄中。檔案會自動讀取，並正常`pip`安裝具有指定版本的套件。如果您要安裝大量套件，則任務的執行時間可能會大幅增加。檢查 Python，如果適用，檢查您要用來測試軟體是否可運作的預先建置容器 CUDA 版本。

當您想要為任務指令碼使用非 Python 語言 （例如 C\+\+ 或 Rust)，或想要使用透過 Braket 預先建置容器無法使用的 Python 版本時，BYOC 是必要的。如果出現下列情況，這也是不錯的選擇：
+ 您使用的軟體具有授權金鑰，而且您需要針對授權伺服器驗證該金鑰，才能執行軟體。透過 BYOC，您可以在Docker映像中嵌入授權金鑰，並包含用於驗證授權金鑰的程式碼。
+ 您使用的軟體無法公開取得。例如，軟體託管在您需要特定 SSH 金鑰才能存取的私有 GitLab 或 GitHub 儲存庫上。
+ 您需要安裝未封裝在 Braket 提供的容器中的大型軟體套件。由於軟體安裝，BYOC 可讓您消除混合任務容器的長啟動時間。

BYOC 也可讓您透過使用軟體建置Docker容器並提供給使用者，讓自訂 SDK 或演算法可供客戶使用。您可以在 Amazon ECR 中設定適當的許可來執行此操作。

**注意**  
您必須遵守所有適用的軟體授權。