翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
予約中の量子タスクの実行
予約の作成から有効な予約 ARN https://docs.aws.amazon.com/braket/latest/developerguide/braket-reservations.html#braket-create-a-reservationを取得したら、予約中に実行する量子タスクを作成できます。これらのタスクは、予約が開始されるまで QUEUED
状態のままになります。
注記
予約は AWS アカウントとデバイス固有です。予約を作成した AWS アカウントのみが予約 ARN を使用できます。
注記
予約 ARN で送信されたタスクとジョブのキューの可視性はありません。予約中に実行されるのはタスクのみです。
Python SDKs Braket、、Qiskit
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)
量子タスクの作成中にDirectReservation
コンテキストがアクティブである限り、 プラグインPennyLaneと Qiskitプラグインを使用して予約に量子タスクを作成できます。例えば、 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 Notebook を再起動するか、以下を呼び出してコンテキストをオンデマンドモードに戻します。
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または で作成されたタスクが正しい予約 ARN PennyLaneを使用していることを確認します。これらの追加の考慮事項により、前の 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)