IonQ プロバイダー

ヒント

初回ユーザーは、参加している各量子ハードウェア プロバイダーで使用するために、無料の $500 (USD)Azure Quantum クレジットを自動的に取得します。 クレジットをすべて消費し、不足した場合は、Azure Quantum クレジット プログラムにお申し込みいただけます。

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

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

targetsこのプロバイダーから次の情報を入手できます。

ターゲット名 ターゲット ID 量子ビット数 説明
量子シミュレーター ionq.simulator 29 量子ビット IonQ のクラウドベースの理想的なシミュレーター。 無料。
IonQ Harmony ionq.qpu 11 量子ビット 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 プロファイルに No Control Flow 対応します。 このtargetプロファイルとその制限事項の詳細については、「Azure Quantum のプロファイルの種類について」を参照してくださいtarget

量子シミュレーター

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

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

IonQ Harmony 量子コンピューター

IonQ Harmony はトラップ型イオン量子コンピューターであり、ソフトウェアで動的に再構成して最大 11 量子ビットを使用できます。 すべての量子ビットが完全に接続され、したがって、任意のペア間で 2 量子ビット ゲートを実行できます。

  • ジョブの種類: Quantum Program
  • データ形式: ionq.circuit.v1
  • ターゲット ID: ionq.qpu
  • ターゲット実行プロファイル: No Control Flow
パラメーター名 Type 必須 説明
shots INT いいえ 実験用ショットの数。 既定値は 500 です。

システム タイミング

Measure 平均期間 (µs)
T1 >10^7
T2 200,000
1 量子ビット ゲート 10
2 量子ビット ゲート 210
読み出し 100
レジスタ リセット 25
コヒーレンス時間/ゲート期間 1667

システムの忠実度

Operation 平均忠実度
1 量子ビット ゲート 99.35% (SPAM 修正済み)
2 量子ビット ゲート 96.02% (SPAM 未修正)
SPAM* 99.3 - 99.8%
幾何平均操作 98.34%

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

IonQ Aria 量子コンピューター

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

重要

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

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

システム タイミング

Measure 平均時間
T1 10 から 100 秒
T2 1 秒
1 量子ビット ゲート 135 μs
2 量子ビット ゲート 600 μs

システムの忠実度

Operation 平均忠実度
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)」を参照してください。

重要

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

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

入力形式

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

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

注意

現在、結果を使用してプログラム フローを制御しない場合でも、 で測定された量子ビットに No Control Flowtargets対する操作を適用する量子プログラムを送信することはできません。 つまり、 No Control Flowtargets 中間回路の測定を許可しないでください。

たとえば、 で次のコードをNo Control Flowtarget実行することはできません

operation MeasureQubit(q : Qubit) : Result { 
   return M(q); 
}

operation SampleMeasuredQubit(q : Qubit) : Result {
    H(MeasureQubit(q));
    return M(MeasureQubit(q));
}

出力形式

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

その他の機能

IonQ ハードウェアでサポートされるその他の機能については、こちらを参照してください。

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

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

エラー軽減策

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

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

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

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

エラー軽減の有効化

注意

デバイアス は、Aria および Forte システムでは既定で有効になり、Harmony システムでは既定で無効になっています。

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

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


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

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


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

注意

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

option_params = {
    "error-mitigation": {
        "debias": False
    },
    "noise": {
    "model": "harmony",
    "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")

構成を指定する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)

注意

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

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

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

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

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

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

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

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

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

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

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

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

ショットの認識

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

量子ビット容量

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

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

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

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


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

注意

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

option_params = {
    "error-mitigation": {
        "debias": False
    },
    "noise": {
    "model": "harmony",
    "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) に関するページを参照してください。