Skip to main content
IBM Quantum Platform

コードを Qiskit Serverless にポートする

Tip

Qiskit Serverless アップグレードが行われており、その機能は急速に変化しています。 この開発フェーズでは、リリースノートと最新のドキュメントは Qiskit Serverless GitHub ページでご覧いただけます。

以下の例は、Qiskit Serverlessを活用するために既存のコードを移植する方法を示しています。

Note

以下のコードは、認証情報を保存していることを前提としています。 まだの場合は、 Set up your IBM Cloud accountの指示に従って、APIキーで認証してください。


実験を更新する

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)

Qiskit Serverless にアップロード

Qiskitの機能紹介ページの指示に従って、APIキーで認証してください。

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'

次のステップ

推奨事項
  • 研究者がQiskitサーバーレスと量子中心スーパーコンピューティングを使って量子化学を研究した論文を読む。
このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。