انتقل إلى المحتوى الرئيسي
هذا المشروع في مرحلة تجريبية. وجدت خطأ؟ افتح مشكلة على GitHub. لديك سؤال أو فكرة؟ اسأل في Discussions — نحب سماع ملاحظاتك!
كيف جودة الترجمة في هذه الصفحة؟

نقل الكود إلى Qiskit Serverless

نصيحة

يحصل Qiskit Serverless على ترقية، وميزاته تتطور بسرعة. خلال مرحلة التطوير هذه، يمكنك الاطلاع على ملاحظات الإصدار وأحدث الوثائق في صفحة Qiskit Serverless على GitHub.

يوضّح المثال التالي كيفية نقل كود موجود مسبقًا للاستفادة من Qiskit Serverless.

ملاحظة

يفترض الكود التالي أنك قد حفظت بيانات اعتمادك مسبقًا. إن لم تكن قد فعلت ذلك، اتّبع التعليمات الواردة في صفحة إعداد حساب IBM Cloud الخاص بك للمصادقة باستخدام مفتاح API الخاص بك.

تحديث التجربة​

ملاحظة

في نسخة Serverless، أنشئ خدمة التشغيل باستخدام get_runtime_service() (من qiskit_serverless) بدلاً من QiskitRuntimeService()، بحيث تُتبَّع مهام وجلسات خدمة IBM Quantum® Compute Service التي يُطلقها مقابل مهمة 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'

الخطوات التالية​

توصيات