

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

# 使用 Amazon Braket 混合任務
<a name="braket-jobs"></a>

Amazon Braket Hybrid Jobs 可讓您執行混合量子傳統演算法，同時需要傳統 AWS 資源和量子處理單元 (QPUs)。混合任務旨在啟動請求的傳統資源、執行演算法，並在完成後釋放執行個體，因此您只需支付*使用的費用*。

混合任務非常適合使用傳統運算資源和量子運算資源的長時間執行反覆運算演算法。透過混合任務，在提交演算法以執行之後，Raket 將在可擴展的容器化環境中執行您的演算法。演算法完成後，您就可以擷取結果。

此外，從混合任務建立的量子任務受益於對目標 QPU 裝置的較高優先順序佇列。此優先順序可確保在佇列中等待的其他任務之前處理和執行您的量子運算。這對疊代混合演算法特別有利，其中一個量子任務的結果取決於先前量子任務的結果。此類演算法的範例包括[量子近似最佳化演算法 (QAOA)](https://github.com/amazon-braket/amazon-braket-examples/blob/main/examples/hybrid_quantum_algorithms/QAOA/QAOA_braket.ipynb)、[變化量子 eigensolver](https://github.com/amazon-braket/amazon-braket-examples/blob/main/examples/hybrid_quantum_algorithms/VQE_Chemistry/VQE_chemistry_braket.ipynb) [ 或量子機器學習](https://github.com/amazon-braket/amazon-braket-examples/blob/main/examples/hybrid_jobs/1_Quantum_machine_learning_in_Amazon_Braket_Hybrid_Jobs/Quantum_machine_learning_in_Amazon_Braket_Hybrid_Jobs.ipynb)。您也可以近乎即時地監控演算法進度，讓您追蹤成本、預算或自訂指標，例如訓練損失或期望值。

您可以使用下列方式存取 Braket 中的混合式任務：
+ [Amazon Braket Python SDK](https://github.com/aws/amazon-braket-sdk-python)。
+ [Amazon Braket 主控台](https://console.aws.amazon.com/braket/home)。
+ Amazon Braket API。

**Topics**
+ [何時使用 Amazon Braket 混合任務](#braket-jobs-use)
+ [使用 Amazon Braket 混合任務執行混合任務](#braket-jobs-works)
+ [混合任務的主要概念](braket-jobs-concepts.md)
+ [先決條件](braket-jobs-prerequisites.md)
+ [建立混合任務](braket-jobs-first.md)
+ [取消混合任務](braket-jobs-cancel.md)
+ [自訂您的混合任務](braket-jobs-customize.md)
+ [搭配 Amazon Braket 使用 PennyLane](hybrid.md)
+ [搭配 Amazon Braket 使用 CUDA-Q](braket-using-cuda-q.md)

## 何時使用 Amazon Braket 混合任務
<a name="braket-jobs-use"></a>

 Amazon Braket 混合任務可讓您執行混合量子傳統演算法，例如變量子 Eigensolver (VQE) 和量子近似最佳化演算法 (QAOA)，將傳統運算資源與量子運算裝置結合，以最佳化現今量子系統的效能。Amazon Braket Hybrid Jobs 提供三個主要優點：

1.  **效能**：Amazon Braket 混合任務的效能優於從您自己的環境執行混合演算法。當您的任務執行時，它會優先存取選取的目標 QPU。任務在裝置上排入佇列的其他任務之前執行。這會導致混合演算法的執行時間較短且更可預測。Amazon Braket 混合任務也支援參數編譯。您可以使用免費參數提交電路，而 Braket 會編譯一次電路，而不需要重新編譯以對相同電路進行後續參數更新，進而加快執行時間。

1.  **便利性**：Amazon Braket 混合任務可簡化設定和管理運算環境，並在混合演算法執行時保持執行狀態。您只需提供演算法指令碼，然後選取要在其中執行的量子裝置 （量子處理單元或模擬器）。Amazon Braket 會等待目標裝置變成可用、啟動傳統資源、在預先建置的容器環境中執行工作負載、將結果傳回 Amazon Simple Storage Service (Amazon S3)，並釋出運算資源。

1.  **指標**：Amazon Braket Hybrid Jobs 提供on-the-fly洞見，並近乎即時地將可自訂的演算法指標交付給 Amazon CloudWatch 和 Amazon Braket 主控台，讓您可以追蹤演算法的進度。

## 使用 Amazon Braket 混合任務執行混合任務
<a name="braket-jobs-works"></a>

若要使用 Amazon Braket 混合任務執行混合任務，您必須先定義演算法。您可以編寫*演算法指令碼*，也可以選擇使用 [Amazon Braket Python SDK ](https://github.com/aws/amazon-braket-sdk-python)或 [PennyLane](https://pennylane.ai) 來定義它。如果您想要使用其他 （開放原始碼或專屬） 程式庫，您可以使用 Docker 定義自己的自訂容器映像，其中包含這些程式庫。如需詳細資訊，請參閱[使用您自己的容器 (BYOC)](braket-jobs-byoc.md)。

在任一情況下，接下來您使用 Amazon Braket 建立混合式任務API，並在其中提供演算法指令碼或容器，選取混合式任務要使用的目標量子裝置，然後從各種選用設定中選擇。為這些選用設定提供的預設值適用於大多數使用案例。若要讓目標裝置執行混合任務，您可以選擇 QPU、隨需模擬器 （例如 SV1DM1或 TN1) 或傳統混合任務執行個體本身。透過隨需模擬器或 QPU，您的混合任務容器會對遠端裝置進行 API 呼叫。使用內嵌模擬器時，模擬器會內嵌在與演算法指令碼相同的容器中。PennyLane [的閃電模擬器](https://github.com/PennyLaneAI/pennylane-lightning)內嵌預設預先建置的混合作業容器，供您使用。如果您使用內嵌 PennyLane 模擬器或自訂模擬器執行程式碼，您可以指定執行個體類型，以及您想要使用的執行個體數量。如需每個選擇的相關成本，請參閱 [Amazon Braket 定價頁面](https://aws.amazon.com/braket/pricing/)。

![流程圖顯示使用者與 Amazon Braket 元件、API、任務執行個體和模擬器的互動，適用於混合、QPU、隨需和內嵌任務。結果存放在 Amazon Simple Storage Service 儲存貯體中，並在 Amazon Braket 主控台上使用 Amazon CloudWatch 進行分析。 Amazon Braket](http://docs.aws.amazon.com/zh_tw/braket/latest/developerguide/images/braket-hybrid-job-run.png)


如果您的目標裝置是隨需或內嵌模擬器，Amazon Braket 會立即開始執行混合任務。它會啟動混合任務執行個體 （您可以在 API 呼叫中自訂執行個體類型）、執行演算法、將結果寫入 Amazon S3，以及釋出資源。此資源版本可確保您只需支付使用量的費用。

每個量子處理單元 (QPU) 的並行混合任務總數受到限制。今天，任何指定時間只能有一個混合任務在 QPU 上執行。佇列用於控制允許執行的混合任務數量，以免超過允許的限制。如果您的目標裝置是 QPU，您的混合任務會先進入所選 QPU *的任務佇列*。Amazon Braket 會啟動所需的混合任務執行個體，並在裝置上執行您的混合任務。在演算法期間，您的混合任務具有優先順序存取，這表示混合任務中的量子任務在裝置上排入佇列的其他 Braket 量子任務之前執行，前提是任務量子任務每隔幾分鐘提交一次至 QPU。混合任務完成後，就會釋出資源，這表示您只需支付使用量的費用。

**注意**  
裝置是區域性的，您的混合任務在 AWS 區域 與主要裝置相同的 中執行。

在模擬器和 QPU 目標案例中，您可以選擇定義自訂演算法指標，例如 Hamiltonian 的能量，作為演算法的一部分。這些指標會自動報告給 Amazon CloudWatch，並從那裡，它們會在 Amazon Braket 主控台中以近乎即時的方式顯示。

**注意**  
如果您想要使用 GPU 型執行個體，請務必在 Braket 上使用其中一個 GPU 型模擬器搭配內嵌模擬器 （例如 `lightning.gpu`)。如果您選擇其中一個 CPU 型內嵌模擬器 （例如 `lightning.qubit`或 `braket:default-simulator`)，則不會使用 GPU，而且可能會產生不必要的成本。