予約中の量子タスクの実行 - Amazon Braket

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

予約中の量子タスクの実行

予約の作成 ARNから有効な予約を取得したら、予約中に実行する量子タスクを作成できます。これらのタスクは、予約が開始されるまで QUEUED状態のままになります。

注記

予約は AWS アカウントとデバイスによって異なります。予約を作成した AWS アカウントのみが予約 を使用できますARN。

注記

予約時にタスクのみが実行されるARNため、予約とともに送信されたタスクやジョブのキューの可視性はありません。

量子タスクは、 を使用して作成できます。Python SDKs Braket など、 Qiskit, PennyLane、または boto3 を直接使用 (Boto3 で作業)。予約を使用するには、Amazon Braket のバージョン v1.79.0 以降が必要です。Python SDK。 最新の Braket に更新できますSDK。Qiskit プロバイダーと PennyLane プラグインには次のコードがあります。

pip install --upgrade amazon-braket-sdk amazon-braket-pennylane-plugin qiskit-braket-provider

DirectReservationコンテキストマネージャーを使用してタスクを実行する

スケジュールされた予約内でタスクを実行するには、DirectReservationコンテキストマネージャーを使用することをお勧めします。ターゲットデバイスと予約 を指定することでARN、コンテキストマネージャーは、Python withステートメント内で作成されたすべてのタスクが、デバイスへの排他的アクセスで実行されるようにします。

まず、量子回路とデバイスを定義します。次に、予約コンテキストを使用してタスクを実行します。

from braket.aws import AwsDevice, DirectReservation from braket.circuits import Circuit from braket.devices import Devices bell = Circuit().h(0).cnot(0, 1) device = AwsDevice(Devices.IonQ.Aria1) # run the circuit in a reservation with DirectReservation(device, reservation_arn="<my_reservation_arn>"): task = device.run(bell, shots=100)

予約で量子タスクを作成するには PennyLane また、Qiskit 量子タスクの作成中にDirectReservationコンテキストがアクティブである限り、 プラグイン。例えば、Qiskit-Braket プロバイダーでは、次のようにタスクを実行できます。

from braket.devices import Devices from braket.aws import DirectReservation from qiskit import QuantumCircuit from qiskit_braket_provider import BraketProvider qc = QuantumCircuit(2) qc.h(0) qc.cx(0, 1) aria = BraketProvider().get_backend("Aria 1") # run the circuit in a reservation with DirectReservation(Devices.IonQ.Aria1, reservation_arn="<my_reservation_arn>"): aria_task = aria.run(qc, shots=10)

同様に、次のコードは、 を使用して予約中に回路を実行します。Braket-PennyLane プラグイン。

from braket.devices import Devices from braket.aws import DirectReservation import pennylane as qml dev = qml.device("braket.aws.qubit", device_arn=Devices.IonQ.Aria1.value, wires=2, shots=10) @qml.qnode(dev) def bell_state(): qml.Hadamard(wires=0) qml.CNOT(wires=[0, 1]) return qml.probs(wires=[0, 1]) # run the circuit in a reservation with DirectReservation(Devices.IonQ.Aria1, reservation_arn="<my_reservation_arn>"): probs = bell_state()

予約コンテキストを手動で設定する

または、次のコードを使用して予約コンテキストを手動で設定できます。

# set reservation context reservation = DirectReservation(device, reservation_arn="<my_reservation_arn>").start() # run circuit during reservation task = device.run(bell, shots=100)

これは、コンテキストを最初のセルで実行でき、後続のすべてのタスクが予約で実行される Jupyter ノートブックに最適です。

注記

.start() 呼び出しを含むセルは 1 回のみ実行する必要があります。

オンデマンドモードに戻すには: Jupyter ノートブックを再起動するか、以下を呼び出してコンテキストをオンデマンドモードに戻します。

reservation.stop() # unset reservation context
注記

予約には開始時刻と終了時刻がスケジュールされています (「予約の作成」を参照)。reservation.start() および reservation.stop()メソッドは予約 を開始または終了しません。これらは、予約中に実行するように後続のすべての量子タスクを変更する方法です。これらのメソッドは、スケジュールされた予約時間には影響しません。

タスクの作成ARN時に予約を明示的に渡す

予約中にタスクを作成するもう 1 つの方法は、 を呼び出すARNときに予約を明示的に渡すことですdevice.run()

task = device.run(bell, shots=100, reservation_arn="<my_reservation_arn>")

このメソッドは、量子タスクを予約 に直接関連付けARN、予約期間中に実行できるようにします。このオプションでは、予約中に実行する予定の各タスクARNに予約を追加します。さらに、 で作成されたタスクを確認します。Qiskit または PennyLane は正しい予約 を使用していますARN。これらの追加の考慮事項により、前の 2 つの方法をお勧めします。

boto3 を直接使用する場合は、タスクの作成時に予約を関連付けARNとして渡します。

import boto3 braket_client = boto3.client("braket") kwargs["associations"] = [ { "arn": "<my_reservation_arn>", "type": "RESERVATION_TIME_WINDOW_ARN", } ] response = braket_client.create_quantum_task(**kwargs)