Share via


統合ハイブリッド コンピューティング

統合ハイブリッド コンピューティングでは、従来のプロセスと量子プロセスがまとめられ、物理量子ビットが存続している間に、中間回路の測定に基づいて量子操作の実行を従来のコードで制御できます。 入れ子になった条件、ループ、関数呼び出しなどの一般的なプログラミング手法を使用すると、1 つの量子プログラムで複雑な問題が発生し、必要なショットの数が減る可能性があります。 量子ビット再利用手法を使用すると、より少ない数の量子ビットを使用するマシンで大規模なプログラムを実行できます。

重要

統合ハイブリッド量子コンピューティングは、Visual Studio Code の Modern Quantum Development Kit (Modern QDK) 拡張機能と、このページの例の他のコンポーネント (IQ# カーネル、マジック コマンドqsharp.azure%azureモジュールなど) では現在サポートされていません。 統合ハイブリッド ジョブを実行するには、Microsoft Quantum Development Kit (クラシック QDK) を使用します。 詳細については、「従来の QDK で作業を続行する」を参照してください。

詳細については、以下を参照してください。

統合ハイブリッド量子コンピューティング

targets をサポートするようになりました

現在、Azure Quantum の統合ハイブリッド コンピューティング モデルは Quantinuumtargets でサポートされています。

Quantinuum

サポートされている機能 メモ
従来のループ 境界付きループのみ
任意の制御フロー if/else 分岐の使用
中間回路測定 従来のレジスタ リソースを利用します
量子ビットの再利用 該当なし
リアルタイムの従来のコンピューティング 32 ビット符号なし整数算術
従来のレジスタ リソースを利用します

作業の開始

統合ハイブリッド プログラミングの調査を開始するには、この記事の サンプル を確認するか、Azure Quantum ポータルのサンプル ギャラリーにある [ハイブリッド量子コンピューティング ] タブを確認することをお勧めします。

統合ハイブリッド ジョブの送信

統合ハイブリッド ジョブを送信する場合は、 を指定した後に target capability パラメーターを追加する target必要があります。 それ以外に、Azure Quantum 上の統合ハイブリッド プログラムは、通常の量子ジョブと同様に実行および管理されます。 各ジョブには 1 つのジョブ ID があり、結果は 1 つのヒストグラムです。

重要

統合ハイブリッド量子コンピューティングは、Visual Studio Code の Modern Quantum Development Kit (Modern QDK) 拡張機能と、このページの例の他のコンポーネント (IQ# カーネル、マジック コマンドqsharp.azure%azureモジュールなど) では現在サポートされていません。 統合ハイブリッド ジョブを実行するには、Microsoft Quantum Development Kit (クラシック QDK) を使用します。 詳細については、「従来の QDK で作業を続行する」を参照してください。

私Q#

Jupyter Notebookで IQ# カーネルを使用する場合は、%azure を使用します。target-capability magic コマンドと AdaptiveExecution パラメーター。

%azure.target quantinuum.sim.h1-1e
%azure.target-capability AdaptiveExecution

Python + Q#

qsharp Python パッケージを使用する場合は、 パラメーターと共に qsharp.azure.target_capability 関数をAdaptiveExecution使用します。

qsharp.azure.target("quantinuum.sim.h1-1e")
qsharp.azure.target_capability("AdaptiveExecution")

Azure CLI

Azure CLI を使用してジョブを送信する場合は、値 AdaptiveExecutionを指定して --target-capability パラメーターを追加します。

az quantum job submit \
    --target-capability AdaptiveExecution \
    --target-id quantinuum.sim.h1-1e \
    --job-name IterativePhaseEstimation \
    --shots 100 \
    --output table

セッション内での統合ハイブリッド ジョブの送信

と Python を使用して、 セッション 内で複数の統合ハイブリッド ジョブを Q# 組み合わせることができます。 セッションを送信するときに、値 AdaptiveExecutionを指定してtargetCapability入力パラメーターを追加します。

with target.open_session(name="Q# session") as session:
    target.submit(input_data=QuantumOperation, name="Job 1", input_params={"count":100, "targetCapability":"AdaptiveExecution"}) # First job submission
    target.submit(input_data=QuantumOperation, name="Job 2", input_params={"count":200, "targetCapability":"AdaptiveExecution"}) # Second job submission
    target.submit(input_data=QuantumOperation, name="Job 3", input_params={"count":300, "targetCapability":"AdaptiveExecution"}) # Third job submission

詳細については、「 セッションの概要」を参照してください。

注意

セッションはすべての量子コンピューティング ハードウェア プロバイダーで使用できますが、統合ハイブリッド量子コンピューティング ジョブが Quantinuum targetsで現在サポートされていることに注意してください。

統合ハイブリッド ジョブのコストの見積もり

最初にエミュレーターで実行することで、Quantinuum ハードウェアで統合ハイブリッド ジョブを実行するコストを見積もることができます。

エミュレーターで正常に実行された後:

  1. Azure Quantum ワークスペースで、[ ジョブ管理] を選択します。
  2. 送信したジョブを選択します。
  3. [ ジョブの詳細 ] ポップアップで、[ コスト見積もり ] を選択して、使用された eHQC (Quantinuum エミュレーター クレジット) の数を表示します。 この数は、Quantinuum ハードウェアでジョブを実行するために必要な HQC (Quantinuum 量子クレジット) の数に直接変換されます。

Cost estimation (コスト見積もり)

注意

Quantinuum は回線全体の登録を解除し、条件付きで実行されているかどうかに関係なく、すべてのコード パスのコストを計算します。

統合ハイブリッド サンプル

次のサンプルは、統合ハイブリッド コンピューティングの現在の機能セットを示しています。

  • 絡み合った GHZ 状態を確認する
  • 3 量子ビットの繰り返し
  • 反復的な位相推定

前提条件

  • Azure Quantum を初めて使用する場合は、量子ハードウェアに対してサンプルを実行するための Azure サブスクリプションと Azure Quantum ワークスペースが必要です。 詳細については、「Azure Quantum ワークスペースを作成する」を参照してください。
  • VS Code とローカル Quantum Development Kit 環境での設定。 詳細については、「 を設定する Quantum Development Kit」を参照してください。
  • VS Code に最新バージョンの Quantum Development Kit (0.27.258160) があることを確認します。
    • VS Code で Ctrl + Shift + X を 選択し、"Microsoft Quantum Development Kit" を検索します。

この記事のサンプルは、Visual Studio (VS) コードで実行するように設定されており、組み込みの Azure コマンド ライン インターフェイス (CLI) を使用してジョブを Azure Quantum に送信します。 これらのサンプルとその他のサンプルのJupyter Notebookバージョンを実行するには、Azure portal ワークスペースにログインし、サンプル ギャラリーの [ハイブリッド量子コンピューティング] タブからサンプルを表示します。 クラウドでノートブックを実行するか、ダウンロードしてローカルで実行できます。

統合ハイブリッド プログラムに関する問題のトラブルシューティングについては、「 統合ハイブリッドのトラブルシューティング」を参照してください。

このサンプルでは、量子コンピューティング バックエンドによって完全に処理された、同じプログラムで従来の命令と量子命令をブレンドする方法について説明します。

このサンプルに関する注意すべき機能:

  • ループと量子ビットの測定は、量子ビットが一貫している間に発生します。
  • このルーチンは、従来のコンピューティング操作と量子コンピューティング操作を組み合わせたものです。
  • QPU (FPGA など) の横で実行されている特殊なハイ パフォーマンス ハードウェアのプログラミングを学習する必要はありません。
  • ハイブリッド機能を統合せずに同等のプログラムを実行するには、すべての中間測定結果を返し、データに対して後処理を実行する必要があります。

VS Code プロジェクトを作成する

  1. VS Code で、CheckGHZ という名前の新しいQ#スタンドアロン コンソール アプリケーション プロジェクトを作成します。

    1. [コマンド パレット>Q#の表示>] を選択します。新しいプロジェクト>の作成スタンドアロン コンソール アプリケーション
  2. CheckGHZ.csproj の構成を次のように置き換えます。

    <Project Sdk="Microsoft.Quantum.Sdk/0.27.258160">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net6.0</TargetFramework>
        <ExecutionTarget>quantinuum</ExecutionTarget>
        <TargetCapability>AdaptiveExecution</TargetCapability>
      </PropertyGroup>
    </Project>
    
  3. Program.qs のコードを次のように置き換えます。

    namespace Microsoft.Quantum.Samples {
    
        open Microsoft.Quantum.Measurement;
        open Microsoft.Quantum.Intrinsic;
    
        /// # Summary
        /// Counts the number of times measurements of a prepared GHZ state did not match the expected correlations.
        @EntryPoint() // The EntryPoint attribute is used to mark that this operation is where a quantum program will start running.
        operation CheckGHZ() : Int {
            use q = Qubit[3];
            mutable mismatch = 0;
            for _ in 1..10 {
                // Prepare the GHZ state.
                H(q[0]);
                CNOT(q[0], q[1]);
                CNOT(q[1], q[2]);
    
                // Measures and resets the 3 qubits
                let (r0, r1, r2) = (MResetZ(q[0]), MResetZ(q[1]), MResetZ(q[2]));
    
                // Adjusts classical value based on qubit measurement results
                if not (r0 == r1 and r1 == r2) {
                    set mismatch += 1;
                }
            }
            return mismatch;
        }
    }
    
  4. VS Code のターミナル ウィンドウから Azure Quantum ワークスペースに接続し、既定のリソースを設定します。

    az login
    

    注意

    az quantum workspace list を実行して、ログイン後にターミナル ウィンドウに Azure サブスクリプション IDリソース グループ、ワークスペースを一覧表示できます。 または、Azure Quantum ワークスペースの [概要] ページのAzure portalで確認することもできます。

    az account set --subscription <MySubscriptionID>
    
    az quantum workspace set --resource-group <MyResourceGroup> --workspace <MyWorkspace> --location <MyLocation>
    
  5. ジョブを送信し、結果を表示します。 この実行では、約 10.65 eHQC (Quantinuum エミュレーターの課金単位) が使用されます

    az quantum job submit \
      --target-id quantinuum.sim.h1-1e \
      --job-name CheckGHZ \
      --target-capability AdaptiveExecution \
      --shots 50
    
    az quantum job output \
      -o table \
      --job-id [job-id]
    

GHZ 出力

次の手順

分散ハイブリッド コンピューティング