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]'
ソルバー仕様:

クライアントクラス

amplify.OqtopusClient

実行パラメータ

アルゴリズムに依存

実行結果

アルゴリズムに依存

実行時間

アルゴリズムに依存

量子コンピュータ方式

ゲート型

API 方式

REST API (OQTOPUS Cloud)

入力できる問題の変数型や次数は、選択したアルゴリズムに依存します。

  • クライアントの引数で QAOA が設定されている場合

    バイナリ変数

    イジング変数

    整数変数

    実数変数

    目的関数

    -

    N次*

    -

    -

    等式制約

    -

    **

    -

    -

    不等式制約

    -

    -

    -

    -

    *: 任意次数の問題を求解できます。ただし、量子コンピュータのビットの接続によっては必要な量子ビットが増えることがあります。

    **: QAOA の種別制約付き QAOAが選ばれた場合 N-HOT 制約に対応しています。

  • クライアントの引数で RQAOA が設定されている場合

    バイナリ変数

    イジング変数

    整数変数

    実数変数

    目的関数

    -

    N次*

    -

    -

    等式制約

    -

    -

    -

    -

    不等式制約

    -

    -

    -

    -

    *: 任意次数の問題を求解できます。ただし、量子コンピュータのビットの接続によっては必要な量子ビットが増えることがあります。

クライアントクラス:

クライアントクラスの共通インターフェース に加えて以下のアトリビュートを持ちます。

アトリビュート

データ型

詳細

token

str | None

OQTOPUS の API トークン。

url

str | None

OQTOPUS サービスの接続先 URL。

proxy

str | None

接続時に利用するプロキシサーバー URL。

provider

quri_parts_oqtopus.backend.OqtopusConfig | None

token / url / proxy 属性の代わりに quri_parts_oqtopus.backend.OqtopusConfig を利用して認証情報を設定します。provider 属性の設定が最も優先されます。

device

str | None

回路を実行する OQTOPUS のデバイス名。 None の場合、回路の量子ビット数を満たす利用可能なデバイスの中から自動選択されます。

qiskit_pass_manager

qiskit.transpiler.PassManager | EllipsisType | None

回路のトランスパイルに使用する Qiskit の qiskit.transpiler.PassManager。 デフォルト (...) では generate_preset_pass_manager によって自動生成されます。 None を指定するとトランスパイルをスキップします。

name

str | None

OQTOPUS に投入するジョブに付与する名前。

description

str | None

OQTOPUS に投入するジョブに付与する説明文。

transpiler_info

dict | None

OQTOPUS に転送されるトランスパイラ情報。

simulator_info

dict | None

OQTOPUS に転送されるシミュレータ情報。

mitigation_info

dict | None

OQTOPUS に転送される誤り抑制 (error mitigation) の設定。

job_type

str | None

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()