펄스를 사용하여 네이티브 게이트에 액세스합니다. - Amazon Braket

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

펄스를 사용하여 네이티브 게이트에 액세스합니다.

연구자들은 특정 QPU에서 지원하는 네이티브 게이트가 어떻게 펄스로 구현되는지 정확히 알아야 하는 경우가 많습니다. 펄스 시퀀스는 하드웨어 제공업체가 세심하게 보정하지만, 연구자는 펄스 시퀀스에 액세스하여 더 나은 게이트를 설계하거나 특정 게이트의 펄스를 스트레칭하여 제로 노이즈 추론과 같은 오류 완화를 위한 프로토콜을 탐색할 수 있습니다.

Amazon Braket은 Rigetti의 네이티브 게이트에 프로그래밍 방식으로 액세스할 수 있도록 지원합니다.

import math from braket.aws import AwsDevice from braket.circuits import Circuit, GateCalibrations, QubitSet from braket.circuits.gates import Rx device = AwsDevice("arn:aws:braket:us-west-1::device/qpu/rigetti/Aspen-M-3") calibrations = device.gate_calibrations print(f"Downloaded {len(calibrations)} calibrations.")
참고

하드웨어 공급자는 QPU를 정기적으로 보정하며, 보통 하루에 한 번 이상 조정합니다. Braket SDK를 사용하면 최신 게이트 캘리브레이션을 얻을 수 있습니다.

device.refresh_gate_calibrations()

RX 또는 XY 게이트와 같은 지정된 네이티브 게이트를 검색하려면 원하는 Gate 객체와 큐비트를 전달해야 합니다. 예를 들어, 0에 적용된 RX (π/2) 의 펄스 구현을 검사할 수 있습니다. qubit

rx_pi_2_q0 = (Rx(math.pi/2), QubitSet(0)) pulse_sequence_rx_pi_2_q0 = calibrations.pulse_sequences[rx_pi_2_q0]

함수를 사용하여 필터링된 교정 세트를 만들 수 있습니다. filter 게이트 목록 또는 게이트 목록을 전달합니다. QubitSet 다음 코드는 RX (π/2) 와 0에 대한 모든 교정을 포함하는 두 세트를 만듭니다. qubit

rx_calibrations = calibrations.filter(gates=[Rx(math.pi/2)]) q0_calibrations = calibrations.filter(qubits=QubitSet([0])

이제 사용자 지정 보정 세트를 연결하여 네이티브 게이트의 동작을 제공하거나 수정할 수 있습니다. 예를 들어, 다음 회로를 고려해 보십시오.

bell_circuit = ( Circuit() .rx(0,math.pi/2) .rx(1,math.pi/2) .cz(0,1) .rx(1,-math.pi/2) )

PulseSequence객체 사전을 gate_definitions 키워드 인수에 qubit 0 전달하여 게이트 온에 대한 사용자 지정 rx 게이트 보정을 사용하여 실행할 수 있습니다. pulse_sequencesGateCalibrations객체의 속성으로 사전을 만들 수 있습니다. 지정되지 않은 모든 게이트는 양자 하드웨어 공급자의 펄스 보정으로 대체됩니다.

nb_shots = 50 custom_calibration = GateCalibrations({rx_pi_2_q0: pulse_sequence_rx_pi_2_q0}) task=device.run(bell_circuit, gate_definitions=custom_calibration.pulse_sequences, shots=nb_shots)