Zdalna transpilacja Circuit za pomocą Qiskit Transpiler Service
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-transpiler
Od 18 lipca 2025 r. usługa jest migrowana do obsługi nowej platformy IBM Quantum® i jest niedostępna. W przypadku przejść AI możesz skorzystać z trybu lokalnego.
Usługa jest wydaniem beta i może ulec zmianie. Jeśli masz uwagi lub chcesz skontaktować się z zespołem programistów, użyj tego kanału Qiskit Slack Workspace.
Qiskit Transpiler Service oferuje możliwości transpilacji w chmurze. Oprócz lokalnych możliwości Transpilatora Qiskit, twoje zadania transpilacji mogą korzystać zarówno z zasobów chmurowych IBM Quantum, jak i przejść Transpilatora opartych na AI.
Qiskit Transpiler Service udostępnia bibliotekę Pythona umożliwiającą płynną integrację tej usługi i jej możliwości z bieżącymi wzorcami i przepływami pracy Qiskit. Usługa jest dostępna wyłącznie dla użytkowników planów IBM Quantum Premium Plan, Flex Plan i On-Prem (przez API IBM Quantum Platform).
Instalacja pakietu qiskit-ibm-transpiler
Aby korzystać z Qiskit Transpiler Service, zainstaluj pakiet qiskit-ibm-transpiler:
pip install qiskit-ibm-transpiler
Pakiet automatycznie uwierzytelnia się przy użyciu poświadczeń IBM Quantum Platform zgodnie ze sposobem, w jaki Qiskit Runtime nimi zarządza:
- Zmienna środowiskowa:
QISKIT_IBM_TOKEN - Plik konfiguracyjny
~/.qiskit/qiskit-ibm.json(w sekcjidefault-ibm-quantum).
Uwaga: Ten pakiet wymaga Qiskit SDK v1.X.
Opcje transpilacji qiskit-ibm-transpiler
backend_name(opcjonalne, str) – nazwa Backend zgodna z oczekiwaniami QiskitRuntimeService (na przykładibm_torino). Jeśli jest ustawiona, metoda transpilacji używa układu z podanego Backend do operacji transpilacji. Jeśli ustawiona jest inna opcja wpływająca na te ustawienia, np.coupling_map, ustawieniabackend_namesą nadpisywane.coupling_map(opcjonalne, List[List[int]]) – prawidłowa lista mapy sprzężeń (na przykład [[0,1],[1,2]]). Jeśli jest ustawiona, metoda transpilacji używa tej mapy sprzężeń do operacji transpilacji. Jeśli jest zdefiniowana, nadpisuje każdą wartość podaną dlatarget.optimization_level(int) – potencjalny poziom optymalizacji stosowany podczas procesu transpilacji. Prawidłowe wartości to [1,2,3], gdzie 1 oznacza najmniejszą optymalizację (i najszybsze działanie), a 3 – największą optymalizację (i największą czasochłonność).ai("true", "false", "auto") – czy podczas transpilacji mają być używane możliwości oparte na AI. Dostępne możliwości AI mogą obejmować przejścia transpilacjiAIRoutinglub inne metody syntezy oparte na AI. Jeśli ta wartość to"true", usługa stosuje różne przejścia transpilacji oparte na AI w zależności od żądanegooptimization_level. Jeśli"false", używane są najnowsze funkcje transpilacji Qiskit bez AI. Jeśli"auto", usługa decyduje, czy zastosować standardowe heurystyczne przejścia Qiskit, czy przejścia oparte na AI na podstawie twojego Circuit.qiskit_transpile_options(dict) – obiekt słownika Pythona, który może zawierać dowolną inną opcję prawidłową dla metodytranspile()w Qiskit. Jeśli wejścieqiskit_transpile_optionszawieraoptimization_level, jest on odrzucany na rzecz wartościoptimization_levelpodanej jako parametr wejściowy. Jeśliqiskit_transpile_optionszawiera opcję nierozpoznaną przez metodętranspile()Qiskit, biblioteka zgłasza błąd.
Więcej informacji o dostępnych metodach qiskit-ibm-transpiler znajdziesz w dokumentacji API qiskit-ibm-transpiler. Aby dowiedzieć się więcej o API usługi, zapoznaj się z dokumentacją REST API Qiskit Transpiler Service.
Przykłady
Poniższe przykłady pokazują, jak transpilować Circuit za pomocą Qiskit Transpiler Service z ró żnymi parametrami.
- Utwórz Circuit i wywołaj Qiskit Transpiler Service, aby przetranspilować go z
ibm_torinojakobackend_name, 3 jakooptimization_leveli bez użycia AI podczas transpilacji.
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)
Uwaga: jako backend_name możesz używać tylko urządzeń Backend, do których masz dostęp ze swoim kontem IBM Quantum. Oprócz backend_name, TranspilerService akceptuje również coupling_map jako parametr.
- Utwórz podobny Circuit i przetranspiluj go, żądając możliwości transpilacji AI poprzez ustawienie flagi
ainaTrue:
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)
- Utwórz podobny Circuit i przetranspiluj go, pozwalając usłudze zdecydować, czy użyć przejść transpilacji opartych na AI.
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)
Ograniczenia Qiskit Transpiler Service
Poniżej przedstawiono najważniejsze ograniczenia usługi:
- Maksymalna liczba bramek dwuqubitowych na Circuit w zadaniu transpilacji w dowolnym trybie
aiwynosi 1 milion. - Maksymalny czas dozwolony na uruchomienie procesu transpilacji wynosi 30 minut na zadanie.
- Musisz pobrać wynik transpilacji z usługi w ciągu 20 minut od zakończenia procesu transpilacji. Po 20 minutach wynik zadania jest odrzucany.
- Maksymalny czas, przez jaki zestaw Circuit może czekać w wewnętrznej kolejce na transpilację, wynosi 120 minut. Po tym czasie, jeśli zadanie nie zostało przetranspilowane, jest odrzucane.
- Maksymalna liczba Qubit nie została określona. Usługa była testowana na ponad 900 Qubit.
Cytowanie
Jeśli używasz jakichkolwiek funkcji opartych na AI z Qiskit Transpiler Service w swoich badaniach, użyj następującego zalecanego cytowania:
@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},
}
Następne kroki
- Dowiedz się, jak tworzyć przejścia Transpilatora AI.
- Dowiedz się, jak transpilować Circuit w ramach przepływu pracy wzorców Qiskit przy użyciu Qiskit Runtime.
- Przejrzyj dokumentację klienta Python Qiskit Transpiler Service.