Langkau ke kandungan utama

Pindahkan kod ke Qiskit Serverless

petua

Qiskit Serverless sedang menerima naik taraf, dan ciri-cirinya berubah dengan pantas. Sepanjang fasa pembangunan ini, dapatkan nota keluaran dan dokumentasi terkini di halaman GitHub Qiskit Serverless.

Contoh berikut menunjukkan cara memindahkan kod sedia ada untuk memanfaatkan Qiskit Serverless.

nota

Kod berikut mengandaikan bahawa anda telah menyimpan kelayakan anda. Jika belum, ikuti arahan dalam Sediakan akaun IBM Cloud anda untuk mengesahkan dengan kunci API anda.

Kemaskini eksperimen

nota

Dalam versi Serverless, cipta perkhidmatan masa jalan dengan get_runtime_service() (daripada qiskit_serverless) dan bukannya QiskitRuntimeService(), supaya job dan Session IBM Quantum® Compute Service yang dilancarkannya dijejaki terhadap job Qiskit Serverless induk. Lihat Tulis program Qiskit Serverless pertama anda untuk butiran lanjut.

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)

Output

'transpile_remote_serverless'

Jalankan dari jauh dalam 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

Output

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

Langkah seterusnya

Cadangan
  • Baca kertas kerja di mana penyelidik menggunakan Qiskit Serverless dan pengkomputeran super berpusatkan kuantum untuk meneroka kimia kuantum.