建置您的第一個電路 - Amazon Braket

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

建置您的第一個電路

啟動筆記本執行個體後,請選擇您剛建立的筆記本,以標準 Jupyter 介面開啟執行個體。

筆記本界面顯示名為 amazon-braket-test 且具有 狀態 InService 及其 的現有筆記本執行個體URL。

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

筆記本、主控台和其他工具的啟動器介面,例如終端機、文字檔案、Markdown 檔案、Python 檔案,以及反白顯示的 conda_braket Python 環境。

您可以從簡單的「您好,世界!」開始 範例。首先,建構準備 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)

在本機模擬器上執行您的電路

接著,選擇要在其中執行電路的量子裝置。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 amazon-braket-{region}-{accountID}會為您SDK建立預設儲存貯體。若要進一步了解,請參閱管理對 Amazon Braket 的存取

注意

填寫您實際的現有儲存貯體名稱,其中下列範例顯示amzn-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 = "amzn-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 提供 的存取權 QPU 裝置來自 IonQ, IQM, QuEra 和 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) '2' # returns the number of hybrid jobs queued on the device

當您執行任務時,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'