Qiskitでバックエンド情報を取得する
パッケージバージョン
このページのコードは、以下の要件を使用して開発されました。 これらのバージョン以上を使用することをお勧めします。
qiskit-ibm-runtime~=0.43.1
このページでは、Qiskitを使用して利用可能なバックエンドに関する情報を取得する方法を説明します。
バックエンドの一覧表示
アクセス可能なバッ クエンドを確認するには、コンピュートリソースページでリストを参照するか、QiskitRuntimeService.backends()メソッドを使用します。このメソッドはIBMBackendインスタンスのリストを返します。
- 特定のインスタンスやリージョンにログインしている場合、または
QiskitRuntimeService()を使用して特定のインスタンスやリージョンでサービスを初期化した場合は、そのインスタンスやリージョンで利用可能なバックエンドのみが返されます。それ以外の場合は、すべてのインスタンスおよびリージョンで利用可能なすべてのバックエンドが返されます。 - 返されるバックエンドのリストは、IBM Quantum Platform コンピュートリソー スページに表示されるものと異なる場合があります。コンピュートリソースページのリストは、常にページ上部で選択されたリージョンでフィルタリングされます。
以下のコードを実行するには、あらかじめサービスへの認証を完了させておく必要があります。詳細については、IBM Cloudアカウントのセットアップを参照してください。
# 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_pittsburgh')>,
<IBMBackend('ibm_boston')>,
<IBMBackend('ibm_fez')>,
<IBMBackend('ibm_miami')>,
<IBMBackend('ibm_marrakesh')>,
<IBMBackend('ibm_torino')>,
<IBMBackend('ibm_kingston')>]
QiskitRuntimeService.backend()メソッド(単数形: backend)は、バックエンド名を入力パラメーターとして受け取り、そのバックエンドを表すIBMBackendインスタンスを返します 。
service.backend("ibm_fez")
<IBMBackend('ibm_fez')>
バックエンドのフィルタリング
利用可能なバックエンドをプロパティでフィルタリングすることもできます。より汎用的なフィルタリングには、バックエンドオブジェクトを受 け取り、条件を満たす場合にTrueを返す関数をfilters引数に設定します。詳細についてはAPIドキュメントを参照してください。
以下のコードは、これらの条件を満たし、_現在選択中のインスタンスで_利用可能なバックエンドのみを返します。
- 実際の量子デバイスである(
simulator=False) - 現在稼働中である(
operational=True) - 少なくとも5 Qubitを持つ(
min_num_qubits=5)
# Optionally pass in an instance, region, or both, to
# further filter the backends.
service = QiskitRuntimeService()
service.backends(simulator=False, operational=True, min_num_qubits=5)
[<IBMBackend('ibm_pittsburgh')>,
<IBMBackend('ibm_boston')>,
<IBMBackend('ibm_fez')>,
<IBMBackend('ibm_miami')>,
<IBMBackend('ibm_marrakesh')>,
<IBMBackend('ibm_torino')>,
<IBMBackend('ibm_kingston')>]
これらのキーワード引数を使用して、バックエンド設定(JSONスキーマ)またはステータス(JSONスキーマ)の任意の属性でフィルタリングできます。同様のメソッドとしてQiskitRuntimeService.least_busy()があります。これはbackends()と同じフィルターを受け取りますが、フィルターに合致するバックエンドの中でキューに待機中のジョブ数が最も少ないものを返します。
service.least_busy(operational=True, min_num_qubits=5)
<IBMBackend('ibm_torino')>
バックエンドの静的情報
バックエンドの名前、バージョン、Qubit数、サポートする機能の種類など、定期的に変化しない情報があります。こうした情報はbackendオブジェ クトの属性として取得できます。
以下のセルでは、バックエンドの説明を構築します。
backend = service.backend("ibm_fez")
print(
f"Name: {backend.name}\n"
f"Version: {backend.version}\n"
f"No. of qubits: {backend.num_qubits}\n"
)
Name: ibm_fez
Version: 2
No. of qubits: 156
属性の完全なリストについては、IBMBackend APIドキュメントを参照してください。
ネイティブGateと演算
各プロセッサーファミリーにはネイティブGateセットがあります。デフォルトでは、各ファミリーのQPUはネイティブGateセットに含まれるGateと演算のみをサポートします。そのため、Circuit内のすべてのGateはこのセットの要素に(Transpilerによって)変換される必要があります。
QPUのネイティブGateと演算は、Qiskitを使用して確認するか、IBM Quantum® Platform コンピュートリソースページで確認できます。
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
for backend in service.backends():
config = backend.configuration()
if "simulator" in config.backend_name:
continue
print(f"Backend: {config.backend_name}")
print(f" Processor type: {config.processor_type}")
print(f" Supported instructions:")
for instruction in config.supported_instructions:
print(f" {instruction}")
print()
バックエンドの動的情報
バックエンドには、Qubit周波数や演算エラー率など、キャリブレーションのたびに変化するプロパティもあります。バックエンドは通常24時間ごとにキャリブレーションが行われ、キャリブレーションシーケンスが完了するとプロパティが更新されます。これらのプロパティは、量子Circuit最適化や、古典シミュレーター用のノイズモデルの構築に活用できます。