本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建置您的第一個電路
啟動筆記本執行個體後,請選擇您剛建立的筆記本,以標準 Jupyter 介面開啟執行個體。

Amazon Braket 筆記本執行個體會預先安裝 Amazon Braket SDK 及其所有相依性。從使用conda_braket
核心建立新的筆記本開始。

您可以從簡單的「您好,世界!」開始 範例。首先,建構準備 Bell 狀態的電路,然後在不同的裝置上執行該電路以取得結果。
首先匯入 Amazon Braket SDK 模組,並定義簡單的 Bell 狀態電路。
import boto3 from braket.aws import AwsDevice from braket.devices import LocalSimulator from braket.circuits import Circuit # Create the circuit bell = Circuit().h(0).cnot(0, 1)
您可以使用此命令視覺化電路:
print(bell)
T : │ 0 │ 1 │ ┌───┐ q0 : ─┤ H ├───●─── └───┘ │ ┌─┴─┐ q1 : ───────┤ X ├─ └───┘ T : │ 0 │ 1 │
在本機模擬器上執行您的電路
接著,選擇要在其中執行電路的量子裝置。Amazon Braket SDK 隨附本機模擬器,用於快速原型設計和測試。我們建議將本機模擬器用於較小的電路,最多可達 25 個 qubits(取決於您的本機硬體)。
以下是如何執行個體化本機模擬器的方法:
# Instantiate the local simulator local_sim = LocalSimulator()
並執行電路:
# Run the circuit result = local_sim.run(bell, shots=1000).result() counts = result.measurement_counts print(counts)
您應該會看到類似這樣的結果:
Counter({'11': 503, '00': 497})
您準備的特定貝爾狀態是相等的 |00⟩ 和 |11⟩ 疊加,而且您會發現大約相等 (最高shot雜訊) 分佈為 00 和 11 作為測量結果,如預期。
在隨需模擬器上執行您的電路
Amazon Braket 也提供隨需、高效能模擬器 的存取權,SV1以執行更大的電路。 SV1 是一種隨需狀態向量模擬器,允許模擬最多 34 個 的量子電路qubits。您可以在SV1支援的裝置區段和 AWS 主控台中找到有關 的詳細資訊。在 SV1(和 TN1或任何 QPU) 上執行量子任務時,量子任務的結果會存放在您帳戶中的 S3 儲存貯體中。如果您未指定儲存貯體,則 Braket SDK amazon-braket-{region}-{accountID}
會為您建立預設儲存貯體。若要進一步了解,請參閱管理對 Amazon Braket 的存取。
注意
填寫您實際的現有儲存貯體名稱,其中下列範例顯示amazon-braket-s3-demo-bucket
為您的儲存貯體名稱。Amazon Braket 的儲存貯體名稱一律以 開頭,amazon-braket-
後面接著您新增的其他識別字元。如果您需要如何設定 S3 儲存貯體的資訊,請參閱 Amazon S3 入門。
# Get the account ID aws_account_id = boto3.client("sts").get_caller_identity()["Account"] # The name of the bucket my_bucket = "amazon-braket-s3-demo-bucket" # The name of the folder in the bucket my_prefix = "simulation-output" s3_folder = (my_bucket, my_prefix)
若要在 上執行電路SV1,您必須提供先前在 .run()
呼叫中選取做為位置引數的 S3 儲存貯體位置。
# Choose the cloud-based on-demand simulator to run your circuit device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1") # Run the circuit task = device.run(bell, s3_folder, shots=100) # Display the results print(task.result().measurement_counts)
Amazon Braket 主控台提供有關量子任務的進一步資訊。導覽至主控台中的 Quantum 任務索引標籤,您的量子任務應該位於清單頂端。或者,您可以使用唯一的量子任務 ID 或其他條件來搜尋量子任務。
注意
90 天後,Amazon Braket 會自動移除與量子任務相關聯的所有量子任務 IDs 和其他中繼資料。如需詳細資訊,請參閱資料保留。
在 QPU 上執行
使用 Amazon Braket,您只需變更一行程式碼,即可在實體量子電腦上執行先前的量子電路範例。Amazon Braket 可讓您從 IonQ、QuEra、 IQM和 存取QPU裝置Rigetti。您可以在支援的裝置區段,以及裝置索引標籤下的 AWS 主控台中找到不同裝置和可用性時段的相關資訊。下列範例示範如何執行個體化IQM裝置。
# Choose the IQM hardware to run your circuit device = AwsDevice("arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet")
或者,選擇具有此程式碼IonQ的裝置:
# Choose the Ionq device to run your circuit device = AwsDevice("arn:aws:braket:us-east-1::device/qpu/ionq/Aria-1")
選取裝置之後,在執行工作負載之前,您可以使用下列程式碼查詢裝置佇列深度,以判斷量子任務或混合任務的數量。此外,客戶可以在 的裝置頁面上檢視裝置特定的佇列深度Amazon Braket Management Console。
# Print your queue depth print(device.queue_depth().quantum_tasks) # Returns the number of quantum tasks queued on the device # {<QueueType.NORMAL: 'Normal'>: '0', <QueueType.PRIORITY: 'Priority'>: '0'} print(device.queue_depth().jobs) # Returns the number of hybrid jobs queued on the device # '2'
當您執行任務時,Amazon Braket SDK 會輪詢結果 (預設逾時為 5 天)。您可以修改 .run()
命令中的 poll_timeout_seconds
參數來變更此預設值,如以下範例所示。請注意,如果您的輪詢逾時太短,則可能無法在輪詢時間內傳回結果,例如當 QPU 無法使用且傳回本機逾時錯誤時。您可以透過呼叫 task.result()
函數來重新啟動輪詢。
# Define quantum task with 1 day polling timeout task = device.run(bell, s3_folder, poll_timeout_seconds=24*60*60) print(task.result().measurement_counts)
此外,在提交您的量子任務或混合任務之後,您可以呼叫 queue_position()
函數來檢查您的佇列位置。
print(task.queue_position().queue_position) # Return the number of quantum tasks queued ahead of you # '2'