次の方法で共有


Quantinuum プロバイダー

ヒント

Azure Quantum ワークスペースを作成すると、量子ハードウェア プロバイダーごとに自動的に USD500 無料 Azure Quantum クレジット が取得されます。 Azure Quantum クレジットを使用して、最初の量子プログラムを実際の量子ハードウェアに送信できます。

Quantinuum では、忠実度が高く、完全結合された量子ビットを実現し、中間回路測定を実行する機能を備えたイオン トラップ型システムにアクセスできます。

  • 発行元: Quantinuum
  • プロバイダー ID: quantinuum

Targets

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

Target 名 Target 身分証明書 量子ビット数 説明
H1-1 構文チェッカー quantinuum.sim.h1-1sc 20 量子ビット これを使用して、Quantinuum のプラットフォーム上のハードウェアまたはエミュレーターに送信する前に、H1-1 コンパイラに対して量子プログラムを検証します。 無料。
H2-1 構文チェッカー quantinuum.sim.h2-1sc 56 量子ビット これを使用して、Quantinuum のプラットフォーム上のハードウェアまたはエミュレーターに送信する前に、H2-1 コンパイラに対して量子プログラムを検証します。 無料。
H1-1 エミュレーター quantinuum.sim.h1-1e 20 量子ビット H1-1のリアルな物理モデルとノイズ モデルを使用します。
H2-1 エミュレーター quantinuum.sim.h2-1e 56/32 量子ビット H2-1のリアルな物理モデルとノイズモデルを使用。 56 量子ビット シミュレーションは、安定化シミュレーションとしてのみ使用できます
H1-1 quantinuum.qpu.h1-1 20 量子ビット Quantinuum の H1-1 トラップ型イオン デバイス。
H2-1 quantinuum.qpu.h2-1 56 量子ビット クォンティヌムのH2-1トラップイオンデバイス。

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

Quantinuum のすべての targets で、統合ハイブリッド回線がサポートされるようになりました。 統合ハイブリッド ジョブの送信の詳細については、「 統合ハイブリッド コンピューティングを参照してください。

Azure Quantum で Quantinuum プロバイダーの使用を開始するには、「 Q# と Azure Quantum ノートブックの使用を開始する」を参照してください

ヒント

セッションの下で送信された量子ジョブは、互いに 1 分以内にジョブをキューに入限り、Quantinuum ハードウェアへの排他的なアクセス権を持ちます。 その後、すべてのジョブが受け入れられ、標準のキューと優先順位付けロジックで処理されます。 詳細については、Azure Quantum の sessionsに関するページを参照してください。

構文チェッカー

ユーザーはまず、構文チェッカーを使用してコードを検証することをお勧めします。 これは、適切な構文、コンパイルの完了、マシンの互換性を確認するためのツールです。 構文チェッカーは、 targetした量子コンピューターと同じコンパイラを使用します。 たとえば、H1-1 構文チェッカーは H1-1 と同じコンパイラを使用します。 実際の量子演算を除き、完全なコンパイル スタックが実行されます。 コードがコンパイルされた場合、構文チェッカーは success 状態と、すべての 0 の結果を返します。 コードがコンパイルされない場合、構文チェッカーは失敗した状態を返し、ユーザーが回線構文をデバッグするのに役立つエラーを返します。 構文チェッカーを使用すると、開発者はコンピューターがオフラインの場合でも、いつでもコードの検証ができます。

  • ジョブの種類: Simulation
  • データ形式: honeywell.openqasm.v1honeywell.qir.v1
  • Target 身分証明書:
    • H1-1 構文チェッカー: quantinuum.sim.h1-1sc
    • H2-1 構文チェッカー: quantinuum.sim.h2-1sc
  • Target 実行プロファイル: QIR Adaptive RI

構文チェッカーの使用は無料で提供されます。

System Model H1 Emulator

構文チェッカーを使用してコードの構文を検証した後、ユーザーは Quantinuum のシステム モデル H1 エミュレーター、詳細な物理モデルと実際のシステム モデル H1 ハードウェアの現実的なノイズ モデルを含むエミュレーション ツールを利用できます。 ノイズ モデルは、ハードウェアの詳細な特性評価から派生しています。 システム モデル H1 エミュレーターは、ジョブの送信にシステム モデル H1 ハードウェアと同じ API を使用し、エミュレーションからハードウェアへのシームレスな移行を可能にします。 生産性を最大化し、開発時間を短縮するために、ハードウェアがオフラインの間でもシステム モデル H1 エミュレーターを使用できます。

詳細については、「 System Model H1 Emulator Product Data Sheet System Model H1 ページを参照してください。

  • ジョブの種類: Simulation
  • データ形式: quantinuum.openqasm.v1
  • Target 身分証明書:
    • H1-1 エミュレーター: quantinuum.sim.h1-1e
  • Target 実行プロファイル: QIR Adaptive RI

システム モデル H1 エミュレーターの使用は、ハードウェア サブスクリプションで無料で提供されます。 詳細については、「Azure Quantum の価格」を参照してください。

H シリーズ エミュレーター (クラウド ベース)

H シリーズ エミュレーターは、Azure Quantum Web サイトの Code with Azure Quantum ページで無料で利用できます。Q# コードを記述し、Azure アカウントなしで Quantinuum H シリーズ エミュレーターにジョブを送信できます。 H シリーズ エミュレーターは、現実的な物理ノイズ モデルと、 System Model H1 量子コンピューターの一般的なパフォーマンスに基づいて一般化されたエラー パラメーターを使用するステートベクトル ベースの量子エミュレーターです。 実行される量子シミュレーションは、 System Model H1 Emulator と同じですが 従来の回路最適化ルーチンはスループットを向上させるために削減されます。 統合ハイブリッド コンピューティングのサポートは将来の予定です。

System Model H1

Honeywell を搭載した量子コンピューターのシステム モデル H1 生成は、1 つの線形セクションを持つ量子電荷結合デバイス (QCCD) で構成され、現在、1 台のマシン targets(H1-1) が含まれています。 ユーザーは、target コンピューターにジョブを送信する前に、syntax チェッカーおよび System Model H1 Emulator にジョブを送信して、H1-1 とのコードの互換性をテストすることをお勧めします。

システム モデル H1 マシンは、製品ライフサイクル全体を通じて継続的にアップグレードされます。 ユーザーは、使用可能な最新かつ高度で能力の高いハードウェアにアクセスできます。

詳細については、「システム モデル H1 製品データシート」を参照システム モデル H1 ページを参照してください。

  • ジョブの種類: Quantum Program
  • データ形式: honeywell.openqasm.v1honeywell.qir.v1
  • Target 身分証明書:
    • H1-1: quantinuum.qpu.h1-1
  • Target 実行プロファイル: QIR Adaptive RI

システム モデル H2 エミュレーター

H2-1 構文チェッカーを使用してコードの構文を検証した後、ユーザーは Quantinuum のシステム モデル H2 エミュレーターを利用できます。これは、実際のシステム モデル H2 ハードウェアの詳細な物理モデルと現実的なノイズ モデルを含むエミュレーション ツールです。 ノイズ モデルの詳細については、「 System Model H2 Emulator Product Data Sheet System Model H2 ページを参照してください。 システム モデル H2 エミュレーターは、ジョブの送信にシステム モデル H2 ハードウェアと同じ API を使用し、エミュレーションからハードウェアへのシームレスな移行を可能にします。 生産性を最大化し、開発時間を短縮するために、ハードウェアがオフラインの間でも H2 Emulator を使用できます。

  • ジョブの種類: Simulation
  • データ形式: quantinuum.openqasm.v1
  • Target 身分証明書:
    • H2-1 エミュレーター: quantinuum.sim.h2-1e
  • Target 実行プロファイル: QIR Adaptive RI

システム モデル H2 エミュレーターの使用は、ハードウェア サブスクリプションで無料で提供されます。 詳細については、「Azure Quantum の価格」を参照してください。

システム モデル H2

Honeywell を搭載した量子コンピューターの Quantinuum システム モデル H2 世代は、2 つの接続された線形セクションを備えた量子電荷結合デバイス (QCCD) で構成され、現在、1 台のコンピューター H2-1 があります。 詳細については、「 System Model H2 Product Data Sheet System Model H2 ページを参照してください。 ユーザーは、target コンピューターにジョブを送信する前に、syntax チェッカーおよび System Model H2 Emulator にジョブを送信して、コードの互換性をテストすることをお勧めします。

ユーザーが H2-1 マシンにジョブを送信し、H2-1 マシンを使用できない場合、ジョブはマシンが使用可能になるまでそのマシンのキューに残ります。

システム モデル H2 ハードウェアは、製品ライフサイクル全体にわたって継続的にアップグレードされます。 ユーザーは、使用可能な最新かつ高度で能力の高いハードウェアにアクセスできます。

  • ジョブの種類: Quantum Program
  • データ形式: quantinuum.openqasm.v1
  • Target 身分証明書:
    • H2-1: quantinuum.qpu.h2-1
  • Target 実行プロファイル: QIR Adaptive RI

システム モデル H1 および H2 の技術仕様

システム モデル H1 およびシステム モデル H2 の技術的な詳細については、Quantinuum の製品データシートの System Model H1System Model H2 のページ Quantinuum 仕様と量子ボリューム データ リポジトリへのリンク、および Quantinuum システムの使用状況を引用する方法に関するページを参照してください。

その他の機能

Quantinuum API を介して使用できるその他の機能を次に示します。

機能 説明
中間回路測定およびリセット (MCMR) 回路の途中で量子ビットを測定し、再利用する
任意の角度 ZZ ゲート 2量子ビットの任意の角度ゲート回転を直接実行する
エミュレーター ノイズ パラメーター Quantinuum H シリーズ エミュレーターで使用されるノイズ パラメーターを試す
H シリーズ スタックでの TKET の最適化 H シリーズ スタックでさまざまなレベルの TKET 最適化を有効にして実験する

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

中間回路の測定とリセット

中間回路測定およびリセット (MCMR) を使用すると、ユーザーは回路の途中で量子ビットを測定し、リセットできます。 これにより、量子エラー修正の機能と、回路内の量子ビットを再利用する機能が可能になります。

トラップされたイオン量子ビットの内部レベル構造により、中間回路測定では量子ビットが非計算状態のままになる可能性があります。 その回路で量子ビットを再度使用する場合は、すべての中間回路測定の後にリセットを行う必要があります。 次のコード例は、これを示しています。

量子ビットのサブセットが回路の途中で測定されると、これらの測定値からの古典的な情報を使用して、回路の将来の要素を条件にすることができます。 例では、この使用法も強調表示されています。

Quantinuum システムの MCMR については、「System Model H1」および「System Model H2 ページ」の H シリーズ製品データシートを参照してください。

Q# では、 MResetZ 関数を使用して量子ビットを測定し、リセットできます。 この関数の詳細については、Q# ドキュメントの MResetZ を参照してください。

%%qsharp
import Std.Measurement.*;

operation ContinueComputationAfterReset() : Result[] {
    // Set up circuit with 2 qubits
    use qubits = Qubit[2];

    // Perform Bell Test
    H(qubits[0]);
    CNOT(qubits[0], qubits[1]);

    // Measure Qubit 1 and reset it
    let res1 = MResetZ(qubits[1]);

    // Continue additional computation, conditioned on qubits[1] measurement outcome
    if res1 == One {
         X(qubits[0]);
    }
    CNOT(qubits[0], qubits[1]);

    // Measure qubits and return results
    let res2 = Measure([PauliZ, PauliZ], qubits);
    return [res1, res2];
}

任意の角度 ZZ ゲート

Quantinuum のネイティブ ゲート セットには、任意の角度の ZZ ゲートが含まれています。 これは、多くの量子アルゴリズムとゲート シーケンスの 2 量子ビット ゲート数を減らすのに役立ちます。 Quantinuum システムの任意の角度 ZZ ゲートについては、System Model H1 および System Model H2 ページの H シリーズ製品データシートを参照してください。

Q# では、 Rzz 演算を使用して任意の角度 ZZ ゲートが実装されます。

%%qsharp
import Std.Intrinsic.*;
import Std.Measurement.*;
import Std.Arrays.*;

operation ArbitraryAngleZZExample(theta : Double) : Result[] {
    
    // Set up circuit with 2 qubits
    use qubits = Qubit[2];

    // Create array for measurement results
    mutable resultArray = [Zero, size = 2];

    H(qubits[0]);
    Rz(theta, qubits[0]);
    Rz(theta, qubits[1]);
    X(qubits[1]);

    // Add Arbitrary Angle ZZ gate
    Rzz(theta, qubits[0], qubits[1]);  

    // Measure qubits and return results
    for i in IndexRange(qubits) {
        set resultArray w/= i <- M(qubits[i]);  
    }
    
    return resultArray;
}

一般 SU(4) エンタングリング ゲート

Quantinuumのネイティブゲートセットには、一般的なSU(4)エンタングゲートが含まれています。 ハードウェアに送信された量子回路は、完全にエンタングリングする ZZ ゲートと任意の角度の RZZ ゲートにリベースされることに注意してください。 回線は、ユーザーが選択した場合にのみ General SU(4) エンタングリング ゲートにリベースされます。 Quantinuum システムの General SU(4) Entangler の詳細については、System Model H1 および System Model H2 ページの H シリーズ製品データシートを参照してください。

Q# では、General SU(4) エンタングリング ゲートは Quantinuum の QIR プロファイルを使用して実装されます。 これを使用するには、QIR プロファイル署名に一致するカスタム組み込み関数を定義し、 SU4Example 操作内でこの関数を使用します。

General SU(4) エンタングリング ゲートで回線を確実に実行するには、H シリーズ スタックで次のオプションを渡します。

  • nativetq: Rxxyyzz を使用して、他のネイティブ ゲートへの再調整を防ぎます。
  • noreduce: True 追加のコンパイラ最適化を回避するには (省略可能)。
%%qsharp
import Std.Math.*;

operation __quantum__qis__rxxyyzz__body(a1 : Double, a2 : Double, a3 : Double, q1 : Qubit, q2 : Qubit) : Unit {
    body intrinsic;
}

operation SU4Example() : Result[] {
    use qs = Qubit[2];
    
    // Add SU(4) gate
    __quantum__qis__rxxyyzz__body(PI(), PI(), PI(), qs[0], qs[1]);
    
    MResetEachZ(qs)
}

次に、操作をコンパイルします。

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

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

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

MyTarget = MyWorkspace.get_targets("quantinuum.sim.h1-1e")

# Update TKET optimization level desired
option_params = {
    "nativetq": `Rxxyyzz`,
    "noreduce": True
}

ジョブを送信するときに、 noreduce オプションを渡します。

job = MyTarget.submit(MyProgram, "Submit a program with SU(4) gate", shots = 10, input_params = option_params)
job.get_results()

エミュレーター ノイズ パラメーター

ユーザーには、Quantinuum エミュレーターのノイズ パラメーターを試すオプションがあります。 使用可能なノイズ パラメーターの一部のみが強調表示されています ここでは、Azure Quantum プロバイダーのパラメーターを渡す方法を示します。

使用可能なノイズ パラメーターの完全なセットの詳細については、System Model H1 および System Model H2 ページの H シリーズ エミュレーター製品データシートを参照してください。

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

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

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

%%qsharp
import Std.Measurement.*;
import Std.Arrays.*;
import Std.Convert.*;

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

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

操作をコンパイルします。

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

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

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

MyTarget = MyWorkspace.get_targets("quantinuum.sim.h1-1e")

# Update the parameter names desired
# Note: This is not the full set of options available. 
# For the full set, see the System Model H1 Emulator Product Data Sheet
option_params = {
    "error-params": {
        "p1": 4e-5,
        "p2": 3e-3,
        "p_meas": [3e-3, 3e-3],
        "p_init": 4e-5,
        "p_crosstalk_meas": 1e-5,
        "p_crosstalk_init": 3e-5,
        "p1_emission_ratio": 6e-6,
        "p2_emission_ratio": 2e-4
    }
}

ジョブの送信時にエミュレーター ノイズ オプションを渡します。

job = MyTarget.submit(MyProgram, "Experiment with Emulator Noise Parameters", 
                      shots = 10, 
                      input_params = option_params)
job.get_results()

エミュレーター ノイズ モデルをオフにするには、 error-model オプションを False に設定します。 既定では、これは True に設定されます。

option_params = {
    "error-model": False 
}

スタビライザー エミュレーターを使用するには、 simulator オプションを stabilizer に設定します。 既定では、これは state-vector に設定されます。

option_params = {
    "simulator": "stabilizer" 
}

H シリーズ スタックでの TKET コンパイル

Quantinuum H シリーズ システムに送信された回線は、統合ハイブリッド送信 except、H シリーズ ハードウェアの TKET コンパイル パスを介して自動的に実行されます。 これにより、H シリーズ システム用に回路を自動的に最適化し、より効率的に実行できます。

適用される特定のコンパイル パスの詳細については、 pytket-quantinuum ドキュメント、特に「 pytket-quantinuum コンパイル パス 」セクションを参照してください。

H シリーズ ソフトウェア スタックでは、適用される最適化レベルは tket-opt-level パラメーターで設定されます。 H シリーズ システムに送信されるすべての回線の既定のコンパイル設定は、最適化レベル 2 です。

TKET コンパイルパスを試して、その回線に適用される最適化前に確認したいユーザーはジョブを送信すると、pytket-quantinuum Examples フォルダーに Quantinuum_compile_without_api.ipynb ノートブックが表示されます。

スタック内の TKET コンパイルをオフにするには、別のオプション (no-opt) をoption_params内のTrueに設定できます。 たとえば、"no-opt": True のようにします。

pytketの詳細については、次のリンクを参照してください。

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

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

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

%%qsharp
import Std.Measurement.*;
import Std.Arrays.*;
import Std.Convert.*;

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

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

操作をコンパイルします。

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

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

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

MyTarget = MyWorkspace.get_targets("quantinuum.sim.h1-1e")

# Update TKET optimization level desired
option_params = {
    "tket-opt-level": 1
}

ジョブの送信時に最適化オプションを渡します。

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

技術仕様

システム モデル H1 および H2 およびシステム モデル H1 および H2 エミュレーターの技術的な詳細については、Quantinuum の製品データ シートの System Model H1 および System Model H2 ページのほか、Quantinuum 仕様と量子ボリューム データ リポジトリへのリンク、および Quantinuum システムの使用状況を引用する方法を参照してください。

Target 可用性

Quantinuum H シリーズ量子コンピューターは、継続的にアップグレードされるように設計されており、Quantinuum がゲートの忠実性、メモリ エラー、システム速度を継続的に向上させるなか、お客様は最新のハードウェア機能を利用できます。

Quantinuum のハードウェア サイクルには、商業期間と開発期間があります。 商用期間中は、キュー システムを介してジョブを処理するためにハードウェアを使用できます。 開発期間中は、アップグレードが適用されるため、ハードウェアはオフラインになります。

毎月、商用期間と開発期間に関する情報を含む予定表が Quantinuum ユーザーに送られます。 この予定表を受信していない場合は、QCsupport@quantinuum.com にメールでお問い合わせください。

targetの状態は、ジョブを処理する現在の機能を示します。 targetの可能な状態は次のとおりです。

  • 使用可能: target はオンラインであり、送信されたジョブを処理し、新しいジョブを受け入れます。
  • 機能低下: target はジョブを受け入れますが、現在はジョブを処理していません。
  • 使用不可: target はオフラインであり、新しいジョブの送信を受け入れません。

Quantinuum 量子コンピューター targetsの場合、 AvailableDegraded は商用期間に対応し、 Unavailable はアップグレードのためにマシンがオフラインになっている開発期間に対応します。

現在の状態情報は、Azure portal でワークスペースの [プロバイダー] タブから取得できます。

価格

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

制限とクォータ

Quantinuum のクォータは、Quantinuum 量子コンピューターに送信されたジョブの場合は QPU 使用クレジット ユニット 、 H-System Quantum Credit (HQC)、エミュレーターに送信されたジョブのエミュレーター HQC (eHQC) に基づいて追跡されます。

HQC と eHQC はジョブの実行コストを計算するために使用され、次の式に基づいて計算されます。

$$ HQC = 5 + C(N_{1q} + 10 N_{2q} + 5 N_m)/5000 $$

どこで:

  • $N_{1q}$ は、回路内の単一量子ビット演算の数です。
  • $N_{2q}$ は、回路内のネイティブな 2 量子ビット演算の数です。 ネイティブ ゲートは、複数の単一量子ビット ゲートまでの CNOT と同等です。
  • $N_{m}$ は、回路内の State Preparation and Measurement (SPAM) 演算の数です。これには、初期の暗黙的な状態準備、中間と最終の測定値、および状態のリセットが含まれます。
  • $C$ はショットの回数です。

Note

HQC の総コストには、条件付き分岐または制御フロー全体のすべてのゲートと測定値が含まれます。 これは、統合ハイブリッド ジョブに大きな影響を与える可能性があります。

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

Note

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