IonQ¶
IonQ のイオントラップ型量子コンピュータを回路の評価に利用します。
IonQClient として利用できます。
注釈
IonQ の利用方法として以下の 2 つの方法があります。
API トークンを使用する方法: Fixstars Amplify アカウントまたは自身の IonQ のアカウントで API トークンを取得してください。
Amazon Braket 経由で使用する方法: 自身の AWS アカウントの認証情報を用意してください。
ヒント
Amplify Quantum v1.2 で IonQClient の API トークン認証機能をサポートしました。
ご利用中のパッケージのバージョンが古い場合は、以下のコマンドを実行して最新版にアップデートしてください。
$ pip install -U 'amplify[quantum]'
- ソルバー仕様:
クライアントクラス
アルゴリズムに依存
アルゴリズムに依存
アルゴリズムに依存
量子コンピュータ方式
ゲート型・イオントラップ
API 方式
REST API (Amazon Braket)
入力できる問題の変数型や次数は、選択したアルゴリズムに依存します。
クライアントの引数で QAOA が設定されている場合
バイナリ変数
イジング変数
整数変数
実数変数
目的関数
-
N次*
-
-
等式制約
-
**
-
-
不等式制約
-
-
-
-
*: 任意次数の問題を求解できます。ただし、量子コンピュータのビットの接続によっては必要な量子ビットが増えることがあります。
クライアントの引数で RQAOA が設定されている場合
バイナリ変数
イジング変数
整数変数
実数変数
目的関数
-
N次*
-
-
等式制約
-
-
-
-
不等式制約
-
-
-
-
*: 任意次数の問題を求解できます。ただし、量子コンピュータのビットの接続によっては必要な量子ビットが増えることがあります。
- クライアントクラス:
以下のアトリビュートとメソッドを持ちます。
- バックエンド固有のメタ情報:
QAOAのsampling_metaなどで取得できるサンプリング時の詳細情報です。
BraketJobMetaが利用されます。meta = client_result.history[0].sampling_meta meta.circuit # 実行した回路オブジェクト meta.metadata # Amazon Braket タスクメタデータ (task_id, created_at, ended_at)
- 設定例:
from amplify import QAOA, IonQClient # クライアントの作成 client = IonQClient(QAOA) # デバイスを指定 client.device = "Forte-1" # API トークンを設定 client.token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # QAOAのパラメータを設定 client.parameters.reps = 1 client.parameters.shots = 100
Amazon Braket を使用する場合は、API トークンを設定する部分を以下のように変更してください。
import boto32 from braket.aws import AwsSession session = boto3.Session(profile_name="my-profile") client.provider = AwsSession(boto_session=session)
- 実行例:
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)
バックエンドのバージョンを取得:
>>> client.version()