기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
양자 작업 배치
로컬 시뮬레이터를 제외한 모든 Amazon Braket 디바이스에서 Quantum 작업 배치를 사용할 수 있습니다. 배치는 온디맨드 시뮬레이터(TN1 또는 SV1)를 사용하면 여러 양자 작업을 병렬로 처리할 수 있습니다. 다양한 양자 작업을 설정하는 데 도움이 되도록 Amazon Braket은 예제 노트북을
배치를 사용하면 양자 작업을 병렬로 시작할 수 있습니다. 예를 들어 10개의 양자 작업이 필요한 계산을 수행하려는 경우 해당 양자 작업의 회로가 서로 독립적이라면 배치화를 사용하는 것이 좋습니다. 이렇게 하면 다른 작업이 시작되기 전에 하나의 양자 작업이 완료될 때까지 기다릴 필요가 없습니다.
다음 예제에서는 양자 작업 배치를 실행하는 방법을 보여줍니다.
circuits = [bell for _ in range(5)] batch = device.run_batch(circuits, s3_folder, shots=100) print(batch.results()[0].measurement_counts) # The result of the first quantum task in the batch
자세한 내용은 의 Amazon Braket 예제 GitHub
양자 작업 배치 및 비용 정보
양자 작업 배치 및 결제 비용과 관련하여 유의해야 할 몇 가지 주의 사항:
-
기본적으로 양자 작업 배치는 모든 제한 시간을 재시도하거나 양자 작업에 3회 실패합니다.
-
34와 같은 장기 실행 양자 작업 배치 qubits for SV1는 비용이 많이 들 수 있습니다. 양자 작업 배치를 시작하기 전에
run_batch
할당 값을 주의 깊게 다시 확인해야 합니다. 를 사용하지 않는 것이 좋습니다.TN1 를 사용합니다run_batch
. -
TN1 는 실패한 리허설 단계 작업에 대한 비용을 발생시킬 수 있습니다(자세한 내용은 TN1 설명 참조). 자동 재시도가 비용에 추가될 수 있으므로 를 사용할 때 배치화 시 'max_retries' 수를 0으로 설정하는 것이 좋습니다.TN1 (Quantum Task Batching, 라인 186
참조).
Quantum 작업 배치 및 PennyLane
다음 예제와 같이 Amazon Braket 디바이스를 인스턴스화할 때 를 설정하여 Amazon Braket PennyLane 에서 를 사용할 parallel = True
때 배치를 활용하세요.
device = qml.device("braket.aws.qubit",device_arn="arn:aws:braket:::device/quantum-simulator/amazon/sv1",wires=wires,s3_destination_folder=s3_folder,parallel=True,)
를 사용한 배치화에 대한 자세한 내용은 양자 회로 병렬 최적화를 PennyLane참조하세요. https://github.com/aws/amazon-braket-examples/blob/main/examples/pennylane/1_Parallelized_optimization_of_quantum_circuits/1_Parallelized_optimization_of_quantum_circuits.ipynb
태스크 배치 및 파라미터 회로
파라미터화된 회로가 포함된 양자 작업 배치를 제출할 때 배치의 모든 양자 작업에 사용되는 inputs
사전 또는 입력 사전list
의 를 제공할 수 있습니다. 이 경우 다음 예제와 같이 i
-번째 사전이 i
-번째 작업과 페어링됩니다.
from braket.circuits import Circuit, FreeParameter, Observable from braket.aws import AwsQuantumTaskBatch # create the free parameters alpha = FreeParameter('alpha') beta = FreeParameter('beta') # create two circuits circ_a = Circuit().rx(0, alpha).ry(1, alpha).cnot(0,2).xx(0, 2, beta) circ_a.variance(observable=Observable.Z(), target=0) circ_b = Circuit().rx(0, alpha).rz(1, alpha).cnot(0,2).zz(0, 2, beta) circ_b.expectation(observable=Observable.Z(), target=2) # use the same inputs for both circuits in one batch tasks = device.run_batch([circ_a, circ_b], inputs={'alpha': 0.1, 'beta':0.2}) # or provide each task its own set of inputs inputs_list = [{'alpha': 0.3,'beta':0.1}, {'alpha': 0.1,'beta':0.4}] tasks = device.run_batch([circ_a, circ_b], inputs=inputs_list)
단일 파라미터 회로에 대한 입력 사전 목록을 준비하여 양자 작업 배치로 제출할 수도 있습니다. 목록에 N 입력 사전이 있는 경우 배치에는 N 양자 작업이 포함됩니다. i
-번째 양자 작업은 i
-번째 입력 사전으로 실행되는 회로에 해당합니다.
from braket.circuits import Circuit, FreeParameter # create a parametric circuit circ = Circuit().rx(0, FreeParameter('alpha')) # provide a list of inputs to execute with the circuit inputs_list = [{'alpha': 0.1}, {'alpha': 0.2}, {'alpha': 0.3}] tasks = device.run_batch(circ, inputs=inputs_list)