演習 - Azure Quantum Resource Estimator の使用を開始する
Azure Quantum Resource Estimator を使って練習してみましょう。 次の例では、Shor のアルゴリズム サンプルの物理リソースを見積もります。
qsharp と qsharp-widgets をインストールする
まず、Azure Quantum の最新パッケージである qsharp
と qsharp-widgets
をインストールします。
python -m pip install --upgrade qsharp qsharp-widgets
量子アルゴリズムを作成する
Visual Studio Code で、[表示] > [コマンド パレット] を選択して、[作成:新しい Jupyter Notebook] を選択します。
ノートブックの最初のセルで、
qsharp
パッケージをインポートします。import qsharp from qsharp_widgets import EstimateDetails
新しいセルを追加して次のコードをコピーします。
%%qsharp /// # Sample /// Random Bit /// /// # Description /// This Q# program generates a random bit by setting a qubit in a superposition /// of the computational basis states |0〉 and |1〉, and returning the measurement /// result. operation RandomBit() : Result { // Qubits are only accesible for the duration of the scope where they // are allocated and are automatically released at the end of the scope. use qubit = Qubit(); // Set the qubit in superposition by applying a Hadamard transformation. H(qubit); // Measure the qubit. There is a 50% probability of measuring either // `Zero` or `One`. let result = M(qubit); // Reset the qubit so it can be safely released. Reset(qubit); return result; }
量子アルゴリズムを見積もる
次に、既定の前提条件を使用して
RandomBit
操作の物理リソースを推定します。 新しいセルを追加して次のコードをコピーします。result = qsharp.estimate("RandomBit()") result
qsharp.estimate
関数は結果オブジェクトを作成し、これは全体的な物理リソースの総数を含むテーブルを表示するために使用できます。 最初の表は、主な物理リソースの見積もりを示しています。RandomBit
操作は 300 個の量子ビットを必要とし、量子コンピューターで実行するには 2 マイクロ秒かかります。物理リソースの見積もり Value Runtime 2 マイクロ秒 rQOPS 3.00M 物理量子ビット 300 詳しい情報が含まれているグループを折りたたんで、コストの詳細を確認できます。 たとえば、論理量子ビット パラメーター グループを折りたたんで、符号距離が 5 で、論理量子ビットあたりの物理量子ビット数が 50 であることを確認します。
論理量子ビット パラメーター Value QEC スキーム surface_code コード距離 5 物理量子ビット 50 論理サイクル時間 2 マイクロ秒 論理量子ビット エラー率 3.00E-5 交差の前因子 0.03 エラー訂正のしきい値 0.01 論理サイクル時間の数式 (4 * twoQubitGateTime
+ 2 *oneQubitMeasurementTime
) *codeDistance
物理量子ビットの数式 2 * codeDistance
*codeDistance
次のように
jobParams
フィールドを使用して、ジョブの実行に渡すことができるすべてのターゲット パラメーターにアクセスし、想定されていた既定値を確認できます。result['jobParams']
{'errorBudget': 0.001, 'qecScheme': {'crossingPrefactor': 0.03, 'errorCorrectionThreshold': 0.01, 'logicalCycleTime': '(4 * twoQubitGateTime + 2 * oneQubitMeasurementTime) * codeDistance', 'name': 'surface_code', 'physicalQubitsPerLogicalQubit': '2 * codeDistance * codeDistance'}, 'qubitParams': {'instructionSet': 'GateBased', 'name': 'qubit_gate_ns_e3', 'oneQubitGateErrorRate': 0.001, 'oneQubitGateTime': '50 ns', 'oneQubitMeasurementErrorRate': 0.001, 'oneQubitMeasurementTime': '100 ns', 'tGateErrorRate': 0.001, 'tGateTime': '50 ns', 'twoQubitGateErrorRate': 0.001, 'twoQubitGateTime': '50 ns'}}
Resource Estimator は、見積もりの既定値として、
qubit_gate_ns_e3
量子ビット モデル、surface_code
誤り訂正符号、および 0.001 のエラー バジェットを使用することがわかります。
既定値を変更し、アルゴリズムの見積もりを行う
プログラムのリソース見積もり要求を送信する際には、いくつかのオプションのパラメーターを指定できます。 カスタマイズできるターゲット パラメーターは次のとおりです。
errorBudget
:アルゴリズムで許容される合計のエラー予算qecScheme
:量子エラーの修正 (QEC) スキームqubitParams
:物理量子ビット パラメーターconstraints
:コンポーネント レベルの制約distillationUnitSpecifications
:T 工場蒸留アルゴリズムの仕様estimateType
:シングルまたはフロンティア
量子ビット モデルを変更する
Majorana ベースの量子ビット パラメーター、qubitParams
、qubit_maj_ns_e6
を使用して、同じアルゴリズムのコストを見積もることができます。
result_maj = qsharp.estimate("RandomBit()", params={
"qubitParams": {
"name": "qubit_maj_ns_e6"
}})
EstimateDetails(result_maj)
量子誤り訂正スキームを変更する
floqued QEC スキーム qecScheme
を使用して、Majorana ベースの量子ビット パラメーターで同じ例のリソース見積もりジョブを再実行できます。
result_maj = qsharp.estimate("RandomBit()", params={
"qubitParams": {
"name": "qubit_maj_ns_e6"
},
"qecScheme": {
"name": "floquet_code"
}})
EstimateDetails(result_maj)
エラー バジェットを変更する
次に、10% の errorBudget
で同じ量子回路を再実行します。
result_maj = qsharp.estimate("RandomBit()", params={
"qubitParams": {
"name": "qubit_maj_ns_e6"
},
"qecScheme": {
"name": "floquet_code"
},
"errorBudget": 0.1})
EstimateDetails(result_maj)