IonQ

IonQ のイオントラップ型量子コンピュータを回路の評価に利用します。

IonQClient として利用できます。

注釈

IonQ の利用方法として以下の 2 つの方法があります。

  1. API トークンを使用する方法: Fixstars Amplify アカウントまたは自身の IonQ のアカウントで API トークンを取得してください。

  2. Amazon Braket 経由で使用する方法: 自身の AWS アカウントの認証情報を用意してください。

ヒント

Amplify Quantum v1.2 で IonQClient の API トークン認証機能をサポートしました。 ご利用中のパッケージのバージョンが古い場合は、以下のコマンドを実行して最新版にアップデートしてください。

$ pip install -U 'amplify[quantum]'
ソルバー仕様:

クライアントクラス

amplify.IonQClient

実行パラメータ

アルゴリズムに依存

実行結果

アルゴリズムに依存

実行時間

アルゴリズムに依存

量子コンピュータ方式

ゲート型・イオントラップ

API 方式

REST API (Amazon Braket)

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

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

    バイナリ変数

    イジング変数

    整数変数

    実数変数

    目的関数

    -

    N次*

    -

    -

    等式制約

    -

    **

    -

    -

    不等式制約

    -

    -

    -

    -

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

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

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

    バイナリ変数

    イジング変数

    整数変数

    実数変数

    目的関数

    -

    N次*

    -

    -

    等式制約

    -

    -

    -

    -

    不等式制約

    -

    -

    -

    -

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

クライアントクラス:

以下のアトリビュートとメソッドを持ちます。

アトリビュート

データ型

詳細

token

str | None

認証に利用する API トークン

url

str | None

接続先 URL

device

str

使用する IonQ デバイス名またはデバイス ARN。デフォルト: "Forte1"

provider

braket.aws.aws_session.AwsSession | None

デバイスに接続するためのプロバイダを指定します。現在は Amazon Braket のみがサポートされています。

バックエンド固有のメタ情報:

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