Resource Estimator を使用して target パラメーターの複数の構成を実行する方法

この記事では、 target パラメーターの複数の構成を実行し、 Azure Quantum Resource Estimator を使用して比較する方法について説明します。

リソース推定ツールを実行する方法については、「 リソース推定ツールを使用する方法を参照してください。

前提条件

リソース推定ツールを実行するには、次の前提条件が必要です。

Resource Estimator で Q# プログラムを実行するには、次のものが必要です。

VS Code で Python を使用する場合は、次のものが必要です。

  • VS Code の最新バージョンの Python および Jupyter 拡張機能をインストールします。

  • 最新の Azure Quantum qsharp パッケージ。

    python -m pip install --upgrade qsharp 
    

リソース推定器にジョブを送信するには、次のものが必要です。


リソース推定機能を使用したバッチ処理

Azure Quantum Resource Estimator を使用すると、ジョブ パラメーター ( items とも呼ばれる複数の構成を持つジョブを 1 つのジョブとして送信し、同じ量子プログラムで複数のジョブを再実行しないようにすることができます。

リソース推定ジョブは、2 種類のジョブ パラメーターから構成されます。

  • ターゲット パラメーター: 量子ビット モデル、QEC スキーム、エラー予算、コンポーネント レベルの制約、蒸留ユニット。
  • 操作引数: プログラムに渡すことができる引数 (QIR エントリ ポイントに引数が含まれている場合)。

1 つの項目は、ジョブ パラメーターの 1 つの構成で構成されます。これは、 target パラメーターと操作引数の 1 つの構成です。 いくつかの項目は、ジョブ パラメーターの配列として表されます。

複数のアイテムを 1 つのジョブとして送信するシナリオ:

  • same操作引数を持つ複数のtargetパラメーターをすべての項目に送信します。
  • すべてのアイテムで、different操作引数を持つ複数のtargetパラメーターを送信します。
  • 複数の結果を表形式で簡単に比較できます。
  • グラフ内の複数の結果を簡単に比較できます。

さまざまな言語を使用したジョブのバッチ処理

リソース推定のバッチ処理の例として、目的のタブを選択します。

Q# プログラムのリソースを見積もる場合は、target パラメーターの複数の構成 (バッチ処理とも呼ばれますを実行できます。 Q#でのバッチ処理は、VS Code の Jupyter Notebook で実行できます

バッチ推定を実行するには、qsharp.estimate関数のparams パラメーターにtargetパラメーターの一覧を渡します。 次の例では、 target パラメーターの 2 つの構成を 1 つのジョブとして送信する方法を示します。 最初の構成では既定の target パラメーターが使用され、2 つ目の構成では qubit_maj_ns_e6 量子ビット パラメーターと floquet_code QEC スキームが使用されます。

Q# プログラムと同じ Jupyter Notebook に新しいセルを追加し、次のコードを実行します。

result_batch = qsharp.estimate("RunProgram()", params=
                [{}, # Default parameters
                {
                    "qubitParams": {
                        "name": "qubit_maj_ns_e6"
                    },
                    "qecScheme": {
                        "name": "floquet_code"
                    }
                }])
result_batch.summary_data_frame(labels=["Gate-based ns, 10⁻³", "Majorana ns, 10⁻⁶"])

EstimatorParams クラスを使用して、推定targetパラメーターの一覧を作成することもできます。 次のコードは、 target パラメーターの 6 つの構成を 1 つのジョブとして送信する方法を示しています。

from qsharp.estimator import EstimatorParams, QubitParams, QECScheme

labels = ["Gate-based µs, 10⁻³", "Gate-based µs, 10⁻⁴", "Gate-based ns, 10⁻³", "Gate-based ns, 10⁻⁴", "Majorana ns, 10⁻⁴", "Majorana ns, 10⁻⁶"]

params = EstimatorParams(num_items=6)
params.error_budget = 0.333
params.items[0].qubit_params.name = QubitParams.GATE_US_E3
params.items[1].qubit_params.name = QubitParams.GATE_US_E4
params.items[2].qubit_params.name = QubitParams.GATE_NS_E3
params.items[3].qubit_params.name = QubitParams.GATE_NS_E4
params.items[4].qubit_params.name = QubitParams.MAJ_NS_E4
params.items[4].qec_scheme.name = QECScheme.FLOQUET_CODE
params.items[5].qubit_params.name = QubitParams.MAJ_NS_E6
params.items[5].qec_scheme.name = QECScheme.FLOQUET_CODE

qsharp.estimate("RunProgram()", params=params).summary_data_frame(labels=labels)

Note

リソース推定ツールの使用中に問題が発生した場合は、 トラブルシューティング ページを確認するか、 AzureQuantumInfo@microsoft.comにお問い合わせください。