Skip to main content
IBM Quantum Platform

PEA

class PEA

GitHub

베이스: MitigationTask

확률적 오차 증폭(PEA) 완화 기법을 사용하여 관측 가능한 변수의 기대값을 계산합니다.

이 클래스를 사용하면 PEA 기법을 통해 회로 완화 처리가 적용된 QuantumProgram 를 생성할 수 있으며, 이를 Executor를 통해 하드웨어에서 실행하고, 결과를 후처리하여 주어진 관측 변수의 완화 기대값을 계산할 수 있습니다. 작업 매개변수는 prepare 함수에 입력으로 전달되어야 하며, 후처리에 필요한 관련 변수들은 내부적으로 저장됩니다:

pea_task = PEA()
program = pea_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 = pea_task.postprocess(results)

로드된 작업 결과의 기대값을 계산하기 위해, 후처리에 필요한 모든 내부 변수가 포함된 작업 결과를 바탕으로 PEA 태스크를 생성할 수 있습니다. 또는 후처리에 필요한 변수들을 정적 compute_expectation_value 메서드에 직접 입력으로 전달할 수도 있습니다. 로드된 결과에 대해 후처리를 실행하는 예시:

pea_task = PEA()
program = pea_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()
pea_task = load_tasks_from_result(results)[0]
mitigated_result = pea_task.postprocess(results)

PEA 태스크를 생성합니다.


속성

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)

GitHub

단일 항목 결과에 대한 기대값을 처리합니다.

이 함수는 새로운 클래스 인스턴스를 생성하지 않고도, 완화 조치가 적용되지 않은 단일 항목 결과에 대한 기대값을 계산하는 데 사용할 수 있습니다.

매개변수

  • item_result (QuantumProgramItemResult) – 항목 결과.
  • observables (ObservablesArray |Sequence[SparsePauliOp]) – 기대값을 계산할 관측량들.
  • 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 – 만약 와 param_shape 가 서로에 대해 브로드캐스트될 수 observables.shape 없다면.

리턴 유형

PubResult

compute_expectation_value_pea

static compute_expectation_value_pea(item_result, 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)

GitHub

단일 항목 결과에 대한 기대값을 처리합니다.

이 함수는 새로운 클래스 인스턴스를 생성하지 않고도 단일 완화된 항목 결과에 대한 기대값을 계산하는 데 사용할 수 있습니다.

매개변수

  • item_result (QuantumProgramItemResult) – 완두콩이 해당 항목의 결과를 완화시켰다.

  • observables (ObservablesArray |Sequence[SparsePauliOp]) – 기대값을 계산할 관측량들.

  • param_shape (tuple[int, ...] | None) – 매개변수 값의 형태.

  • param_basis_pairs (list[tuple[tuple[int, ...], str]] | None) – 기저를 측정하기 위한 params와 ndindexes 간의 매핑.

  • noise_factors (list[float]) – 잡음을 증폭하는 데 사용된 잡음 계수들.

  • 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_result.

  • 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: 잡음이 없는 점에서 계산된 기대값.

  • 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 – 만약 item_result 에 '_meas' 키가 없다면.
  • ValueError – 의 item_result['_meas'] 축 수가 유효하지 않은 경우.
  • ValueError – 만약 와 param_shape 가 서로에 대해 브로드캐스트될 수 observables.shape 없다면.
  • ValueError – 어떤 외삽기에 대해서든 noise_factors 가 미사양인 경우.

create_instance_from_passthrough_data

static create_instance_from_passthrough_data(passthrough, trex=None)

GitHub

양자 프로그램 실행 결과에서 불러온 패스스루 사전(dictionary)을 기반으로 PEA 인스턴스를 생성합니다.

매개변수

  • passthrough (dict[str, Any]) – 양자 프로그램 실행 결과에서 불러온 Passthrough_data 사전.
  • trex (TREX | None) – 동일한 양자 프로그램 내에서 실행된, 보정 회로 구현을 포함하는 TREX 인스턴스. 동일한 양자 프로그램의 일환으로 TREX 완화 조치가 사용되지 않았거나 TREX 보정이 수행되지 않은 경우에는 None 이 설정을 유지해야 합니다.

리턴

PEA 인스턴스.

리턴 유형

PEA

find_unique_layers

find_unique_layers(circuit, custom_boxing_options=None)

GitHub

지정된 박싱 옵션을 사용하여 주어진 회로의 고유한 박싱된 레이어를 반환합니다.

매개변수

  • 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)

GitHub

단일 항목 결과에 대한 기대값을 처리합니다.

매개변수

  • results (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: 잡음이 없는 점에서 계산된 기대값.

  • 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, *, noise_maps=None, noise_factors=(1, 3, 5), extrapolator=None, extrapolated_noise_factors=None)

GitHub

Executor를 통해 실행할 PEA 완화 항목이 포함된 QuantumProgram 객체를 생성합니다.

Executor를 통해 QuantumProgram 실행할 수 있으며 PEA 완화 처리가 적용된 (주입된 파울리 잡음을 조정하여 잡음을 증폭시키고, 잡음이 없는 지점까지 외삽하는) 항목을 생성합니다. 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'인 경우, 새로운 프로그램이 생성됩니다.

  • noise_maps (dict[str, PauliLindbladMap] | None) – 노이즈 증폭에 사용할 노이즈 모델에 대한 레이어 참조 간의 매핑. 이 딕셔너리에는 주어진 회로에 존재하지 않는 레이어가 포함될 수 있지만, 완화 조치가 적용된 모든 레이어는 반드시 포함되어야 합니다. 노이즈 학습에 사용된 고유 레이어들이 동일한 사용자 지정 박싱 옵션을 적용한 find_unique_layers 방법을 통해 추출되었다고 가정합니다.

  • 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) – 후처리 과정에서 적합도를 평가하기 위한 잡음 계수들이 사용될 예정이다. 후처리를 용이하게 하기 위해 데이터를 저장하는 데 사용됩니다. 후처리 단계에서 덮어쓸 수 있습니다.

리턴

Executor를 통해 실행할 수 있는, PEA 완화 항목이 QuantumProgram 포함된 A.

리턴 유형

QuantumProgram

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.