チュートリアル: 量子化学の問題のリソースを推定する
このチュートリアルでは、 Azure Quantum リソース推定器を使用して、ハミルトニアンのエネルギーを 1 mHa の化学精度で計算するために必要な物理リソースを推定する方法について説明します。
注意
Microsoft Quantum 開発キット (クラシック QDK) は、2024 年 6 月 30 日以降サポートされなくなります。 既存の QDK 開発者の場合は、量子ソリューションの開発を続けるために、新しい Azure Quantum Development Kit (Modern QDK) に移行することをお勧めします。 詳細については、「 Q# コードをモダン QDK に移行する」を参照してください。
このチュートリアルでは、次のことについて説明します。
- GitHub からサンプル リポジトリを複製します。
- 化学モデリングおよびシミュレーション アプリケーションの引数パラメーターとして FCIDUMP ファイルを使用します。
- 二要素化された化学サンプルである大規模な問題に対してリソース推定を実行します。
前提条件
Python と Pip がインストールされている Python 環境。
Azure Quantum 開発キットと Python 拡張機能がインストールされた最新バージョンの Visual Studio Code。
最新の Azure Quantum
qsharp
パッケージとnumpy
scipy
パッケージ。python -m pip install --upgrade qsharp numpy scipy
ヒント
ローカル リソース推定ツールを実行するために Azure アカウントを持っている必要はありません。
問題について説明します
このチュートリアルでは、 Phys. Rev. Research 3, 033055 (2021) で説明されている量子ビット化アルゴリズムの物理リソース推定値を評価し、1 mHa の化学精度に対するユーザー提供ハミルトニアンのエネルギーを計算します。
ハミルトニアンのエネルギーを計算する量子アルゴリズムは、 二重分解量子ビット化に基づいています。 ハミルトニアンは、HTTPS URI を介して使用できる提供された FCIDUMP (完全な構成相互作用) ファイルで、1 電子と 2 電子の積分の観点から記述されています。
量子ビット化アプローチは量子位相推定に基づいていますが、ハミルトニアン 行列 $H$ から標準の$U = \exp{(-i H/\alpha)}$ を構築する代わりに、$U = \exp{(-i \sin^{-1} (H/\alpha))}$ を受け取ります。これは通常、実装できるリソースが少なくなります。 二重分解を使用すると、$H$ は、軌道と圧縮の慎重な選択の組み合わせによってコンパクトに表されます。
Visual Studio Code でサンプルを読み込む
このチュートリアルのコードは、 Q# サンプル リポジトリの 推定/df-chemistry にあります。 サンプルを実行するには、ローカル コンピューターでリポジトリを複製することをお勧めします。
リポジトリを複製するには、ターミナルから次のコマンドを実行します。
git clone https://github.com/microsoft/qsharp.git
FCIDUMP ファイルを選択して渡す
この例では、ハミルトニアンを FCIDUMP 形式の 1 電子と 2 電子の積分の観点から説明します。 次の表から FCIDUMP ファイルのいずれかを選択するか、パブリックにアクセス可能な HTTPS URI を使用して、コンピューターまたはオンラインで使用できる独自の FCIDUMP ファイルを選択できます。
URI | インスタンス名 | 説明 |
---|---|---|
https://aka.ms/fcidump/XVIII-cas4-fb-64e-56o | XVIII-cas4-fb-64e56o | 64電子、ルテニウム触媒炭素固定サイクルにおける安定な中間体の1つの56軌道活性空間。 |
https://aka.ms/fcidump/nitrogenase-54e-54o | nitrogenase_54orbital | 54個の電子、54個のオービタルは 、窒素酵素の活性コアの活性空間である。 |
https://aka.ms/fcidump/fe2s2-10e-40o | fe2s2-10e-40o | 10電子、40軌道活性空間の [2Fe,2S]クラスター。 |
https://aka.ms/fcidump/polyyne-24e-24o | polyyne-24e-24o | 24電子、ポリイン分子の24軌道活性空間。 |
https://aka.ms/fcidump/n2-10e-8o | n2-10e-8o | 10電子、8軌道活性空間の彼は3オングストローム距離で窒素を解離した。 |
FCIDUMP ファイルを渡すには、chemistry.py ファイルを実行し、 または --fcidumpfile
を使用して -f
FCIDUMP ファイル名または URI を引数として渡す必要があります。
usage: chemistry.py [-h] [-f FCIDUMPFILE]
options:
-h, --help
-f FCIDUMPFILE, --fcidumpfile FCIDUMPFILE
化学サンプルを実行する
Visual Studio Code で、Q# サンプル リポジトリを複製したフォルダーを 開きます 。
新しいターミナルである ターミナル -> 新しいターミナルを開き、量子化学サンプルが配置されているディレクトリに 移動 します。 たとえば、ローカル コンピューターで Q# サンプル リポジトリを複製する場合、パスは です
qsharp/samples/estimation/df-chemistry
。chemistry.py ファイルを実行し、FCIDUMP ファイルを渡します。 たとえば、次のコマンドは FCIDUMP ファイル n2-10e-8o を作業フォルダーにダウンロードし、それに対してリソース見積もりを実行します。
python chemistry.py -f https://aka.ms/fcidump/n2-10e-8o
その後、ダウンロードしたファイルへのパスをスクリプトに渡すことができます。
python chemistry.py -f n2-10e-8o
リソース推定の 結果 がターミナルに表示されます。 たとえば、次の出力は 、n2-10e-8o FCIDUMP ファイルのリソース推定を示しています。
Algorithm runtime: 19 mins Number of physical qubits required: 207.60k For more detailed resource counts, see file resource_estimate.json
注意
chemistry.py ファイルを実行すると、作業フォルダーに resource_estimation.json ファイルが作成されます。 resource_estimation.json ファイルには、 リソース推定器の詳細な出力が含まれています。 これらは、ジョブ パラメーター、物理カウント、T ファクトリ プロパティ、論理カウント、論理量子ビット プロパティです。
パラメーターの変更target
chemistry.py ファイルを開きます。
リソース推定のパラメーターは target 、chemistry.py ファイルの の
qsharp.estimate
呼び出しにあります。 次のコード スニペットは、このチュートリアルで使用されるパラメーターを示しています。# Get resource estimates res = qsharp.estimate(qsharp_string, params={"errorBudget": 0.01, "qubitParams": {"name": "qubit_maj_ns_e6"}, "qecScheme": {"name": "floquet_code"}})
パラメーターを変更する場合は、前の target コード スニペットを変更して変更できます。 たとえば、次のコード スニペットは、エラー予算を 0.333 に変更する方法を示しています。 詳細については、「 リソース推定器のパラメーターを target カスタマイズする」を参照してください。
# Get resource estimates res = qsharp.estimate(qsharp_string, params={"errorBudget": 0.333, "qubitParams": {"name": "qubit_maj_ns_e6"}, "qecScheme": {"name": "floquet_code"}})
量子コンピューティングの化学アプリケーションが重要なのはなぜですか?
このチュートリアルでは、量子ソリューションのリソース推定を電子構造の問題に統合する最初の手順を表します。 スケーリングされた量子コンピューターの最も重要なアプリケーションの 1 つは、量子化学の問題を解決することです。 複雑な量子機械システムのシミュレーションは、炭素捕捉、食料不安、より優れた燃料や材料の設計などの分野でブレークスルーを引き出す可能性があります。
たとえば、このサンプルで提供される FCIDUMP ファイルの 1 つは、 nitrogenase_54orbital、窒素酵素を記述しています。 この酵素が量子レベルでどのように機能するかを正確にシミュレートできれば、それを大規模に生成する方法を理解するのに役立ちます。 あなたは惑星を供給するのに十分な肥料を生産するために使用される非常にエネルギー集約的なプロセスを置き換えることができます。 これは、グローバルな二酸化炭素排出量を削減し、人口増加における食糧不安に関する懸念に対処するのに役立つ可能性があります。
次の手順
知識を深めたい場合は、試すことができるいくつかの実験を次に示します。
- いくつかのカスタム FCIDUMP ファイルを見積もる。
- カスタム量子ビット パラメーターを target 指定して、量子コンピューターの前提条件を変更します。
- Azure Quantum サンプル ギャラリーの他のリソース推定サンプル ノートブックを確認してください。
引き続き他の量子アルゴリズムおよび手法を調査します。
- チュートリアル 「グローバーの検索アルゴリズムを実装する」では、グローバーの検索アルゴリズム を使用してグラフの色分け問題を解決する Q# プログラムを記述する方法を示します。
- チュートリアル「 Q# で量子ビット レベルのプログラムを記述およびシミュレート する」では、特定の量子ビットに直接対応する Q# プログラムを記述する方法について説明します。
- チュートリアル「 Q# で量子エンタングルメントを調べる」では、Q# で量子ビットを操作して状態を変更する方法を示し、重ね合わせとエンタングルメントの効果を示します。
- Quantum Katas は、量子コンピューティングと Q# プログラミングの要素を同時に教えることを目的とした、Jupyter Notebookベースのマイペースのチュートリアルとプログラミング演習です。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示