Transpiler des circuits à distance avec le Qiskit Transpiler Service
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-transpiler
À partir du 18 juillet 2025, le service est en cours de migration pour prendre en charge la nouvelle plateforme IBM Quantum® et n'est pas disponible. Pour les passes IA, tu peux utiliser le mode local.
Le service est une version bêta, susceptible de changer. Si tu as des retours ou souhaites contacter l'équipe de développement, utilise ce canal Qiskit Slack Workspace.
Le Qiskit Transpiler Service fournit des capacités de transpilation dans le cloud. En plus des capacités de transpilation locales de Qiskit, tes tâches de transpilation peuvent bénéficier à la fois des ressources cloud d'IBM Quantum et des passes de transpilation alimentées par l'IA.
Le Qiskit Transpiler Service propose une bibliothèque Python pour intégrer de façon transparente ce service et ses fonctionnalités dans tes patterns et workflows Qiskit actuels. Ce service est uniquement disponible pour les utilisateurs des plans IBM Quantum Premium, Flex et On-Prem (via l'API IBM Quantum Platform).
Installer le package qiskit-ibm-transpiler
Pour utiliser le Qiskit Transpiler Service, installe le package qiskit-ibm-transpiler :
pip install qiskit-ibm-transpiler
Le package s'authentifie automatiquement en utilisant tes identifiants IBM Quantum Platform, conformément à la gestion effectuée par Qiskit Runtime :
- Variable d'environnement :
QISKIT_IBM_TOKEN - Fichier de configuration
~/.qiskit/qiskit-ibm.json(sous la sectiondefault-ibm-quantum).
Remarque : Ce package nécessite Qiskit SDK v1.X.
Options de transpilation de qiskit-ibm-transpiler
backend_name(optionnel, str) - Un nom de backend tel qu'attendu par QiskitRuntimeService (par exemple,ibm_torino). Si ce paramètre est défini, la méthode de transpilation utilise la disposition du backend spécifié pour l'opération de transpilation. Si une autre option ayant un impact sur ces paramètres est définie, commecoupling_map, les paramètresbackend_namesont remplacés.coupling_map(optionnel, List[List[int]]) - Une liste de coupling map valide (par exemple, [[0,1],[1,2]]). Si ce paramètre est défini, la méthode de transpilation utilise cette coupling map pour l'opération de transpilation. S'il est défini, il remplace toute valeur spécifiée pourtarget.optimization_level(int) - Le niveau d'optimisation potentiel à appliquer lors du processus de transpilation. Les valeurs valides sont [1,2,3], où 1 correspond à l'optimisation la plus faible (et la plus rapide), et 3 à l'optimisation la plus poussée (et la plus longue).ai("true", "false", "auto") - Indique s'il faut utiliser les fonctionnalités alimentées par l'IA lors de la transpilation. Les fonctionnalités IA disponibles peuvent inclure des passes de transpilationAIRoutingou d'autres méthodes de synthèse alimentées par l'IA. Si cette valeur est"true", le service applique différentes passes de transpilation alimentées par l'IA en fonction duoptimization_leveldemandé. Si"false", il utilise les dernières fonctionnalités de transpilation Qiskit sans IA. Enfin, si"auto", le service décide d'appliquer les passes heuristiques Qiskit standard ou les passes alimentées par l'IA en fonction de ton circuit.qiskit_transpile_options(dict) - Un objet dictionnaire Python pouvant inclure toute autre option valide dans la méthode Qiskittranspile(). Siqiskit_transpile_optionsinclutoptimization_level, il est ignoré au profit duoptimization_levelspécifié en paramètre d'entrée. Siqiskit_transpile_optionsinclut une option non reconnue par la méthode Qiskittranspile(), la bibliothèque génère une erreur.
Pour plus d'informations sur les méthodes qiskit-ibm-transpiler disponibles, consulte la référence API qiskit-ibm-transpiler. Pour en savoir plus sur l'API du service, consulte la documentation REST API du Qiskit Transpiler Service.
Exemples
Les exemples suivants montrent comment transpiler des circuits à l'aide du Qiskit Transpiler Service avec différents paramètres.
- Crée un circuit et appelle le Qiskit Transpiler Service pour transpiler le circuit avec
ibm_torinocommebackend_name, 3 commeoptimization_level, et sans utiliser l'IA lors de la transpilation.
from qiskit.circuit.library import efficient_su2
from qiskit_ibm_transpiler.transpiler_service import TranspilerService
circuit = efficient_su2(101, entanglement="circular", reps=1)
cloud_transpiler_service = TranspilerService(
backend_name="ibm_torino",
ai="false",
optimization_level=3,
)
transpiled_circuit = cloud_transpiler_service.run(circuit)
Remarque : tu ne peux utiliser que les appareils backend_name auxquels tu as accès avec ton compte IBM Quantum. En plus du backend_name, le TranspilerService accepte également coupling_map comme paramètre.
- Produis un circuit similaire et transpile-le, en demandant les fonctionnalités de transpilation IA en définissant le drapeau
aiàTrue:
from qiskit.circuit.library import efficient_su2
from qiskit_ibm_transpiler.transpiler_service import TranspilerService
circuit = efficient_su2(101, entanglement="circular", reps=1)
cloud_transpiler_service = TranspilerService(
backend_name="ibm_torino",
ai="true",
optimization_level=1,
)
transpiled_circuit = cloud_transpiler_service.run(circuit)
- Produis un circuit similaire et transpile-le en laissant le service décider s'il faut utiliser les passes de transpilation alimentées par l'IA.
from qiskit.circuit.library import efficient_su2
from qiskit_ibm_transpiler.transpiler_service import TranspilerService
circuit = efficient_su2(101, entanglement="circular", reps=1)
cloud_transpiler_service = TranspilerService(
backend_name="ibm_torino",
ai="auto",
optimization_level=1,
)
transpiled_circuit = cloud_transpiler_service.run(circuit)
Limites du Qiskit Transpiler Service
Voici les limitations les plus pertinentes du service :
- Le nombre maximum de portes à deux qubits par circuit dans un job de transpilation, quel que soit le mode
ai, est de 1 million. - Le temps maximum autorisé pour exécuter un processus de transpilation est de 30 minutes par job.
- Tu dois récupérer le résultat de la transpilation auprès du service dans les 20 minutes suivant la fin du processus de transpilation. Après 20 minutes, le résultat du job est supprimé.
- Le temps maximum pendant lequel un ensemble de circuits peut rester dans la file d'attente interne en attendant d'être transpilé est de 120 minutes. Après ce délai, si le job n'a pas été transpilé, il est supprimé.
- Le nombre maximum de qubits n'a pas été déterminé. Le service a été testé sur 900+ qubits.
Citation
Si tu utilises une fonctionnalité alimentée par l'IA du Qiskit Transpiler Service dans ta recherche, utilise la citation recommandée suivante :
@misc{2405.13196,
Author = {David Kremer and Victor Villar and Hanhee Paik and Ivan Duran and Ismael Faro and Juan Cruz-Benito},
Title = {Practical and efficient quantum circuit synthesis and transpiling with Reinforcement Learning},
Year = {2024},
Eprint = {arXiv:2405.13196},
}
Prochaines étapes
- Apprends à créer des passes de transpilation IA.
- Apprends comment transpiler des circuits dans le cadre du workflow Qiskit patterns en utilisant Qiskit Runtime.
- Consulte la documentation du client Python Qiskit Transpiler Service.