バックエンドの詳細を表示
このページ上のコードは、以下の要件に基づいて開発されました。 これらのバージョンまたはそれ以降のバージョンを使用することを推奨します。
qiskit-ibm-runtime~=0.47.0
このページでは、利用可能なバックエンドに関する情報の確認方法について説明します。
リストまたはフィルターのバックエンド
利用可能なリストバックエンド
利用可能なバックエンドの一覧を表示したり、特定のバックエンドを検索したりするには、Qiskit または IBM Quantum Platform のいずれかを使用できます。
IBM Cloud® 上にホストされているQPUの名前は、 ibm_*.で始まる。 すべてのQPUには都市名が割り当てられます。例えば、 ibm_kingston. この名称は、実際のQPUがホストされている場所を示していません。
次のコードブロックに示すように、メソッド QiskitRuntimeService.backends() を使用してください。 このメソッドはインスタンス IBMBackend のリストを返します。
以下のコードを実行するには、サービスへの認証が完了していることを確認してください。 詳細については、 IBM Cloud アカウントの設定を参照してください。
# Initialize your account
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
service.backends()Output:
[<IBMBackend('ibm_pittsburgh')>,
<IBMBackend('ibm_boston')>,
<IBMBackend('ibm_fez')>,
<IBMBackend('ibm_miami')>,
<IBMBackend('ibm_marrakesh')>,
<IBMBackend('ibm_kingston')>]
特定のバックエンドを検索するには、 *backend* QiskitRuntimeService.backend() メソッド(単数形であることに注意)を使用します。このメソッドはバックエンドの名前を入力パラメータとして受け取り、その特定のバックエンドを表す Backend インスタンス IBMBackend を返します:
service.backend("ibm_fez")Output:
<IBMBackend('ibm_fez')>
アクセス可能なバックエンドを表示するには、 コンピューティングリソースページのバックエンド一覧に移動してください(選択したリージョンによって表示されるQPUが異なる場合があります)。 フィルターアイコンをクリックし、「すべてのインスタンス」または特定のインスタンス名を選択すると、利用可能なQPUが表示されます。
特定のインスタンスまたはリージョンにログインしている場合、または``を使用して特定のインスタンスまたはリージョンでサービスを初期化した場合、 QiskitRuntimeService()そのインスタンスまたはリージョンで利用可能なバックエンドのみが返されます。
フィルタバックエンド
利用可能なバックエンドは、 その構成やステータスでフィルタリングできます。 より一般的なフィルタについては、引 filters 数をバックエンドオブジェクトを受け取り、条件を満たす場合に True を返す関数に設定してください。 詳細については、APIドキュメントを参照してください。
以下のコードは、これらの条件に合致し、かつ現在選択されているインスタンス上で利用可能なバックエンドのみを返します:
- 実際の量子デバイスは (
simulator=False) - 現在稼働
operational=True中である - 少なくとも100量子ビット
min_num_qubits=100を持つ
# 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)Output:
[<IBMBackend('ibm_pittsburgh')>,
<IBMBackend('ibm_boston')>,
<IBMBackend('ibm_fez')>,
<IBMBackend('ibm_miami')>,
<IBMBackend('ibm_marrakesh')>,
<IBMBackend('ibm_kingston')>]
同様の手法として QiskitRuntimeService.least_busy()、と同じフィルターを受け取る backends() が、フィルターに一致し、かつキュー内の保留ジョブ数が最も少ないバックエンドを返すメソッドがある:
service.least_busy(operational=True, min_num_qubits=100)Output:
<IBMBackend('ibm_fez')>
アクセス可能なバックエンドを確認するには、 コンピュー ティングリソースページの表をご覧ください。 フィルターアイコンをクリックすると、フィルターオプションが表示されます。 プロセッサの種類とステータスでフィルタリングできます。 また、列見出しにカーソルを合わせ、表示される矢印をクリックすることで、任意の列でテーブルを並べ替えることもできます。
静的バックエンド情報
バックエンドに関する一部の情報は定期的に変更されません。具体的には、その名称、 バージョン、保有する量子ビット数、プロセッサの種類( トポロジー と概算量子ビット数を示すバードファミリ名)、およびサポートする機能の種類などが該当します。 この情報は backend オブジェクトの属性として利用可能です。 属性の完全な一覧については、 APIドキュメント IBMBackend を参照してください。 バージョン管理に関する詳細情報は、以下の QPUバージョン管理セクションをご覧ください。
バックエンドのリージョン(データと実験がホストおよび処理されるデータセンターの場所)は、 IBM Quantum Platform の 「コンピューティングリソース 」ページにある詳細情報カードに記載されています。
backend = service.backend("ibm_fez")
print(
f"Name: {backend.name}\n"
f"Version: {backend.backend_version}\n"
f"No. of programmable qubits: {backend.num_qubits}\n"
f"Processor type: {backend.processor_type}\n"
)Output:
Name: ibm_fez
Version: 1.3.37
No. of programmable qubits: 156
Processor type: {'family': 'Heron', 'revision': '2'}
コンピューティングリソースページに移動し、すべてのQPUの一覧表を表示します。任意のQPUの名前をクリックすると、その詳細情報カードが開きます。 カードの詳細セクションでバックエンド情報を確認してください。
QPUのバージョン管理
各QPUには、 X.Y.Z ( major.minor.revision )という形式のバージョン番号が付与されています。 特定のバージョン番号向けにコンパイルされた回路は、そのQPU上で確実に動作します。 改訂番号が変更されても、回路は動作を継続する。 メジャーまたはマイナーの番号が変更された場合、回路が動作することは保証されませんが、動作する可能性があります。
修正バージョン番号は、既存のコンパイル済み回路を壊さない修正に対してインクリメントされます。
このセクションの先頭にあるコード例は、バックエンドのバージョンを確認する方法を示しています。 IBM Quantum Platform では、QPUの詳細情報カードでバージョンを確認できます( コンピューティングリソーステーブルのQPU名をクリックするとカードが開きます)。
バージョン番号または改訂番号が変更される条件は、以下の表に示されています。
メジャー・バージョン | マイナー・バージョン | 改訂版 |
|---|---|---|
| サンプル変更 | ウォームアップ/クールダウンサイクル | QPUソフトウェア更新 |
| 制御電子機器の主要な変更 | 電子部品の一部を交換する場合、交換品が動作に顕著な影響を与える場合 | 忠実度向上のための手動キャリブレーション |
| QPUを新しい場所に移動した場合、重大な動作変化が生じる | 校正の問題により一定期間ゲートを停止し、ソフトウェアでの修正が容易にできない | 動作に影響しない小型電子機器の変更 |
| CNOTゲートの方向変更 |
サポートされている命令
各プロセッサ・ファミリは、 限られた命令セットをネイティブにサポートする。 このセットには、単一量子ビットゲートと二量子ビットゲート、ならびに測定やリセットといった非ユニタリ操作が含まれます。 回路内の各ゲートは、QPU上で実行可能となる前に(トランスパイラによって)QPUがサポートする命令セットの要素へ変換されなければならない。
Qiskitを使用してQPUのサポートされている命令セットを確認できます。 IBM Quantum Platform の「コンピューティングリソース」ページには、QPUでサポートされているユニタリーゲート(基底ゲート)のみが記載されています。
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}")Output:
Backend: ibm_kingston
Processor type: {'family': 'Heron', 'revision': '2'}
Supported instructions: ['cz', 'id', 'delay', 'measure', 'measure_2', 'reset', 'rz', 'sx', 'x', 'if_else', 'store']
コンピューティングリソースページに移動し、すべてのQPUの一覧表を表示します。任意のQPUの名前をクリックすると、その詳細情報カードが開きます。 そのQPUの基本ゲートは詳細セクションに記載されています。
サポートされている命令の一覧
操作カテゴリ | 名前 |
|---|---|
| 単一量子ビットゲート | RZ, SX, X, ID, delay |
| 2量子ビットゲート | CZ, ECR |
| 分断ゲート | RX (単一量子ビット), RZZ (二量子ビット) |
| 非単一命令 | measure, reset, measure_*, delay |
| 制御フロー | if_else (古典的フィードフォワード) |
動的バックエンド情報
バックエンドには、量子ビットの寿命や操作エラー率など、バックエンドのキャリブレーションが行われるたびに変化する特性も存在する。 バックエンドのプロパティは、キャリブレーションシーケンス完了後に更新されます。 これらの特性は、量子回路の最適化や古典シミュレータ用のノイズモデル構築に利用できます。 詳細については、キャリブレーションジョブガイドを参照してください。
IBM Quantum Platform では、キャリブレーションデータを CSV ファイルとしてダウンロードできます。 コンピューティングリソースページでQPUをクリックして詳細情報カードを表示し、[キャリブレーションデータ]セクションの右上隅にあるダウンロードアイコンをクリックします。
Qiskitでは、以下のコードでバックエンドプロパティの履歴データを取得できます:
backend.properties(datetime=<datetime>)量子ビットの特性
backend.properties().qubit_property() 量子ビットの物理的属性に関する情報を返す。 量子ビットの様々な特性を格納した辞書を含み、各特性はその値と最終校正のタイムスタンプと対になっている。
以下のコード例は、特定の量子ビットのすべてのプロパティを一覧表示する方法、または特定のプロパティを取得する方法を示しています。
# fundamental physical properties of qubit 1
backend = service.backend("ibm_fez")
backend.qubit_properties(1)Output:
QubitProperties(t1=0.00019233494213807877, t2=0.00023593910973864878, 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")Output:
Qubit 126 Properties:
T1: 1.6203279905573543e-05 seconds
T2: 2.7965850265833494e-05 seconds
Readout Error: 0.0601806640625
P(0 | 1): 0.0908203125
P(1 | 0): 0.029541015625
Readout Length: 1.66e-06 seconds
量子ビットのプロパティを表示する
の時間は、量子ビットが励起状態 に留まる平均持続時間を表し、エネルギー緩和により基底状態 へ減衰するまでの期間である。 このパラメータは量子ビットのエネルギー緩和挙動を特徴付けるために用いられ、秒(s)単位で表される。
Qiskitで表示backend.properties().t1(<qubit>)IBM Quantum Platform で閲覧キャリブレーションデータセクション、Qubitドロップダウンメニュー;詳細セクションで の中央値を見つける 時間とは、量子ビットが 状態と 状態の重ね合わせにおける位相コヒーレンスを維持する時間スケールを指す。 これはエネルギー緩和と純粋な位相消去プロセスの両方を説明し、量子ビットのコヒーレンス特性に関する知見を提供する。ハーンエコーシーケンスから が報告されている。
Qiskitで表示backend.properties().t2(<qubit>)IBM Quantum Platform で閲覧キャリブレーションデータセクション、Qubitドロップダウンメニュー;詳細セクションで の中央値を見つける
指示プロパティ
属性 backend.target は qiskit.transpiler.Target オブジェクトです:そのバックエンド向けに回路をトランスパイルするために必要なすべての情報を含むオブジェクトです。 これには指示エラーと所要時間が含まれます。 例えば、以下のセルは量子ビット1と0の間で作用する cz ゲートプロパティを取得します。
backend.target["cz"][(1, 0)]Output:
InstructionProperties(duration=6.8e-08, error=0.007988386842696815)
以下のセルは、量子ビット0に対する測定操作(読み出し誤差を含む)のプロパティを示しています。
backend.target["measure"][(0,)]Output:
InstructionProperties(duration=1.66e-06, error=0.00927734375)
指示のプロパティを表示する
このパラメータは、量子ビットを 状態に準備する意図があった場合に、0状態で測定される確率を示し、 と表記される。これは状態準備と測定(SPAM)における誤差、特に超伝導量子ビットの測定誤差を反映している。
Qiskitで表示backend.properties().qubit_property(<qubit>, 'prob_meas0_prep1')IBM Quantum Platform で閲覧キャリブレーションデータセクション、キュービットドロップダウンメニュー 同様に、このパラメータは、量子ビットを 状態に準備する意図があった場合に、1状態で測定される確率を表し、 と表記される。と同様に
prob_meas0_prep1、これはSPAM誤差を反映しており、超電導量子ビットでは測定誤差が主な寄与要因となる。Qiskitで表示backend.properties().qubit_property(<qubit>, 'prob_meas0_prep0')IBM Quantum Platform で閲覧キャリブレーションデータセクション、キュービットドロップダウンメニュー 2Q の中央誤差を計算するために使用された同一測定バッチからのエッジあたりの2量子ビット誤差。 2Q エラー(最良) とは、この測定バッチから得られた、デバイスのいずれかのエッジにおける最低の2量子ビットエラーを指す。
Qiskitで表示backend.target['<instruction>'][<qubit 1>, <qubit 2>]IBM Quantum Platform で閲覧キャリブレーションセクション:マップビューで量子ビット接続にカーソルを合わせるか、テーブルビューのCZエラー(ヘロンおよびナイトホーク)またはECRエラー(イーグル)列で値を確認してください。詳細セクションで 2Q エラー(最適) の値を確認してください 100量子ビットのチェーンにおける層別ゲートごとの平均誤差(EPLG)。 平均EPLGは、 量子ビットの層状チェーンにおける平均ゲート誤差を測定する(ここでは =100)。 これは層忠実度(LF)と呼ばれる類似の量から導出されるもので、EPLG = 4/5(1-LF ) であり、層忠実度は 量子ビットの層状チェーンのプロセス忠実度である。 詳細は論文 「大規模量子プロセッサ性能のベンチマーク」 を参照のこと。 なお、論文ではEPLGはプロセス誤差に対して定義されているが、本稿で個別に報告されるゲート誤差との整合性を保つため、平均ゲート誤差に対して引用されている。したがって、4/5の係数が適用される。
IBM Quantum Platform では、各QPUの詳細情報カードに「2量子ビットゲートエラー(階層化)」というセクションがあり、チェーン内の量子ビット数に対する関数として測定された
two-qubit gate error (layered)最小値の詳細なビューを提供しています。 最終値(鎖長100時)は、詳細セクションに表示されている値です。 実際には、6つの100量子ビットチェーン(予想される最適性能に基づいて事前に選択)が測定され、量子ビット数として報告される値は、6つの100量子ビットチェーン全体Nを走査したNサブセット長チェーンにおいて検出された最小誤差である。Qiskitで計算するこのQ iskitコミュニティのノートブックの例に従ってください: GitHub IBM Quantum Platform で閲覧詳細セクション、および「2量子ビットゲートエラー(階層化)」セクションの展開ビュー 任意のユニタリ演算に対するランダム化ベンチマーキングの変種を用いたRZZ角の平均におけるRZZゲート誤差
Qiskitで表示重要: バックエンドを読み込む際に必ず use_fractional_gates=True設定してください。その後、以下を使用できます。backend.target['rzz'][<qubit 1>, <qubit 2>]IBM Quantum Platform で閲覧キャリブレーションセクション:接続ドロップダウンメニューで「RZZ」を選択し、マップビューで量子ビット接続にカーソルを合わせます。 グラフビューの「グラフ出力」ドロップダウンメニューで「RZZエラー」を選択することもできます。または、テーブルビューの「RZZエラー」列でその値を確認できます 有限時間離散単一量子ビットゲートにおける誤差(ランダム化ベンチマーク測定値) 無作為化されたベンチマークシーケンスにはSX、ID、Xゲートが含まれ、それらの誤差は同一であると仮定される。 IDゲートは、√XゲートとXゲートの持続時間に等しい遅延を持つ。 RXゲートも√XゲートおよびXゲートと同様の持続時間であり、振幅が可変であるため、これらのゲートと同じ誤差を持つと報告されている。
Qiskitで表示backend.target['<instruction>'][<qubit 1>,]IBM Quantum Platform で閲覧キャリブレーションセクション: 量子ビットドロップダウンメニュー ランダム化ベンチマークによる√X (SX) ゲートの平均ゲート忠実度。全量子ビットで同時に測定。 無作為化されたベンチマークシーケンスにはSX、ID、Xゲートが含まれ、それらの誤差は同一であると仮定される。
IBM Quantum Platform で閲覧詳細セクション 仮想RZゲートにおけるエラー。 これらはソフトウェアで実行されるため、すべて0と報告される。
Qiskitで表示backend.target['<instruction>'][<qubit 1>,]IBM Quantum Platform で閲覧キャリブレーションセクション: 接続ドロップダウンメニュー 読み出し誤差は、量子ビットの状態を誤って測定する平均確率を定量化する。 一般に、
prob_meas1_prep0とprob_meas0_prep1の平均として計算され、測定の忠実度を評価する単一の指標を提供する。Qiskitで表示backend.properties().readout_error(<qubit>)IBM Quantum Platform で閲覧キャリブレーションデータセクション、キュービットドロップダウンメニュー 読み出し操作の忠実度。 読み出し誤差は、量子ビットを0(1)状態に準備し、1(0)状態での出力確率を測定することで測定される。 報告された値は、これら二つの誤差の平均値である。 全量子ビットについて中央値が算出される。
IBM Quantum Platform で閲覧校正データセクション、詳細セクション 単一量子ビットゲート操作の持続時間。 IBM Quantum Platform に表示される値はナノ秒単位であることに注意してください。 Qiskitで返される値は秒単位です。
Qiskitで表示backend.target['<instruction>'][<qubit 1>,].durationIBM Quantum Platform で閲覧キャリブレーションセクション: 量子ビットドロップダウンメニュー 2量子ビットゲート操作の持続時間。 IBM Quantum Platform に表示される値はナノ秒単位であることに注意してください。 Qiskitで返される値は秒単位です。
Qiskitで表示backend.target['<instruction>'][<qubit 1>, <qubit 2>].durationIBM Quantum Platform で閲覧キャリブレーションセクション: 量子ビットドロップダウンメニュー 読み出し長は、量子ビットの読み出し操作の持続時間を指定します。 測定パルスの開始から信号のデジタル変換が完了するまでの時間を計測し、その後システムは次の操作の準備が整う。 このパラメータを理解することは、特に回路途中での測定を組み込む場合に、回路実行を最適化するために極めて重要である。
Qiskitで表示measureの場合:backend.properties().readout_length(<qubit>)-
measure_2の場合:backend.target['measure_2'][<qubit 1>,].duration
IBM Quantum Platform で閲覧キャリブレーションデータセクション、キュービットドロップダウンメニュー
追加プロパティー
1秒あたりの最大回路数(MCPS)には、ハダマールゲートを用いた回路の測定、リセット、および再初期化、ならびに1回の測定が含まれます。
Qiskitで表示mcps = backend.configuration().mcpsIBM Quantum Platform で閲覧詳細セクション 回路層演算回数毎秒(CLOPS)は、QPUが単位時間あたりに実行可能な 100x100 回路(ハードウェア対応回路)の層数を表す指標である。
Qiskitで計算するQiskit Community で CLOPS コードを探してください GitHub IBM Quantum Platform で閲覧詳細セクション QPUの状態(例:
Active、Paused、、Offline)や保留中のジョブ数を確認できますBackendStatus。Qiskitで表示print(backend.status().status_msg),print(backend.status().pending_jobs)IBM Quantum Platform で閲覧詳細セクション 2量子ビット間のゲート操作をサポートする量子ビットのペアを示す図。 これは結合写像または連結性とも呼ばれる。 量子ビットは円として表され、サポートされている2量子ビットゲート操作は量子ビットを結ぶ線として表示される。
Qiskitで表示from qiskit.visualization import plot_gate_mapthenplot_gate_map(backend)IBM Quantum Platform で閲覧校正データセクション;拡大表示するには「展開」をクリック
量子ビットまたはエッジのベンチマークが数日間にわたって成功しない場合(データ品質の低下やその他の内部要因による)、報告されたエラー値は古いものとみなされ、1として報告される。 これは、量子ビットまたはエッジが必ずしも機能していないことを示すものではなく、エラーが1であることを示すものでもありません。むしろ、エラーは未定義と見なされ、その量子ビットまたはゲートを操作する際には注意を払って進める必要があります。
次のステップ
- ノイズの多い古典シミュレーションを行うためのノイズモデルの構築方法を学びます。
- トランスパイラが回路最適化のためにバックエンドプロパティをどのように使用するかを学ぶには、トランスパイラの段階に関するトピックを確認してください。
- QiskitRuntime バックエンドAPIリファレンスを確認してください。