Lewati ke konten utama

Porting kode ke Qiskit Serverless

tips

Qiskit Serverless sedang mendapat upgrade, dan fitur-fiturnya berubah dengan cepat. Selama fase pengembangan ini, temukan catatan rilis dan dokumentasi terbaru di halaman Qiskit Serverless GitHub.

Contoh berikut menunjukkan cara porting kode yang sudah ada untuk memanfaatkan Qiskit Serverless.

catatan

Kode berikut mengasumsikan bahwa kamu sudah menyimpan kredensial. Kalau belum, ikuti petunjuk di Siapkan akun IBM Cloud-mu untuk autentikasi dengan API key-mu.

Perbarui eksperimen

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 ke Qiskit Serverless

Ikuti petunjuk di halaman Pengenalan Qiskit Functions untuk autentikasi dengan API key-mu.

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 jarak jauh di 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 berikutnya

Rekomendasi
  • Baca paper di mana para peneliti menggunakan Qiskit Serverless dan quantum-centric supercomputing untuk menjelajahi kimia kuantum.