PEC (qiskit_mitigation.pec)
PEC
class PEC
베이스: MitigationTask
확률적 오차 상쇄(PEC) 완화 기법을 사용하여 관측량의 기대값을 계산합니다.
이 클래스를 사용하면 PEC 기법을 통해 회로 효과가 완화된 QuantumProgram 를 준비할 수 있으며, 이를 Executor를 통해 하드웨어에서 실행하고, 결과를 후처리하여 주어진 관측량의 완화 기대값을 계산할 수 있습니다. 작업 매개변수는 prepare 함수에 입력으로 전달되어야 하며, 후처리에 필요한 관련 변수들은 내부적으로 저장됩니다:
pec = PEC()
program = pec.prepare(circuit=circuit,
observables=observables,
parameters=parameter_valuesת
noise_maps=learned_noise)
job = executor.run(program)
results = job.result()
mitigated_result = pec.postprocess(results)로드된 작업 결과의 기대값을 계산하기 위해, 후처리에 필요한 모든 내부 변수가 포함된 작업 결과를 바탕으로 PEC 작업을 생성할 수 있습니다. 또는 후처리에 필요한 변수들을 정적 compute_expectation_value 메서드에 직접 입력으로 전달할 수도 있습니다. 로드된 결과에 대해 후처리를 실행하는 예시:
pec = PEC()
program = pec.prepare(circuit=circuit,
observables=observables,
parameters=parameter_valuesת
noise_maps=learned_noise)
job_id = executor.run(program).job_id
job = service.job(job_id)
results = job.result()
pec = load_tasks_from_result(results)[0]
mitigated_result = pec.postprocess(results)PEC 태스크를 생성합니다.
메소드
find_unique_layers
find_unique_layers(circuit, custom_boxing_options=None)
지정된 박싱 옵션을 사용하여 주어진 회로의 고유한 박싱된 레이어를 반환합니다.
매개변수
- circuit (QuantumCircuit) – 이 회로는 고유한 층을 형성한다.
- custom_boxing_options (dict | None) –
generate_boxing_pass_manager()function에서 사용될 사용자 지정 박스 옵션입니다.
리턴
주어진 회로의 고유한 박스화된 레이어.
리턴 유형
목록 [ CircuitInstruction ]
prepare
prepare(circuit, observables, parameters, custom_boxing_options=None, shots_per_randomization=64, num_randomizations=128, broadcast_obs_and_params=False, trex=None, quantum_program=None, *, noise_maps=None, scale_randomizations_by_gamma=True, noise_gain='auto', max_sampling_overhead=100)
Executor를 통해 실행할 수 있도록 PEC 완화 처리가 QuantumProgram 적용된 항목을 생성합니다.
Executor를 통해 실행할 수 있고 PEC 완화 기능이 적용된(학습된 노이즈를 상쇄하기 위해 역노이즈를 주입하는) 항목을 생성합니다 QuantumProgram. a가 지정된 quantum_program 경우, 새로운 항목은 기존 프로그램에 추가되며, 그렇지 않은 경우 생성된 항목만 포함된 새로운 프로그램이 생성됩니다. 이 값이 True인 broadcast_obs_and_params 경우, 관측 가능 변수와 매개변수는 샘플로매틱(samplomatic) 브로드캐스팅 규칙을 사용하여 브로드캐스팅되며, 이를 통해 일부 매개변수를 특정 관측 가능 변수에 연결할 수 있습니다. 그렇지 않으면, 각 관측 가능 변수에 대해 모든 매개변수가 실행됩니다(매개변수와 관측 가능 변수의 외적). 외적의 사후 처리가 일반적으로 더 빠르다는 점에 유의하십시오.
매개변수
- circuit (QuantumCircuit) – 양자 회로.
- observables (ObservablesArray |Sequence[SparsePauliOp]) – 기대값을 계산하기 위한 관측량들.
- parameters (ndarray |BindingsArray | None) – 파라메트릭 회로의 파라미터.
- custom_boxing_options (dict | None) –
generate_boxing_pass_manager()function에서 사용될 사용자 지정 박스 옵션입니다. - shots_per_randomization (int) – 무작위 배정당 투여 횟수.
- num_randomizations (int) – 무작위 배정 횟수.
- broadcast_obs_and_params (bool) – 관측 가능 변수와 매개변수를 전송할지 여부.
- trex (TREX | None) – 읽기 오류를 완화하는 데 사용될 TREX 완화 인스턴스입니다.
- quantum_program (QuantumProgram | None) – 항목을 추가할 양자 프로그램입니다. 'None'인 경우, 새로운 프로그램이 생성됩니다.
- noise_maps (dict[str, PauliLindbladMap] | None) – PEC 완화 방법에 사용할 노이즈 모델에 대한 레이어 참조 간의 매핑. 이 딕셔너리에는 주어진 회로에 존재하지 않는 레이어가 포함될 수 있지만, 완화 조치가 적용된 모든 레이어는 반드시 포함되어야 합니다. 노이즈 학습에 사용된 고유 레이어들이 동일한 사용자 지정 박싱 옵션을 적용한
find_unique_layers방법을 통해 추출되었다고 가정합니다. - scale_randomizations_by_gamma (bool) – gamma**2 에 따라 무작위 배정 횟수를 자동으로 조정할지 여부.
- noise_gain (float |Literal['auto']) – 완화 조치 후 유지될 노이즈의 비율. 값 는 학습된 노이즈를 완전히 제거하는 것과
0일치합니다. 값은 학습된 노이즈가 제거되지 않은 상태를 나타냅니다1. 와0사이의 값은 학습된 노이즈를 부분적으로 제거하는 것에 해당합니다1. 1보다 큰 값은 학습된 잡음을 증폭시키는 것과 같습니다. 만약 라면"auto", 범위 내의 값은 수식 에 의해 자동으로 선택됩니다[0, 1]``1 - log(max_overhead) / log(gamma^2). - max_sampling_overhead (float | None) – scale_randomizations_by_gamma가 True인 경우, 무작위화 횟수의 곱셈 비율을 제한합니다.
리턴
Executor를 통해 실행할 수 있는 PEC 완화 항목이 QuantumProgram 포함된 A.
리턴 유형
postprocess
postprocess(results, measure_noise_data=None)
단일 PEC 완화 항목 결과에 대한 프로세스 기대값.
매개변수
- results (QuantumProgramItemResult |QuantumProgramResult) – 실행 결과. 이 작업의 전체 결과 객체이거나, 해당 작업의 pec 완화 항목 결과일 수 있습니다. 양자 프로그램에 TREX 보정 작업이 추가된 경우, 전체 결과 객체가 제공되면 그 결과가 측정 잡음 데이터를 계산하는 데 사용됩니다.
- measure_noise_data (PauliLindbladMap |ndarray | None) – TREX 완화에 사용할 학습된 측정 잡음 데이터. None인 경우이고 양자 프로그램에 보정 작업이 포함되어 있다면, 전체 결과 객체가 제공될 때 보정 작업의 결과를 바탕으로 측정 잡음이 계산됩니다.
리턴
데이터에 evs 및 std 필드를 포함하는 PubResult 이며, 여기서 evs 는 기대값이고, 는 기대값의 표준편차이다 std . 이 값이 True로 broadcast_obs_and_params 설정되면, 데이터에는 서로 다른 무작위 배정 간의 표준 편차를 나타내는 twirl_stds 필드도 포함됩니다.
인상
- ValueError – 작업의 항목 결과에
'_meas'키가 없는 경우. - ValueError – 항목 결과
'_meas'데이터의 축 수가 유효하지 않은 경우. - ValueError – 만약 와
param_shape가 서로에 대해 브로드캐스트될 수 없는observables.shape반면, 작업 준비 단계에서True는 로 설정된broadcast_obs_and_params경우.
리턴 유형
compute_expectation_value_pec
static compute_expectation_value_pec(item_result, observables, gamma, param_shape=None, param_basis_pairs=None, meas_bases=None, broadcast_obs_and_params=False, measure_noise_data=None)
단일 PEC 완화 항목 결과에 대한 프로세스 기대값.
이 함수는 새로운 클래스 인스턴스를 생성하지 않고도, PEC 완화 항목 결과 하나에 대한 기대값을 계산하는 데 사용할 수 있습니다.
매개변수
- item_result (QuantumProgramItemResult) – 항목 결과.
- observables (ObservablesArray |Sequence[SparsePauliOp]) – 기대값을 계산할 관측량들.
- gamma (float) – 실행된 회로에 대해 학습된 노이즈 모델의 감마 계수.
- param_shape (tuple[int, ...] | None) – 매개변수 값의 형태.
- param_basis_pairs (list[tuple[tuple[int, ...], str]] | None) – 기저를 측정하기 위한 params와 ndindexes 간의 매핑.
- meas_bases (Sequence[Pauli] | Sequence[str] | PauliList | None) – 측정된 파울리 기저의 목록. 번째
i항목은 에 있는 데이터의 번째i슬라이스에 해당한다고 가정된 측정 기준입니다item_result. - broadcast_obs_and_params (bool) – 관측 가능 변수 및 매개변수 값을 전송할지 여부.
- measure_noise_data (PauliLindbladMap |ndarray | None) – TREX 완화용 측정 잡음 교정 데이터.
리턴
데이터에 evs 및 std 필드를 포함하는 PubResult 이며, 여기서 evs 는 기대값이고, 는 기대값의 표준편차이다 std . 이 값이 True로 broadcast_obs_and_params 설정되면, 데이터에는 서로 다른 무작위 배정 간의 표준 편차를 나타내는 twirl_stds 필드도 포함됩니다.
인상
- ValueError – 만약
item_result에'_meas'키가 없다면. - ValueError – 의
item_result['_meas']축 수가 유효하지 않은 경우. - ValueError – 만약
item_result에'pauli_signs'키가 없다면. - ValueError – 만약 와
param_shape가 서로에 대해 브로드캐스트될 수observables.shape없다면.
리턴 유형
create_instance_from_passthrough_data
static create_instance_from_passthrough_data(passthrough, trex=None)
양자 프로그램 실행 결과에서 불러온 패스스루 사전(dictionary)을 기반으로 PEC 인스턴스를 생성합니다.
매개변수
- passthrough (dict[str, Any]) – 양자 프로그램 실행 결과에서 불러온 Passthrough_data 사전.
- trex (TREX | None) – 동일한 양자 프로그램 내에서 실행된, 보정 회로 실행 결과를 포함하는 TREX 인스턴스. 동일한 양자 프로그램의 일환으로 TREX 완화 조치가 사용되지 않았거나 TREX 보정이 수행되지 않은 경우에는
None이 설정을 유지해야 합니다.
리턴
PEC 인스턴스.
리턴 유형