IBM Quantum Compute (旧 Qiskit Runtime )クライアント
qiskit_ibm_runtime
IBM Quantum Compute (旧称: Qiskit Runtime )クライアントに関連するモジュール。
IBM Quantum Compute (旧称: Qiskit Runtime )は、多くの反復処理を必要とする計算を効率化する新しいアーキテクチャです。 これらの実験は、改良されたハイブリッド量子・古典プロセスにおいて、大幅に高速に実行されることになる。
プリミティブとセッション
IBM Quantum Compute には、2つの定義済みプリミティブがあります: Sampler と Estimator。 これらのプリミティブは、量子コンピューティングの基礎的なタスクを実行するための簡素化されたインターフェースを提供すると同時に、量子ハードウェアおよびソフトウェアにおける最新の進展も反映しています。
IBM Quantum Compute また、「セッション」という概念もあります。 1つのセッション内で送信されたジョブは、スケジューラによって優先順位が付けられます。 セッションを利用することで、量子コンピュータへの反復的な呼び出しをより効率的に行うことができます。
以下は、セッション内でプリミティブを使用する例である:
from qiskit_ibm_runtime import QiskitRuntimeService, Session
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit.circuit.library import real_amplitudes
from qiskit.circuit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit.quantum_info import SparsePauliOp
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
# Initialize account.
service = QiskitRuntimeService()
# Prepare inputs.
psi = real_amplitudes(num_qubits=2, reps=2)
H1 = SparsePauliOp.from_list([("II", 1), ("IZ", 2), ("XI", 3)])
theta = [0, 1, 1, 2, 3, 5]
# Bell Circuit
qr = QuantumRegister(2, name="qr")
cr = ClassicalRegister(2, name="cr")
qc = QuantumCircuit(qr, cr, name="bell")
qc.h(qr[0])
qc.cx(qr[0], qr[1])
qc.measure(qr, cr)
backend = service.least_busy(operational=True, simulator=False)
pm = generate_preset_pass_manager(target=backend.target, optimization_level=1)
bell_isa_circuit = pm.run(qc)
psi_isa_circuit = pm.run(psi)
isa_observables = H1.apply_layout(psi_isa_circuit.layout)
with Session(backend=backend) as session:
# Submit a request to the Sampler primitive within the session.
sampler = Sampler(mode=session)
job = sampler.run([bell_isa_circuit])
pub_result = job.result()[0]
print(f"Counts: {pub_result.data.cr.get_counts()}")
# Submit a request to the Estimator primitive within the session.
estimator = Estimator(mode=session)
estimator.options.resilience_level = 1 # Set options.
job = estimator.run(
[(psi_isa_circuit, isa_observables, theta)]
)
pub_result = job.result()[0]
print(f"Expectation values: {pub_result.data.evs}")ローカルテストモード
ローカル・テスト・モードを使用すれば、物理システムに送信する前に量子プログラムを検証することができる。 プリミティブまたはセッションをインスタンス化する際に、 qiskit_ibm_runtime.fake_provider の偽バックエンドまたは Qiskit Aer バックエンドインスタンスのいずれかが使用されると、ローカルテストモードが有効になります。 例:
from qiskit_aer import AerSimulator
from qiskit.circuit.library import real_amplitudes
from qiskit.circuit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit.quantum_info import SparsePauliOp
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit_ibm_runtime import Session
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit_ibm_runtime.fake_provider import FakeManilaV2
# Bell Circuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
# Run the sampler job locally using FakeManilaV2
fake_manila = FakeManilaV2()
pm = generate_preset_pass_manager(backend=fake_manila, optimization_level=1)
isa_qc = pm.run(qc)
sampler = Sampler(backend=fake_manila)
result = sampler.run([isa_qc]).result()
# Run the sampler job locally using AerSimulator.
# Session syntax is supported but ignored.
aer_sim = AerSimulator()
pm = generate_preset_pass_manager(backend=aer_sim, optimization_level=1)
isa_qc = pm.run(qc)
with Session(backend=aer_sim) as session:
sampler = Sampler(mode=session)
result = sampler.run([isa_qc]).result()バックエンドデータ
least_busy()``backends()``backend()QiskitRuntimeService また、使用するターゲットバックエンドを照会できる、、、などのメソッドも備えています。 これらのメソッドは、バックエンドを記述するメソッドや属性を含む1つ以上の IBMBackend インスタンスを返します。
補足情報
アカウント初期化
IBM Quantum Compute サービスの利用を開始するには、まずアカウントを初期化する必要があります。 これを行うには、アカウントの認証情報を使用してインスタンス QiskitRuntimeService を初期化します。 毎回認証情報を渡すのが面倒な場合は、この QiskitRuntimeService.save_account() メソッドを使って認証情報をディスクに保存することができます。
IBM Quantum Compute IBM Cloud で視聴可能で、チャンネルは channel="ibm_cloud" または で指定できます channel="ibm_quantum_platform"。
IBM Quantum Compute 求人
の メソッド、あるいは Estimator の Samplerrun() メソッドを使用してプリミティブを呼び出すと、 のインスタンスが RuntimeJobV2 返されます。 RuntimeJobV2.cancel()RuntimeJobV2.result()RuntimeJobV2.status()このクラスには、、、などの基本的なジョブメソッドがすべて備わっています。
ロギング
qiskit-ibm-runtime は qiskit_ibm_runtime のロガーを使用する。
つの環境変数を使ってロギングをコントロールできる:
QISKIT_IBM_RUNTIME_LOG_LEVEL:使用するログレベルを指定します。無効なレベルが設定された場合、ログレベルのデフォルトは
WARNINGになります。 有効なログレベルは、DEBUG、INFO、WARNING、ERROR、CRITICAL(大文字と小文字は区別されない)。 環境変数が設定されていない場合、親ロガーのレベルが使われ、これもデフォルトはWARNINGです。
QISKIT_IBM_RUNTIME_LOG_FILE:使用するログファイル名を指定します。 指定された場合、メッセージはファイルにのみ記録される。 そうでない場合、メッセージは標準エラー(通常は画面)に記録される。
より高度な使用については、ロガー自体を変更できます。 例えば、手動でレベルを WARNING に設定する:
import logging
logging.getLogger('qiskit_ibm_runtime').setLevel(logging.WARNING)クラス
QiskitRuntimeService | IBM Quantum Compute (旧 Qiskit Runtime )サービスとやり取りするためのクラス。 |
Estimator | 別名 EstimatorV2 |
EstimatorV2 | EstimatorV2 IBM Quantum Compute (旧称: Qiskit Runtime )のプリミティブ。 |
Sampler | 別名 SamplerV2 |
SamplerV2 | SamplerV2 IBM Quantum Compute (旧称: Qiskit Runtime )のプリミティブ。 |
Executor | QuantumProgram\s を実行するためのクラス。 |
Session | IBM Quantum Compute (旧称: Qiskit Runtime )セッションを作成するためのクラス。 |
Batch | バッチ実行モードでジョブを実行するためのクラス。 |
IBMBackend | IBM Quantum Compute (旧称: Qiskit Runtime )バックエンドと連携するバックエンドクラス。 |
RuntimeJobV2 | IBM Quantum Compute (旧称: Qiskit Runtime ) V2 のプリミティブ実行の表現。 |
RuntimeEncoder | IBM Quantum Compute サービスで使用されているJSONエンコーダー。 |
RuntimeDecoder | IBM Quantum Compute サービスで使用されているJSONデコーダー。 |