OQTOPUS Cloud¶
OQTOPUS Cloud 経由で利用可能なクラウド量子コンピュータ及びシミュレータを回路の評価に利用します。
OqtopusClient として利用できます。
注釈
quri-parts-oqtopus==1.0.3 で通信できる OQTOPUS Cloud にのみ対応しています。
利用には OQTOPUS Cloud の API トークンと接続先 URL が必要です。
ヒント
OqtopusClient は Amplify Quantum v1.3 で追加されました。
ご利用中のパッケージのバージョンが古い場合は、以下のコマンドを実行して最新版にアップデートしてください。
$ pip install -U 'amplify[quantum]'
- ソルバー仕様:
クライアントクラス
アルゴリズムに依存
アルゴリズムに依存
アルゴリズムに依存
量子コンピュータ方式
ゲート型
API 方式
REST API (OQTOPUS Cloud)
入力できる問題の変数型や次数は、選択したアルゴリズムに依存します。
クライアントの引数で QAOA が設定されている場合
バイナリ変数
イジング変数
整数変数
実数変数
目的関数
-
N次*
-
-
等式制約
-
**
-
-
不等式制約
-
-
-
-
*: 任意次数の問題を求解できます。ただし、量子コンピュータのビットの接続によっては必要な量子ビットが増えることがあります。
クライアントの引数で RQAOA が設定されている場合
バイナリ変数
イジング変数
整数変数
実数変数
目的関数
-
N次*
-
-
等式制約
-
-
-
-
不等式制約
-
-
-
-
*: 任意次数の問題を求解できます。ただし、量子コンピュータのビットの接続によっては必要な量子ビットが増えることがあります。
- クライアントクラス:
クライアントクラスの共通インターフェース に加えて以下のアトリビュートを持ちます。
アトリビュート
データ型
詳細
OQTOPUS の API トークン。
OQTOPUS サービスの接続先 URL。
接続時に利用するプロキシサーバー URL。
quri_parts_oqtopus.backend.OqtopusConfig|Nonetoken/url/proxy属性の代わりにquri_parts_oqtopus.backend.OqtopusConfigを利用して認証情報を設定します。provider属性の設定が最も優先されます。回路を実行する OQTOPUS のデバイス名。
Noneの場合、回路の量子ビット数を満たす利用可能なデバイスの中から自動選択されます。回路のトランスパイルに使用する Qiskit の
qiskit.transpiler.PassManager。 デフォルト (...) では generate_preset_pass_manager によって自動生成されます。Noneを指定するとトランスパイルをスキップします。OQTOPUS に投入するジョブに付与する名前。
OQTOPUS に投入するジョブに付与する説明文。
OQTOPUS に転送されるトランスパイラ情報。
OQTOPUS に転送されるシミュレータ情報。
OQTOPUS に転送される誤り抑制 (error mitigation) の設定。
OQTOPUS に転送されるジョブタイプ。
- バックエンド固有のメタ情報:
QAOAのsampling_metaなどで取得できるサンプリング時の詳細情報です。
meta = client_result.history[0].sampling_meta meta.circuit # 実行した Qiskit 回路オブジェクト (トランスパイル前) meta.transpiled_circuit # トランスパイル後の回路 (トランスパイルされなかった場合は None)
- 設定例:
from amplify import QAOA, OqtopusClient # クライアントの作成 client = OqtopusClient(QAOA) # 接続先 URL と API トークンを設定 client.url = "<URL>" client.token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # QAOAのパラメータを設定 client.parameters.reps = 1 client.parameters.shots = 100
quri_parts_oqtopus.backend.OqtopusConfigを直接渡すこともできます。この場合providerの値のみから認証を行います。from quri_parts_oqtopus.backend import OqtopusConfig client = OqtopusClient(QAOA) client.provider = OqtopusConfig.from_file()
- 実行例:
from amplify import Model, VariableGenerator, solve # 決定変数と目的関数を定義 g = VariableGenerator() q = g.array("Binary", 2) f = q[0] * q[1] + q[0] - q[1] + 1 # モデルを作成 model = Model(f) # ソルバーを実行 result = solve(model, client)
バックエンドのバージョン (quri-parts-oqtopus のバージョン) を取得:
>>> client.version()