Aller au contenu principal

Rétropropagation d'opérateurs (OBP)

La rétropropagation d'opérateurs (OBP) est une technique permettant de réduire la profondeur d'un circuit en supprimant des opérations à son extrémité, au prix de davantage de mesures d'opérateurs. Il existe plusieurs façons d'effectuer la rétropropagation d'opérateurs ; ce package utilise une méthode fondée sur la théorie des perturbations de Clifford [1].

Plus on propage un opérateur loin dans un circuit, plus la taille de l'observable à mesurer croît de manière exponentielle. Cela entraîne un surcoût en ressources classiques et quantiques. Cependant, pour certains circuits, la distribution des observables de Pauli supplémentaires résultants est plus concentrée que la mise à l'échelle exponentielle dans le pire des cas. Cela implique que certains termes d'un observable avec de petits coefficients peuvent être tronqués pour réduire le surcoût quantique. L'erreur ainsi introduite peut être contrôlée afin de trouver un compromis approprié entre précision et efficacité.

Installation

Tu peux installer le package OBP de deux façons : via PyPI ou en le compilant depuis les sources. Il est conseillé d'installer ces packages dans un environnement virtuel pour garantir l'isolation entre les dépendances.

Installer depuis PyPI

La façon la plus simple d'installer le package qiskit-addon-obp est via PyPI.

pip install qiskit-addon-obp

Compiler depuis les sources

Les utilisateurs qui souhaitent contribuer à ce package ou l'installer manuellement peuvent le faire en clonant d'abord le dépôt :

git clone git@github.com:Qiskit/qiskit-addon-obp.git
```_

puis installer le package via `pip`. Le dépôt contient également des notebooks d'exemples. Si tu prévois de développer dans le dépôt, installe les dépendances `dev`.

Ajuste les options selon tes besoins :

```bash
pip install tox notebook -e '.[notebook-dependencies, dev]'

Contexte théorique

La procédure OBP implémentée dans ce package est décrite en détail dans [1]. Lorsqu'on utilise la primitive Estimator, le résultat d'une charge de travail quantique est l'estimation d'une ou plusieurs valeurs d'espérance O\langle O \rangle par rapport à un état préparé à l'aide d'un QPU. Cette section résume la procédure.

Pour commencer, écris la mesure de la valeur d'espérance d'un observable OO en fonction d'un état initial ψ|\psi\rangle et d'un circuit quantique UQU_Q :

OUψ=ψUOUψ.\langle O \rangle_{U|\psi\rangle} = \langle\psi | U^\dagger O U |\psi \rangle.

Pour distribuer ce problème entre les ressources classiques et quantiques, divise le circuit UU en deux sous-circuits, UCU_C et UQU_Q, simule classiquement le circuit UCU_C, puis exécute le circuit UQU_Q sur du matériel quantique et utilise les résultats de la simulation classique pour reconstruire la mesure de l'observable OO.

Schéma OBP illustrant la division d'un circuit en deux sous-circuits, le calcul classique de l'un des sous-circuits, puis la mesure de l'autre circuit à l'aide de matériel quantique

Le sous-circuit UCU_C doit être choisi de façon à être simulable classiquement et calculera la valeur d'espérance

OUCOUC,\langle O' \rangle \equiv U_C^\dagger O U_C,

qui est la version de l'opérateur initial OO évolué à travers le circuit UCU_C. Une fois OO' déterminé, la charge de travail quantique est préparée : l'état ψ|\psi\rangle est initialisé, le circuit UQU_Q lui est appliqué, puis la valeur d'espérance OO' est mesurée. Tu peux montrer que c'est équivalent à mesurer O\langle O \rangle en écrivant :

ψUQOUQψ=ψUQUCOUCUQψ=ψUOUψ=OUψ \langle \psi | U_Q^\dagger O' U_Q \psi \rangle = \langle \psi | U_Q^\dagger U_C^\dagger O U_CU_Q \psi \rangle = \langle\psi | U^\dagger O U |\psi \rangle = \langle O \rangle_{U|\psi\rangle}

Enfin, pour mesurer la valeur d'espérance O\langle O' \rangle, on doit exiger qu'elle soit décomposable en une somme de chaînes de Pauli

O=PcPP,O' = \sum_P c_P P,

cPc_P sont des coefficients réels de la décomposition et PP est une chaîne de Pauli composée des opérateurs II, XX, YY et ZZ. Cela garantit que tu peux reconstruire la valeur d'espérance de OO par

ψUQOψ=PcPψUQPUQψ.\langle \psi | U_Q^\dagger O' |\psi \rangle = \sum_P c_P \langle \psi | U_Q^\dagger P U_Q | \psi \rangle.

Troncature des termes

Ce schéma offre un compromis entre la profondeur de circuit requise pour UQU_Q, le nombre d'exécutions de circuits sur du matériel quantique, et la quantité de ressources informatiques classiques nécessaires pour calculer OO'. En général, plus on choisit de rétropropager loin dans un circuit, plus le nombre de chaînes de Pauli à mesurer ainsi que le surcoût de mitigation d'erreurs croissent de manière exponentielle (parallèlement aux ressources classiques nécessaires pour simuler UCU_C).

Heureusement, la décomposition de OO' peut souvent contenir des coefficients très petits qui peuvent être tronqués des mesures finales utilisées pour reconstruire OO sans engendrer beaucoup d'erreur. Le package qiskit-addon-obp possède des fonctionnalités pour spécifier un budget d'erreur, qui peut automatiquement rechercher les termes pouvant être tronqués, dans les limites d'une certaine tolérance d'erreur.

Théorie des perturbations de Clifford

Enfin, le package qiskit-addon-obp aborde la rétropropagation d'opérateurs en s'appuyant sur la théorie des perturbations de Clifford. Cette méthode présente l'avantage que le surcoût engendré par la rétropropagation de diverses portes évolue avec la non-cliffordité de UCU_C (c'est-à-dire dans quelle mesure UCU_C est composé d'instructions non-Clifford).

Cette approche de l'OBP commence par diviser le circuit simulé, UCU_C, en tranches :

UC=s=1SUs=US...U2U1,U_C = \prod_{s=1}^S \mathcal{U}_s = \mathcal{U}_S...\mathcal{U}_2\mathcal{U}_1,

SS représente le nombre total de tranches et Us\mathcal{U}_s désigne une tranche unique du circuit UCU_C. Chacune de ces tranches est ensuite appliquée analytiquement en séquence pour mesurer l'opérateur rétropropagé OO', et peut ou non contribuer à la taille globale de la somme, selon que la tranche est une opération Clifford ou non-Clifford. Si un budget d'erreur est alloué, la troncature se produit alors entre l'application de chaque tranche.

Prochaines étapes

Recommandations

Références

[1] Fuller, Bryce, et al. "Improved Quantum Computation using Operator Backpropagation." arXiv:2502.01897 [quant-ph] (2025).