Resource Estimator の出力パラメーターとダイアグラムを解釈して取得する方法について説明します。 この記事では、Visual Studio Code (VS Code) の Jupyter ノートブックのリソース推定機能の結果にプログラムでアクセスする方法について説明します。
前提条件
Python と Pip がインストールされた Python 環境。
最新バージョンの VS Code または WEB 上で VS Code を開く。
Azure Quantum Development Kit、Python、および Jupyter 拡張機能がインストールされている VS Code。
最新の
qdkPython ライブラリ、jupyterのエクストラ付き。python -m pip install --upgrade qdk[jupyter]
Note
コマンド パレットから VS Code で Resource Estimator を実行した場合、次のコマンドは適用されません。 詳細については、「 Resource Estimator を実行するさまざまな方法」を参照してください。
出力パラメーター
Resource Estimator からの出力は、コンソールに出力され、プログラムからアクセスできるレポートです。 たとえば、次のコード スニペットは、すべての Resource Estimator パラメーターの値を表示します。
result['jobParams']
次の表に、各出力パラメーターのデータ型と簡単な説明を示します。
| 最上位レベルの出力パラメーター | データの種類 | Description |
|---|---|---|
status |
文字列 | ジョブの状態は、常に Succeeded。 |
jobParams |
辞書 | 入力として渡されるジョブの target パラメーター。 |
physicalCounts |
辞書 | 物理リソースの見積もり。 詳細については、「 Physical countsを参照してください。 |
physicalCountsFormatted |
辞書 | レポート データに表示する形式の物理リソース見積もり。 詳細については、「 Physical counts formatted」を参照してください。 |
logicalQubit |
辞書 | 論理量子ビット プロパティ。 詳細については、「 Logical 量子ビット」を参照してください。 |
tfactory |
辞書 | T ファクトリのプロパティ。 |
logicalCounts |
辞書 | レイアウト前の論理リソースの見積もり。 詳細については、「 Logical counts」を参照してください。 |
reportData |
辞書 | リソース推定レポートの生成データ。 |
物理カウント
physicalCounts ディクショナリには、次のエントリが含まれています。
| 出力パラメーター | データの種類 | Description |
|---|---|---|
physicalQubits |
数値 | 物理量子ビットの合計数。 |
runtime |
数値 | アルゴリズムを実行する合計ランタイム (ナノ秒単位)。 |
rqops |
数値 | 1 秒あたりの信頼性の高い量子操作の数 (QOPS)。 |
breakdown |
辞書 | 見積もりの内訳。 詳細については、「 Physical counts breakdown」を参照してください。 |
物理カウントの内訳
physicalCountsのbreakdownディクショナリには、次のエントリが含まれています。
| 出力パラメーター | データの種類 | Description |
|---|---|---|
algorithmicLogicalQubits |
数値 | アルゴリズムの実行に必要な論理量子ビット。T ファクトリのリソースは含まれません。 |
algorithmicLogicalDepth |
数値 | アルゴリズムの実行に必要な論理サイクル。T ファクトリのリソースは含まれません。 |
logicalDepth |
数値 | T ファクトリの実行時間が速くなり、アルゴリズムの実行が速くなるたびに計算される、調整された可能性のあるサイクル数。 |
numTstates |
数値 | アルゴリズムによって使用される T 状態の数。 |
clockFrequency |
数値 | 1 秒あたりの論理サイクル数。 |
numTfactories |
数値 | T ファクトリの数 (統一された T ファクトリ設計を想定)。 |
numTfactoryRuns |
数値 | すべての並列 T ファクトリを実行する頻度の数。 |
physicalQubitsForTfactories |
数値 | すべての T ファクトリの物理量子ビットの数。 |
physicalQubitsForAlgorithm |
数値 | アルゴリズム レイアウトの物理量子ビットの数。 |
requiredLogicalQubitErrorRate |
数値 | 必要な論理エラー率。 |
requiredLogicalTstateErrorRate |
数値 | 必要な論理 T 状態エラー率。 |
numTsPerRotation |
数値 | 回転あたりの T ゲートの数。 |
cliffordErrorRate |
数値 | 量子ビット パラメーターに基づくクリフォード エラー率。 |
物理カウントの書式設定
physicalCounts ディクショナリには、次のエントリが含まれています。
| 出力パラメーター | データの種類 | Description |
|---|---|---|
runtime |
文字列 | 人間に優しい文字列としての合計ランタイム。 |
rqops |
文字列 | メトリック サフィックスで書式設定された 1 秒あたりの信頼性の高い量子操作 (QOPS) の数。 |
physicalQubits |
文字列 | メトリック サフィックスを持つ物理量子ビットの合計数。 |
algorithmicLogicalQubits |
文字列 | メトリック サフィックスを持つアルゴリズム論理量子ビット。 |
algorithmicLogicalDepth |
文字列 | メトリック サフィックスを持つアルゴリズムの論理深さ。 |
logicalDepth |
文字列 | メトリック サフィックスを使用してアルゴリズムの論理深さを調整した可能性があります。 |
numTstates |
文字列 | メトリック サフィックスを持つ T 状態の数。 |
numTfactories |
文字列 | メトリック サフィックスを持つ T ファクトリ コピーの数。 |
numTfactoryRuns |
文字列 | メトリック サフィックスを持つ T ファクトリ実行の数。 |
physicalQubitsForAlgorithm |
文字列 | メトリック サフィックスを持つアルゴリズムの物理量子ビットの数。 |
physicalQubitsForTfactories |
文字列 | メトリック サフィックスを持つ T ファクトリの物理量子ビットの数。 |
physicalQubitsForTfactoriesPercentage |
文字列 | すべての T ファクトリの物理量子ビットの数 (合計に対する割合)。 |
requiredLogicalQubitErrorRate |
文字列 | 必要な論理量子ビット エラー 率が切り捨てられました。 |
requiredLogicalTstateErrorRate |
文字列 | 切り捨てられた必要な T 状態エラー率。 |
physicalQubitsPerLogicalQubit |
文字列 | メトリック サフィックスを持つ論理量子ビットあたりの物理量子ビット数。 |
logicalCycleTime |
文字列 | 人間に優しい文字列としての論理量子ビットの論理サイクル時間。 |
clockFrequency |
文字列 | 人間に優しい文字列としての 1 秒あたりの論理サイクル数。 |
logicalErrorRate |
文字列 | 論理的なエラー率が切り捨てられました。 |
tfactoryPhysicalQubits |
文字列 | メトリック サフィックス (または T ファクトリが存在しないことを示すメッセージ) を持つ T ファクトリ内の物理量子ビットの数。 |
tfactoryRuntime |
文字列 | 人間に優しい文字列 (または T ファクトリがないことを示すメッセージ) としての単一の T ファクトリのランタイム。 |
numInputTstates |
文字列 | 入力 T 状態の数 (または T ファクトリがないことを示すメッセージ)。 |
numUnitsPerRound |
文字列 | 蒸留ラウンドあたりの単位数。文字列で区切られたコンマ (または T ファクトリがないことを示すメッセージ)。 |
unitNamePerRound |
文字列 | 各蒸留ラウンドの単位名。文字列で区切られたコンマ (または T ファクトリがないことを示すメッセージ)。 |
codeDistancePerRound |
文字列 | 蒸留ラウンドごとのコード距離。文字列でコンマ区切り (または T ファクトリがないことを示すメッセージ)。 |
physicalQubitsPerRound |
文字列 | 蒸留ラウンドあたりの物理量子ビット数。文字列でコンマ区切り (または T ファクトリがないことを示すメッセージ)。 |
tfactoryRuntimePerRound |
文字列 | 各蒸留ラウンドの実行時間。コンマ区切りの人間に優しい文字列 (または T ファクトリがないことを示すメッセージ) として表示されます。 |
tstateLogicalErrorRate |
文字列 | 切り捨てられた論理 T 状態エラー 率 (または T ファクトリがないことを示すメッセージ)。 |
logicalCountsNumQubits |
文字列 | メトリック サフィックスを持つ量子ビットの数 (事前レイアウト)。 |
logicalCountsTCount |
文字列 | メトリック サフィックスを持つ T ゲートの数 (事前レイアウト)。 |
logicalCountsRotationCount |
文字列 | メトリック サフィックスを持つ回転ゲートの数 (事前レイアウト)。 |
logicalCountsRotationDepth |
文字列 | メトリック サフィックスを持つ回転深度 (事前レイアウト)。 |
logicalCountsCczCount |
文字列 | メトリック サフィックスを持つ CCZ ゲート (事前レイアウト) の数。 |
logicalCountsCcixCount |
文字列 | メトリック サフィックスを持つ CCiX ゲート (事前レイアウト) の数。 |
logicalCountsMeasurementCount |
文字列 | メトリック サフィックスを持つ単一量子ビット測定 (事前レイアウト) の数。 |
errorBudget |
文字列 | 切り捨てられた合計エラー予算。 |
errorBudgetLogical |
文字列 | 論理エラーのエラー予算が切り捨てられました。 |
errorBudgetTstates |
文字列 | エラーが発生した T 状態蒸留のエラー予算が切り捨てられました。 |
errorBudgetRotations |
文字列 | 誤った回転合成のエラー予算が切り捨てられました。 |
numTsPerRotation |
文字列 | 回転あたりの書式設定された Ts 数 (None の場合があります)。 |
論理量子ビット
physicalCounts ディクショナリには、次のエントリが含まれています。
| 出力パラメーター | データの種類 | Description |
|---|---|---|
codeDistance |
数値 | 論理量子ビットの計算されたコード距離。 |
physicalQubits |
数値 | 各論理量子ビットの物理量子ビットの数。 |
logicalCycleTime |
数値 | 1 つの論理操作を実行する時間。 |
logicalErrorRate |
数値 | 論理量子ビットの論理エラー 率。 |
論理カウント
physicalCounts ディクショナリには、次のエントリが含まれています。
| 出力パラメーター | データの種類 | Description |
|---|---|---|
numQubits |
数値 | 事前レイアウトの量子ビット数。 |
tCount |
数値 | レイアウト前の T ゲートの数。 |
rotationCount |
数値 | 回転ゲートのレイアウト前の数。 |
rotationDepth |
数値 | レイアウト前の回転深度。 |
cczCount |
数値 | CCZ ゲートのレイアウト前数。 |
ccixCount |
数値 | CCiX ゲートのレイアウト前数。 |
measurementCount |
数値 | 単一量子ビット測定の事前レイアウト数。 |
ヒント
リソース見積もりジョブに対して事前に計算された論理カウントのセットを使用する場合は、 LogicalCounts Python 操作を使用して、既知の見積もりをリソース推定器に渡すことができます。 詳細については、「 リソース推定ツールで既知の見積もりを使用する方法を参照してください。
空間図
全体的な物理リソース推定は、アルゴリズムと T ファクトリ コピーの両方に使用される物理量子ビットの合計数で構成されます。 空間図を使用して、これら 2 つの間の分布を調べることができます。
空間図は、アルゴリズムと T ファクトリに使用される物理量子ビットの割合を示しています。 T ファクトリのコピーの数は、T ファクトリの物理量子ビットの数にカウントされることに注意してください。
Jupyter Notebook では、qsharp-widgets パッケージの SpaceChart ウィジェットを使用して、空間ダイアグラムにアクセスできます。
from qdk.widgets import SpaceChart
SpaceChart(result)
アルゴリズム量子ビットと T ファクトリ量子ビットの間の物理量子ビットの合計分布を示す円グラフ。T ファクトリのコピー数と T ファクトリあたりの物理量子ビット数の内訳を含むテーブルがあります。
Pareto フロンティア推定を使用してtargetパラメーターの複数の構成を実行する場合の特定のソリューションの空間図をプロットできます。 たとえば、次のコードは、パラメーターの最初の構成と 3 番目に短いランタイムの空間図をプロットする方法を示しています。
SpaceChart(result[0], 2) # First (estimate index=0) run and third (point index=2) shortest runtime
時空間図
量子コンピューティングでは、物理量子ビットの数とアルゴリズムのランタイムの間にトレードオフがあります。 アルゴリズムの実行時間を短縮するために、可能な限り多くの物理量子ビットの割り当てを検討できます。 ただし、物理量子ビットの数は、量子ハードウェアで使用可能な物理量子ビットの数によって制限されます。 ランタイムとシステムスケールのトレードオフを理解することは、リソース推定の最も重要な側面の 1 つです。
アルゴリズムのリソースを推定するときは、時空間図を使用して、物理量子ビットの数とアルゴリズムのランタイムの間のトレードオフを視覚化できます。
Note
空間時間図で複数の最適な組み合わせを確認するには、推定の種類を Pareto フロンティア推定に設定する必要があります。 Visual Studio Code で [QDK: リソース見積もりの計算] コマンドを使用してリソース推定ツールを実行すると、既定でパレートフロンティア推定が有効になります。
時空間図を使用すると、量子ハードウェアの制約を満たす {量子ビット数とランタイム} ペアの最適な組み合わせを見つけることができます。 この図は、物理量子ビットの数と、各 {量子ビット数、ランタイム} ペアのアルゴリズムのランタイムを示しています。
Jupyter Notebook で時空間図を実行するには、EstimatesOverview パッケージのwidgets ウィジェットを使用します。
from qdk.widgets import EstimatesOverview
EstimatesOverview(result, colors=["#1f77b4", "#ff7f0e"], runNames=["e4 Surface Code", "e6 Floquet Code"])
リソース推定器の量子ビット時間図を示すスクリーンショット。
ヒント
見積もりの詳細を表示するには、図の各ポイントにマウス ポインターを合わせます。
時空間図は、同じアルゴリズムに対して target パラメーターの複数の構成を比較する場合に特に便利です。
Resource Estimator でパラメーターの複数の構成を実行するときの、時空間図と結果のテーブルを示すスクリーンショット。
Note
リソース推定ツールの使用時に問題が発生した場合は、 トラブルシューティング ページを参照するか、 AzureQuantumInfo@microsoft.comにお問い合わせください。