Japanese
言語
English
Japanese
Spanish

qiskit-ibmq-provider からの移行ガイド

このガイドは、レガシーIBMQプロバイダー(qiskit-ibmq-provider)パッケージからQiskit Runtime(qiskit-ibm-runtime)を使用するようにコードを移行する方法を説明します。このガイドには、レガシーの Runtimeプログラムを新しい構文に移行するための手順が含まれています。しかし、カスタムアップロードされたプログラムを使用する機能は非推奨であるため、これらは代わりにPrimitive を使用するように移行する必要があります。

クラス名と場所の変更

以前は qiskit-ibmq-provider に含まれていたQiskit Runtime関連のクラスは、現在 qiskit-ibm-runtime の一部になっています。これまで、プロバイダーは qiskit.providers.ibmq.runtime の名前空間にQiskit Runtimeのためのオブジェクトを格納していました。現在、 プロバイダーは``qiskit_ibm_runtime`` モジュールにあります。

クラスがインポートされるモジュールが変更されました。以下は qiskit.providers.ibmq.runtime のアクセスパターンの例と、 qiskit_ibm_runtime の新しい形の表です。

Table 2 qiskit-ibmq-providerqiskit.providers.ibmq.runtime から qiskit-ibm-runtime へ移行

qiskit-ibmq-provider のクラス

qiskit-ibm-runtime のクラス

備考

qiskit.providers.ibmq.runtime.IBMRuntimeService

qiskit_ibm_runtime.QiskitRuntimeService`

IBMRuntimeService クラスは qiskit-ibm-runtime 0.6 から削除され、新しいクラス qiskit-ibm-runtime に置き換えられました。

qiskit.providers.ibmq.runtime.RuntimeJob

qiskit_ibm_runtime.RuntimeJob

qiskit.providers.ibmq.runtime.RuntimeProgram

qiskit_ibm_runtime.RuntimeProgram

qiskit.providers.ibmq.runtime.UserMessenger

qiskit_ibm_runtime.program.UserMessenger

qiskit_ibm_runtime.program の新しい場所に注意してください。

qiskit.providers.ibmq.runtime.ProgramBackend

qiskit_ibm_runtime.program.ProgramBackend

qiskit_ibm_runtime.program の新しい場所に注意してください。

qiskit.providers.ibmq.runtime.ResultDecoder

qiskit_ibm_runtime.program.ResultDecoder

qiskit_ibm_runtime.program の新しい場所に注意してください。

qiskit.providers.ibmq.runtime.RuntimeEncoder

qiskit_ibm_runtime.RuntimeEncoder

qiskit.providers.ibmq.runtime.RuntimeDecoder

qiskit_ibm_runtime.RuntimeDecoder

qiskit.providers.ibmq.runtime.ParameterNamespace

qiskit_ibm_runtime.ParameterNamespace

qiskit.providers.ibmq.runtime.RuntimeOptions

qiskit_ibm_runtime.RuntimeOptions

パスのインポート

インポート・パスは次のように変更されました。

レガシー

from qiskit import IBMQ

更新

from qiskit_ibm_runtime import QiskitRuntimeService

アカウントの保存およびロード

更新されたコードを使用して、アカウントを操作します。

**レガシー - アカウントの保存 **

IBMQ.save_account("<IQX_TOKEN>", overwrite=True)

更新された -アカウントの保存 新しい構文は、IBM CloudまたはIBM Quantum Platform上のQiskit Runtimeの認証情報を受け付けます。アカウントの認証情報を取得するための詳細については、 はじめに を参照してください。

# IBM cloud channel
QiskitRuntimeService.save_account(channel="ibm_cloud", token="<IBM Cloud API key>", instance="<IBM Cloud CRN>", overwrite=True)

# IBM quantum channel
QiskitRuntimeService.save_account(channel="ibm_quantum", token="<IQP_TOKEN>", overwrite=True)

更新された - 認証情報を保存する名前 保存した資格情報に名前をつけて、資格情報を読み込むことができるようになりました。

例:

# Save different accounts for open and premium access

QiskitRuntimeService.save_account(channel="ibm_quantum", token="<IQX_TOKEN>", instance="h1/g1/p1", name="premium")
QiskitRuntimeService.save_account(channel="ibm_quantum", token="<IQX_TOKEN>", instance="h2/g2/p2", name="open")

# Load the "open" credentials

service = QiskitRuntimeService(name="open")

**レガシー - アカウントのロード **

IBMQ.load_account()

**** 更新 - アカウントのロード **

新しい構文は、 load_account()get_provider() の機能を1つの文にまとめたものです。入力パラメーターの channel は省略可能です。複数のアカウントが1つのデバイスに保存されており、 channel が指定されていない場合、デフォルトは "ibm_cloud" です。

# To access saved credentials for the IBM cloud channel
service = QiskitRuntimeService(channel="ibm_cloud")

# To access saved credentials for the IBM quantum channel
service = QiskitRuntimeService(channel="ibm_quantum")

チャンネルの選択 (プロバイダーの取得)

更新されたコードを使用してチャネルを選択します。

レガシー

provider = IBMQ.get_provider(project="my_project", group="my_group", hub="my_hub")

更新

新しい構文は load_account()get_provider() の機能を1つの文に統合したものです。ibm_quantum`` チャネルを使用する場合、 hub, group, project は新しい instance キーワードで指定します。

# To access saved credentials for the IBM cloud channel
service = QiskitRuntimeService(channel="ibm_cloud")

# To access saved credentials for the IBM quantum channel and select an instance
service = QiskitRuntimeService(channel="ibm_quantum", instance="my_hub/my_group/my_project")

バックエンドの取得

更新されたコードを使用してバックエンドを表示します。

レガシー

provider = IBMQ.get_provider(hub="h1", group="g1", project="p1")
backend = provider.get_backend("ibm_backend")

更新

# You can specify the instance in service.backend() instead of initializing a new service
backend = service.backend("ibm_backend", instance="h1/g1/p1")