Microsoft Quantum リソース推定器は、Microsoft Quantum Development Kit (QDK) の一部です。 この記事では、量子リソース推定器をインストールし、既定のアーキテクチャ モデルを使用して単純な Q# プログラムの見積もりを実行する方法について説明します。
Warnung
VS Code 用 QDK 拡張機能のリソース推定機能は、間もなく非推奨になります。 リソース推定を実行するには、 qdk.qrePython モジュールを使用します。
Prerequisites
この記事の手順に従うには、次のものがインストールされている必要があります。
- 最新バージョンのVisual Studio Code (VS Code)
- VS Code にインストールされている QDK 拡張機能 の最新バージョン
- VS Code の Python 拡張機能 と Jupyter 拡張機能 の最新バージョン
量子リソース推定器をインストールする
リソース推定器は、 qdk.qrePython モジュールを通じて使用できます。 リソース推定ツールを使用するには、qreを追加して最新バージョンのqdkPython パッケージをインストールします。
pip install --upgrade "qdk[qre]"
Tip
リソース推定器を使用するために、Azure アカウントを持っている必要はありません。
既定の設定で単純なリソース見積もりを実行する
基本的なリソース見積もりを実行するには、アプリケーション モデル、ハードウェア アーキテクチャ モデル、およびエラー修正モデルをリソース推定器に渡します。 次に、リソース推定器を実行して結果を取得します。 次の例では、VS Code のJupyter Notebookからリソース推定器を実行します。
アプリケーション モデルを作成する
この例では、QDK VS Code 拡張機能の Q# サンプルの 1D イシング モデル アルゴリズムを使用します。 または、既存の Q# プログラムのいずれかを使用します。
Q# プログラムを作成する
- VS Code で、新しいテキスト ファイルを作成し、
ising-1d-sample.qsとしてファイルを保存します。 - ファイルの最初の行に サンプル を入力して、Q# サンプル プログラムの一覧を表示します。
- [Ising Model (Simple 1D)] サンプルを選択し、ファイルを保存します。
アプリケーションを作成する
Q# プログラムを使用して、リソース推定器のアプリケーション モデルを作成します。
VS Code で新しいJupyter Notebook ファイルを作成するには、コマンド パレットを開き、「Create: New Jupyter Notebook」と入力します。
最初のノートブック セルで、Q# プログラムを評価します。
from pathlib import Path from qdk import qsharp qsharp.eval(Path("ising-1d-sample.qs").read_text(encoding="utf-8"))このコードは、Q# プログラムを含む
Main名前空間にqdk.codeオブジェクトを作成します。新しいセルで、Q# プログラムからリソース推定アプリケーションを作成します。
import qdk from qdk.qre.application import QSharpApplication app = QSharpApplication(qdk.code.Main)
アーキテクチャ モデルを作成する
ハードウェア アーキテクチャでは、リソース推定機能に付属する既定の GateBased モデルを使用します。
GateBasedモデルには、誤差率、ゲート時間、測定時間の入力が必要です。
新しいセルで、エラー率が $10^{-4}$ で、ゲート時間が 100 ns、測定時間が 500 ns のゲートベースのアーキテクチャを作成します。
from qdk.qre.models import GateBased
# Times are in units of nanoseconds
arch = GateBased(error_rate=1e-4, gate_time=100, measurement_time=500)
見積もりを実行する
見積もりを実行するには、 estimate 関数を使用し、次の入力を渡します。
- Application
- Architecture
- 物理命令セット (ISA) クエリ
- 最大エラー率
ISA クエリは、評価するエラー修正コードと T ファクトリ蒸留プロトコルの組み合わせをリソース推定器に伝えます。 リソース推定器は、これらの組み合わせからパレートフロンティア最適化された結果セットを見つけます。 この例では、リソース推定器に付属する既定の SurfaceCode QEC および RoundBasedFactory 蒸留プロトコルを使用します。
from qdk.qre import estimate
from qdk.qre.models import SurfaceCode, RoundBasedFactory
results = estimate(app, arch, isa_query=SurfaceCode.q() * RoundBasedFactory.q(), max_error=0.01)```
結果の表示
物理量子ビット数とプログラムの実行時間の最適な組み合わせを表示するには、 as_frame メソッドを使用して、推定結果を pandas DataFrame に表示します。
results.as_frame()
結果をプロットするには、 plot_estimates メソッドを使用し、実行時の単位を渡します。
from qdk.qre import plot_estimates
plot_estimates(results, figsize=(6, 4), runtime_unit="ms")