Skip to main content
IBM Quantum Platform

PEC (qiskit_mitigation.pec)

PEC

class PEC

GitHub

ベース: 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)

GitHub

指定されたボクシングオプションを使用して、指定された回路の固有のボックス化されたレイヤーを返します。

パラメーター

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

GitHub

Executor 経由で実行するための、PEC 対策済 QuantumProgram みのアイテムを作成します。

Executor を通じて実行可能であり QuantumProgram、PEC 対策が施された(学習されたノイズを打ち消すために逆ノイズを注入する)アイテムを作成します。 が指定 quantum_program された場合、新しい項目は既存のプログラムに追加されます。指定されない場合は、作成された項目のみを含む新しいプログラムが作成されます。 broadcast_obs_and_params が True の場合、観測可能変数とパラメータは、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 施された項目。

戻りの型

QuantumProgram

postprocess

postprocess(results, measure_noise_data=None)

GitHub

単一の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 されていた。

戻りの型

PubResult

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)

GitHub

単一の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) – 基底を測定するための、パラメータとインデックスの間の対応関係を示すマップ。
  • 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 場合。

戻りの型

PubResult

create_instance_from_passthrough_data

static create_instance_from_passthrough_data(passthrough, trex=None)

GitHub

量子プログラムの実行結果から読み込まれたパススルー辞書から、PECインスタンスを作成します。

パラメーター

  • passthrough (dict[str, Any]) – 量子プログラムの実行結果から読み込まれた Passthrough_data ディクショナリ。
  • trex (TREX | None) – 同じ量子プログラム内で実行された、キャリブレーション回路の結果を含むTREXインスタンス。 TREXの緩和措置が適用されなかった場合 None 、または同じ量子プログラムの一環としてTREXのキャリブレーションが実行されなかった場合は、そのまま残しておく必要があります。

戻り値

PECインスタンス。

戻りの型

PEC

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。