チュートリアル: 量子化学の問題のリソースを見積もる

このチュートリアルでは、 Azure Quantum Resource Estimator を使用して、ハミルトニアンのエネルギーを 1 mHa の化学精度で計算するために必要な物理リソースを推定します。

このチュートリアルでは、次のことについて説明します。

  • GitHub からサンプル リポジトリを複製します。
  • 化学モデリングおよびシミュレーション アプリケーションの引数パラメーターとして FCIDUMP ファイルを使用します。
  • 二重分解化学サンプルである大規模な問題のリソース推定を実行します。

前提条件

  • Python と Pip がインストールされた Python 環境。

  • Azure Quantum Development Kit および 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# サンプル リポジトリ estimation/df-chemistry にあります。 サンプルを実行するには、ローカル コンピューターでリポジトリを複製することをお勧めします。

リポジトリを複製するには、ターミナルから次のコマンドを実行します。

git clone https://github.com/microsoft/qsharp.git

FCIDUMP ファイルを選択して渡す

この例では、ハミルトニアンを FCIDUMP 形式の 1 電子と 2 電子の積分の観点から説明します。 次の表から FCIDUMP ファイルのいずれかを選択するか、コンピューターまたはオンラインで使用可能な独自の FCIDUMP ファイルを、パブリックにアクセス可能な HTTPS URI を使用して選択できます。

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 [2Fe, 2S] クラスターの 10 個の電子、40 個の軌道アクティブ空間
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 ファイルを実行し、 -f または --fcidumpfileを使用して、FCIDUMP ファイル名または URI を引数として渡す必要があります。

usage: chemistry.py [-h] [-f FCIDUMPFILE]

options:
  -h, --help           
  -f FCIDUMPFILE, --fcidumpfile FCIDUMPFILE                      

化学サンプルを実行する

  1. Visual Studio Code で、Q# サンプル リポジトリを複製したフォルダーを開きます。

  2. 量子化学サンプルが配置されているディレクトリに新しいターミナル ターミナル -> 新しいターミナルnavigate を開きます。 たとえば、ローカル コンピューターで Q# サンプル リポジトリを複製した場合、パスは qsharp/samples/estimation/df-chemistry

  3. chemistry.py ファイルを実行し、FCIDUMP ファイルpass を実行します。 たとえば、次のコマンドは、FCIDUMP ファイル n2-10e-8o を作業フォルダーにダウンロードし、それに対してリソース見積もりを実行します。

    python chemistry.py -f https://aka.ms/fcidump/n2-10e-8o
    

    その後、ダウンロードしたファイルへのパスをスクリプトに渡すことができます。

    python chemistry.py -f n2-10e-8o
    
  4. リソース推定の result がターミナルに表示されます。 たとえば、次の出力は、 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
    

Note

chemistry.py ファイルを実行すると、作業フォルダーに resource_estimation.json ファイルが作成されます。 resource_estimation.json ファイルには、Resource Estimator の詳細な 出力が含まれています。 これらは、ジョブ パラメーター、物理カウント、T ファクトリ プロパティ、論理カウント、論理量子ビット プロパティです。

パラメーター target 変更する

  1. chemistry.py ファイルを開きます。

  2. リソース推定の 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"}})
    
  3. 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 ベースの自己ペースのチュートリアルとプログラミング演習です。