예약 중 양자 작업 실행 - Amazon Braket

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

예약 중 양자 작업 실행

예약 생성에서 유효한 예약 ARN을 얻은 후 예약 중에 실행할 양자 작업을 생성할 수 있습니다. 이러한 작업은 예약이 시작될 때까지 QUEUED 상태로 유지됩니다.

참고

예약은 AWS 계정 및 디바이스별로 다릅니다. 예약을 생성한 AWS 계정만 예약 ARN을 사용할 수 있습니다.

참고

예약 중에 작업만 실행되므로 예약 ARN과 함께 제출된 작업 및 작업에 대한 대기열 가시성이 없습니다.

Python SDKs Braket, Qiskit, PennyLane또는 boto3(Boto3 작업)과 직접 같은를 사용하여 양자 작업을 생성할 수 있습니다. 예약을 사용하려면 Amazon Braket Python SDK버전 v1.79.0 이상이 있어야 합니다. 다음 코드를 사용하여 최신 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)

양자 작업을 생성하는 동안 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() 호출이 포함된 셀은 한 번만 실행해야 합니다.

온디맨드 모드로 다시 전환하려면: Jupyter 노트북을 다시 시작하거나 다음을 호출하여 컨텍스트를 온디맨드 모드로 다시 변경합니다.

reservation.stop() # unset reservation context
참고

예약의 시작 및 종료 시간이 예약되어 있습니다(예약 생성 참조). reservation.start()reservation.stop()서드는 예약을 시작하거나 종료하지 않습니다. 예약 중에 실행할 모든 후속 양자 작업을 수정하는 방법입니다. 이러한 방법은 예약된 예약 시간에 영향을 미치지 않습니다.

작업을 생성할 때 예약 ARN을 명시적으로 전달

예약 중에 작업을 생성하는 또 다른 방법은를 호출할 때 예약 ARN을 명시적으로 전달하는 것입니다device.run().

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

이 메서드는 양자 작업을 예약 ARN과 직접 연결하여 예약 기간 동안 실행되도록 합니다. 이 옵션의 경우 예약 중에 실행하려는 각 작업에 예약 ARN을 추가합니다. 또한 Qiskit 또는에서 생성된 작업이 올바른 예약 ARN을 PennyLane 사용하고 있는지 확인합니다. 이러한 추가 고려 사항으로 인해 이전 두 가지 방법이 권장됩니다.

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)