Skip to main content
IBM Quantum Platform

サンプラーのクイックスタート

サンプラーの主な役割は、1つまたは複数の量子回路の実行結果を出力レジスタからサンプリングすることです。 動的回路およびパラメータ化された回路を入力として受け付けます(パラメータ化された回路を提出する場合は、パラメータ値も併せて提供する必要があります)。 Samplerは、エラー抑制のための組み込みの動的デカップリングおよびツイリング機能もサポートしています。

このトピックの手順では、Sampler のセットアップ方法、設定に使用できるオプションの確認方法、およびプログラム内での呼び出し方法について説明します。

  • このページのコードは、以下の要件に基づいて開発されました。 これらのバージョン以降のご利用をお勧めします。

    qiskit[all]~=2.5.1
    qiskit-ibm-runtime~=0.47.0
    

サンプラープリミティブの使用手順

1. アカウントを初期化する

まず、アカウントを初期化する必要があります。 その後、期待値の計算に使用するQPUを選択できます。

まだアカウントをお持ちでない場合は、 「 IBM Cloud アカウントの設定 」のトピックに記載されている手順に従ってください。

部分ゲート

新たにサポートされたフラクショナル・ゲートを使用するには、インスタンス QiskitRuntimeService からバックエンドをリクエストする際に を use_fractional_gates=True 設定してください。 例:

service = QiskitRuntimeService()
fractional_gate_backend = service.least_busy(use_fractional_gates=True)

これは実験的な機能であり、今後変更される可能性があります。

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
backend = service.least_busy(
    operational=True, simulator=False, min_num_qubits=127
)

2. 回路を作成する

サンプラープリミティブの入力として、少なくとも1つの回路が必要です。

import numpy as np
from qiskit.circuit.library import efficient_su2

circuit = efficient_su2(127, entanglement="linear")
circuit.measure_all()
# The circuit is parametrized, so we will define the parameter values for execution
param_values = np.random.rand(circuit.num_parameters)

回路と観測量は、QPUがサポートする命令のみを使用するように変換する必要があります( これは命令セットアーキテクチャ(ISA) 回路と呼ばれます)。 これを行うには、トランスパイラーを使用してください。

from qiskit.transpiler import generate_preset_pass_manager

pm = generate_preset_pass_manager(optimization_level=1, backend=backend)
isa_circuit = pm.run(circuit)
print(f">>> Circuit ops (ISA): {isa_circuit.count_ops()}")

Output:

>>> Circuit ops (ISA): OrderedDict([('rz', 3036), ('sx', 1769), ('cz', 378), ('measure', 127), ('barrier', 1)])

3. 「 IBM Quantum 」サンプラーを初期化する

Sampler を初期化する際は、 mode パラメータを使用して、実行したいモードを指定してください。 取り得る値は batch、バッチ実行モード、セッション実行モード、ジョブ実行モードに対して、それぞれ、 session、または backend オブジェクトです。 詳細については、 「 IBM Quantum Compute Service の実行モードの概要」 を参照してください。 なお、Open Planのユーザーはセッションジョブを送信することはできません。

from qiskit_ibm_runtime import SamplerV2 as Sampler

sampler = Sampler(mode=backend)

4. サンプラーを実行して結果を取得する

次に、出力を作成するためにメソッド run() を呼び出します。 回路およびオプションのパラメータ値セットは*、プリミティブ統一ブロック* ( PUB )のタプルとして入力されます。

job = sampler.run([(isa_circuit, param_values)])
print(f">>> Job ID: {job.job_id()}")
print(f">>> Job Status: {job.status()}")

Output:

>>> Job ID: d9mq9og8csec73fagt7g
>>> Job Status: QUEUED
result = job.result()

# Get results for the first (and only) PUB
pub_result = result[0]
print(
    f"First ten results for the 'meas' output register: "
    f"{pub_result.data.meas.get_bitstrings()[:10]}"
)

Output:

First ten results for the 'meas' output register: ['1010011011000000000000000000000000001111111111001010101010001110011000011101100100011100111111111010010110000011010100110111100', '0111100001100000011011101000000111111001011010110000101100011000000011010001000100000111001110011001111010100001100010100000000', '0111010101001110000110100000000110011000011011001111000110101101010100010010111111101011000000010000101111000001010110001000000', '1100111011000010011001100100001101111000101111110110011001011001100110000000000110111100110011000001100000100100001000000000000', '0011111010101101001111111110011000111000000010100011011111111011100110101010111111111101111110100011101101011100110010011010100', '1011111111011010000000000111000000010101001001000110011101100010010001100110100101111111110010001000001000101111100100011000000', '1110101101101011111111000010101010111100110011001010101111110110101010101111110000001110001111101101010100111011110001000000000', '1001010011111010000001010100011000101110111110111101100001010100011110000001000001000110000000000001101010110010110000011001000', '0000101010100000111000100001010101100101011101010110000001100110011001111011111110111010101000011001000011001001101101001010110', '1001001011000000010011101100010011101100010001001100100110011101100100000000111101010010000101011011011110110110001000111101100']

次のステップ

推奨事項
このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。