IBM Quantum Compute Service アカウントを初期化してください
IBM Quantum® Compute Service を使用する前に、認証情報を送信(読み込み)して、アカウントを初期化(インスタンス化)する必要があります。 これらの認証情報は、 IBM Quantum Compute Service を初期化するたびに手動で入力することも、再利用のために保存しておくこともできます。
- 公共のコンピューターなど、信頼できない環境を使用している場合は、代わりに「 信頼できない環境でサービスを初期化する 」の指示に従ってください。
- Qiskitを使用する代わりにREST APIを使用して接続する場合は、 以下の手順に従ってください。
- 必要に応じて、 この情報を使用してファイアウォールを設定し、 IBM Quantum API エンドポイントへのアクセスを有効にしてください。
開始前に
以下の手順が完了していることを確認してください:
- IBM Cloud。 手順については、 IBM Cloud アカウントの設定を参照してください。
- 少なくとも1つのインスタンスを作成する(またはアクセスできる)。 以下の手順で確認する:
- ログイン IBM Quantum Platform.
- ヘッダーのアカウントスイッチャーで、正しいアカウントと地域が選択されていることを確認してください。
- 1つ以上のインスタンスが表示されている場合は、この手順は完了です。 そうでない場合は、 インスタンスを作成してください。
- . を使用して、アクティブな Python 環境で作業していることを確認してください Qiskit SDK そして、インストール
qiskit-ibm-runtimeしました。 - Python 仮想環境をアクティブにし、仮想環境で Python を実行します。
アクセス認証情報をお探しください
- APIキー( APIトークンとも呼ばれる)を探す。 ダッシュボードから APIキーを作成し、安全な場所にコピーして認証に使用できるようにします。 トークンは二度と見えなくなる。 1つのAPIキーでどの地域にも接続できることに注意してください。
- オプション: Instances ページから使用するインスタンスを探します。 そのCRNにカーソルを合わせ、アイコンをクリックしてコピーし、インスタンスの識別に使用できるように安全な場所に保存します。
Qiskitを IBM Quantum Compute Serviceのインスタンスに接続する
この説明書は qiskit_ibm_runtime v0.42 以降を対象としています。 一部の機能は、以前のバージョンの qiskit_ibm_runtime では有効になっていません。 このような場合、 channel、 token、 instance、明示的に、または保存されたアカウントを通じて、常に値を提供する必要があります。
QiskitをQuantum Computeインスタンスに接続するための基本的なコードは以下の通りです。 ただし、ニーズに応じて、オプション QiskitRuntimeService をカスタマイズする方法はいくつかあります。 これらのオプションについては、以下のセクションで説明します。
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(channel=<channel>,
# For `token`, use the 44-character API_KEY you created
# and saved from the IBM Quantum Platform dashboard
token=<your-API_KEY>,
instance=<instance_CRN>)デフォルトのチャンネルは ibm_quantum_platform。 これはほとんどの場合適切なチャンネルであるため、例には含まれていない。
クイックスタートパス: 認証情報を明示的に指定する
インスタンス QiskitRuntimeService を起動する最も速い方法は、直接インスタンス化の手法です。 IBM Quantum Compute Service を初期化するたびに、API トークン(キー)と CRN (インスタンス識別子)を明示的に指定します。 必要に応じて、 「アクセス認証情報の確認」 をご覧ください。
from qiskit_ibm_runtime import QiskitRuntimeService
# For `token`, use the 44-character API_KEY you created
# and saved from the IBM Quantum Platform dashboard
service = QiskitRuntimeService(token=<cloud_api_key>,
instance=<instance_CRN>)このパスは信頼できるが、同じ詳細を何度も読み込む必要がある場合は面倒だ。 信頼できる Python 環境(個人のラップトップやワークステーションなど)で作業している場合、認証情報を何度も読み込まないようにするには、次のセクションで説明するように、保存されたアカウント認証情報を使用することができます。
入力パラメータ instance はオプションであるが、1つのサービスを複数のインスタンスで使用する場合を除き、常にこの情報を提供することを推奨する。 このような場合は、 インスタンスの自動選択のセクションを参照してください。
クイックスタートパス: 保存済み認証情報を指定する
既に認証情報を保存している場合は、以下のコードを使用してデフォルトの認証情報を適用してください。 認証情報を保存する方法については、 「アクセス認証情報を保存する」 を参照してください。
from qiskit_ibm_runtime import QiskitRuntimeService
# run every time you need the service
service = QiskitRuntimeService()
...1つまたは複数のクレデンシャルセットに名前を付けた場合(例えば、オープンアクセス用とプレミアムアクセス用)、次のコードを使用して、名前を付けたクレデンシャルセットを使用する。
from qiskit_ibm_runtime import QiskitRuntimeService
# run every time you need the service
service = QiskitRuntimeService(name="<name_of_saved_credentials>")
...保存された認証情報を読み込む際の考慮事項
-
tokenとnameでサービスを初期化した場合、tokenは無視され、nameアカウントから保存された詳細が読み込まれる。以下の例では、サービスは
account_Aから詳細をロードし、token_Bを使用していない:from qiskit_ibm_runtime import QiskitRuntimeService service = QiskitRuntimeService(token="token_B", name="account_A") -
サービスの初期化時に
nameとinstanceを指定すると、サービスはnameアカウントをロードし、 指定されたinstanceに接続しようとする。 衝突があれば警告が出る。次の例では、
account_Aに別のインスタンスが指定されていても、サービスはaccount_Aの認証情報をロードし、インスタンスCRN_Bを使用しようとします:from qiskit_ibm_runtime import QiskitRuntimeService service = QiskitRuntimeService(instance="CRN_B", name="account_A") -
サービスの初期化時に
tokenまたはnameを指定しなかった場合のみ、サービスはデフォルトの保存済みアカウントをロードしようとします。 しかし、instanceが明示的に提供された場合、サービスはデフォルトの認証情報を使ってそのインスタンスに接続しようとする。 衝突があれば警告が出る。以下の例では、デフォルトのアカウントに別のインスタンスが指定されていても、サービスはデフォルトの認証情報をロードし、インスタンス
CRN_Bを使用しようとする:from qiskit_ibm_runtime import QiskitRuntimeService service = QiskitRuntimeService(instance="CRN_B") -
サービスを初期化する際に、複数の認証情報を保存しているが1つを指定しておらず、デフォルトで保存されているアカウントがない場合、アルファベット順に最後に来る名前のものが使用される。
以下の例では、ユーザーは "my_premium "と "my_open "という名前のアカウントを保存したが、どちらもdfaultとしてマークしなかった。 そして、以下のコードを使ってサービスを初期化した。 この場合、"my_premium "クレデンシャルが使用される:
from qiskit_ibm_runtime import QiskitRuntimeService service = QiskitRuntimeService() -
「401 Unauthorized」エラーが繰り返し発生する場合は、 API キーではなくベアラートークンを使用しようとしている可能性があります。
インスタンスを自動的に選択する
サービスをインスタンス化するときに、トークンを提供するがインスタンスCRNを提供しない場合、 QiskitRuntimeService 、トークンで識別されるアカウントに認証し、自動インスタンス選択を使用して、要求されたタスクに最も関連するインスタンスを選択します。 アカウント内に利用可能なインスタンスが複数ある場合、リクエストされたリソースと QiskitRuntimeService オプション(設定されている場合)に応じて、利用可能なインスタンスからサービスが自動的に選択します: plans_preference region tags.
plans_preference:優先するインスタンスプランのタイプ。 例えば [open] を渡すと、オープン・プラン・インスタンスのみが利用可能です。 指定できる値はopen,premium,pay-as-you-go,flex,on-premです。plans_preferenceが指定されていない場合、無料プランが有料プランよりも優先されます。region:インスタンス領域。 使用可能な値はus-eastとeu-de。tags:インスタンスタグ。 タグ名文字列のリストを受け取る。
保存した認証情報を設定して、自動的にインスタンスを選択することができる。
インスタンスはこの順番で発見され、使用される:
- アカウントが1つのインスタンスにしかアクセスできない場合、デフォルトでそのインスタンスが選択されます。
- 保存された認証情報が使用されており、その認証情報でインスタンスが指定されている場合、そのインスタンスが使用されます。 保存された認証情報を読み込む際の注意事項を参照してください。
- アカウントに、要求されたQPUにアクセスできるインスタンスが複数ある場合、システムは指定されたプラン設定に基づいてプランとインスタンスを選択します。 v0.42 以降では
qiskit-ibm-runtime、デフォルトで無料プランが優先されます。 - アカウントに複数のインスタンスへのアクセス権があるが、要求されたQPUにアクセスできるのが1つだけの場合は、アクセス権のあるインスタンスが選択されます。 このインスタンスが無料プランに関連付けられていない場合、コストが発生します。
例
この例では、サービスはアカウントで利用可能なすべてのインスタンスを検索し、指定したバックエンドにアクセスできるものを探します:
service = QiskitRuntimeService(token=<your-API_KEY>)この例では、サービスはEU地域のアカウントで利用可能なすべてのインスタンスを検索し、指定されたバックエンドにアクセスできるものを見つけます:
service = QiskitRuntimeService(token=<your-API_KEY>, region="eu-de")この例では、サービスがアカウントで利用可能で、 services というタグが付けられたすべてのインスタンスを検索し、指定されたバックエンドにアクセスできるものを見つけます:
service = QiskitRuntimeService(token=<your-API_KEY>, tags=['services'])この例では、サービスはアカウントで利用可能なすべてのプレミアムインスタンスとオープンインスタンスを検索し、指定されたバックエンドにアクセスできるものを見つけます。 バックエンドがプレミアムプランとオープンプランの両方のインスタンスにある場合、 plans_preference で premium が最初に指定されているため、プレミアムプランのインスタンスが優先されます。
service = QiskitRuntimeService(token=<your-API_KEY>,
plans_preference=['premium', 'open'])どのインスタンスが選択されたかを決定する
選択されたインスタンスは警告として返される。 さらに、 service.active_instance() 、アクティブなインスタンスを決定することができる。
[ ] を使用したローカルでのテスト qiskit-ibm-runtime
QiskitRuntimeService クラスを channel=local で初期化することで、ローカル・シミュレーションを行うことができる。 この場合、認証は不要であり、 token または instance の値を指定する必要はない。 したがって、ローカルアカウントを保存することはお勧めしません。 その代わりに、直接インスタンス化することができる:
from qiskit_ibm_runtime import QiskitRuntimeService
# Initialize for local testing
service = QiskitRuntimeService(channel="local")次のステップ
- インスタンスを作成および管理する。
- 信頼できない環境でサービスを初期化する。
- IBM Quantum Platform をREST APIで使用するための設定
- ハードウェアで最初の回路を実行するガイドの手順に従って、量子プログラムを記述し実行してください。