Langkau ke kandungan utama
Projek ini dalam fasa beta. Jumpa pepijat? Buat isu GitHub. Ada soalan atau idea? Tanya dalam Discussions — kami suka dengar maklum balas anda!
Bagaimana kualiti terjemahan pada halaman ini?

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.

Kemas kini 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 di bawah 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 yang penyelidiknya menggunakan Qiskit Serverless dan pengkomputeran super berpusatkan kuantum untuk meneroka kimia kuantum.