Skip to main contentIBM Quantum Documentation

LayerNoiseLearningOptions

class LayerNoiseLearningOptions(max_layers_to_learn=Unset, shots_per_randomization=Unset, num_randomizations=Unset, layer_pair_depths=Unset)

GitHub

Bases: object

Options for learning layer noise. This is only used by V2 Estimator.

Note

These options are only used when the resilience level or options specify a technique that requires layer noise learning.

Note

The total number of unique circuits implemented to learn the noise of a single layer depends solely on layer_pair_depths and num_randomizations. For example, if layer_pair_depths contains six depths and num_randomizations is set to 32, the noise learning stage executes a total of 6 * 9 unique circuits per layer, each one with 32 randomizations (at shots_per_randomization each).

The number 9 above is the number of unique circuits that need to be implemented to learn the noise for all the two-qubit subsystem in the given layer by performing local measurements. Indeed, learning the noise for a single one of these subsystems requires measuring all the 16 two-qubit Paulis on that subsystem. Taking advantage of commutation relations to measure more than one of these Paulis (for example, XI, IX, and XX) with a single circuit, it is possible to measure all these 16 Paulis by implementing only 9 circuits. Parallelizing these measurement tasks in the optimal way allows then measuring the 16 Paulis for all of the layer’s two-qubit subsystems with only 9 circuits. More details in Ref. [1].

References

  1. E. van den Berg, Z. Minev, A. Kandala, K. Temme, Probabilistic error cancellation with sparse Pauli–Lindblad models on noisy quantum processors, Nature Physics volume 19, pages 1116–1121 (2023). arXiv:2201.09866 [quant-ph]

Attributes

Parameters

  • max_layers_to_learn (UnsetType | int | None)
  • shots_per_randomization (UnsetType | int)
  • num_randomizations (UnsetType | int)
  • layer_pair_depths (UnsetType | List[int])

layer_pair_depths

Type: UnsetType | List[int]

Default value: Unset

The circuit depths (measured in number of pairs) to use in learning experiments. Pairs are used as the unit because we exploit the order-2 nature of our entangling gates in the noise learning implementation. A value of 3 would correspond to 6 layers of the layer of interest, for example.

Default: (0, 1, 2, 4, 16, 32).

max_layers_to_learn

Type: UnsetType | int | None

Default value: Unset

The max number of unique layers to learn. A None value indicates that there is no limit. If there are more unique layers present, then some layers will not be learned or mitigated. The learned layers are prioritized based on the number of times they occur in a set of run Estimator PUBs, and for equally occurring layers are further sorted by the number of two-qubit gates in the layer.

Default: 4.

num_randomizations

Type: UnsetType | int

Default value: Unset

The number of random circuits to use per learning circuit configuration. A configuration is a measurement basis and depth setting. For example, if your experiment has six depths, then setting this value to 32 will result in a total of 32 * 9 * 6 circuits that need to be executed (where 9 is the number of circuits that need to be implemented to measure all the required observables, see the note in the docstring for LayerNoiseLearningOptions for mode details), at shots_per_randomization each.

Default: 32.

shots_per_randomization

Type: UnsetType | int

Default value: Unset

The total number of shots to use per random learning circuit. A learning circuit is a random circuit at a specific learning depth with a specific measurement basis that is executed on hardware.

Default: 128.


Methods

Was this page helpful?
Report a bug or request content on GitHub.