GateFolding
class GateFolding
베이스: MitigationTask
게이트 폴딩 완화 기법을 적용한 제로 노이즈 외삽법(ZNE)을 사용하여 관측량의 기대값을 계산합니다.
이 클래스를 사용하면 게이트 폴딩 기법을 적용한 ZNE를 통해 회로 완화 처리가 된 QuantumProgram 를 생성할 수 있으며, 이를 Executor를 통해 하드웨어에서 실행하고, 결과를 후처리하여 주어진 관측 변수의 완화 기대값을 계산할 수 있습니다. 작업 매개변수는 prepare 함수에 입력으로 전달되어야 하며, 후처리에 필요한 관련 변수들은 내부적으로 저장됩니다:
gf_task = GateFolding()
program = gf_task.prepare(circuit=circuit,
observables=observables,
parameters=parameter_values,
noise_factors=noise_factors_array,
extrapolator=extrapolators_list)
job = executor.run(program)
results = job.result()
mitigated_result = gf_task.postprocess(results)로드된 작업 결과의 기대값을 계산하려면, 후처리에 필요한 모든 내부 변수가 포함된 작업 결과를 바탕으로 ‘ GateFolding ’ 태스크를 생성할 수 있습니다. 또는 후처리에 필요한 변수들을 정적 compute_expectation_value 메서드에 직접 입력으로 전달할 수도 있습니다. 로드된 결과에 대해 후처리를 실행하는 예시:
gf_task = GateFolding()
program = gf_task.prepare(circuit=circuit,
observables=observables,
parameters=parameter_values,
noise_factors=noise_factors_array,
extrapolator=extrapolators_list)
job_id = executor.run(program).job_id
job = service.job(job_id)
results = job.result()
gf_task = load_tasks_from_result(results)[0]
mitigated_result = gf_task.postprocess(results)GateFolding 태스크를 생성합니다.
속성
VERSION
기본값: '0.1'
메소드
compute_expectation_value
static compute_expectation_value(item_result, observables, param_shape=None, param_basis_pairs=None, meas_bases=None, broadcast_obs_and_params=False, measure_noise_data=None)
단일 항목 결과에 대한 기대값을 처리합니다.
이 함수는 새로운 클래스 인스턴스를 생성하지 않고도, 완화 조치가 적용되지 않은 단일 항목 결과에 대한 기대값을 계산하는 데 사용할 수 있습니다.
매개변수
- item_result (QuantumProgramItemResult) – 항목 결과.
- observables (ObservablesArray |Sequence[SparsePauliOp]) – 기대값을 계산할 관측량들.
- param_shape (tuple[int, ...] | None) – 매개변수 값의 형태.
- param_basis_pairs (list[tuple[tuple[int, ...], str]] | None) – 기저를 측정하기 위한 파라미터와 인덱스 간의 대응 관계.
- 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 – 만약 와
param_shape가 서로에 대해 브로드캐스트될 수observables.shape없다면.
리턴 유형
compute_expectation_value_gate_folding
static compute_expectation_value_gate_folding(item_results, observables, param_shape, param_basis_pairs, noise_factors, extrapolator, extrapolated_noise_factors=None, meas_bases=None, broadcast_obs_and_params=False, measure_noise_data=None, custom_fit=None)
단일 항목 결과에 대한 기대값을 처리합니다.
이 함수는 새로운 클래스 인스턴스를 생성하지 않고도, 게이트 폴딩이 적용된 단일 항목 결과에 대한 기대값을 계산하는 데 사용할 수 있습니다.
매개변수
-
item_results (list[QuantumProgramItemResult]) – 항목 결과 목록 - 각 소음 요인별로 하나씩.
-
observables (ObservablesArray |Sequence[SparsePauliOp]) – 기대값을 계산할 관측량들.
-
param_basis_pairs (list[tuple[tuple[int, ...], str]] | None) – 기저를 측정하기 위한 파라미터와 인덱스 간의 대응 관계.
-
extrapolated_noise_factors (float |int |list[float] | None) – 적합도를 평가할 때 고려해야 할 잡음 요인들.
-
extrapolator (list[Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback', 'custom']]) –
사용할 외삽 모델 또는 모델들. 모델은 우선순위 순서대로 테스트될 예정입니다. 지원되는 모델 (각 모델은 명시된 잡음 계수 함수에 부합함
x):"linear":a + b*x"polynomial_degree_k"(1 ≤ k ≤ 7): 차수 k인 다항식"exponential":a*exp(b*x)"double_exponential":a*exp(b*x) + c*exp(d*x)(감쇠로 제한된 비율)"fallback": 적합하지 않음; 잡음 계수가 가장 낮은 지점에서의 측정값custom:custom_fit매개변수에서 지정된 사용자 정의 외삽 함수
-
meas_bases (Sequence[Pauli] | Sequence[str] | PauliList | None) – 측정된 파울리 기저의 목록. 번째
i항목은 각 의 데이터 중 번째i슬라이스에 해당한다고 가정된 측정 기준입니다item_results. -
broadcast_obs_and_params (bool) – 관측 가능 변수 및 매개변수 값을 전송할지 여부.
-
measure_noise_data (PauliLindbladMap |ndarray | None) – TREX 완화용 측정 잡음 교정 데이터. 사전에 학습된 잡음 모델의 PauliLindbladMap 이거나, 보정 회로의 결과일 수 있습니다.
-
custom_fit (tuple[Callable[[...], ndarray], list[float], tuple[float, ...] | tuple[list[float], ...]] | None) – 외삽에 사용될 사용자 정의 피팅 함수입니다. 다음과 같은 형식의 튜플을 포함해야 합니다:
(function, p_0, bounds). 이 함수는 독립 변수를 첫 번째 인수로, 적합에 사용할 매개변수들을 나머지 인수들로 각각 받아야 합니다. p_0 는 매개변수에 대한 초기 추정값의 배열이며, bounds는 매개변수의 범위를 나타냅니다. 이 매개변수들은scipy.optimize.curve_fit함수의 인수로 전달됩니다.
리턴
-
evs: 잡음이 0인 점에서 계산된 기대값. -
std: 잡음이 0인 지점에서 산출된 외삽 기대값의 표준편차. -
evs_noise_factors: noise_factors 지점에서 계산된 기대값. -
stds_noise_factors: noise_factors 지점에서 계산된 표준편차. -
stds_twirl_noise_factors: 다음에서 계산된 서로 다른 무작위 배정 간의 표준편차noise_factors 점수.
-
evs_extrapolated: extrapolated_noise_factors 점들에서 계산된 기대값.가 None인
extrapolated_noise_factors경우 None으로 설정합니다. -
stds_extrapolated: extrapolated_noise_factors 지점에서 계산된 표준편차.가 None인
extrapolated_noise_factors경우 None으로 설정합니다.
PubResult 에는 메타데이터에 selected_extrapolators ‘field’ 필드도 포함되는데, 이는 제로 노이즈 외삽 지점에 대해 각 관측 가능한 항의 데이터를 외삽하는 데 사용되는 유효한 외삽기들을 나타냅니다.
리턴 유형
다음 필드를 포함하는 PubResult
인상
- ValueError – 만약 중 하나에
'_meas'키가 없다면item_results. - ValueError – 데이터
'_meas'중item_results하나에 축의 개수가 유효하지 않은 경우. - ValueError – 만약 와
param_shape가 서로에 대해 브로드캐스트될 수observables.shape없다면. - ValueError – 어떤 외삽기에 대해서든
noise_factors가 미사양인 경우.
create_instance_from_passthrough_data
static create_instance_from_passthrough_data(passthrough, trex=None)
양자 프로그램 실행 결과에서 불러온 패스스루 사전(dictionary)을 기반으로 GateFolding 인스턴스를 생성합니다.
매개변수
- passthrough (dict[str, Any]) – 양자 프로그램 실행 결과에서 불러온 Passthrough_data 사전.
- trex (TREX | None) – 동일한 양자 프로그램 내에서 실행된, 보정 회로 구현을 포함하는 TREX 인스턴스. 동일한 양자 프로그램의 일환으로 TREX 완화 조치가 사용되지 않았거나 TREX 보정이 수행되지 않은 경우에는
None이 설정을 유지해야 합니다.
리턴
GateFolding 인스턴스.
리턴 유형
find_unique_layers
find_unique_layers(circuit, custom_boxing_options=None)
지정된 박싱 옵션을 사용하여 주어진 회로의 고유한 박싱된 레이어를 반환합니다.
매개변수
- circuit (QuantumCircuit) – 이 회로는 고유한 층을 형성한다.
- custom_boxing_options (dict | None) –
generate_boxing_pass_manager()function에서 사용될 사용자 지정 박스 옵션입니다.
리턴
주어진 회로의 고유한 박스화된 레이어.
리턴 유형
목록 [ CircuitInstruction ]
postprocess
postprocess(results, measure_noise_data=None, *, noise_factors=None, extrapolator=None, extrapolated_noise_factors=None, custom_fit=None)
단일 ‘ GateFolding ’ 작업 결과에 대한 프로세스 기대값.
매개변수
-
results (list[QuantumProgramItemResult] | QuantumProgramResult) – 실행 결과. 이 작업의 전체 결과 객체이거나, 게이트 폴딩이 완화된 항목일 수 있습니다. 양자 프로그램에 TREX 보정 작업이 추가된 경우, 전체 결과 객체가 제공되면 그 결과가 측정 잡음 데이터를 계산하는 데 사용됩니다.
-
noise_factors (Sequence[float] | None) – 잡음을 증폭하는 데 사용된 잡음 계수들.
-
extrapolated_noise_factors (list[float] | None) – 적합도를 평가할 때 고려해야 할 잡음 요인들.
-
extrapolator (Sequence[Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback', 'custom']] | None) –
사용할 외삽 모델 또는 모델들. 모델은 우선순위 순서대로 테스트될 예정입니다. 지원되는 모델 (각 모델은 명시된 잡음 계수 함수에 부합함
x):"linear":a + b*x"polynomial_degree_k"(1 ≤ k ≤ 7): 차수 k인 다항식"exponential":a*exp(b*x)"double_exponential":a*exp(b*x) + c*exp(d*x)(감쇠로 제한된 비율)"fallback": 적합하지 않음; 잡음 계수가 가장 낮은 지점에서의 측정값custom:custom_fit매개변수에서 지정된 사용자 정의 외삽 함수
-
measure_noise_data (PauliLindbladMap |ndarray | None) – TREX 완화용 측정 잡음 교정 데이터. 사전에 학습된 잡음 모델의 PauliLindbladMap 이거나, 보정 회로의 결과일 수 있습니다.
-
custom_fit (tuple[Callable[[...], ndarray], list[float], tuple[float, ...] | tuple[list[float], ...]] | None) – 외삽에 사용될 사용자 정의 피팅 함수입니다. 다음과 같은 형식의 튜플을 포함해야 합니다:
(function, p_0, bounds). 이 함수는 독립 변수를 첫 번째 인수로, 적합에 사용할 매개변수들을 나머지 인수들로 각각 받아야 합니다. p_0 는 매개변수에 대한 초기 추정값의 배열이며, bounds는 매개변수의 범위를 나타냅니다. 이 매개변수들은scipy.optimize.curve_fit함수의 인수로 전달됩니다.
리턴
-
evs: 잡음이 0인 점에서 계산된 기대값. -
std: 잡음이 0인 지점에서 산출된 외삽 기대값의 표준편차. -
evs_noise_factors: noise_factors 지점에서 계산된 기대값. -
stds_noise_factors: noise_factors 지점에서 계산된 표준편차. -
stds_twirl_noise_factors: 다음에서 계산된 서로 다른 무작위 배정 간의 표준편차noise_factors 점수.
-
evs_extrapolated: extrapolated_noise_factors 점들에서 계산된 기대값.가 None인
extrapolated_noise_factors경우 None으로 설정합니다. -
stds_extrapolated: extrapolated_noise_factors 지점에서 계산된 표준편차.가 None인
extrapolated_noise_factors경우 None으로 설정합니다.
PubResult 에는 메타데이터에 selected_extrapolators ‘field’ 필드도 포함되는데, 이는 제로 노이즈 외삽 지점에 대해 각 관측 가능한 항의 데이터를 외삽하는 데 사용되는 유효한 외삽기들을 나타냅니다.
리턴 유형
다음 필드를 포함하는 PubResult
인상
- ValueError – 작업의 항목 결과 중 하나에
'_meas'키가 없는 경우. - ValueError – 항목 결과 중 하나의
'_meas'데이터에 축 수가 유효하지 않은 경우. - ValueError – 만약 와
param_shape가 서로에 대해 브로드캐스트될 수observables.shape없다면.
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, *, folding_method='random', noise_factors=(1, 3, 5), extrapolator=None, extrapolated_noise_factors=None)
Executor를 통해 실행할 수 있도록 ‘ GateFolding ’ 완화 조치가 적용된 QuantumProgram 항목을 생성합니다.
Executor를 통해 실행할 수 있으며 QuantumProgram, GateFolding 에서 설명된 대로 노이즈 완화 처리가 적용된(게이트 폴딩 기법을 사용하여 노이즈를 증폭시킨 후 제로 노이즈 지점으로 외삽하는) 항목을 생성합니다. a가 지정된 quantum_program 경우, 새 항목은 기존 프로그램에 추가되며, 그렇지 않은 경우 생성된 항목만 포함된 새로운 프로그램이 생성됩니다. 이 값이 True인 broadcast_obs_and_params 경우, 관측 가능 변수와 매개변수는 샘플로매틱(samplomatic) 브로드캐스팅 규칙을 사용하여 브로드캐스팅되며, 이를 통해 일부 매개변수를 특정 관측 가능 변수에 연결할 수 있게 됩니다. 그렇지 않으면, 각 관측 가능 변수에 대해 모든 매개변수가 실행됩니다(매개변수와 관측 가능 변수의 외적). 외적의 사후 처리가 일반적으로 더 빠르다는 점에 유의하십시오.
매개변수
-
circuit (QuantumCircuit) – 양자 회로.
-
observables (ObservablesArray |Sequence[SparsePauliOp]) – 기대값을 계산하기 위한 관측량들.
-
parameters (ndarray | 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'인 경우, 새로운 프로그램이 생성됩니다.
-
folding_method (Literal['random', 'front', 'back']) –
잡음을 증폭시키기 위해 2-큐비트 게이트를 접는 데 사용하는 기법. 잡음 계수 때문에 게이트 중 일부만 증폭해야 하는 경우, 다음 방법에 따라 해당 게이트를 선택한다:
"random"(기본값): 게이트는 무작위로 선택됩니다."front": 게이트는 위상적으로 정렬된 DAG 회로의 앞쪽에서 선택됩니다."back": 게이트는 위상적으로 정렬된 DAG 회로의 뒷부분에서 선택됩니다.
-
noise_factors (Sequence[float |int]) – 잡음을 증폭하는 데 사용할 잡음 계수.
-
extrapolator (Sequence[Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback', 'custom']] | None) –
후처리 과정에서 사용할 예정인 외삽 모델 하나 또는 여러 개. 이러한 외삽기를 사용하여 유효한 적합을 수행하기에 충분한 잡음 요인이 존재하는지 검증하기 위한 준비 단계에서 사용됩니다. 인 경우
None, 유효성 검증이 수행되지 않습니다. 지원되는 모델 (각 모델은 명시된 잡음 계수 함수에 부합함x):"linear":a + b*x"polynomial_degree_k"(1 ≤ k ≤ 7): 차수 k인 다항식"exponential":a*exp(b*x)"double_exponential":a*exp(b*x) + c*exp(d*x)(감쇠로 제한된 비율)"fallback": 적합하지 않음; 잡음 계수가 가장 낮은 지점에서의 측정값
-
extrapolated_noise_factors (list[float] | None) – 후처리 과정에서 적합도를 평가하기 위한 잡음 계수들이 사용될 예정이다. 후처리를 용이하게 하기 위해 데이터를 저장하는 데 사용됩니다. 후처리 단계에서 덮어쓸 수 있습니다.
리턴
GateFolding 로 QuantumProgram 위험이 완화된 항목이며, Executor를 통해 실행할 수 있는 항목입니다.
리턴 유형