Aller au contenu principal
Ce projet est en phase bêta. Tu as trouvé un bug ? Ouvrir un ticket GitHub. Une question ou une idée ? Pose ta question dans Discussions — tes retours sont les bienvenus !
Quelle est la qualité de la traduction sur cette page ?

Porter du code vers Qiskit Serverless

conseil

Qiskit Serverless fait l'objet d'une mise à niveau, et ses fonctionnalités évoluent rapidement. Pendant cette phase de développement, les notes de version et la documentation la plus récente sont disponibles sur la page GitHub de Qiskit Serverless.

L'exemple suivant montre comment porter du code existant pour tirer parti de Qiskit Serverless.

remarque

Le code suivant suppose que tu as sauvegardé tes identifiants. Si ce n'est pas le cas, suis les instructions de la page Configurer ton compte IBM Cloud pour t'authentifier avec ta clé API.

Mettre à jour l'expérience​

remarque

Dans la version Serverless, crée le service d'exécution avec get_runtime_service() (depuis qiskit_serverless) au lieu de QiskitRuntimeService(), afin que les jobs et sessions du service de calcul IBM Quantum® qu'il lance soient suivis par rapport au job Qiskit Serverless parent. Consulte Écrire ton premier programme Qiskit Serverless pour plus de détails.

from qiskit.transpiler import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit.circuit.random import random_circuit

qc_random = [(random_circuit(20, 20, measure=True)) for _ in range(30)]
optimization_level = 3

service = QiskitRuntimeService(channel="ibm_quantum_platform")
backend = service.get_backend(backend_name)

pass_manager = generate_preset_pass_manager(
optimization_level=optimization_level, backend=backend
)

# @distribute_task(target={"cpu": 1})
def transpile_parallel(circuit, pass_manager):
"""Distributed transpilation for an abstract circuit into an ISA circuit for a given backend."""

isa_circuit = pass_manager.run(circuit)

return isa_circuit

transpiled_circuits = [
transpile_parallel(circuit, pass_manager)
for circuit in circuits
]

print(transpiled_circuits)

Upload to Qiskit Serverless​

Follow the instructions on the Introduction to Qiskit Functions page to authenticate with your API key.

from qiskit_ibm_catalog import QiskitServerless, QiskitFunction

# Authenticate to the remote cluster and submit the pattern for remote execution.
serverless = QiskitServerless()

transpile_remote_demo = QiskitFunction(
title="transpile_remote_serverless",
entrypoint="transpile_remote.py",
working_dir="./source_files/",
)

serverless.upload(transpile_remote_demo)

Sortie

'transpile_remote_serverless'

Exécuter à distance dans Qiskit Serverless​

from qiskit.circuit.random import random_circuit
from qiskit_ibm_runtime import QiskitRuntimeService

# Setup inputs
qc_random = [(random_circuit(20, 20, measure=True)) for _ in range(30)]
backend = "ibm_brisbane"
optimization_level = 3

# Running program
transpile_remote_serverless = serverless.load('transpile_remote_serverless')
job = transpile_remote_serverless.run(
circuits=qc_random,
backend=backend,
optimization_level=optimization_level
)

job.job_id

Sortie

'727e921d-512d-4b7d-af97-fe29e93ce7ea'

Prochaines étapes​

Recommandations
  • Lis un article dans lequel des chercheurs ont utilisé Qiskit Serverless et le calcul intensif centré sur le quantique pour explorer la chimie quantique.