メインコンテンツへスキップ

バックエンドの詳細を表示する

Package versions

The code on this page was developed using the following requirements. We recommend using these versions or newer.

qiskit-ibm-runtime~=0.46.1

このページでは、利用可能なバックエンドの情報を確認する方法について説明します。

バックエンドのリストとフィルタリング

利用可能なバックエンドのリスト

Qiskitまたは IBM Quantum Platform を使用して、利用可能なバックエンドのリストを表示したり、特定のバックエンドを検索したりできます。

QPU名

IBM Cloud®上でホストされるQPUの名前はibm_*で始まります。すべてのQPUには都市名が付けられており、例えばibm_kingstonのようになります。この名前は実際のQPUがホストされている場所を示すものではありません。

次のコードブロックに示すように、QiskitRuntimeService.backends()メソッドを使用してください。このメソッドはIBMBackendインスタンスのリストを返します。

以下のコードを実行するには、事前にサービスへの認証が完了していることを確認してください。詳細については、IBM Cloudアカウントのセットアップを参照してください。

特定のバックエンドを検索するには、QiskitRuntimeService.backend()メソッド(単数形の backend である点に注意)を使用してください。このメソッドはバックエンド名を入力パラメーターとして受け取り、そのバックエンドを表すIBMBackendインスタンスを返します。

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit-ibm-runtime
# Initialize your account
from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()

service.backends()
[<IBMBackend('ibm_boston')>,
<IBMBackend('ibm_pittsburgh')>,
<IBMBackend('ibm_fez')>,
<IBMBackend('ibm_marrakesh')>,
<IBMBackend('ibm_kingston')>,
<IBMBackend('ibm_miami')>]
service.backend("ibm_fez")
<IBMBackend('ibm_fez')>
# Optionally pass in an instance, region, or both, to
# further filter the backends.
service = QiskitRuntimeService()

service.backends(simulator=False, operational=True, min_num_qubits=100)
[<IBMBackend('ibm_boston')>,
<IBMBackend('ibm_pittsburgh')>,
<IBMBackend('ibm_fez')>,
<IBMBackend('ibm_marrakesh')>,
<IBMBackend('ibm_kingston')>,
<IBMBackend('ibm_miami')>]
備考

特定のインスタンスまたはリージョンにログインしている場合、あるいはQiskitRuntimeService()で特定のインスタンスまたはリージョンを指定してサービスを初期化した場合は、そのインスタンスまたはリージョンで利用可能なバックエンドのみが返されます。

バックエンドのフィルタリング

利用可能なバックエンドを設定ステータスでフィルタリングできます。より一般的なフィルターの場合は、バックエンドオブジェクトを受け取り、条件を満たす場合にTrueを返す関数をfilters引数に設定します。詳細についてはAPIドキュメントを参照してください。

以下のコードは、これらの条件を満たし、_現在選択されているインスタンス_で利用可能なバックエンドのみを返します。

  • 実際の量子デバイスである(simulator=False
  • 現在動作中である(operational=True
  • 少なくとも100量子ビットを持つ(min_num_qubits=100

類似するメソッドとしてQiskitRuntimeService.least_busy()があります。これはbackends()と同じフィルターを受け取りますが、フィルターに一致し、かつキューに保留中のジョブ数が最も少ないバックエンドを返します。

service.least_busy(operational=True, min_num_qubits=100)
<IBMBackend('ibm_fez')>

静的バックエンド情報

バックエンドの名前、バージョン、量子ビット数、プロセッサータイプ(鳥のファミリー名。トポロジーとおおよその量子ビット数を示す)、サポートされる機能の種類など、定期的には変化しない情報があります。この情報はbackendオブジェクトの属性として利用できます。属性の完全なリストについてはIBMBackend APIドキュメントを参照してください。バージョニングの詳細については、下記のQPUバージョニングセクションを参照してください。

バックエンドのリージョン(データと実験がホストおよび処理されるデータセンターの場所)は、IBM Quantum PlatformのコンピュートリソースページにあるQPUの詳細情報カードに記載されています。

backend = service.backend("ibm_fez")

print(
f"Name: {backend.name}\n"
f"Version: {backend.backend_version}\n"
f"No. of qubits: {backend.num_qubits}\n"
f"Processor type: {backend.processor_type}\n"
)
Name: ibm_fez
Version: 1.3.37
No. of qubits: 156
Processor type: {'family': 'Heron', 'revision': '2'}

QPUバージョニング

各QPUはX.Y.Z(メジャー.マイナー.リビジョン)の形式のバージョン番号を持っています。特定のバージョン番号に対してコンパイルされた回路は、そのQPU上で実行することが保証されています。リビジョン番号が変更された場合、回路は引き続き実行されます。メジャーまたはマイナー番号が変更された場合、回路の実行は保証されませんが、実行できる場合もあります。

リビジョンバージョン番号は、既存のコンパイル済み回路を壊さない修正に対してインクリメントされます。

バックエンドのバージョンを確認する方法は、このセクションの前のコード例で示しています。IBM Quantum Platformでは、QPUの詳細情報カード(コンピュートリソーステーブルでQPU名をクリックしてカードを開く)でバージョンを確認できます。

バージョンまたはリビジョン番号が変更される条件を以下の表に示します。

メジャーバージョンマイナーバージョンリビジョンバージョン
サンプルの変更ウォームアップ/クールダウンサイクルQPUソフトウェアのアップデート
制御エレクトロニクスへの大規模な変更一部のエレクトロニクスの交換(交換品が動作に著しく影響する場合)フィデリティを向上させるための手動キャリブレーション
QPUの新しい場所への移動(重大な動作変化が生じた場合)キャリブレーションの問題によるゲートの一時的な無効化(ソフトウェアで修正できない場合)動作に影響しない小規模なエレクトロニクスの変更
CNOTゲートの方向の変更

サポートされる命令

プロセッサーファミリーは、限られた命令セットをネイティブにサポートしています。このセットには、1量子ビットおよび2量子ビットゲートに加えて、測定やリセットなどの非ユニタリ演算が含まれます。回路内のすべてのゲートは、QPU上で実行される前に、(トランスパイラーによって)QPUのサポートする命令セットの要素に変換される必要があります。

QPUのサポートされる命令セットはQiskitで確認できます。IBM Quantum Platformのコンピュートリソースページには、QPUのサポートするユニタリゲート(基底ゲート)のみが表示されます。

サポートされる命令の表

演算カテゴリ名前
1量子ビットゲートRZ, SX, X, ID, delay
2量子ビットゲートCZ, ECR
分数ゲートRX(1量子ビット), RZZ(2量子ビット)
非ユニタリ命令measure, reset, measure_*, delay
制御フローif_else(古典フィードフォワード)
from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
backend = service.backend("ibm_kingston")

print(f"Backend: {backend.name}")
print(f" Processor type: {backend.processor_type}")
print(f" Supported instructions: {backend.supported_instructions}")
Backend: ibm_kingston
Processor type: {'family': 'Heron', 'revision': '2'}
Supported instructions: ['cz', 'id', 'delay', 'measure', 'measure_2', 'reset', 'rz', 'sx', 'x', 'if_else', 'store']

動的バックエンド情報

バックエンドには、量子ビットの寿命や演算エラー率など、バックエンドがキャリブレーションされるたびに変化するプロパティもあります。バックエンドのプロパティはキャリブレーションシーケンスが完了した後に更新されます。これらのプロパティは量子回路の最適化や、古典シミュレーター用のノイズモデルの構築に利用できます。詳細についてはキャリブレーションジョブガイドを参照してください。

IBM Quantum Platformでは、キャリブレーションデータをCSVファイルとしてダウンロードできます。コンピュートリソースページでQPUをクリックして詳細情報カードを表示し、「キャリブレーションデータ」セクションの右上にあるダウンロードアイコンをクリックしてください。

過去のデータを取得する

Qiskitで過去のバックエンドプロパティデータを取得するには、以下のコードを使用します。

backend.properties(datetime=<datetime>)

量子ビットのプロパティ

量子ビットプロパティの一覧へジャンプ

backend.properties().qubit_property()は量子ビットの物理的属性に関する情報を返します。量子ビットの各種プロパティとその値、および最終キャリブレーションのタイムスタンプからなる辞書が含まれます。

以下のコード例は、特定の量子ビットのすべてのプロパティを一覧表示する方法、または特定のプロパティを取得する方法を示しています。

量子ビットプロパティを表示する

T1(緩和時間)

T1T_1時間は、量子ビットがエネルギー緩和によって基底状態0|0\rangleに減衰する前に、励起状態1|1\rangleを維持する平均時間を表します。このパラメーターは量子ビットのエネルギー緩和特性を特徴付けるために使用され、秒(s)単位で表されます。

Qiskitで表示backend.properties().t1(<qubit>)
IBM Quantum Platformで表示「キャリブレーションデータ」セクションの量子ビットドロップダウンメニュー。「詳細」セクションで*T1T_1中央値*の値を確認
T2(脱位相時間)

T2T_2時間は、量子ビットが0|0\rangle1|1\rangle状態の重ね合わせの位相コヒーレンスを維持する時間スケールを示します。エネルギー緩和と純粋な脱位相プロセスの両方を考慮し、量子ビットのコヒーレンス特性に関する洞察を提供します。T2T_2はハーンエコーシーケンスから報告されます。

Qiskitで表示backend.properties().t2(<qubit>)
IBM Quantum Platformで表示「キャリブレーションデータ」セクションの量子ビットドロップダウンメニュー。「詳細」セクションで*T2T_2中央値*の値を確認
# fundamental physical properties of qubit 1

backend = service.backend("ibm_fez")

backend.qubit_properties(1)
QubitProperties(t1=0.00018243651954462543, t2=0.00020405172321184844, frequency=None)
# Retrieve qubit properties
qubit_index = 126 # Replace with your qubit index
qubit_props = backend.properties().qubit_property(qubit_index)

# Access specific properties
t1 = qubit_props.get("T1", (None,))[0]
t2 = qubit_props.get("T2", (None,))[0]
readout_error = qubit_props.get("readout_error", (None,))[0]
prob_meas0_prep1 = qubit_props.get("prob_meas0_prep1", (None,))[0]
prob_meas1_prep0 = qubit_props.get("prob_meas1_prep0", (None,))[0]
readout_length = qubit_props.get("readout_length", (None,))[0]

print(f"Qubit {qubit_index} Properties:")
print(f" T1: {t1} seconds")
print(f" T2: {t2} seconds")
print(f" Readout Error: {readout_error}")
print(f" P(0 | 1): {prob_meas0_prep1}")
print(f" P(1 | 0): {prob_meas1_prep0}")
print(f" Readout Length: {readout_length} seconds")
Qubit 126 Properties:
T1: 0.0001248478211384773 seconds
T2: 7.96150033446492e-05 seconds
Readout Error: 0.0244140625
P(0 | 1): 0.029052734375
P(1 | 0): 0.019775390625
Readout Length: 1.56e-06 seconds

命令のプロパティ

命令プロパティの一覧へジャンプ

backend.target属性はqiskit.transpiler.Targetオブジェクトです。これはそのバックエンド向けに回路をトランスパイルするために必要なすべての情報(命令エラーや持続時間を含む)を格納したオブジェクトです。例えば、以下のセルでは量子ビット1と0の間で動作するczゲートのプロパティを取得します。

以下のセルは量子ビット0に対する測定演算(読み出しエラーを含む)のプロパティを示しています。

命令プロパティを表示する

prob-meas0-prep1

このパラメーターは、1|1\rangle状態に準備するつもりだった量子ビットを0状態で測定する確率を示します(P(01)P(0 | 1)と表記)。超伝導量子ビットにおける状態準備・測定(SPAM)のエラー、特に測定エラーを反映しています。

Qiskitで表示backend.properties().qubit_property(<qubit>, 'prob_meas0_prep1')
IBM Quantum Platformで表示「キャリブレーションデータ」セクションの量子ビットドロップダウンメニュー
prob-meas1-prep0

同様に、このパラメーターは0|0\rangle状態に準備するつもりだった量子ビットを1状態で測定する確率を表します(P(10)P(1 | 0)と表記)。prob_meas0_prep1と同様に、超伝導量子ビットでは測定エラーが主な原因となるSPAMエラーを反映しています。

Qiskitで表示backend.properties().qubit_property(<qubit>, 'prob_meas0_prep0')
IBM Quantum Platformで表示「キャリブレーションデータ」セクションの量子ビットドロップダウンメニュー
2Qエラー(HeronおよびNighthawk: CZ、Eagle: ECR)

2Q中央値エラーの計算に使用した同じ測定バッチからのエッジごとの2量子ビットエラーです。**2Qエラー(最良値)**は、この測定バッチからのデバイスの任意のエッジにおける最低の2量子ビットエラーを指します。

Qiskitで表示backend.target['<instruction>'][<qubit 1>, <qubit 2>]
IBM Quantum Platformで表示「キャリブレーション」セクション: マップビューで量子ビット接続にカーソルを合わせるか、テーブルビューのCZエラー(HeronおよびNighthawk)またはECRエラー(Eagle)列で値を確認。「詳細」セクションで*2Qエラー(最良値)*の値を確認
中央値2Qエラー(Heron: CZ、Eagle: ECR)

ランダム化ベンチマーキングによる2量子ビット演算の平均ゲートフィデリティです。「分離」した状態で測定されます。エッジ間の量子ビットの最小分離が2つのバッチです。このランダム化ベンチマーキングは1量子ビットCliffordと2量子ビットゲートの交互レイヤーを使用するため、最終的な2Qエラー値には1量子ビットCliffordのレイヤーのエラーが含まれます。

Qiskitで計算このQiskit Community GitHubノートブックの例に従ってください
IBM Quantum Platformで表示「詳細」セクション。「キャリブレーションデータ」セクションでエッジごとのデータも確認可能
2Qエラー(レイヤード)

100量子ビットのチェーンにおけるレイヤードゲートあたりの平均エラー(EPLG)です。平均EPLGは、NN量子ビット(ここではNN=100)のレイヤードチェーンにおける平均ゲートエラーを測定します。EPLG100_{100} = 4/5(1-LF199^{\frac{1}{99}})の関係にある層フィデリティ(LF)と呼ばれる類似量から導出され、層フィデリティはNN量子ビットのレイヤードチェーンのプロセスフィデリティです。詳細については、論文Benchmarking quantum processor performance at scaleを参照してください。なお、論文ではEPLGはプロセスエラーに対して定義されていますが、個別に報告されるゲートエラーとの整合性のため、ここでは平均ゲートエラーに対して引用しており、そのため4/5の係数が入っています。

IBM Quantum Platformでは、各QPUの詳細情報カードに「2量子ビットゲートエラー(レイヤード)」というセクションがあり、チェーン内の量子ビット数の関数として測定された最低の2量子ビットゲートエラー(レイヤード)の拡張ビューを提供します。チェーン長100の最終値は、「詳細」セクションに表示される値です。実際には、(期待される最適なパフォーマンスに基づいて事前に選択された)6つの100量子ビットチェーンが測定され、量子ビット数Nに対して報告される値は、6つの100量子ビットチェーンにわたって検索した部分長Nチェーンで見つかった最低エラーです。

Qiskitで計算このQiskit Community GitHubノートブックの例に従ってください
IBM Quantum Platformで表示「詳細」セクション。「2量子ビットゲートエラー(レイヤード)」セクションで拡張ビューも確認可能
RZZエラー(Heron)

任意のユニタリーのランダム化ベンチマーキングの変形を使用して、RZZ角度にわたって平均化されたRZZゲートのエラーです。

Qiskitで表示重要: バックエンドを読み込む際にuse_fractional_gates=Trueを設定した上で、backend.target['rzz'][<qubit 1>, <qubit 2>]を使用してください
IBM Quantum Platformで表示「キャリブレーション」セクション: 「接続」ドロップダウンメニューでRZZを選択し、マップビューで量子ビット接続にカーソルを合わせます。グラフビューの「グラフ出力」ドロップダウンメニューでRZZエラーを選択するか、テーブルビューのRZZエラー列で値を確認することもできます
IDエラー / √x (sx) エラー / Pauli-Xエラー / RXエラー

ランダム化ベンチマーキングで測定された有限時間離散1量子ビットゲートのエラーです。ランダム化ベンチマーキングシーケンスにはSX、ID、Xゲートが含まれており、それらのエラーは同じであると仮定されています。IDゲートは√XゲートおよびXゲートの持続時間と等しい遅延です。RXゲートも可変振幅で√XゲートおよびXゲートと同じ持続時間であるため、これらのゲートと同じエラーを持つとして報告されます。

Qiskitで表示backend.target['<instruction>'][<qubit 1>, ]
IBM Quantum Platformで表示「キャリブレーション」セクション: 量子ビットドロップダウンメニュー
SXエラー(中央値)

すべての量子ビットに対して同時に測定されたランダム化ベンチマーキングによる√X(SX)ゲートの平均ゲートフィデリティです。ランダム化ベンチマーキングシーケンスにはSX、ID、Xゲートが含まれており、それらのエラーは同じであると仮定されています。

IBM Quantum Platformで表示「詳細」セクション
Z軸回転(RZ)エラー

仮想RZゲートのエラーです。ソフトウェアで実行されるため、すべて0として報告されます。

Qiskitで表示 backend.target['<instruction>'][<qubit 1>, ]
IBM Quantum Platformで表示「キャリブレーション」セクション: 「接続」ドロップダウンメニュー
読み出しエラー

読み出しエラーは、量子ビットの状態を誤って測定する平均確率を定量化します。通常、prob_meas0_prep1prob_meas1_prep0の平均として計算され、測定フィデリティの単一指標を提供します。

Qiskitで表示backend.properties().readout_error(<qubit>)
IBM Quantum Platformで表示「キャリブレーションデータ」セクションの量子ビットドロップダウンメニュー
読み出しエラー(中央値)

読み出し演算のフィデリティです。読み出しエラーは、量子ビットを0(1)状態に準備し、1(0)状態での出力の確率を測定することで計算されます。報告値はこれら2つのエラーの平均です。中央値はすべての量子ビットにわたって取得されます。

IBM Quantum Platformで表示「キャリブレーションデータ」セクション、「詳細」セクション
1量子ビットゲート長

1量子ビットゲート演算の持続時間です。IBM Quantum Platformに表示される値はナノ秒単位です。Qiskitで返される値は秒単位です。

Qiskitで表示backend.target['<instruction>'][<qubit 1>, ].duration
IBM Quantum Platformで表示「キャリブレーション」セクション: 量子ビットドロップダウンメニュー
ゲート長(2量子ビットゲート)

2量子ビットゲート演算の持続時間です。IBM Quantum Platformに表示される値はナノ秒単位です。Qiskitで返される値は秒単位です。

Qiskitで表示backend.target['<instruction>'][<qubit 1>, <qubit 2> ].duration
IBM Quantum Platformで表示「キャリブレーション」セクション: 量子ビットドロップダウンメニュー
読み出し長

読み出し長は量子ビットの読み出し演算の持続時間を指定します。測定パルスの開始からシグナルのデジタル化完了(その後システムは次の演算を実行可能)までの時間を測定します。このパラメーターを理解することは、特に中間回路測定を組み込む場合に、回路実行の最適化において重要です。

Qiskitで表示
  • measureの場合: backend.properties().readout_length(<qubit>)
  • measure_2の場合: backend.target['measure_2'][<qubit 1>, ].duration
IBM Quantum Platformで表示「キャリブレーションデータ」セクションの量子ビットドロップダウンメニュー
backend.target["cz"][(1, 0)]
InstructionProperties(duration=6.8e-08, error=0.010202155482934266)
backend.target["measure"][(0,)]
InstructionProperties(duration=1.56e-06, error=0.025634765625)

その他のプロパティ

CLOPS(またはCLOPS_h)

Circuit Layer Operations Per Second(CLOPS)は、QPUが単位時間あたりに実行できる100×100回路(ハードウェア対応回路)のレイヤー数を測定します。

Qiskitで計算Qiskit Community GitHubにCLOPSコードがあります
IBM Quantum Platformで表示「詳細」セクション
ステータス

BackendStatusを使用して、QPUのステータス(例: ActivePausedOffline)および保留中のジョブ数を確認できます。

Qiskitで表示print(backend.status().status_msg)print(backend.status().pending_jobs)
IBM Quantum Platformで表示「詳細」セクション
トポロジー図またはカップリングマップ

2量子ビットゲート演算をサポートする量子ビットのペアを示す図です。カップリングマップまたは接続性とも呼ばれます。量子ビットは円で表され、サポートされる2量子ビットゲート演算は量子ビットを結ぶ線で表示されます。

Qiskitで表示from qiskit.visualization import plot_gate_mapの後にplot_gate_map(backend)
IBM Quantum Platformで表示「キャリブレーションデータ」セクション。「展開」をクリックして拡大表示
「error = 1」とはどういう意味ですか?

データの品質が低いなどの内部要因により、量子ビットまたはエッジのベンチマーキングが数日間成功しない場合、報告されるエラー値は古いものとみなされ、1として報告されます。これは量子ビットまたはエッジが必ずしも機能していないこと、またはエラーが1であることを示すものではありません。むしろ、エラーは未定義とみなされるため、その量子ビットまたはゲートを使用する際には注意が必要です。

次のステップ

おすすめ