Circuits remote transpilieren mit dem Qiskit Transpiler Service
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-transpiler
Ab dem 18. Juli 2025 wird der Service migriert, um die neue IBM Quantum® Platform zu unterstützen, und ist derzeit nicht verfügbar. Für KI-Passes kannst du den lokalen Modus verwenden.
Der Service ist eine Beta-Version und kann sich noch ändern. Wenn du Feedback hast oder das Entwicklungsteam kontaktieren möchtest, nutze bitte diesen Qiskit Slack Workspace-Kanal.
Der Qiskit Transpiler Service stellt Transpilierungsfunktionen in der Cloud bereit. Zusätzlich zu den lokalen Transpilierungsfunktionen des Qiskit Transpilers können deine Transpilierungsaufgaben von IBM Quantum Cloud-Ressourcen und KI-gestützten Transpiler-Passes profitieren.
Der Qiskit Transpiler Service bietet eine Python-Bibliothek, um diesen Service und seine Fähigkeiten nahtlos in deine bestehenden Qiskit-Muster und -Workflows zu integrieren. Dieser Service ist ausschließlich für Nutzer des IBM Quantum Premium Plan, Flex Plan und On-Prem (über die IBM Quantum Platform API) verfügbar.
Das Paket qiskit-ibm-transpiler installieren
Um den Qiskit Transpiler Service zu verwenden, installiere das Paket qiskit-ibm-transpiler:
pip install qiskit-ibm-transpiler
Das Paket authentifiziert sich automatisch mit deinen IBM Quantum Platform-Zugangsdaten, entsprechend der Verwaltung durch Qiskit Runtime:
- Umgebungsvariable:
QISKIT_IBM_TOKEN - Konfigurationsdatei
~/.qiskit/qiskit-ibm.json(unter dem Abschnittdefault-ibm-quantum).
Hinweis: Dieses Paket erfordert Qiskit SDK v1.X.
Transpilierungsoptionen von qiskit-ibm-transpiler
backend_name(optional, str) – Ein Backend-Name, wie er vom QiskitRuntimeService erwartet wird (zum Beispielibm_torino). Wenn dieser gesetzt ist, verwendet die Transpilierungsmethode das Layout des angegebenen Backends für die Transpilierung. Wenn eine andere Option gesetzt ist, die diese Einstellungen beeinflusst, zum Beispielcoupling_map, werden diebackend_name-Einstellungen überschrieben.coupling_map(optional, List[List[int]]) – Eine gültige Coupling-Map-Liste (zum Beispiel [[0,1],[1,2]]). Wenn diese gesetzt ist, verwendet die Transpilierungsmethode diese Coupling Map für die Transpilierung. Wenn angegeben, überschreibt sie jeden fürtargetangegebenen Wert.optimization_level(int) – Der Optimierungsgrad, der während der Transpilierung angewendet werden soll. Gültige Werte sind [1,2,3], wobei 1 die geringste Optimierung (und die schnellste) und 3 die stärkste Optimierung (und die zeitaufwändigste) bedeutet.ai("true", "false", "auto") – Ob KI-gestützte Funktionen während der Transpilierung verwendet werden sollen. Die verfügbaren KI-gestützten Funktionen könnenAIRouting-Transpiler-Passes oder andere KI-gestützte Synthesemethoden umfassen. Bei"true"wendet der Service je nach angefordertemoptimization_levelverschiedene KI-gestützte Transpiler-Passes an. Bei"false"werden die neuesten Qiskit-Transpilierungsfunktionen ohne KI genutzt. Bei"auto"entscheidet der Service basierend auf deinem Circuit, ob die standardmäßigen Qiskit-Heuristik-Passes oder die KI-gestützten Passes angewendet werden.qiskit_transpile_options(dict) – Ein Python-Dictionary-Objekt, das beliebige andere Optionen enthalten kann, die in der Qiskit-Methodetranspile()gültig sind. Wennqiskit_transpile_optionseinenoptimization_levelenthält, wird dieser zugunsten des als Parameter angegebenenoptimization_levelverworfen. Enthältqiskit_transpile_optionseine Option, die von der Qiskit-Methodetranspile()nicht erkannt wird, gibt die Bibliothek einen Fehler aus.
Weitere Informationen zu den verfügbaren qiskit-ibm-transpiler-Methoden findest du in der API-Referenz von qiskit-ibm-transpiler. Mehr über die Service-API erfährst du in der REST-API-Dokumentation des Qiskit Transpiler Service.
Beispiele
Die folgenden Beispiele zeigen, wie Circuits mit dem Qiskit Transpiler Service und verschiedenen Parametern transpiliert werden.
- Erstelle einen Circuit und rufe den Qiskit Transpiler Service auf, um den Circuit mit
ibm_torinoalsbackend_name, 3 alsoptimization_levelund ohne KI-Einsatz während der Transpilierung zu transpilieren.
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)
Hinweis: Du kannst als backend_name nur Geräte verwenden, auf die du mit deinem IBM Quantum-Konto Zugriff hast. Neben dem backend_name akzeptiert der TranspilerService auch coupling_map als Parameter.
- Erstelle einen ähnlichen Circuit und transpiliere ihn, wobei du KI-gestützte Transpilierungsfunktionen anforderst, indem du das Flag
aiaufTruesetzt:
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)
- Erstelle einen ähnlichen Circuit und transpiliere ihn, wobei du den Service entscheiden lässt, ob die KI-gestützten Transpiler-Passes verwendet werden sollen.
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)
Grenzen des Qiskit Transpiler Service
Im Folgenden sind die relevantesten Einschränkungen des Service aufgeführt:
- Die maximale Anzahl von Zwei-Qubit-Gates pro Circuit in einem Transpilierungsjob in einem beliebigen
ai-Modus beträgt 1 Million. - Die maximal zulässige Laufzeit eines Transpilierungsprozesses beträgt 30 Minuten pro Job.
- Du musst das Transpilierungsergebnis innerhalb von 20 Minuten nach Abschluss des Transpilierungsprozesses abrufen. Nach 20 Minuten wird das Job-Ergebnis verworfen.
- Die maximale Zeit, die ein Satz von Circuits in der internen Warteschlange auf die Transpilierung warten kann, beträgt 120 Minuten. Nach dieser Zeit wird der Job verworfen, sofern er noch nicht transpiliert wurde.
- Die maximale Anzahl von Qubits wurde nicht festgelegt. Der Service wurde mit über 900 Qubits getestet.
Zitierung
Wenn du KI-gestützte Funktionen des Qiskit Transpiler Service in deiner Forschung verwendest, nutze bitte die folgende empfohlene Zitierung:
@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},
}
Nächste Schritte
- Lerne, wie du KI-Transpiler-Passes erstellst.
- Lerne, wie du Circuits transpilierst als Teil des Qiskit-Patterns-Workflows mit Qiskit Runtime.
- Lies die Dokumentation des Qiskit Transpiler Service Python-Clients.