דלג לתוכן הראשי
פרויקט זה בשלב בטא. מצאת באג? פתח issue ב-GitHub. יש שאלה או רעיון? שאל ב-Discussions — נשמח לשמוע ממך!
מה איכות התרגום בדף זה?

העברת קוד ל-Qiskit Serverless

טיפ

Qiskit Serverless עובר שדרוג, והתכונות שלו משתנות במהירות. במהלך שלב הפיתוח הזה, מצא הערות גרסה ואת התיעוד העדכני ביותר בדף Qiskit Serverless GitHub.

הדוגמה הבאה מדגימה כיצד להסב קוד קיים כך שינצל את Qiskit Serverless.

הערה

הקוד הבא מניח ששמרת את פרטי ההזדהות שלך. אם לא עשית זאת, עקוב אחר ההוראות בהגדרת חשבון IBM Cloud שלך לאימות עם מפתח ה-API שלך.

עדכון הניסוי​

הערה

בגרסת ה-Serverless, צור את שירות הריצה באמצעות get_runtime_service() (מ-qiskit_serverless) במקום QiskitRuntimeService(), כך שה-jobs וה-sessions של IBM Quantum® Compute Service שהוא מפעיל ישויכו ל-job ההורה של Qiskit Serverless. ראה כתוב את תוכנית ה-Qiskit Serverless הראשונה שלך לפרטים.

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)

פלט

'transpile_remote_serverless'

הרצה מרחוק ב-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

פלט

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

השלבים הבאים​

המלצות