Sari la conținutul principal

Portează codul în Qiskit Serverless

sfat

Qiskit Serverless este în curs de actualizare, iar funcționalitățile sale se schimbă rapid. În această fază de dezvoltare, găsești notele de lansare și cea mai recentă documentație pe pagina Qiskit Serverless GitHub.

Următorul exemplu demonstrează cum să portezi codul existent pentru a beneficia de Qiskit Serverless.

notă

Codul următor presupune că ai salvat deja acreditările. Dacă nu ai făcut asta, urmează instrucțiunile din Configurează-ți contul IBM Cloud pentru a te autentifica cu cheia ta API.

Actualizează experimentul

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)

Încarcă în Qiskit Serverless

Urmează instrucțiunile de pe pagina Introducere în Qiskit Functions pentru a te autentifica cu cheia ta API.

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)

Ieșire

'transpile_remote_serverless'

Rulează de la distanță în 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

Ieșire

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

Pași următori

Recomandări
  • Citește un articol în care cercetătorii au folosit Qiskit Serverless și supercomputarea centrată pe cuantică pentru a explora chimia cuantică.