

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

# 什麼是 Amazon Braket？
<a name="what-is-braket"></a>

**提示**  
**了解量子運算的基礎 AWS！**註冊 [Amazon Braket 數位學習計劃](https://skillbuilder.aws/learning-plan/EH35DWGU3R/amazon-braket--knowledge-badge-readiness-path-includes-labs)，在完成一系列的學習課程和數位評估後獲得自己的數位徽章。

 Amazon Braket 是全受管 AWS 服務 的，可協助研究人員、科學家和開發人員開始使用量子運算。Quantum 運算有可能解決傳統電腦無法觸及的運算問題，因為它利用量子機制法以新方式處理資訊。

取得量子運算硬體的存取權可能既昂貴又不方便。有限的存取可讓您難以執行演算法、最佳化設計、評估目前的技術狀態，以及規劃何時投資資源以獲得最大利益。Braket 可協助您克服這些挑戰。

 Braket 提供對各種量子運算技術的單一存取點。使用 Braket，您可以：
+ 探索和設計量子和混合演算法。
+ 在不同量子電路模擬器上測試演算法。
+ 在不同類型的量子電腦上執行演算法。
+ 建立概念驗證應用程式。

定義量子問題和程式設計量子電腦來解決它們需要一組新的技能。為了協助您獲得這些技能，Raket 提供不同的環境來模擬和執行您的量子演算法。您可以找到最符合您需求的方法，並快速開始使用一組稱為*筆記本*的範例環境。

 Braket 開發有三個階段：
+ 組[建](https://docs.aws.amazon.com/braket/latest/developerguide/braket-build.html) - Braket 提供全受管的 Jupyter 筆記本環境，可讓您直接開始使用。Braket 筆記本預先安裝了範例演算法、資源和開發人員工具，包括 Amazon Braket SDK。透過 Amazon Braket SDK，您可以建置量子演算法，然後透過變更單一程式碼行，在不同的量子電腦和模擬器上測試和執行這些演算法。
+ [測試](https://docs.aws.amazon.com/braket/latest/developerguide/braket-test.html) - Braket 提供全受管、高效能量子電路模擬器的存取權。您可以測試和驗證您的電路。Braket 會處理所有基礎軟體元件和 Amazon Elastic Compute Cloud (Amazon EC2) 叢集，以減輕在傳統高效能運算 (HPC) 基礎設施上模擬量子電路的負擔。
+ [Run](https://docs.aws.amazon.com/braket/latest/developerguide/braket-using.html) - Braket 提供不同類型的量子電腦的安全隨需存取。您可以從 AQT、IQM、 IonQ和 存取閘道型量子電腦Rigetti，以及從 QuEra 存取類比 Hamiltonian Simulator。您也不需要預先承諾，也不需要透過個別供應商取得存取權。

 **關於量子運算和 Braket ** 

Quantum 運算處於早期開發階段。請務必了解目前沒有通用、容錯的量子電腦。因此，某些類型的量子硬體更適合每個使用案例，而且存取各種運算硬體至關重要。Braket 透過第三方供應商提供各種硬體。

現有的量子硬體因雜訊而受到限制，這會導致錯誤。產業處於雜訊中繼縮放量子 (NISQ) 時代。在 NISQ 時代，量子運算裝置過於吵雜，無法維持純量子演算法，例如 *Shor 的演算法*或 *Grover 的演算法*。在提供更好的量子錯誤校正之前，最實用的量子運算需要結合傳統 （傳統） 運算資源與量子電腦來建立混合演算法。Braket 可協助您使用*混合量子演算法。*

在混合量子演算法中，量子處理單元 (QPUs) 用作 CPUs 的共同處理器，從而加快傳統演算法中的特定計算速度。這些演算法使用反覆處理，其中運算會在傳統和量子電腦之間移動。例如，目前在化學、最佳化和機器學習中量子運算的應用程式是以*變化量子演算法*為基礎，這是一種*混合量子演算法*。在變化量子演算法中，傳統最佳化常式會反覆調整參數化量子電路的參數，就像根據機器學習訓練集中的錯誤反覆調整神經網路權重一樣。Braket 可讓您存取 PennyLane 開放原始碼軟體程式庫，該程式庫可協助您處理*變化量子演算法。*

Quantum 運算正在四個主要區域中取得運算的抓地力：
+  **數字理論** – 包括因素和密碼編譯 （例如，*Shor 的演算法*是數字理論運算的主要量子方法）
+  **最佳化** - 包括限制滿意度、解決線性系統和機器學習
+  **眼球運算** - 包括搜尋、隱藏子群組和訂單調查結果 （例如，*Grover 的演算法*是眼球運算的主要量子方法）
+  **模擬** — 包括直接模擬、綁定變異數和量子近似最佳化演算法 (QAOA) 應用程式

這些類別的運算應用程式可在金融服務、生物技術、製造和製藥中找到。Braket 提供功能和範例筆記本，除了某些實際問題之外，還可以套用到許多概念驗證問題。

**Topics**
+ [Amazon Braket 的運作方式](braket-how-it-works.md)
+ [Amazon Braket 術語和概念](braket-terms.md)
+ [成本追蹤和儲存](braket-pricing.md)
+ [Amazon Braket 的 API 參考和儲存庫](braket-references.md)
+ [Amazon Braket 支援的區域和裝置](braket-devices.md)

# Amazon Braket 的運作方式
<a name="braket-how-it-works"></a>

**提示**  
**了解量子運算的基礎 AWS！**註冊 [Amazon Braket 數位化學習計劃](https://skillbuilder.aws/learning-plan/EH35DWGU3R/amazon-braket--knowledge-badge-readiness-path-includes-labs)，在完成一系列的學習課程和數位評估後獲得自己的數位徽章。

 Amazon Braket 提供量子運算裝置的隨需存取，包括隨需電路模擬器和不同類型的量子處理單元 (QPUs)。在 Amazon Braket 中，對裝置的原子請求是量子任務。對於以閘道為基礎的裝置，此請求包含量子電路 （包括測量指示和鏡頭數量） 和其他請求中繼資料。對於類比 Hamiltonian Simulators，量子任務包含量子登錄的實體配置，以及操縱欄位的時間和空間相依性。

Braket Direct 是一項計畫，擴展您可以探索量子運算 AWS、加速研究和創新的方式。您可以在各種量子裝置上保留專用容量、直接與量子運算專家互動，以及提早存取新一代功能，包括來自 IonQ、Forte 的最新截獲離子裝置。

在本節中，我們將了解在 Amazon Braket 上執行量子任務的高階流程。

**Topics**
+ [Amazon Braket 量子任務流程](#braket-data-flow)
+ [第三方資料處理](#braket-3rd-party-processing)

## Amazon Braket 量子任務流程
<a name="braket-data-flow"></a>

![\[圖表顯示使用者與 Amazon Braket 筆記本、S3 結果儲存貯體、Amazon Braket、受管模擬器等 AWS 雲端服務的互動，以及對 QPUs 進行量子運算任務的結果。\]](http://docs.aws.amazon.com/zh_tw/braket/latest/developerguide/images/data-flow-3.png)


使用Jupyter筆記本，您可以從 [Amazon Braket 主控台](https://us-west-1.console.aws.amazon.com/console/home?region=us-west-1#)或使用 [Amazon Braket SDK ](https://github.com/aws/amazon-braket-sdk-python)定義、提交和監控您的量子任務。您可以直接在 SDK 中建置量子電路。不過，對於類比 Hamiltonian Simulators，您可以定義註冊配置和控制欄位 (1)。定義規定人數任務之後，您可以選擇要在其上執行的裝置，並將其提交至 Amazon Braket API (2)。根據您選擇的裝置，量子任務會排入佇列，直到裝置變成可用，並將任務傳送至 QPU 或模擬器以進行實作 (3)。Amazon Braket 可讓您存取各種[支援的量子裝置](braket-devices.md)，包括 QPUs、隨需模擬器、本機模擬器和內嵌模擬器。

處理您的量子任務後，Amazon Braket 會將結果傳回至 Amazon S3 儲存貯體，其中資料會存放在您的 AWS 帳戶 (4) 中。同時，開發套件會在背景輪詢結果，並在量子任務完成時將其載入 Jupyter 筆記本。您也可以在 Amazon Braket 主控台的 **Quantum 任務**頁面上或使用 Amazon Braket `GetQuantumTask`的操作來檢視和管理量子任務API。

 Amazon Braket 與 AWS Identity and Access Management (IAM)、Amazon CloudWatch AWS CloudTrail 和 Amazon EventBridge 整合，用於使用者存取管理、監控和記錄，以及事件型處理 (5)。

## 第三方資料處理
<a name="braket-3rd-party-processing"></a>

提交至 QPU 裝置的量子任務會在第三方供應商所操作設施中的量子電腦上處理。若要進一步了解 Amazon Braket 中的安全和第三方處理，請參閱 [Amazon Braket 硬體供應商的安全性](third-party-security.md)。

# Amazon Braket 術語和概念
<a name="braket-terms"></a>

**提示**  
**了解量子運算的基礎 AWS！**註冊 [Amazon Braket 數位化學習計劃](https://skillbuilder.aws/learning-plan/EH35DWGU3R/amazon-braket--knowledge-badge-readiness-path-includes-labs)，在完成一系列的學習課程和數位評估後獲得自己的數位徽章。

下列術語和概念用於 Braket：

  **類比漢密爾頓模擬**   
類比漢密爾頓模擬 (AHS) 是一種獨特的量子運算範例，用於直接模擬許多身體系統的時間相依量子動態。在 AHS 中，使用者會直接指定時間相依的漢米爾頓文，且量子電腦的調校方式會直接模擬此漢米爾頓文下的持續時間演變。AHS 裝置通常是特殊用途的裝置，而不是通用量子電腦，例如以閘道為基礎的裝置。它們僅限於他們可以模擬的 Hamiltonian 類別。不過，由於這些 Hamiltonian 是自然實作在裝置上，因此 AHS 不會承受將演算法建構為電路和實作閘道操作所需的額外負荷。

  ** 剎車 **   
我們在 [bra-ket 表示法](https://en.wikipedia.org/wiki/Bra%E2%80%93ket_notation)之後命名了 Braket 服務，這是量子力學中的標準表示法。它由 Paul Dirac 於 1939 年引入，用於描述量子系統的狀態，也稱為 Dirac 表示法。

  ** Braket Direct**   
使用 Braket Direct，您可以保留對所選不同量子裝置的專用存取權、與量子運算專家連線，以取得工作負載的指引，以及提早存取新一代功能，例如可用性有限的新量子裝置。

  ** Braket 混合任務**   
Amazon Braket 具有稱為 Amazon Braket 混合任務的功能，可提供混合演算法的全受管執行。Braket 混合任務包含三個元件：  

1. 演算法的定義，可以做為指令碼、Python 模組或 Docker 容器提供。

1. *混合式任務執行個體*，以 Amazon EC2 為基礎，執行您的演算法。預設值為 ml.m5.xlarge 執行個體。

1. 要在其中執行屬於演算法之*量子任務的量子**裝置*。單一混合任務通常包含許多量子任務的集合。

  **裝置**   
在 Amazon Braket 中，裝置是可以執行*量子任務*的後端。裝置可以是 *QPU* 或*量子電路模擬器*。若要進一步了解，請參閱 [ Amazon Braket 支援的裝置](braket-devices.md)。

  **錯誤緩解**   
錯誤緩解包括執行多個實體電路，並結合其測量結果以改善結果。如需詳細資訊，請參閱[錯誤緩解技術](braket-error-mitigation.md)。

  **閘道式量子運算**   
在閘道式量子運算 (QC) 中，也稱為迴路式 QC，運算會細分為基本操作 （閘道）。某些閘道集是通用的，這表示每個運算都可以以這些閘道的有限序列表示。Gates 是*量子電路*的建置區塊，類似於傳統數位電路的邏輯閘道。

  **Gateshot 限制**   
閘道限制是指每個鏡頭的總閘道計數 （所有閘道類型的總和） 和每個任務的鏡頭計數。在數學上，Gateshot 限制可以表示為：  
`Gateshot limit = (Gate count per shot) * (Shot count per task)`

  **漢米爾頓文**   
實體系統的量子動態由其 Hamiltonian 決定，其編碼有關系統成分與外源性驅動力之間互動的所有資訊。N-qubit 系統的 Hamiltonian 通常表示為傳統機器上複雜數字的 2N x 2N 矩陣。透過在量子裝置上執行類比 Hamiltonian 模擬，您可以避免這些指數資源需求。

  **脈衝**   
脈衝是傳輸到 qubit 的暫時性實體訊號。它由播放在做為電信業者訊號支援且繫結至硬體通道或連接埠的影格中的波形描述。客戶可以提供模擬信封來調節高頻率正弦波載波訊號，藉此設計自己的脈衝。影格是由頻率和階段所獨有描述，該階段通常被選擇為正進行共振，並在 qubit 的 \$10⟩ 和 \$11⟩ 的能量層級之間進行能量分離。因此，閘道會以具有預定形狀和校正參數的脈衝形式來制定，例如其振幅、頻率和持續時間。範本波形未涵蓋的使用案例將透過自訂波形啟用，並透過提供以固定的實體週期時間分隔的值清單，在單一範例解析度中指定。

  **Quantum 電路**   
量子電路是定義閘道式量子電腦上運算的說明集。量子電路是量子閘道的序列，這是qubit暫存器上的可逆轉換，以及測量指示。

  **Quantum 電路模擬器**   
量子電路模擬器是一種電腦程式，可在傳統電腦上執行，並計算*量子電路*的測量結果。對於一般電路，量子模擬的資源需求隨qubits要模擬的 數量呈指數增長。Braket 提供受管 （透過 Braket 存取API) 和本機 (Amazon Braket SDK 的一部分） 量子電路模擬器的存取權。

  **Quantum 電腦**   
量子電腦是一種實體裝置，使用量子機械現象，例如疊層和糾結，來執行運算。量子運算 (QC) 有不同的範例，例如以*閘道為基礎的* QC。

  **Quantum 處理單元 (QPU)**   
QPU 是一種實體量子運算裝置，可在量子任務上執行。QPUs可以根據不同的 QC 範例，例如以閘道為基礎的 QC。若要進一步了解，請參閱 [ Amazon Braket 支援的裝置](braket-devices.md)。

  **QPU 原生閘道**   
QPU 原生閘道可以直接映射，以透過 QPU 控制系統控制脈衝。原生閘道可以在 QPU 裝置上執行，無需進一步編譯。*QPU 支援的閘道*子集。您可以在 Amazon Braket 主控台的裝置頁面上，以及透過 Braket SDK 找到**裝置的**原生閘道。

  **QPU 支援的閘道**   
QPU 支援的閘道是 QPU 裝置接受的閘道。這些閘道可能不會直接在 QPU 上執行，這表示它們可能需要分解為原生閘道。您可以在 Amazon Braket 主控台的裝置頁面上，以及透過 Amazon Braket SDK 找到**裝置**支援的閘道。

  **Quantum 任務**   
在 Braket 中，量子任務是對*裝置的*原子請求。對於以*閘道為基礎的 QC* 裝置，這包含量子電路 （包括測量指示和 的數量shots) 和其他請求中繼資料。您可以透過 Amazon Braket SDK 或直接使用 CreateQuantumTaskAPI操作來建立量子任務。在您建立量子任務之後，它會排入佇列，直到請求的裝置變成可用為止。您可以在 Amazon Braket 主控台的 **Quantum 任務**頁面上或使用 GetQuantumTask或 SearchQuantumTasksAPI操作來檢視您的量子任務。

  ** Qubit **   
量子電腦中的基本資訊單位稱為 qubit（量子位元），類似於傳統運算中的一些。qubit 是雙階量子系統，可透過不同的實體實作實現，例如超導電路或個別的 ions 和 atoms。其他qubit類型是根據光子、電子或核子旋轉，或更奇特的量子系統。

  ** Queue depth **   
Queue depth 是指針對特定裝置排入佇列的量子任務和混合任務數量。裝置的量子任務和混合任務佇列計數可透過 Braket Software Development Kit (SDK)或 存取Amazon Braket Management Console。  

1. *任務佇列深度*是指等待以正常優先順序執行的量子任務總數。

1. *優先順序任務佇列深度*是指等待透過 執行的已提交量子任務總數Amazon Braket Hybrid Jobs。混合任務啟動後，這些任務會優先於獨立任務。

1. *混合任務佇列深度*是指目前在裝置上排入佇列的混合任務總數。作為混合任務的一部分Quantum tasks提交 具有優先順序，並在 中彙總Priority Task Queue。

  ** Queue position **   
Queue position 是指您在個別裝置佇列中量子任務或混合任務的目前位置。可以透過 或 取得量子任務Braket Software Development Kit (SDK)或混合任務Amazon Braket Management Console。

  ** Shots **   
由於量子運算本質上具有機率，因此任何電路都需要評估多次，才能獲得準確的結果。單一電路執行和測量稱為鏡頭。根據結果所需的準確性選擇電路的鏡頭 （重複執行） 數量。

## AWS Amazon Braket 的術語和秘訣
<a name="braket-aws-terms"></a>

  **IAM 政策**   
IAM 政策是允許或拒絕 AWS 服務 和 資源許可的文件。IAM 政策可讓您自訂使用者對 資源的存取層級。例如，您可以允許使用者存取 內的所有 Amazon S3 儲存貯體 AWS 帳戶，或只存取特定儲存貯體。  
+  **最佳實務：**授予許可時，請遵循*最低權限*的安全原則。透過遵循此原則，您可以協助防止使用者或角色擁有比執行其量子任務所需的更多許可。例如，如果員工只需要存取特定儲存貯體，請在 IAM 政策中指定儲存貯體，而不是授予員工存取您 中所有儲存貯體的權限 AWS 帳戶。

  **IAM 角色**   
IAM 角色是您可以擔任的身分，以取得暫時存取許可。在使用者、應用程式或服務可以擔任 IAM 角色之前，必須授予他們切換到角色的許可。當某人擔任 IAM 角色時，他們會捨棄先前在先前角色下擁有的所有許可，並擔任新角色的許可。  
+  **最佳實務：**IAM 角色非常適合需要暫時授予服務或資源存取權的情況，而非長期的情況。

  ** Amazon S3 儲存貯體**   
 Amazon Simple Storage Service (Amazon S3) 是 AWS 服務 ，可讓您將資料作為*物件*存放在*儲存貯*體中。Amazon S3 儲存貯體提供無限制的儲存空間。Amazon S3 儲存貯體中物件的大小上限為 5 TB。您可以將任何類型的檔案資料上傳至 Amazon S3 儲存貯體，例如影像、影片、文字檔案、備份檔案、網站媒體檔案、封存文件，以及您的 Braket 量子任務結果。  
+  **最佳實務：**您可以設定許可來控制對 S3 儲存貯體的存取。如需詳細資訊，請參閱 Amazon S3 文件中的[儲存貯體政策](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)。

# 成本追蹤和儲存
<a name="braket-pricing"></a>

**提示**  
**了解量子運算的基礎 AWS！**註冊 [Amazon Braket 數位化學習計劃](https://skillbuilder.aws/learning-plan/EH35DWGU3R/amazon-braket--knowledge-badge-readiness-path-includes-labs)，在完成一系列的學習課程和數位評估後獲得自己的數位徽章。

使用 Amazon Braket，您可以隨需存取量子運算資源，無需預先承諾。您僅需按實際用量付費。若要進一步了解定價，請造訪我們的[定價頁面](https://aws.amazon.com/braket/pricing/)。

**Topics**
+ [設定 Amazon Braket QPUs的花費限制](#quantum-hardware-spending-limits)
+ [近乎即時的成本追蹤](#real-time-cost-tracking)
+ [節省成本的最佳實務](#best-practices)

## 設定 Amazon Braket QPUs的花費限制
<a name="quantum-hardware-spending-limits"></a>

Amazon Braket 花費限制提供量子處理單元 (QPUs) 的選用每個裝置成本控制。

 **花費限制的運作方式**：Amazon Braket 會追蹤您的累積花費，並根據您設定的限制驗證每個任務建立請求。如果任務的預估成本超過剩餘花費限制，Amazon Braket 會立即以驗證錯誤拒絕任務。您可以選擇性地設定花費限制的期間。透過設定時段，您可以確保只能在指定的時段提交任務。在期間之外提交的任務將被拒絕。

 **選擇加入設計**：除非您明確啟用控制項，否則現有的工作流程將保持不變。您可以透過刪除花費限制來移除所有限制。

**注意**  
 支出限制僅適用於隨需和混合任務 [QPU 任務](braket-submit-tasks)。它們排除[模擬器](braket-submit-tasks-simulators)、[受管筆記本](braket-get-started-create-notebook)、[混合任務](braket-jobs) EC2 執行個體成本和 [Braket Direct 保留](braket-reservations)。如需所有 AWS 服務的完整成本管理，請繼續使用 [AWS Budgets](https://aws.amazon.com/aws-cost-management/aws-budgets/)。

### 花費限制動作的清單
<a name="spending-limits-actions"></a>

  **搜尋**   
 使用下列 AWS CLI 命令，您可以搜尋和列出特定 AWS 區域和特定 Braket 裝置的花費限制。  

```
aws --region {device_region} braket search-spending-limits --filters name=deviceArn,operator=EQUAL,values={device_arn}
```

  **建立**   
 使用下列 AWS CLI 命令，您可以在特定區域中為指定的量子裝置建立新的花費限制。如果裝置的花費限制已存在，則會拒絕請求。  

```
aws --region {device_region} braket create-spending-limit --device-arn {device_arn} --spending-limit {max_spend}
```

  **更新**   
 使用下列 AWS CLI 命令，您可以將現有的花費限制更新為新的最大花費值。如果目前花費和佇列花費的總和已高於請求的新最大花費，則會拒絕請求。  

```
aws --region {device_region} braket update-spending-limit --spending-limit-arn {spending_limit_arn} --spending-limit {new_max_spend}
```
 您可以提供時間範圍，而不是或除了新的最高支出之外，如上述範例所示。

  **刪除**   
 使用下列 AWS CLI 命令，您可以刪除現有的花費限制。  

```
aws --region {device_region} braket delete-spending-limit --spending-limit-arn {spending_limit_arn}
```
 您可以提供時間範圍，而不是或除了新的最高支出之外，如上述範例所示。

 選用時，一律指定區域參數做為最佳實務。在與裝置 不同的區域上執行的命令將會失敗，或者，如果是 `SearchSpendingLimits`，則傳回不正確的結果。

 如需如何使用花費限制的更多範例，請參閱[範例筆記本](https://github.com/amazon-braket/amazon-braket-examples/tree/main/examples/braket_features/Spending_Limits_Introduction.ipynb)。

### 任務驗證的運作方式
<a name="spending-limit-task-validation"></a>

 當 AWS 帳戶傳送其他有效`CreateQuantumTask`請求時，會受到下列門控行為的約束。注意：剩餘預算是花費限制與已排入佇列和目前花費的總和之間的差異。（請參閱下一節） 
+  案例 1：任務裝置**沒有花費限制**：任務已建立。
+  案例 2：目標裝置的花費限制，且**目前時間是在花費限制的期間內**：
  +  如果任務的預估成本低於或等於剩餘預算：CreateQuantumTask 成功，則會建立任務。
  +  如果預估成本大於剩餘預算： `CreateQuantumTask` 失敗，而且不會建立任務。
+  案例 3：目標裝置有花費限制，且**目前時間在花費限制期間之外**： `CreateQuantumTask` 失敗，而且不會建立任務。

### 如何計算剩餘預算
<a name="spending-limit-budget-computation"></a>

 剩餘預算是**支出限制**與**目前支出**和**佇列支出**的總和之間的差異。

 為具有花費限制的裝置建立任務時，**佇列支出**會由任務的預估成本提高。此事件列於下表的第一列。下表顯示佇列支出和目前支出的情況，取決於任務的進度。


|  |  |  |  | 
| --- |--- |--- |--- |
|   **舊量子任務狀態**   |   **新的量子任務狀態**   |   **變更為排入佇列的支出**   |   **變更為目前支出**   | 
|  -  |  CREATED (已建立)  |  依預估成本增加  |  未變更  | 
|  CREATED (已建立)  |  QUEUED  |  未變更  |  未變更  | 
|  任何  |  RUNNING (執行中)  |  未變更  |  未變更  | 
|  任何  |  CANCEL  |  未變更  |  未變更  | 
|  CANCEL  |  CANCELLED (已取消)  |  減少預估成本  |  沒有 chnage  | 
|  任何  |  失敗  |  減少預估成本  |  未變更  | 
|  RUNNING (執行中)  |  COMPLETED (已完成)  |  減少預估成本  |   依預估成本增加 （針對部分完成的任務進行相應調整）   | 

### Edge 案例
<a name="spending-limit-edge-cases"></a>

 **問：建立支出限制時，佇列中已存在的任務是否計入佇列支出？** 

 答：否。已建立、佇列或以其他方式進行中的任務不會計入新建立的支出限制的佇列支出。

 **問：透過更新支出限制是否會導致建立、佇列或以其他方式進行中的量子任務提早終止？** 

 答：否。

 **問：達到支出限制的結束時間是否會導致建立、佇列或以其他方式進行中的量子任務提早終止？** 

 答：否。無論花費限制狀態為何，都可以完成建立、佇列和其他進行中的任務。

 **問：缺少花費限制與零美元的花費限制有何不同？** 

 答：沒有花費限制允許在沒有限制的情況下建立量子任務。零美元的花費限制會封鎖所有量子任務。

 **問：過去或未來的花費限制是否封鎖所有量子任務的建立？** 

 答案：是。

 **問：建立支出限制時，在上述任務完成後，佇列中已存在的任務預估成本是否會計入目前的支出？** 

 答：否。只有在花費限制處於作用中狀態時提交的任務才會計入累積的花費。

## 近乎即時的成本追蹤
<a name="real-time-cost-tracking"></a>

Braket SDK 可讓您選擇將近乎即時的成本追蹤新增至量子工作負載。我們每個範例筆記本都包含成本追蹤程式碼，可為您提供 Braket 量子處理單元 (QPUs) 和隨需模擬器的最高成本預估。最高成本估算會以 USD 顯示，不包含任何點數或折扣。

**注意**  
顯示的費用是根據 Amazon Braket 模擬器和量子處理單元 (QPU) 任務用量估算。顯示的預估費用可能與您的實際費用不同。預估費用不會計入任何折扣或點數，而且您可能會因為使用 Amazon Elastic Compute Cloud (Amazon EC2) 等其他服務而產生額外費用。

 **SV1 的成本追蹤** 

為了示範如何使用成本追蹤函數，我們將建構 Bell State 電路，並在 SV1 模擬器上執行它。首先匯入 Braket SDK 模組、定義 Bell 狀態，並將 `Tracker()`函數新增至我們的電路：

```
#import any required modules
from braket.aws import AwsDevice
from braket.circuits import Circuit
from braket.tracking import Tracker

#create our bell circuit
circ = Circuit().h(0).cnot(0,1)
device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1")
with Tracker() as tracker:
    task = device.run(circ, shots=1000).result()

#Your results
print(task.measurement_counts)
```

```
Counter({'00': 500, '11': 500})
```

當您執行筆記本時，您可以預期 Bell 狀態模擬有下列輸出。追蹤器函數會顯示傳送的鏡頭數量、完成的量子任務、執行持續時間、計費執行持續時間，以及以 USD 為單位的最高成本。每個模擬的執行時間可能有所不同。

```
import datetime

tracker.quantum_tasks_statistics()
{'arn:aws:braket:::device/quantum-simulator/amazon/sv1':
 {'shots': 1000,
  'tasks': {'COMPLETED': 1},
  'execution_duration': datetime.timedelta(microseconds=4000),
  'billed_execution_duration': datetime.timedelta(seconds=3)}}
  
tracker.simulator_tasks_cost()
```

```
Decimal('0.0037500000')
```

 **使用成本追蹤器設定最高成本** 

您可以使用成本追蹤器來設定程式的最高成本。對於您想要在指定程式上花費多少，可能會有最大閾值。透過這種方式，您可以使用成本追蹤器在執行程式碼中建置成本控制邏輯。下列範例在 Rigetti QPU 上採用相同的電路，並將成本限制為 1 USD。在我們的程式碼中執行一次重複電路的成本為 0.30 USD。我們已將邏輯設定為重複反覆運算，直到總成本超過 1 USD；因此，程式碼片段將執行三次，直到下一次反覆運算超過 1 USD。一般而言，程式會繼續反覆運算，直到達到所需的最高成本為止，在此情況下為 - 三次反覆運算。

```
device = AwsDevice("arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3")
with Tracker() as tracker:
    while tracker.qpu_tasks_cost() < 1:
        result = device.run(circ, shots=200).result()
print(tracker.quantum_tasks_statistics())
print(tracker.qpu_tasks_cost(), "USD")
```

```
{'arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3': {'shots': 600, 'tasks': {'COMPLETED': 3}}}
1.4400000000 USD
```

**注意**  
成本追蹤器不會追蹤失敗TN1量子任務的持續時間。在TN1模擬期間，如果您的演練完成，但收縮步驟失敗，您的演練費用將不會顯示在成本追蹤器中。

## 節省成本的最佳實務
<a name="best-practices"></a>

請考慮下列使用 Amazon Braket 的最佳實務。節省時間、將成本降至最低，並避免常見的錯誤。

 **使用模擬器驗證** 
+ 在 QPU 上執行之前，請使用模擬器驗證您的電路，以便您可以微調電路，而不會產生 QPU 使用費。
+ 雖然在模擬器上執行電路的結果可能與在 QPU 上執行電路的結果不同，但您可以使用模擬器來識別編碼錯誤或組態問題。

 **限制使用者存取特定裝置** 
+ 您可以設定限制，防止未經授權的使用者在特定裝置上提交規定人數任務。限制存取的建議方法是使用 AWS IAM。如需如何執行此操作的詳細資訊，請參閱[限制存取](https://docs.aws.amazon.com/braket/latest/developerguide/braket-manage-access.html#restrict-access)。
+ 我們建議您**不要**使用**管理員**帳戶作為授予或限制使用者存取 Amazon Braket 裝置的方式。

 **設定帳單警示** 
+ 您可以設定帳單警示，在帳單達到預設限制時通知您。設定警示的建議方法是透過 AWS Budgets。您可以設定自訂預算，並在成本或用量可能超過預算金額時收到提醒。如需相關資訊，請參閱 [AWS Budgets](https://aws.amazon.com/aws-cost-management/aws-budgets/)。

 **低鏡頭計數的測試TN1量子任務** 
+ 模擬器的成本低於 QPUs，但如果量子任務以高鏡頭計數執行，則某些模擬器可能會很昂貴。我們建議您使用低shot計數來測試TN1任務。 Shot計數不會影響 SV1和本機模擬器任務的成本。

 **檢查所有區域是否有量子任務** 
+ 主控台只會針對您目前的 顯示量子任務 AWS 區域。尋找已提交的計費量子任務時，請務必檢查所有區域。
+ 您可以在[支援的裝置](braket-devices.md)文件頁面上檢視裝置及其相關區域的清單。

# Amazon Braket 的 API 參考和儲存庫
<a name="braket-references"></a>

**提示**  
**了解量子運算的基礎 AWS！**註冊 [Amazon Braket 數位學習計劃](https://skillbuilder.aws/learning-plan/EH35DWGU3R/amazon-braket--knowledge-badge-readiness-path-includes-labs)，在完成一系列的學習課程和數位評估後獲得自己的數位徽章。

Amazon Braket 提供 APIs、SDKs和命令列界面，可用來建立和管理筆記本執行個體，以及訓練和部署模型。
+  [Amazon Braket Python SDK （建議）](https://amazon-braket-sdk-python.readthedocs.io/en/latest/#) 
+  [Amazon Braket API 參考](https://docs.aws.amazon.com/braket/latest/APIReference/Welcome.html) 
+  [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/reference/braket/index.html) 
+  [適用於 .NET 的 AWS SDK](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Braket/NBraket.html) 
+  [適用於 C\$1\$1 的 AWS SDK](https://sdk.amazonaws.com/cpp/api/LATEST/namespace_aws_1_1_braket.html) 
+  [適用於 Go 的 AWS SDKAPI Reference](https://docs.aws.amazon.com/sdk-for-go/api/service/braket/) 
+  [適用於 Java 的 AWS SDK](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/braket/package-summary.html) 
+  [適用於 JavaScript 的 AWS SDK](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Braket.html) 
+  [適用於 PHP 的 AWS SDK](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.Braket.BraketClient.html) 
+  [適用於 Python (Boto) 的 AWS SDK](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/braket.html) 
+  [適用於 Ruby 的 AWS SDK](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Braket.html) 

您也可以從 Amazon Braket 教學課程 GitHub 儲存庫取得程式碼範例。
+  [Braket 教學課程 GitHub](https://github.com/aws/amazon-braket-examples) 

## 核心儲存庫
<a name="braket-repos"></a>

以下顯示核心儲存庫的清單，其中包含用於 Braket 的金鑰套件：
+  [Braket Python SDK](https://github.com/aws/amazon-braket-sdk-python) - 使用 Braket Python SDK 在Jupyter筆記本上以 Python 程式設計語言設定程式碼。設定Jupyter筆記本之後，您可以在 Braket 裝置和模擬器上執行程式碼
+  [Braket 結構描述](https://github.com/aws/amazon-braket-schemas-python) - Braket SDK 與 Braket 服務之間的合約。
+  [Braket 預設模擬器](https://github.com/aws/amazon-braket-default-simulator-python) - 我們所有適用於 Braket 的本機量子模擬器 （狀態向量和密度矩陣）。

## 外掛程式
<a name="braket-plugins"></a>

然後，有各種外掛程式與各種裝置和程式設計工具搭配使用。其中包括 Braket 支援的外掛程式，以及第三方支援的外掛程式，如下所示。

 **支援 Amazon Braket**：
+  [Amazon Braket 演算法程式庫](https://github.com/aws-samples/amazon-braket-algorithm-library) - 以 Python 撰寫的預先建置量子演算法目錄。依原樣執行它們，或使用它們做為建置更複雜演算法的起點。
+  [Braket-PennyLane 外掛程式](https://github.com/aws/amazon-braket-pennylane-plugin-python) - PennyLane用作 Braket 上的 QML 架構。

 **第三方 (Braket 團隊監控和貢獻）**：
+  [Qiskit-Braket 提供者](https://github.com/qiskit-community/qiskit-braket-provider) - 使用 Qiskit SDK 存取 Braket 資源。
+  [Braket-Julia SDK](https://github.com/awslabs/Braket.jl) - (EXPERIMENTAL) Braket SDK 的 Julia 原生版本

# Amazon Braket 支援的區域和裝置
<a name="braket-devices"></a>

**提示**  
**了解量子運算的基礎 AWS！**註冊 [Amazon Braket 數位化學習計劃](https://skillbuilder.aws/learning-plan/EH35DWGU3R/amazon-braket--knowledge-badge-readiness-path-includes-labs)，在完成一系列的學習課程和數位評估後獲得自己的數位徽章。

在 Amazon Braket 中，裝置代表量子處理單元 (QPU) 或模擬器，您可以呼叫它來執行量子任務。Amazon Braket 可讓您從 AQT、IonQ、QuEra、 IQM和 存取 QPU 裝置Rigetti。此外， AWS 提供隨需、本機和內嵌模擬器的存取權。如需內嵌模擬器的詳細資訊，請參閱[關於內嵌模擬器](embedded-simulator.md)。

如需支援量子硬體提供者的資訊，請參閱[將量子任務提交至 QPUs](braket-submit-tasks.md)。如需可用模擬器的資訊，請參閱[將量子任務提交至模擬器](braket-submit-tasks-simulators.md)。下表顯示可用裝置和模擬器的清單。


| 供應商 | 裝置名稱 | 範式 | Type | 裝置 ARN | 區域 | 
| --- | --- | --- | --- | --- | --- | 
|   [AQT](braket-submit-tasks.md#braket-qpu-partner-aqt)   |   IBEX-Q1   |  以閘道為基礎的  |  QPU  |  arn：aws：braket：eu-north-1：：device/qpu/aqt/Ibex-Q1  |  eu-north-1  | 
|   [IonQ](braket-submit-tasks.md#braket-qpu-partner-ionq)   |   Forte-1   |  以閘道為基礎的  |  QPU  |  arn：aws：braket：us-east-1：：device/qpu/ionq/Forte-1  |  us-east-1  | 
|   [IonQ](braket-submit-tasks.md#braket-qpu-partner-ionq)   |   Forte-Enterprise-1   |  以閘道為基礎的  |  QPU  |  arn：aws：braket：us-east-1：：device/qpu/ionq/Forte-Enterprise-1  |  us-east-1  | 
|   [IQM](braket-submit-tasks.md#braket-qpu-partner-iqm)   |   Garnet   |  以閘道為基礎的  |  QPU  |  arn：aws：braket：eu-north-1：：device/qpu/iqm/Garnet  |  eu-north-1  | 
|   [IQM](braket-submit-tasks.md#braket-qpu-partner-iqm)   |   Emerald   |  以閘道為基礎的  |  QPU  |  arn：aws：braket：eu-north-1：：device/qpu/iqm/Emerald  |  eu-north-1  | 
|   [QuEra](braket-submit-tasks.md#braket-qpu-partner-quera)   |   Aquila   |  類比漢密爾頓模擬  |  QPU  |  arn：aws：braket：us-east-1：device/qpu/quera/Aquila  |  us-east-1  | 
|   [Rigetti](braket-submit-tasks.md#braket-qpu-partner-rigetti)   |   Ankaa-3   |  以閘道為基礎的  |  QPU  |  arn：aws：braket：us-west-1：：device/qpu/rigetti/Ankaa-3  |  us-west-1  | 
|   AWS   |   [braket\$1sv](braket-submit-tasks-simulators.md#braket-simulator-sv)   |  以閘道為基礎的  |  本機模擬器  |  N/A (Raket SDK 中的本機模擬器）  |  N/A  | 
|   AWS   |   [braket\$1dm](braket-submit-tasks-simulators.md#braket-simulator-dm)   |  以閘道為基礎的  |  本機模擬器  |  N/A (Raket SDK 中的本機模擬器）  |  N/A  | 
|   AWS   |   [braket\$1ahs](braket-submit-tasks-simulators.md#braket-simulator-ahs-local)   |  類比漢密爾頓模擬  |  本機模擬器  |  N/A ( Braket SDK 中的本機模擬器）  |  N/A  | 
|   AWS   |   [SV1](braket-submit-tasks-simulators.md#braket-simulator-sv1)   |  以閘道為基礎的  |  隨需模擬器  |  arn：aws：braket：：device/quantum-simulator/amazon/sv1  |  us-east-1、us-west-1、us-west-2、eu-west-2  | 
|   AWS   |   [DM1](braket-submit-tasks-simulators.md#braket-simulator-dm1)   |  以閘道為基礎的  |  隨需模擬器  |  arn：aws：braket：：device/quantum-simulator/amazon/dm1  |  us-east-1、us-west-1、us-west-2、eu-west-2  | 
|   AWS   |   [TN1](braket-submit-tasks-simulators.md#braket-simulator-tn1)   |  以閘道為基礎的  |  隨需模擬器  |  arn：aws：braket：：device/quantum-simulator/amazon/tn1  |  us-east-1、us-west-2 和 eu-west-2  | 

**注意**  
裝置 ARNs區分大小寫。例如，使用AQT IBEX-Q1裝置時，請確認裝置 ARN 包含 'Ibex-Q1'。

若要檢視可搭配 Amazon Braket 使用的 QPUs 的其他詳細資訊，請參閱 [Amazon Braket Quantum Computers](https://aws.amazon.com/braket/quantum-computers/)。

 **裝置屬性** 

對於所有裝置，您可以在 Amazon Braket 主控台的裝置索引標籤或 `GetDevice` API 上找到其他**裝置**屬性，例如裝置拓撲、校正資料和原生閘道集。使用模擬器建構電路時，Amazon Braket 會要求您使用連續的 qubits 或索引。使用 SDK 時，下列程式碼範例示範如何存取每個可用裝置和模擬器的裝置屬性。

```
from braket.aws import AwsDevice
from braket.devices import LocalSimulator

device = AwsDevice('arn:aws:braket:::device/quantum-simulator/amazon/sv1')              # SV1
# device = LocalSimulator()                                                             # Local State Vector Simulator
# device = LocalSimulator("default")                                                    # Local State Vector Simulator
# device = LocalSimulator(backend="default")                                            # Local State Vector Simulator
# device = LocalSimulator(backend="braket_sv")                                          # Local State Vector Simulator
# device = LocalSimulator(backend="braket_dm")                                          # Local Density Matrix Simulator
# device = LocalSimulator(backend="braket_ahs")                                         # Local Analog Hamiltonian Simulation
# device = AwsDevice('arn:aws:braket:::device/quantum-simulator/amazon/tn1')            # TN1
# device = AwsDevice('arn:aws:braket:::device/quantum-simulator/amazon/dm1')            # DM1
# device = AwsDevice('arn:aws:braket:eu-north-1::device/qpu/aqt/Ibex-Q1')               # AQT IBEX-Q1
# device = AwsDevice('arn:aws:braket:us-east-1::device/qpu/ionq/Forte-1')               # IonQ Forte-1
# device = AwsDevice('arn:aws:braket:us-east-1::device/qpu/ionq/Forte-Enterprise-1')    # IonQ Forte-Enterprise-1
# device = AwsDevice('arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet')                # IQM Garnet
# device = AwsDevice('arn:aws:braket:eu-north-1::device/qpu/iqm/Emerald')               # IQM Emerald
# device = AwsDevice('arn:aws:braket:us-east-1::device/qpu/quera/Aquila')               # QuEra Aquila
# device = AwsDevice('arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3')            # Rigetti Ankaa-3

# Get device properties
device.properties
```

## Amazon Braket 的區域和端點
<a name="braket-regions"></a>

如需區域和端點的完整清單，請參閱 [AWS 一般參考。](https://docs.aws.amazon.com/general/latest/gr/braket.html)

您可以在該裝置區域的 Amazon Braket 主控台中檢視在 QPU 裝置上執行的 Quantum 任務。使用 Amazon Braket SDK 時，您可以將量子任務提交至任何 QPU 裝置，無論您在哪個區域工作。SDK 會自動為指定的 QPU 建立 區域的工作階段。

Amazon Braket 可用於以下項目 AWS 區域：


| 區域名稱 | 區域 | Braket 端點 | 
| --- | --- | --- | 
|  美國東部 (維吉尼亞北部)  |  us-east-1  |  braket.us-east-1.amazonaws.com （僅限 IPv4) braket.us-east-1.api.aws （雙堆疊）  | 
|  美國西部 (加利佛尼亞北部)  |  us-west-1  |  braket.us-west-1.amazonaws.com （僅限 IPv4) braket.us-west-1.api.aws （雙堆疊）  | 
|  美國西部 2 （奧勒岡）  |  us-west-2  |  braket.us-west-2.amazonaws.com （僅限 IPv4) braket.us-west-2.api.aws （雙堆疊）  | 
|  歐洲北部 1 （斯德哥爾摩）  |  eu-north-1  |  braket.eu-north-1.amazonaws.com （僅限 IPv4) braket.eu-north-1.api.aws （雙堆疊）  | 
|  歐洲西部 2 （倫敦）  |  eu-west-2  |  braket.eu-west-2.amazonaws.com （僅限 IPv4) braket.eu-west-2.api.aws （雙堆疊）  | 

**注意**  
Amazon Braket SDK 不支援IPv6-only的網路。