IonQ プロバイダー

重要

IonQ は、2024 年 9 月 1 日に Harmony-2 量子コンピューターを廃止しました。

ヒント

初めてのユーザーは自動的にUSD500無料 Azure Quantumクレジット参加している各量子ハードウェアプロバイダーで使用できます。

IonQ の量子コンピューターは、イッテルビウム イオンの超微細エネルギー状態をレーザーで操作することによって計算を実行します。 原子は、自然の量子ビットです。すべての量子ビットは、プログラム内でもプログラム間でも同一です。 論理操作は、任意の量子ビットのペアに対して実行することもでき、これにより、物理的な接続に妨げられない複雑な量子プログラムが可能になります。 もっと詳しい説明が必要でしょうか。 IonQ のトラップ型イオン量子コンピューター テクノロジの概要を参照してください。

  • 発行元: IonQ
  • プロバイダー ID: ionq

このプロバイダーから次の targets を使用できます。

ターゲット名 ターゲット ID 量子ビット数 説明
量子シミュレーター ionq.simulator 29 量子ビット IonQ のクラウドベースの理想的なシミュレーター。 無料。
IonQ Aria 1 ionq.qpu.aria-1 25 量子ビット IonQ の Aria トラップ型イオン量子コンピューター。
IonQ Aria 2 ionq.qpu.aria-2 25 量子ビット IonQ の Aria トラップ型イオン量子コンピューター。
IonQ Forte ionq.qpu.forte 32 量子ビット IonQ の Forte トラップイオン量子コンピューター。 プライベート プレビューでのみ使用できます。

IonQ の targets は、 QIR Base プロファイルに対応します。 このtarget プロファイルとその制限の詳細については、「Azure Quantum でのtarget プロファイルの種類のの理解」を参照してください

量子シミュレーター

最大 29 量子ビットをサポートする GPU で高速化された理想的なシミュレーター。IonQ がその量子ハードウェアで提供する同じゲート セットを使用します。このシミュレーターは、実際の量子コンピューターでジョブを実行する前に、それらのジョブを試す優れた場所です。

  • ジョブの種類: Simulation
  • データ形式: ionq.circuit.v1
  • ターゲット ID: ionq.simulator
  • ターゲット実行プロファイル: QIR Base

IonQ Aria 量子コンピューター

IonQ Aria は、25 量子ビットの動的に再構成可能なシステムを備えた、IonQ のトラップされたイオン量子コンピューターの旗艦です。 詳細については、「 IonQ Aria (ionq.com)」を参照してください。

重要

Debiasing は Aria システムで既定で有効になっており、送信されたジョブにはデビアベースの価格が適用されます。 デバイアスの詳細と、サービスを無効または有効にする方法については、「 エラー軽減」を参照してください。

  • ジョブの種類: Quantum Program
  • データ形式: ionq.circuit.v1
  • ターゲット ID: ionq.qpu.aria-1ionq.qpu.aria-2
  • ターゲット実行プロファイル: QIR Base
パラメーター名 Required 説明
shots int いいえ 実験用ショットの数。

システム タイミング

メジャー 平均期間
T1 10 から 100 秒
T2 1 秒
1 量子ビット ゲート 135 μs
2 量子ビット ゲート 600 μs

システムの忠実度

操作 平均忠実度
1 量子ビット ゲート 99.95% (スパム修正)
2 量子ビット ゲート 99.6% (スパム修正なし)
SPAM* 99.61%

* 状態の準備と測定 (SPAM): この測定により、量子コンピューターがどのくらい正確に量子ビットを初期状態に設定し、最終的に結果を測定できるかが決まります。

IonQ Aria は、Azure Quantum クレジット プランと個別の課金プランを通じて利用できます。 詳細については、「Azure Quantum の価格」を参照してください。

IonQ Forte 量子コンピューター

IonQ Forte は、IonQ で最も高性能で、市販のトラップイオン量子コンピューターです。 ソフトウェアで構成可能な 32 量子ビット システムを使用すると、IonQ Forte は Azure Quantum のプライベート プレビューで利用できます。 詳細については、「 IonQ Forte (ionq.com)」を参照してください。

重要

Debiasing は既定で Forte システムで有効になっており、送信されたジョブはデビアベースの価格の対象となります。 デバイアスの詳細と、サービスを無効または有効にする方法については、「 エラー軽減」を参照してください。

  • ジョブの種類: Quantum Program
  • データ形式: ionq.circuit.v1
  • ターゲット ID: ionq.qpu.forte
  • ターゲット実行プロファイル: QIR Base
パラメーター名 Required 説明
shots int いいえ 実験用ショットの数。

入力形式

Q# では、量子測定の出力は Result 型の値であり、 ZeroOneの値のみを受け取ることができます。 Q# 操作を定義する場合、戻り値の型が Resultのコレクションである場合、つまり演算の出力が量子測定の結果である場合にのみ、IonQ ハードウェアに送信できます。 これは、IonQ が戻り値からヒストグラムを作成するため、戻り値の型を Result に制限して、このヒストグラムの作成を簡略化するためです。

IonQ の targets は、 QIR Base profileに対応します。 このプロファイルでは、量子ビット測定の結果を使用してプログラム フローを制御する必要がある量子演算を実行することはできません。

出力書式

IonQ シミュレーターに量子プログラムを送信すると、測定値によって作成されたヒストグラムが返されます。 IonQ シミュレーターは、量子プログラムによって作成された確率分布をサンプリングするのではなく、ショット数にスケーリングされた分布を返します。 これは、1 つのショット回線を送信する場合に最も明白です。 1 回のショットのヒストグラムに複数の測定結果が表示されます。 この動作は IonQ シミュレーターに固有ですが、IonQ QPU は実際にプログラムを実行して結果を集計します。

その他の機能

IonQ ハードウェアでサポートされるその他の機能を次に示します。

機能 説明
エラーの軽減策 デバイアスを使用してノイズを最小限に抑え、IonQ ハードウェアのアルゴリズム パフォーマンスを最大化する
ネイティブ ゲートのサポート IonQ ハードウェアネイティブ ゲートで回線を直接定義して実行する
ノイズ モデル シミュレーション 異なる IonQ ハードウェアで回線を実行するときに発生するノイズ プロファイルをシミュレートします。

ユーザーは、Azure Quantum Q# および Qiskit プロバイダーのパススルー パラメーターを使用して、これらの追加機能を利用できます。

エラーの軽減策

IonQ には、IonQ ハードウェアにジョブを送信するときに量子エラーの軽減策を有効にするオプションが用意されています。 エラー軽減は、回線の複数の対称バリエーションを実行して実行し、ハードウェア エラーと量子ビットのデコヒーレンスの影響を軽減しながら結果を集計するコンパイラ レベルのプロセスです。 量子エラー修正手法とは異なり、エラー軽減には大きなゲートと量子ビットのオーバーヘッドは必要ありません。

Debiasingは、理想的なノイズレスマシン上で異なる量子ビットの割り当て、ゲート分解、パルス解などの手法を使用して、それらの変動を実行する、特定の回路のわずかなバリエーションを作成するプロセスです。

シャープ化変更 は、バリエーションの結果を集計するためのオプションです。 平均化はすべての変動結果に等しく基づきますが、シャープニングでは誤った結果が除外され、特定の種類のアルゴリズムでより信頼性が高くなります。

詳細については、「 Debiasing and Sharpeningを参照してください。 エラー軽減の価格については、 IonQ の価格を参照してください。

エラー軽減策の有効化

Note

Debiasing は、Aria および Forte システムで既定で有効になっています。

Azure Quantum では、Q# または Qiskit を使用して送信されたジョブに対して、エラー軽減策を有効または無効にすることができます。

エラーの軽減策を有効にするには、 target コンピューターの省略可能なパラメーターを追加します。


option_params = {
    "error-mitigation": {
        "debias": True
    }
}

エラー軽減策を無効にするには、パラメーターを Falseに設定します。


option_params = {
    "error-mitigation": {
        "debias": False
    }
}

Note

IonQ のノイズ モデル シミュレーションも使用している場合は、次のようにこれらのパラメーターをここに含めることができます。

option_params = {
    "error-mitigation": {
        "debias": False
    },
    "noise": {
    "model": "aria-1",
    "seed": 100
    }
}

詳細については、「 モデル シミュレーションの作成」を参照してください。

エラー軽減策を使用して Azure Quantum でジョブを実行する

この例では、単純な乱数ジェネレーターを使用します。

まず、必要なパッケージをインポートし、基本プロファイルを開始します。

import qsharp
import azure.quantum
qsharp.init(target_profile=qsharp.TargetProfile.Base)

次に、関数を定義します。

%%qsharp
open Microsoft.Quantum.Measurement;
open Microsoft.Quantum.Arrays;
open Microsoft.Quantum.Convert;

operation GenerateRandomBit() : Result {
    use target = Qubit();

    // Apply an H-gate and measure.
    H(target);
    return M(target);
}

and compile the operation:

```python
MyProgram = qsharp.compile("GenerateRandomBit()")

Azure Quantum に接続し、 target コンピューターを選択し、エミュレーターのノイズ パラメーターを構成します。

MyWorkspace = azure.quantum.Workspace(
    resource_id = "",
    location = ""
)

MyTarget = MyWorkspace.get_targets("ionq.qpu.aria-1")

error-mitigation構成を指定する


option_params = {
    "error-mitigation": {
        "debias": True
    }
}

ジョブを送信するときに、エラー軽減の構成を渡します。

job = MyTarget.submit(MyProgram, "Experiment with error mitigation", shots = 10, input_params = option_params)
job.get_results()

Qiskit では、ジョブを送信する前に、オプションのパラメーターを target マシン構成に渡します。

circuit.name = "Single qubit random - Debias: True"
backend.options.update_options(**option_params)
job = backend.run(circuit, shots=500)

Note

error-mitigation パラメーターを渡さない場合、target マシンは既定の設定を使用します。これは Aria および Forte システム有効です。

ネイティブ ゲートのサポートと使用

既定では、IonQ では qis と呼ばれる量子ゲートの抽象セットを使用して量子回路を指定できます。これにより、ハードウェアの最適化を気にせずにアルゴリズムを記述することができ、柔軟性と移植性がもたらされます。

ただし、一部の高度な使用例では、ハードウェアに近い設定を行って最適化を回避するために、ネイティブ ゲートで回路を直接定義することが必要になることがあります。 ネイティブ ゲート セットは、量子プロセッサで物理的に実行される量子ゲートのセットであり、実行の一部として回路をそれらのゲートに対応付けます。

詳細については、ネイティブ ゲートの概要 (ionq.com) についてページを参照してください。

Qiskit ジョブを Azure Quantum に送信するときにネイティブ ゲート セットを使用するには、次の例のようにバックエンドを初期化するときに gateset パラメーターを指定します。

# Here 'provider' is an instance of AzureQuantumProvider
backend = provider.get_backend("ionq.qpu.aria-1", gateset="native")
パラメーター名 Required Description
gateset string いいえ 回路の定義に使用するゲートのセットを指定します。 qis の値は、抽象ゲートに対応し (既定の動作)、nativeIonQ ハードウェア ネイティブ ゲートに対応します。

Qiskit ジョブの詳細については、「 Qiskit を使用して回線を送信するを参照してください。

ノイズ モデル シミュレーション

今日の量子ハードウェアには固有のノイズがあり、 target システムのノイズ特性を知ることは、アルゴリズムを調整し、ハードウェア上で回路を実行するときに結果をより現実的に予測するのに役立ちます。 IonQ は、target ハードウェアに固有の "ノイズ フィンガープリント" を使用して回路にノイズを導入するノイズ モデル シミュレーションを提供します。 詳細については、「 ハードウェア ノイズ モデル シミュレーションの概要」を参照してください。

ノイズ モデルのパラメーター

パラメーター名 説明
noise model, seed ノイズ モデル シミュレーションを有効にします。
model ideal, aria-1 target ハードウェアのノイズ モデルを指定します。
  • ideal - ノイズは回路に導入されません。 これは、ノイズ シミュレーションを有効にしない場合と同じです。
  • aria-1 - IonQ Aria 量子コンピューターのノイズ モデルを使用します。
seed 1 ~ $2^{31}$ の整数 (2,147,483,648) 擬似ランダム ノイズとショット サンプリングのシード値を指定して、再現可能なノイズの結果を作成できます。 パラメーターが指定されていない場合は、ランダムな seed 値が作成されます。

ショット認識

ノイズ モデル シミュレーションは ショット対応です。つまり、提供されたショットの数に基づいて出力状態から測定値をサンプリングします。 Azure Quantum では、 shots パラメーターはジョブと共に送信され、 aria-1 ノイズ モデルに必要です。 shot値が指定されていない場合は、既定値の 1000 が使用されます。 ideal ノイズ モデルを使用する場合、shots パラメーターは無視されます。

量子ビット容量

ideal ノイズ モデルでは IonQ 量子シミュレーターを使用して最大 29 量子ビットをシミュレートできますが、ハードウェア固有のノイズ モデルは、target ハードウェアの実際の量子ビット容量に制限されます。これは、aria-1 ノイズ モデルの場合は 25 量子ビットです。

ノイズ モデル シミュレーションの有効化

Azure Quantum では、Q# または Qiskit を使用して送信されたジョブに対して、ノイズ モデル シミュレーションを有効または無効にすることができます。

ノイズ モデル シミュレーションを有効にするには、 target マシンの省略可能なパラメーターを追加します。次に例を示します。


option_params = {
    "noise": {
        "model": "aria-1",   # targets the Aria quantum computer
        "seed" : 1000         # If seed isn't specified, a random value is used  
    }
}

Note

IonQ のエラー軽減策も使用している場合は、次のようなパラメーターをここに含めることができます。

option_params = {
    "error-mitigation": {
        "debias": False
    },
    "noise": {
    "model": "aria-1",
    "seed": 1000
    }
}

詳細については、「 エラー軽減策」を参照してください。

ノイズ モデル シミュレーションを使用したジョブの実行

エラー軽減策で既に示したのと同じサンプル プログラムを使用しoption_paramsのノイズ モデル構成を追加または置換できます。

option_params = {
    "error-mitigation": {
        "debias": True
    },
    "noise": {
    "model": "aria",
    "seed": 1000
    }
}

次に、ジョブを送信するときに省略可能なパラメーターを渡します。

job = MyTarget.submit(MyProgram, "Experiment with noise model simulation", shots = 10, input_params = option_params)
job.get_results()

Qiskit では、ジョブを送信する前に、オプションのパラメーターを target マシン構成に渡します。

circuit.name = "Single qubit random - Debias: True"
backend.options.update_options(**option_params)
job = backend.run(circuit, shots=500)

価格

IonQ の課金プランを確認するには、「Azure Quantum の価格」を参照してください。

制限とクォータ

IonQ クォータは、QPU 使用量ユニット (qubit-gate-shot (QGS)) に基づいて追跡されます。 リソース使用量は、アカウントに対してクレジットが適用されます。

すべての量子プログラムは、1 つ以上の量子ビットの $N$ 個の量子論理ゲートで構成され、特定の数のショットに対して実行されます。 ゲート ショットの数は、次の式で計算されます。

$$ QGS = N · C $$

どこで:

  • $N$ は、送信された 1 つまたは 2 つの量子ビット ゲートの数です
  • $C$ は、要求された実行ショットの数です

クォータはプランの選択に基づいており、ポート チケットを使用して増やすことができます。 現在の制限とクォータを確認するには、Azure portal のワークスペースで [クレジットとクォータ] ブレードに移動し、[クォータ] タブを選択します。 詳細については、「Azure Quantum quotas」(Azure Quantum クォータ) を参照してください。

Note

課金プランではなく Azure Quantum クレジット プランを使用している場合、クォータ情報は割り当てられたクレジットに対応付けられています。 その場合、クォータでは受け取ったクレジットの合計数が一覧表示されます。

IonQ の状態

IonQ QPU ジョブ処理の遅延については、 IonQ 状態ページを参照してください。

IonQ のベスト プラクティスと接続グラフ

IonQ QPU の推奨されるベスト プラクティスについては、IonQ のベスト プラクティス (ionq.com) に関するページを参照してください。