IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ テンセント・テクノロジー・(シェンジェン)・カンパニー・リミテッドの特許一覧

特許7589884量子回路シミュレーション方法、装置、コンピュータ機器及びプログラム
<>
  • 特許-量子回路シミュレーション方法、装置、コンピュータ機器及びプログラム 図1
  • 特許-量子回路シミュレーション方法、装置、コンピュータ機器及びプログラム 図2
  • 特許-量子回路シミュレーション方法、装置、コンピュータ機器及びプログラム 図3
  • 特許-量子回路シミュレーション方法、装置、コンピュータ機器及びプログラム 図4
  • 特許-量子回路シミュレーション方法、装置、コンピュータ機器及びプログラム 図5
  • 特許-量子回路シミュレーション方法、装置、コンピュータ機器及びプログラム 図6
  • 特許-量子回路シミュレーション方法、装置、コンピュータ機器及びプログラム 図7
  • 特許-量子回路シミュレーション方法、装置、コンピュータ機器及びプログラム 図8
  • 特許-量子回路シミュレーション方法、装置、コンピュータ機器及びプログラム 図9
  • 特許-量子回路シミュレーション方法、装置、コンピュータ機器及びプログラム 図10
  • 特許-量子回路シミュレーション方法、装置、コンピュータ機器及びプログラム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-18
(45)【発行日】2024-11-26
(54)【発明の名称】量子回路シミュレーション方法、装置、コンピュータ機器及びプログラム
(51)【国際特許分類】
   G06N 10/80 20220101AFI20241119BHJP
   G06N 10/20 20220101ALI20241119BHJP
【FI】
G06N10/80
G06N10/20
【請求項の数】 17
(21)【出願番号】P 2023538707
(86)(22)【出願日】2022-11-22
(65)【公表番号】
(43)【公表日】2024-02-22
(86)【国際出願番号】 CN2022133406
(87)【国際公開番号】W WO2023138202
(87)【国際公開日】2023-07-27
【審査請求日】2023-06-22
(31)【優先権主張番号】202210077584.7
(32)【優先日】2022-01-24
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】514187420
【氏名又は名称】テンセント・テクノロジー・(シェンジェン)・カンパニー・リミテッド
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ヂャン,シーシン
(72)【発明者】
【氏名】ワン,ヂョウチェン
(72)【発明者】
【氏名】ヂャン,シェンユ
【審査官】宮司 卓佳
(56)【参考文献】
【文献】特開2019-185486(JP,A)
【文献】特開2020-166802(JP,A)
【文献】Yasunari Suzuki他,Qulacs: a fast and versatile quantum circuit simulator for research purpose,arXiv.org, [online],Cornell University,2021年10月05日,p.1-p.34,[令和6年6月27日検索], インターネット <URL: https://arxiv.org/pdf/2011.13524>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 10/00-10/80
(57)【特許請求の範囲】
【請求項1】
コンピュータ機器が実行する量子回路シミュレーション方法であって、
量子回路シミュレーションのための元の関数を取得し、前記元の関数における並列化を必要とする第1の入力パラメータを決定するステップと、
前記元の関数及び前記第1の入力パラメータに基づいて、前記元の関数を目的関数に変換するステップであって、前記目的関数の入力パラメータは、前記第1の入力パラメータに対応する変換後の第1の入力パラメータを含み、前記変換後の第1の入力パラメータに対応するテンソルは、前記第1の入力パラメータに対応する複数の並列化されたテンソルを結合して得られた結果である、ステップと、
前記目的関数の入力パラメータに基づいて、前記目的関数に対応する実行結果を取得するステップと、
前記目的関数に対応する実行結果に基づいて、前記量子回路シミュレーションを実行するステップと、を含み、
前記第1の入力パラメータは、目標量子回路の回路変分パラメータ、目標量子回路の回路ノイズを生成するための乱数、目標量子回路の回路構造を生成するための制御パラメータ、及び目標量子回路についての回路測定を実行するための測定パラメータのうちの少なくとも1つを含み、異なる前記制御パラメータは、異なる回路構造を生成するために使用され、異なる前記測定パラメータは、異なる測定結果を生成するために使用される、方法。
【請求項2】
前記目的関数の入力パラメータに基づいて、前記目的関数に対応する実行結果を取得するステップは、
前記目的関数の入力パラメータに含まれる前記変換後の第1の入力パラメータをベクトル並列化方式で処理し、前記目的関数に対応する実行結果を取得するステップ、を含む、請求項1に記載の方法。
【請求項3】
前記目的関数の入力パラメータに含まれる前記変換後の第1の入力パラメータをベクトル並列化方式で処理し、前記目的関数に対応する実行結果を取得するステップは、
ベクトル命令セットを用いて前記変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、前記目的関数に対応する実行結果を取得するステップであって、前記ベクトル命令セットは、プロセッサが前記変換後の第1の入力パラメータに対応するテンソルに対して前記ベクトル並列化処理を実行するための実行可能命令を含む、ステップを含む、請求項2に記載の方法。
【請求項4】
前記元の関数は、前記量子回路シミュレーションにおける入力波動関数を処理するステップを実現するために使用され、
前記第1の入力パラメータは、目標量子回路の入力波動関数を含み、
前記ベクトル命令セットを用いて前記変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、前記目的関数に対応する実行結果を取得するステップは、
前記変換後の第1の入力パラメータに対応するテンソルを取得するステップであって、前記変換後の第1の入力パラメータに対応するテンソルは、前記目標量子回路の複数の並列化された入力波動関数を結合して得られた結果である、ステップと、
前記ベクトル命令セットを用いて前記変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、前記目的関数に対応する実行結果を取得するステップであって、前記目的関数に対応する実行結果は、前記複数の並列化された入力波動関数のそれぞれに対応する処理結果を含む、ステップと、を含む、請求項3に記載の方法。
【請求項5】
前記元の関数は、前記量子回路シミュレーションにおける回路変分パラメータを最適化するステップを実現するために使用され、
前記第1の入力パラメータは、目標量子回路の回路変分パラメータを含み、
前記ベクトル命令セットを用いて前記変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、前記目的関数に対応する実行結果を取得するステップは、
前記変換後の第1の入力パラメータに対応するテンソルを取得するステップであって、前記変換後の第1の入力パラメータに対応するテンソルは、前記目標量子回路の複数組の並列化された回路変分パラメータを結合して得られた結果である、ステップと、
前記ベクトル命令セットを用いて前記変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、前記目的関数に対応する実行結果を取得するステップであって、前記目的関数に対応する実行結果は、前記複数組の並列化された回路変分パラメータのそれぞれに対応する最適化結果を含む、ステップと、を含む、請求項3に記載の方法。
【請求項6】
前記元の関数は、前記量子回路シミュレーションにおける回路ノイズを生成するステップを実現するために使用され、
前記第1の入力パラメータは、目標量子回路の回路ノイズを生成するための乱数を含み、
前記ベクトル命令セットを用いて前記変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、前記目的関数に対応する実行結果を取得するステップは、
前記変換後の第1の入力パラメータに対応するテンソルを取得するステップであって、前記変換後の第1の入力パラメータに対応するテンソルは、前記目標量子回路の回路ノイズを生成するための複数組の並列化された乱数を結合して得られた結果である、ステップと、
前記ベクトル命令セットを用いて前記変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、前記目的関数に対応する実行結果を取得するステップであって、前記目的関数に対応する実行結果は、前記複数の並列化された乱数のそれぞれに対応するノイズシミュレーション結果を含む、ステップと、を含む、請求項3に記載の方法。
【請求項7】
前記元の関数は、前記量子回路シミュレーションにおける回路構造を生成するステップを実現するために使用され、
前記第1の入力パラメータは、目標量子回路の回路構造を生成するための制御パラメータを含み、異なる制御パラメータは、異なる回路構造を生成するために使用され、
前記ベクトル命令セットを用いて前記変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、前記目的関数に対応する実行結果を取得するステップは、
前記変換後の第1の入力パラメータに対応するテンソルを取得するステップであって、前記変換後の第1の入力パラメータに対応するテンソルは、前記目標量子回路の回路構造を生成するための複数組の並列化された制御パラメータを結合して得られた結果である、ステップと、
前記ベクトル命令セットを用いて前記変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、前記目的関数に対応する実行結果を取得するステップであって、前記目的関数に対応する実行結果は、前記複数組の並列化された制御パラメータのそれぞれに対応する回路構造の生成結果を含む、ステップと、を含む、請求項3に記載の方法。
【請求項8】
前記元の関数は、前記量子回路シミュレーションにおける回路測定を実行するステップを実現するために使用され、
前記第1の入力パラメータは、目標量子回路についての回路測定を実行するための測定パラメータを含み、異なる測定パラメータは、異なる測定結果を生成するために使用され、
前記ベクトル命令セットを用いて前記変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、前記目的関数に対応する実行結果を取得するステップは、
前記変換後の第1の入力パラメータに対応するテンソルを取得するステップであって、前記変換後の第1の入力パラメータに対応するテンソルは、前記目標量子回路についての回路測定を実行するための複数組の並列化された測定パラメータを結合して得られた結果である、ステップと、
前記ベクトル命令セットを用いて前記変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、前記目的関数に対応する実行結果を取得するステップであって、前記目的関数に対応する実行結果は、前記複数組の並列化された測定パラメータのそれぞれに対応する測定結果を含む、ステップと、を含む、請求項3に記載の方法。
【請求項9】
コンピュータ機器が実行する量子回路シミュレーション方法であって、
量子回路シミュレーションのための元の関数を取得し、前記元の関数における並列化を必要とする第1の入力パラメータを決定するステップと、
前記元の関数及び前記第1の入力パラメータに基づいて、前記元の関数を目的関数に変換するステップであって、前記目的関数の入力パラメータは、前記第1の入力パラメータに対応する変換後の第1の入力パラメータを含み、前記変換後の第1の入力パラメータに対応するテンソルは、前記第1の入力パラメータに対応する複数の並列化されたテンソルを結合して得られた結果である、ステップと、
前記目的関数の入力パラメータに基づいて、前記目的関数に対応する実行結果を取得するステップと、
前記目的関数に対応する実行結果に基づいて、前記量子回路シミュレーションを実行するステップと、を含み、
前記目的関数を取得する際に、
前記元の関数の入力パラメータに並列化を必要としない目標入力パラメータが含まれる場合、前記元の関数における前記第1の入力パラメータを前記変換後の第1の入力パラメータに修正し、前記目標入力パラメータを維持し、前記目的関数を取得し、或いは、
前記元の関数の入力パラメータに並列化を必要としない目標入力パラメータが含まれない場合、前記元の関数における前記第1の入力パラメータを前記変換後の第1の入力パラメータに修正し、前記目的関数を取得する、方法。
【請求項10】
コンピュータ機器が実行する量子回路シミュレーション方法であって、
量子回路シミュレーションのための元の関数を取得し、前記元の関数における並列化を必要とする第1の入力パラメータを決定するステップと、
前記元の関数及び前記第1の入力パラメータに基づいて、前記元の関数を目的関数に変換するステップであって、前記目的関数の入力パラメータは、前記第1の入力パラメータに対応する変換後の第1の入力パラメータを含み、前記変換後の第1の入力パラメータに対応するテンソルは、前記第1の入力パラメータに対応する複数の並列化されたテンソルを結合して得られた結果である、ステップと、
前記目的関数の入力パラメータに基づいて、前記目的関数に対応する実行結果を取得するステップと、
前記目的関数に対応する実行結果に基づいて、前記量子回路シミュレーションを実行するステップと、を含み、
前記元の関数及び前記第1の入力パラメータに基づいて、前記元の関数を目的関数に変換するステップは、
関数変換インターフェースを呼び出し、前記関数変換インターフェースに前記元の関数及び第1の情報を伝送するステップであって、前記第1の情報は、前記元の関数における並列化を必要とする第1の入力パラメータを示すために使用される、ステップと、
前記関数変換インターフェースにより前記第1の情報に基づいて前記元の関数を前記目的関数に変換するステップと、を含む、方法。
【請求項11】
前記関数変換インターフェースに第2の情報を伝送するステップであって、前記第2の情報は、前記元の関数における微分演算を必要とする第2の入力パラメータを示すために使用される、ステップをさらに含み、
前記関数変換インターフェースにより前記第1の情報に基づいて前記元の関数を前記目的関数に変換するステップは、
前記関数変換インターフェースにより前記第1の情報及び前記第2の情報に基づいて前記元の関数を前記目的関数に変換するステップ、を含み、
前記目的関数は、前記第2の入力パラメータに対する前記元の関数の微分係数情報をさらに出力する、請求項10に記載の方法。
【請求項12】
前記関数変換インターフェースは、第1のインターフェース及び第2のインターフェースを含み、
前記第1のインターフェースは、前記第1の情報に基づいて前記元の関数を前記目的関数に変換し、
前記第2のインターフェースは、前記第1の情報及び前記第2の情報に基づいて前記元の関数を前記目的関数に変換する、請求項11に記載の方法。
【請求項13】
前記関数変換インターフェースは、機械学習ライブラリにカプセル化されたアプリケーションプログラミングインターフェース(API)であり、
前記機械学習ライブラリは、前記目的関数を実行するためのベクトル命令セットを提供する、請求項10に記載の方法。
【請求項14】
前記第1の入力パラメータに対応する複数の並列化されたテンソルを目標次元において結合して、前記変換後の第1の入力パラメータに対応するテンソルを取得し、
前記変換後の第1の入力パラメータに対応するテンソルの前記目標次元におけるサイズは、前記第1の入力パラメータに対応する並列化されたテンソルの数に対応する、請求項1に記載の方法。
【請求項15】
量子回路シミュレーション装置であって、
量子回路シミュレーションのための元の関数を取得し、前記元の関数における並列化を必要とする第1の入力パラメータを決定する関数取得モジュールと、
前記元の関数及び前記第1の入力パラメータに基づいて、前記元の関数を目的関数に変換する関数変換モジュールであって、前記目的関数の入力パラメータは、前記第1の入力パラメータに対応する変換後の第1の入力パラメータを含み、前記変換後の第1の入力パラメータに対応するテンソルは、前記第1の入力パラメータに対応する複数の並列化されたテンソルを結合して得られた結果である、関数変換モジュールと、
前記目的関数の入力パラメータに基づいて、前記目的関数に対応する実行結果を取得する関数実行モジュールと、
前記目的関数に対応する実行結果に基づいて、前記量子回路シミュレーションを実行する回路シミュレーションモジュールと、を含み、
前記第1の入力パラメータは、目標量子回路の回路変分パラメータ、目標量子回路の回路ノイズを生成するための乱数、目標量子回路の回路構造を生成するための制御パラメータ、及び目標量子回路についての回路測定を実行するための測定パラメータのうちの少なくとも1つを含み、異なる前記制御パラメータは、異なる回路構造を生成するために使用され、異なる前記測定パラメータは、異なる測定結果を生成するために使用される、装置。
【請求項16】
プロセッサと、コンピュータプログラムが記憶されたメモリと、を含むコンピュータ機器であって、前記コンピュータプログラムは、請求項1乃至14の何れかに記載の方法を実現するように前記プロセッサによりロードされて実行される、コンピュータ機器。
【請求項17】
請求項1乃至14の何れかに記載の方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、2022年1月24日に出願した出願番号が202210077584.7であり、発明の名称が「量子回路シミュレーション方法、装置、機器、記憶媒体及びプログラム製品」である中国特許出願に基づく優先権を主張し、その全ての内容を参照により本発明に援用する。
【0002】
本発明の実施例は、量子技術分野に関し、特に量子回路シミュレーション方法、装置、機器、記憶媒体及びプログラム製品に関する。
【背景技術】
【0003】
量子回路シミュレーションは、古典コンピュータと数値計算の方式により、量子コンピュータの動作をシミュレート又は近似する。
【0004】
現在、量子回路シミュレーションの効率は高くない。
【発明の概要】
【0005】
本発明の実施例は、量子回路シミュレーション方法、装置、機器、記憶媒体及びプログラム製品を提供する。その技術的手段は、以下の通りである。
【0006】
本発明の実施例の1つの態様では、コンピュータ機器が実行する量子回路シミュレーション方法であって、量子回路シミュレーションのための元の関数を取得し、前記元の関数における並列化を必要とする第1の入力パラメータを決定するステップと、前記元の関数及び前記第1の入力パラメータに基づいて、前記元の関数を目的関数に変換するステップであって、前記目的関数の入力パラメータは、前記第1の入力パラメータに対応する変換後の第1の入力パラメータを含み、前記変換後の第1の入力パラメータに対応するテンソルは、前記第1の入力パラメータに対応する複数の並列化されたテンソルを結合して得られた結果である、ステップと、前記目的関数の入力パラメータに基づいて、前記目的関数に対応する実行結果を取得するステップと、前記目的関数に対応する実行結果に基づいて、前記量子回路シミュレーションを実行するステップと、を含む、方法を提供する。
【0007】
本発明の実施例のもう1つの態様では、量子回路シミュレーション装置であって、量子回路シミュレーションのための元の関数を取得し、前記元の関数における並列化を必要とする第1の入力パラメータを決定する関数取得モジュールと、前記元の関数及び前記第1の入力パラメータに基づいて、前記元の関数を目的関数に変換する関数変換モジュールであって、前記目的関数の入力パラメータは、前記第1の入力パラメータに対応する変換後の第1の入力パラメータを含み、前記変換後の第1の入力パラメータに対応するテンソルは、前記第1の入力パラメータに対応する複数の並列化されたテンソルを結合して得られた結果である、関数変換モジュールと、前記目的関数の入力パラメータに基づいて、前記目的関数に対応する実行結果を取得する関数実行モジュールと、前記目的関数に対応する実行結果に基づいて、前記量子回路シミュレーションを実行する回路シミュレーションモジュールと、を含む、装置を提供する。
【0008】
本発明の実施例のもう1つの態様では、プロセッサと、コンピュータプログラムが記憶されたメモリと、を含むコンピュータ機器であって、前記コンピュータプログラムは、上記の量子回路シミュレーション方法を実現するように前記プロセッサによりロードされて実行される、コンピュータ機器を提供する。
【0009】
本発明の実施例のもう1つの態様では、コンピュータプログラムが記憶されたコンピュータ読み取り可能な記憶媒体であって、前記コンピュータプログラムは、上記の量子回路シミュレーション方法を実現するように、プロセッサによりロードされて実行される、記憶媒体を提供する。
【0010】
本発明の実施例のもう1つの態様では、コンピュータ読み取り可能な記憶媒体に記憶されたコンピュータプログラムを含むコンピュータプログラム製品であって、プロセッサは、上記の量子回路シミュレーション方法を実現するように、前記コンピュータ読み取り可能な記憶媒体から前記コンピュータプログラムを読み取って実行する、コンピュータプログラム製品を提供する。
【0011】
本発明の実施例に係る技術的手段は、少なくとも以下の有利な効果を奏する。
【0012】
量子回路シミュレーションにベクトル並列化の思想を導入し、即ち、元の関数を目的関数に変換し、該目的関数の入力パラメータは並列化を必要とする第1の入力パラメータに対応する変換後の第1の入力パラメータを含み、該変換後の第1の入力パラメータに対応するテンソルは第1の入力パラメータに対応する複数の並列化されたテンソルを結合して得られた結果であり、目的関数を実行することによって、本来の複数回実行する必要のある計算プロセスを1回の計算プロセスに並列化して実行することができるため、1回の計算と同一の時間だけで完成することができ、量子回路シミュレーションの効率を十分に向上させることができる。
【図面の簡単な説明】
【0013】
図1】本発明の1つの実施例に係る量子回路シミュレーション方法のフローチャートである。
図2】本発明の1つの実施例に係るvmapインターフェースの機能の概略図である。
図3】本発明のもう1つの実施例に係る量子回路シミュレーション方法のフローチャートである。
図4】本発明の1つの実施例に係る目標量子回路の数値シミュレーションの概略図である。
図5】本発明の1つの実施例に係る入力波動関数の並列的な処理の概略図である。
図6】本発明の1つの実施例に係る回路変分パラメータの並列的な最適化の概略図である。
図7】本発明の1つの実施例に係るテンソルネットワークに含まれるパラメータ化された構造情報の概略図である。
図8】本発明の1つの実施例に係る回路構造の並列的な生成の概略図である。
図9】本発明の1つの実施例に係る実験結果の概略図である。
図10】本発明の1つの実施例に係る量子回路シミュレーション装置のブロック図である。
図11】本発明の1つの実施例に係るコンピュータ機器の概略図である。
【発明を実施するための形態】
【0014】
本発明の目的、解決手段、利点をより明確にするために、以下は、図面を参照しながら本発明の実施形態をさらに詳細に説明する。
【0015】
本発明の技術的スキームを説明する前に、本発明に関連する幾つかの重要な用語を説明する。
【0016】
1.量子計算:量子論理に基づく計算方式であり、データを記憶する基本ユニットは量子ビット(qubit)である。
【0017】
2.量子ビット:量子計算の基本単位である。従来のコンピュータは、バイナリの基本単位として0と1を使っている。量子計算は、それと異なって、0と1を同時に処理することができ、システムは0と1の線形重ね合わせ状態
(外1)
にあることができる。ここで、α、βは、0と1の複素数確率幅を表し、そのモジュロの2乗|α|、|β|は、それぞれ0と1の確率を表す。
【0018】
3.量子回路:量子汎用コンピュータの表現の1つであり、対応する量子アルゴリズム/プログラムの量子ゲートモデルでのハードウェア実現を代表する。量子回路に量子ゲートを制御する可変パラメータが含まれる場合、パラメータ化量子回路(Parameterized Quantum Circuit:PQC)又は変分量子回路(Variational Quantum Circuit:VQC)と称され、両者は同一の概念である。
【0019】
4.ハミルトニアン:量子システムの総エネルギーのエルミート共役を表す行列である。ハミルトニアンは、システムの総エネルギーを表す物理学的用語であり、通常はHで表される。
【0020】
5.固有状態(eigenstate):ハミルトニアン行列Hについて、方程式
(外2)
を満たす解は、Hの固有状態
(外3)
と称され、固有エネルギーEを有する。基底状態は、量子システムのエネルギーが最も低い固有状態に対応する。
【0021】
6.量子古典ハイブリッド計算:内層が量子回路(例えばPQC)を用いて対応する物理量又は損失関数を計算し、外層が従来の古典最適化器を用いて量子回路変分パラメータを調整する計算パラダイムであり、最大限度に量子計算の優勢を発揮でき、潜在力で量子優勢を証明する重要な方向の一つと信じられる。一般に、このような量子古典ハイブリッド計算のパラダイムは、変分量子アルゴリズムと称されることもある。
【0022】
7.NISQ(Noisy Intermediate-Scale Quantum):最近の中規模のノイズのある量子ハードウェアであり、量子計算の発展が現在の段階と研究の重点方向である。この段階の量子計算は、一時的に規模とノイズの制限のため、汎用計算のエンジンとして適用することができないが、一部の問題では、最強の古典コンピュータを超える結果を達成することができ、通常、量子超越性又は量子優位性と称される。
【0023】
8.変分量子固有ソルバー(Variational Quantum Eigensolver:VQE):変分回路(即ちPQC/VQC)により特定の量子システムの基底状態エネルギーの推定を実現し、典型的な量子古典ハイブリッド計算パラダイムであり、量子化学領域に広く応用されている。
【0024】
9.Pauli string(パウリ文字列):異なる格子点における複数のパウリ行列の直積からなる項では、一般のハミルトニアンは、通常、1組のパウリ文字列の和に分解できる。VQEの測定も、通常、パウリ文字列分解に従って項ごとに測定される。各パウリ文字列の期待値は、量子回路で複数回の測定により平均値をとることで推定することができる。
【0025】
10.ビット文字列(bitstring、古典的なビット列とも称される):0、1からなる数字の列である。量子回路の毎回の測定で得られた古典的な結果は、測定基底でのスピン配置の上下に応じてそれぞれ0、1で表すことができるため、全体の一回の測定結果は1つのビット文字列に対応する。各パウリ文字列を測定して得られた計測値は、ビット文字列の計算で与えられる。
【0026】
11.量子回路のソフトウェアシミュレーション:古典コンピュータと数値計算の方式により、量子コンピュータの動作をシミュレート又は近似する。量子回路のソフトウェアシミュレーションは「量子回路シミュレーション」と略称される。
【0027】
12.ベクトル並列化:ベクトル並列化は、元の関数の各演算子を一つずつハードウェアでサポートするベクトル化により実現される。これによって、上位層関数の高速並列を実現する。この実装は、通常、静的マップコンパイルと共に実行される。例えば、関数f(x)=2×xに対して、1と入力する場合に2を返し、即ち、f(1)=2となる。ベクトル並列化バージョンfv(x)は、fv([1,2])=[2,4]を実現できる。このプロセスは、順次計算ではなく、ハードウェアでのベクトル命令セット(ベクトル化命令セットとも称される)を用いて同時に計算できるため、fv([1,2])を計算する時間はf(1)と略同じであり、f(1)、f(2)を順次計算する時間に比べて半分程度になる。ベクトルの次元(並列次元/batch次元)の大きさがさらに大きくなると、加速がより顕著になる。この例では、f(x)は元の関数であり、乗算は唯一に出現する演算子であり、この計算のベクトル化のサポートは、例えばCPU(Central Processing Unit:中央処理装置)又はGPU(Graphics Processing Unit:グラフィックスプロセッサ)などのハードウェアでのベクトル命令セットに依存する。上位層関数とは、ここのfを意味し、ハードウェアの詳細やfの下位層の実装を考慮することなく、最近の機械学習フレームワークにカプセル化されたインターフェースを利用して、そのベクトル並列化を実現することができる。静的マップのコンパイルプロセスは、最近の機械学習フレームワークにより提供される、上位層の計算API(Application Programming Interface:アプリケーションプログラミングインターフェース)のコンパイルをハードウェアの下位層操作に融合するプロセスであり、数値計算の高速化を実現することができる。
【0028】
13.パウリ演算子:パウリ行列とも呼ばれ、3つの2×2のユニタリエルミート複素行列(ユニタリ行列とも称され)であり、通常はギリシャ文字σ(シグマ)で表される。ここで、パウリX演算子は、
(外4)
であり、パウリY演算子は、
(外5)
であり、バブルZ演算子は
(外6)
である。
【0029】
14.微分可能構造探索(Differentiable Architecture Search:DARTS):よく使われているNAS(Neural Architecture Search:ニューラルネットワーク構造探索)スキームの一つであり、異なるノード間の複数の操作層を重みで加算することによって、スーパーネットワーク(super network)においてエンドツーエンドの微分計算と勾配降下探索を行い、ニューラルネットワーク構造探索の速度を大幅に向上させることができる。DARTSは、離散的な候補構造を探索することではなく、探索空間を連続的にすることで、勾配降下により検証セットの性能に応じてネットワーク構造の最適化することができる。非効率的なブラックボックス探索と比較して、勾配に基づく最適化アルゴリズムにより、DARTSは、現在の最高レベルのパフォーマンスに匹敵し、計算量が桁違いに少なくなる。
【0030】
15.量子構造探索(Quantum Architecture Search:QAS):量子回路の構造、モード及びレイアウトに対して自動化及びプログラム化探索を試みる一連の作業とスキームの総称である。従来の量子構造探索の作業は、通常、貪欲アルゴリズム、強化学習又は遺伝子アルゴリズムをそのコア技術とする。比較的に新しい微分可能構造探索技術は、ハイスループットでバッチごとに量子回路構造の優劣を反復的に評価することができる。
【0031】
16.テンソルネットワーク(tensor network):一連のテンソルとそれらの間の接続の情報であり、より少ない情報で高次元のテンソルを表現することができる。また、それぞれの量子回路を1つのテンソル回路ネットワークにマッピングできるため、テンソル回路ネットワークを縮約することで、量子回路をシミュレートすることができる。
【0032】
量子回路シミュレーションの応用シナリオでは、並列化を必要とする幾つかの次元について、対応する複数の計算を実現するために、通常、単純な直列的なループ計算を行い、即ち、単純なfor loopを行う。この方式の並列度は0である。従って、並列化すべき次元の大きさが1000であるとすると、ソフトウェアシミュレーションを実現するためには単回計算の1000倍の時間が必要となる。
【0033】
わずかに最適化されたスキームの1つは、次元の並列化を必要とする異なる計算が異なるプロセスに分散して同時に計算されるように、マルチプロセス技術又はマルチスレッド技術を利用して並列化すべき計算部分を加速することである。しかし、このスキームは、通常、ハードウェアアーキテクチャとオペレーティングシステムにより制限され、様々なハードウェアに応じて個別に実装する必要がある。これは、マルチプロセス及びマルチスレッドにより実現される上位層のプログラムインターフェースは、ハードウェアの詳細及びオペレーティングシステムに大きく依存するため、異なるハードウェア及びソフトウェアで実行されると、コードを書き換える必要があり、コードの再利用性が低いためである。従って、開発及び使用のコストが大幅に増加すると共に、GPUやTPU(Tensor Processing Unit:テンソルプロセッサ)などの異種ハードウェアでは、マルチプロセスとマルチスレッドのサポートは十分ではない。マルチプロセスの場合、各タスクはシングルプロセスで計算されるだけであり、ベクトル操作セット(即ち、ハードウェアの元のベクトル操作セットのサポート)を十分に利用できず、計算あたりの時間にも悪影響を与えてしまう。また、このようなマルチプロセスの並列化は、CPUコアの数に制限され、単一のCPUは、通常、数又は数十の計算モジュールの同時実行を可能にするだけであり、並列化されるべき次元が1000である場合、完了するために単回計算の数十倍以上の時間を必要とする。
【0034】
本発明は、ベクトル並列化の思想を量子回路シミュレーションに導入することを提案する。本発明におけるベクトル並列化は、本質的に並列次元を線形代数の1つの余分な次元と見なし、底層の演算子からバッチ(batch)並列能力を直接的に実現し、GPUなどのハードウェアの優勢を十分に発揮することができる。例えば、並列次元サイズが1000である場合、通常、単回計算と同じ時間で済む。そのため、大規模量子シミュレーションの効率は、従来の手法よりも遥かに高い。また、該スキームは、バックエンドのハードウェアやシステムの詳細に関係なく、優れた設計インターフェースを備えているため、使用や開発に極めて便利である。
【0035】
本発明の実施例に係る量子回路シミュレーション方法では、各ステップの実行主体は、例えばPC(Personal Computer:パーソナルコンピュータ)などの古典コンピュータであってもよく、例えば、古典コンピュータにより対応するコンピュータプログラムを実行して該方法を実現してもよい。以下の方法の実施例では、説明の便宜上、各ステップの実行主体がコンピュータ機器であること一例として説明する。
【0036】
図1は、本発明の1つの実施例に係る量子回路シミュレーション方法のフローチャートである。該方法の各ステップの実行主体は、コンピュータ機器、例えば古典コンピュータである。該方法は、以下の幾つかのステップ(110~140)を含んでもよい。
【0037】
ステップ110において、量子回路シミュレーションのための元の関数を取得し、元の関数における並列化を必要とする第1の入力パラメータを決定する。
【0038】
量子回路シミュレーションのプロセスは、入力波動関数を処理するステップ、回路変分パラメータを最適化するステップ、回路ノイズを生成するステップ、回路構造を生成するステップ、回路測定を実行するステップのうちの1つ以上を含むことができる。幾つかの態様では、元の関数は、量子回路シミュレーションにおける目標ステップを実現するために使用され、該目標ステップは、入力波動関数を処理すること、回路変分パラメータを最適化すること、回路ノイズを生成すること、回路構造を生成すること、回路測定を実行することの何れかを含むが、これらに限定されない。元の関数が入力波動関数を処理する場合、該元の関数は、目標量子回路の入力波動関数を計算して対応する計算結果を取得する。元の関数が回路変分パラメータを最適化する場合、該元の関数は、目標量子回路の回路変分パラメータを最適化し、最適化された回路変分パラメータを取得する。
【0039】
元の関数の入力パラメータの数は、1つであってもよいし、複数であってもよい。上記の第1の入力パラメータとは、元の関数における並列化が必要な入力パラメータを意味する。第1の入力パラメータの数は、1つであってもよいし、複数であってもよい。一例として、元の関数fは、3つの入力パラメータを有する元の関数f(x,y,w)として表され、x、y及びwの3つの入力パラメータを含む。この元の関数fの3つの入力変数のうち、並列化が必要な入力変数をxとすると、上記の第1の入力パラメータはxであり、他の2つのパラメータyとwは並列化する必要がない。或いは、この元の関数fの3つの入力変数のうち、並列化が必要な入力変数をxとyとすると、上記の第1の入力パラメータはxとyであり、もう1つの変数wは並列化する必要がない。
【0040】
異なる元の関数に応じて、入力パラメータは異なり、並列化が必要な第1の入力パラメータも異なる。実際の応用では、元の関数が決定された後、その入力パラメータが決定され、実際の状況に応じて、並列化処理に適する1つ以上の入力パラメータを第1の入力パラメータとして選択することができる。
【0041】
ステップ120において、元の関数及び第1の入力パラメータに基づいて、元の関数を目的関数に変換する。ここで、目的関数の入力パラメータは、第1の入力パラメータに対応する変換後の第1の入力パラメータを含み、変換後の第1の入力パラメータに対応するテンソルは、第1の入力パラメータに対応する複数の並列化されたテンソルを結合して得られた結果である
目的関数の入力パラメータは、並列化が必要な第1の入力パラメータに対応する変換後の第1の入力パラメータを含む。幾つかの態様では、元の関数の入力パラメータに、並列化を必要とする第1の入力パラメータに加えて、並列化を必要としない目標入力パラメータが含まれる場合、目的関数は、以下の方式で取得されてもよい。即ち、元の関数における第1の入力パラメータを変換後の第1の入力パラメータに修正し、目標入力パラメータを維持することによって、目的関数を取得する。即ち、目的関数の入力パラメータは、該第1の入力パラメータに対応する変換後の第1の入力パラメータに加えて、上述した並列化を必要としない目標入力パラメータを含む。一例として、元の関数fをf(x,y,w)として表し、この元の関数fの3つの入力変数のうち、xとyが並列化を必要とし、wが並列化を必要しないと、目的関数f’はf’(xs,ys,w)と表してもよく、xsは入力変数xに対応する変換後xを表し、ysは入力変数yに対応する変換後yを表し、入力変数wは並列化が不要であるため変換する必要がない。
【0042】
幾つかの態様では、元の関数の入力パラメータに並列化を必要としない目標入力パラメータが含まれない場合、目的関数は、以下の方式で取得されてもよい。即ち、元の関数における第1の入力パラメータを変換後の第1の入力パラメータに修正することによって、目的関数を取得する。一例として、元の関数fはf(x,y,w)と表記され、この元の関数fの3つの入力変数が全て並列化されると仮定すると、目的関数f’はf’(xs,ys,ws)と表記でき、xsは入力変数xに対応する変換後xを表し、ysは入力変数yに対応する変換後yを表し、wsは入力変数wに対応する変換後wを表す。
【0043】
幾つかの態様では、第1の入力パラメータに対応する並列化サイズ(又は「バッチサイズ(batch size)」と称される)がnであり、nが1より大きい整数である場合、即ち、第1の入力パラメータに対応するn個のテンソルに対して並列化処理を行う場合、変換後の第1の入力パラメータに対応するテンソルは、上述のn個のテンソルの統合結果である(「結合結果」とも称される)。本発明の実施例では、テンソルは高次元配列であり、n×n×n…×n個を含み、mはテンソルの次数であり、mは正の整数である。m=1の場合、テンソルは1次元の配列、即ちベクトルである。m=2の場合、テンソルは2次元の配列、即ち行列である。なお、mは3以上の整数であってもよく、即ち、テンソルの配列の次元は無限に拡張されてもよい。
【0044】
幾つかの態様では、第1の入力パラメータに対応する複数の並列化されたテンソルを目標次元において結合して、変換後の第1の入力パラメータに対応するテンソルを取得する。ここで、変換後の第1の入力パラメータに対応するテンソルの目標次元におけるサイズは、第1の入力パラメータに対応する並列化されたテンソルの数に対応する。
【0045】
一例として、図2に示すように、元の関数f(x,y,w)において並列化される必要がある入力パラメータxの対応する並列化サイズがnであると仮定すると、入力パラメータxに対応するn個のテンソルを目標次元において結合し、該結合して得られたテンソルはxsに対応するテンソルである。幾つかの態様では、上記nの値は、2、10、50、100、200、500、1000などであってもよく、具体的には実際の需要に応じて設定されてもよく、本発明はこれに限定されない。
【0046】
ステップ130において、目的関数の入力パラメータに基づいて、目的関数に対応する実行結果を取得する。
【0047】
元の関数を目的関数に変換した後、該目的関数を実行して、対応する実行結果を取得する。幾つかの態様では、ベクトル並列化方式で目的関数を実行し、目的関数に対応する実行結果を取得する。目的関数の入力パラメータに含まれる変換後の第1の入力パラメータをベクトル並列化方式で処理し、目的関数に対応する実行結果を取得する。本発明の実施例では、ベクトル並列化の思想を量子回路シミュレーションに導入する。目的関数の入力パラメータに変換後の第1の入力パラメータが含まれるため、ベクトル並列化方式を採用して該変換後の第1の入力パラメータに対応するテンソルに対して処理を行い、シングルステップの計算により目的関数に対応する実行結果を直接的に取得する。
【0048】
元の関数の実行にかかる時間をtとし、並列化サイズをnとした場合、単純なループで元の関数をn回実行すると、全体の時間はn×tであるが、元の関数を目的関数に変換した後、ベクトル並列化で目的関数を実行する場合の時間は理論的にtであるため、n×tに比べて大幅に削減され、nの増加とともに削減効果が大きくなる。
【0049】
ステップ140において、目的関数に対応する実行結果に基づいて、量子回路シミュレーションを実行する
目的関数に対する実行結果を取得した後、量子回路シミュレーションを実行してもよい。元の関数が入力波動関数を処理することを一例にすると、対応する目的関数に対応する実行結果は、複数の入力波動関数のそれぞれに対応する処理結果を含み、後続は、該複数の入力波動関数のそれぞれに対応する処理結果に基づいて、回路変分パラメータの最適化などのプロセスを行うことができる。元の関数が回路変分パラメータを最適化することを一例にすると、対応する目的関数に対応する実行結果は、複数組の回路変分パラメータのそれぞれに対応する最適化結果を含み、後続は、該複数組の回路変分パラメータのそれぞれに対応する最適化結果に基づいて、最適な1組の回路変分パラメータを最終の目標量子回路として選択することができる。
【0050】
また、量子回路シミュレーションによって、古典コンピュータと数値計算の方式で、量子コンピュータ(又は量子回路)の動作をシミュレート又は近似することを実現し、量子回路に対する研究と設計を加速化すると共に、コストを節約することができる。
【0051】
本発明に係る技術は、量子回路シミュレーションにベクトル並列化の思想を導入し、即ち、元の関数を目的関数に変換し、該目的関数の入力パラメータは並列化を必要とする第1の入力パラメータに対応する変換後の第1の入力パラメータを含み、該変換後の第1の入力パラメータに対応するテンソルは第1の入力パラメータに対応する複数の並列化されたテンソルを結合して得られた結果であり、目的関数を実行することによって、本来の複数回実行する必要のある計算プロセスを1回の計算プロセスに並列化して実行することができるため、1回の計算と同一の時間だけで完成することができ、量子回路シミュレーションの効率を十分に向上させることができる。
【0052】
図3は、本発明のもう1つの実施例に係る量子回路シミュレーション方法のフローチャートである。該方法の各ステップの実行主体は、コンピュータ機器、例えば古典コンピュータである。この方法は、以下の幾つかのステップ(310~350)を含んでもよい。
【0053】
ステップ310において、量子回路シミュレーションのための元の関数を取得し、元の関数における並列化を必要とする第1の入力パラメータを決定する。
【0054】
ステップ310は、図1に示される実施例のステップ110と同一であり、具体的には、図1の実施例の説明を参照してもよく、本実施例ではその説明を省略する。
【0055】
ステップ320において、関数変換インターフェースを呼び出し、関数変換インターフェースに元の関数及び第1の情報を伝送する。該第1の情報は、元の関数における並列化を必要とする第1の入力パラメータを示すために使用される。
【0056】
関数変換インターフェースは、元の関数を目的の関数に変換する機能を実現するために使用される。関数変換インターフェースは、API(Application Programming Interface:アプリケーションプログラミングインターフェース)などのユーザ指向のインターフェースであってもよい。
【0057】
第1の情報は、元の関数における並列化を必要とする第1の入力パラメータを示すために使用される。幾つかの態様では、第1の情報は、元の関数における並列化を必要とする第1の入力パラメータの位置を示すために使用される。例えば、元の関数f(x,y,w)における入力変数x、y、wの位置番号は順に0,1,2であり、並列化を必要とする入力変数をxとすると、第1の情報は0である。或いは、並列化を必要とする入力変数をxとyとすると、第1の情報は0と1である。元の関数における並列化が必要な第1の入力パラメータを位置により示すことによって、正確かつ簡潔な指示を実現することができる。
【0058】
ステップ330において、関数変換インターフェースにより第1の情報に基づいて元の関数を目的関数に変換する。ここで、目的関数の入力パラメータは、第1の入力パラメータに対応する変換後の第1の入力パラメータを含み、変換後の第1の入力パラメータに対応するテンソルは、第1の入力パラメータに対応する複数の並列化されたテンソルを結合して得られた結果である。
【0059】
関数変換インターフェースは、第1の情報に基づいて、元の関数における並列化を必要とする第1の入力パラメータを決定し、その後、該第1の入力パラメータに基づいて元の関数を目的関数に変換する。例えば、元の関数における並列化を必要とする第1の入力パラメータについて、目標次元で第1の入力パラメータに対応する複数の並列化されたテンソルを結合し、変換後の第1の入力パラメータに対応するテンソルを取得する。元の関数における並列化を必要としない目標入力パラメータについて、該目標入力パラメータを目的関数の入力パラメータとしてそのまま保持する。このように、目的関数の入力パラメータは、変換後の第1の入力パラメータを含み、好ましくは、目標入力パラメータをさらに含む。関数変換インターフェースはベクトル並列化機能をサポートし、関数変換インターフェースの上述の変換により、目的関数は、複数の元の関数を並列に計算した結果を出力するために使用されてもよい。
【0060】
幾つかの態様では、関数変換インターフェースは、ベクトル並列化機能に加えて、自動微分機能をさらにサポートする。変換された目的関数は、複数の元の関数を並列に計算した結果を出力するために使用されるだけでなく、第2の入力パラメータに対する元の関数の微分係数情報を出力するためにも使用され、該第2の入力パラメータは、元の関数の入力パラメータのうちの微分演算を必要とする入力パラメータを意味する。第2の入力パラメータの数は、1つ又は複数であってもよい。また、第2の入力パラメータと第1の入力パラメータとは、同一であってもよいし、異なっていてもよい。例えば、元の関数f(x,y,w)における入力パラメータはx、y、wであり、並列化が必要な第1の入力パラメータはxであり、微分演算を必要とする第2の入力パラメータもxである。或いは、並列化が必要な第1の入力パラメータはxとyであり、微分演算を必要とする入第2の入力パラメータはxである。或いは、並列化が必要な第1の入力パラメータはwであり、微分演算を必要とする入第2の入力パラメータはyである。
【0061】
幾つかの態様では、関数変換インターフェースを呼び出す際に、該関数変換インターフェースに元の関数、第1の情報及び第2の情報を伝送し、該第2の情報は、元の関数における微分演算を必要とする第2の入力パラメータを示すために使用される。幾つかの態様では、第2の情報は、元の関数における微分演算を必要とする第2の入力パラメータの位置を示すために使用される。例えば、元の関数f(x,y,w)における入力変数x、y、wの位置番号は順に0,1,2であり、並列化が必要な第1の入力変数をxとyとし,微分演算を必要とする第2の入力変数をxとすると、第1の情報は0と1であり、第2の情報は0である。それに応じて、関数変換インターフェースを介して、第1の情報及び第2の情報に基づいて、元の関数を目的関数に変換し、目的関数は、複数の元の関数を並列に計算した結果を出力すると共に、第2の入力パラメータに対する元の関数の微分係数情報を出力する。
【0062】
幾つかの態様では、関数変換インターフェースは、第1のインターフェース及び第2のインターフェースを含む。第1のインターフェースは、第1の情報に基づいて元の関数を目的関数に変換する。第2のインターフェースは、第1の情報と第2の情報に基づいて、元の関数を目的関数に変換する。即ち、第1のインターフェースは、ベクトル並列化機能をサポートする関数変換インターフェースであり、言い換えれば、第1のインターフェースは、ベクトル並列化機能のみをサポートする関数変換インターフェースである。第2のインターフェースは、ベクトル並列化機能と自動微分機能をサポートする関数変換インターフェースである。
【0063】
一例として、第1のインターフェースは、vmapインターフェースであり、このvmapインターフェースの関数シグネチャは、例えば、vmap(f:Callable[…、Any]、vectorized_argnums:Union[int,Sequence[int]]=0)→Callable[…,Any]である。ここで、fは並列化されるべき元の関数を表し、vectorized_argnumsは、並列化が必要な第1の入力パラメータを示し、例えば、並列化が必要な第1の入力パラメータの位置を示すために使用される。上記のvmapインターフェースの関数シグネチャにおいて、f:Callable[…、Any]は、元の関数fが任意の入出力をテンソルとする関数であることを表す。vectorized_argnums:Union[int,Sequence[int]]=0は、vectorized_argnumsが数値(例えば0又は1又は2又は3など)又は数値列(例えば0,1又は0,1,2又は1,2など)であり、vectorized_argnumsのデフォルト値が0である。出力は、Callable[…、Any]として定義される。
【0064】
図2に示すように、一例として、vmapインターフェースの機能の概略図を示す。任意の元の関数f(例えば、任意の入力と出力がテンソルの元の関数)に対して、vmapインターフェースによる関数変換を経て、もう1つの目的関数f’が出力される。f’=vmap(f,vectorized_argnums=(0,1))であり、ここで、vectorized_argnums=(0,1)は、元の関数fにおける並列化が必要な第1の入力変数の位置番号0と1であり、即ちxとyは並列化が必要であり、wは並列化が不要であることを表す。この目的関数f’の入力形式(即ち、入力パラメータのタイプと形状)は元の関数fの入力形式と同一であるが、vectorized_argnumsで指示された位置での入力パラメータについて、対応するテンソル形状は元の関数fの対応する入力テンソルより1次元多い(即ち、図2における縦の次元は、元の関数fには存在しない)、その次元の大きさをnとし、nは1よりも大きい整数であり、このnはバッチサイズとも称される。vmapインターフェースを変換して得られた目的関数f’の最終的な計算効果はn次の元の関数fを計算することと等価であり、毎回の元の関数fの入力は非vectorized_argnums位置のパラメータとvectorized_argnums位置の変数の1つ下の次元のスライスである。図2では、同一の色のテンソルは1つのスライスであり、図2の破線枠で示すように1つのスライスである。しかし、このn回の元の関数fへの呼び出しは、下位層を融合して統一的な演算子として並列に同時計算することができる。
【0065】
一例として、第2のインターフェースは、vectorized_value_and_gradインターフェースであり、vvagインターフェースと略記することができる。vvagインターフェースの関数シグネチャは、例えば、vectorized_value_and_grad(f:Callable[…,Any]、argnums:Union[int,Sequence[int]]=0,vectorized_argnums:Union[int,vectorized[int]]=0)→Callable[…,Tuple[Tensor,Tensor]]である。ここで、fは、並列化されるべき元の関数を表し、vectorized_argnumsは、並列化が必要な第1の入力パラメータ、例えば、並列化が必要な第1の入力パラメータの位置を示すために使用され、argnumsは、微分演算が必要な第2の入力パラメータ、例えば、微分演算が必要な第2の入力パラメータの位置を示すために使用される。上記のvvagインターフェースの関数シグネチャにおいて、f:Callable[…、Any]は、元の関数fが任意の入力と出力がテンソルである関数であることを表す。vectorized_argnums:Union[int,Sequence[int]]=0は、vectorized_argnumsが数値(例えば、0又は1又は2又は3など)又は数値列(例えば、0,1又は0,1,2又は1,2など)であることを意味し、vectorized_argnumsのデフォルト値は0である。Callable:…[int,vectorized[int]]=0は、argnumsが数値(例えば、0又は1又は2又は3など)又は数値列(0,1又は0,1,2又は1,2など)であり、Unionのデフォルト値が0であることを意味する。出力はCallable[…、Tuple[Tensor、Tensor]]と定義され、出力が2つのテンソルを含むことを意味し、1つのテンソルは、元の関数fを複数回の並列に計算した結果であり、もう1つのテンソルは、元の関数fがargnumsで示される位置に対する入力パラメータの微分係数情報である。
【0066】
任意の元の関数f(例えば、任意の入力と出力がテンソルである元の関数)に対して、vvagインターフェースでの関数変換により、もう1つの目的関数f’が出力される。目的関数f’がvectorized_argnumsで指示する位置の入力変数に対応するテンソル形状が元の関数fに対応する入力テンソルよりも1次元多い点について、vmapインターフェースと同様である。また、vvagインターフェースを介して変換された目的関数f’の戻り値は、複数回の元の関数fを並列に計算した結果を返すほか、元の関数fのargnumsが指示する位置に対する入力変数の微分係数情報を返す。
【0067】
一例として、vvagインターフェースに対応する数学的表現は、元の関数がfであり、この元の関数fがvvagインターフェースにより変換された目的関数がf’である。
【0068】
f’=vvag(f,argnums=k,vectorized_argnums=p)
f’(arg[0],…,arg[p],…,arg[k],…)=(v,g)
vi=f(arg[0],…,arg[p][i],…,arg[k],…)
【0069】
【数1】
【0070】
【数2】
ここで、argnums=kは、元の関数fの入力変数のうち、位置番号kの入力変数が微分演算を必要とする入力変数であることを表す。vectorized_argnums=pは、元の関数fの入力変数のうち、位置番号pの入力変数が並列化を必要とする入力変数であることを表す。arg[0],…,arg[p],…,arg[k],…は、目的関数f’の入力変数を表し、その出力はvとgの2つのテンソルである。ここで、vは複数回の元の関数fを並列に計算した結果を表し、gは元の関数fのargnumsが指示する位置に対する入力変数の微分係数情報を表す。arg[p][i]は、変換後の位置番号pの入力変数に対応するテンソルにおけるi番目のスライスを表し、並列化サイズがnである場合、iの値は範囲[0,n-1]内の整数である。p≠kの場合、
(外7)
となり、p=kの場合、
(外8)
となる。
【0071】
なお、上記実施例では、単に第1のインターフェースがvmapインターフェースであり、第2のインターフェースがvvagインターフェースであることを一例として、本発明に係る上記2つの異なる機能のインターフェースを説明した。本発明の実施例は、上記2つのインターフェースの名称を限定するものではなく、開発者が自ら設定することができる。
【0072】
幾つかの態様では、関数変換インターフェースは、機械学習ライブラリにカプセル化されたアプリケーションプログラミングインターフェース(API)であり、該機械学習ライブラリは、目的関数を実行するためのベクトル命令セットを提供する。例えば、上記の下位層の機械学習ライブラリは、tensorflow、jaxなどの機械学習ライブラリであってもよく、下位層の機械学習ライブラリには、目的関数を実行するためのベクトル命令セットが提供され、関数変換インターフェースは機械学習ライブラリにカプセル化されている。これによって、ベクトル並列化の実現が下位層のフレームワークと関係なく、関数変換インターフェースを呼び出すだけでベクトル並列化の機能を実現できることを保証する。
【0073】
ステップ340において、ベクトル命令セットを用いて変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、目的関数に対応する実行結果を取得する。
【0074】
関数変換インターフェースにより元の関数を目的関数に変換した後、さらに下位層の機械学習ライブラリにより提供されたベクトル命令セットを呼び出し、CPU、GPU又はTPUなどのハードウェアで該ベクトル命令セットを実行することによって、変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、目的関数に対応する実行結果を取得する。ベクトル命令セットは、プロセッサが変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行するための実行可能命令を含む。上記のベクトル命令セットは、CPU、GPU又はTPUなどのプロセッサにより実行できる実行可能命令を提供し、これらの実行可能命令は、例えば加算、乗算などの下位演算子の機能を実現することができる。本実施例では、CPU、GPU又はTPUなどのプロセッサでベクトル命令セットを実行する方式を採用してベクトル並列化処理を実現することで、オペレーティングシステムでマルチプロセス又はマルチスレッドを実行する場合に比べて、並列化可能数のボトルネックを克服し、並列化サイズを十分に向上させることができる。
【0075】
ステップ350において、目的関数に対応する実行結果に基づいて、量子回路シミュレーションを実行する。
【0076】
目的関数に対する実行結果を取得した後、量子回路シミュレーションを実行することができる。ステップ350は、図1に示す実施例におけるステップ140と同様であり、具体的には、図1の実施例の説明を参照してもよく、本実施例ではその説明を省略する。
【0077】
本発明に係る技術は、関数変換インターフェースを呼び出し、該関数変換インターフェースに元の関数と元の関数における並列化を必要とする第1の入力パラメータを示すための第1の情報を入力することによって、該関数変換インターフェースにより元の関数を目的関数に変換することができ、ベクトル並列化処理を実現し、元の関数の計算効率を向上させ、さらに量子回路シミュレーションの効率を向上させることができる。
【0078】
また、幾つかの態様では、関数変換インターフェースは、ベクトル並列化機能に加えて、自動微分機能をサポートするため、変換により得られた目的関数は、複数回の元の関数を並列に計算した結果に加えて、第2の入力パラメータに対する元の関数の微分係数情報を出力することができる。これによって、変分量子アルゴリズムのシナリオに特に適するため、変分量子アルゴリズムの開発及び研究をより容易にすることができる。
【0079】
以下は、ベクトル並列化の量子回路シミュレーションへの応用シナリオについて説明する。本発明の実施例では、ベクトル並列化は、量子回路シミュレーションの入力波動関数の処理、回路変分パラメータの最適化、回路ノイズの生成、回路構造の生成、回路計測の実行などのステップに適用可能であり、以下、幾つかの実施例を通して、これらの適用シナリオをそれぞれ説明する。
【0080】
図4は、本発明の1つの実施例に係る目標量子回路の数値シミュレーションの概略図である。この目標量子回路は、変分量子アルゴリズムの数値シミュレーションを実現できる。本発明に係る技術を使用することで、該シミュレーションの全ての主要な構成要素は、ベクトル並列化を好適にサポートすることができ、様々なアプリケーションシナリオにおいて量子シミュレーションを著しく加速することができる。図4に示すように、シミュレーション計算が必要となる動作として、指定された量子状態(行列積状態又はベクトルの形式)を入力し、その後、パラメータを含み、ノイズを含み得る量子回路の作用を経て、与えられたパウリ文字列を測定する形で出力状態を異なる基底で測定し、最適化の反復のために最適化関数値及び重み(weight)に関する勾配を取得する。
【0081】
図4では、目標量子回路の入力量子状態は
(外9)
として表され、目標量子回路の回路パラメータはUθとして表され、測定結果は
(外10)
として表され、最適化関数
(外11)
となり、ここで、
(外12)
はi回目の測定結果であり、iは整数であり、
(外13)
はUθの共役転置を表す。
【0082】
1.入力波動関数を並列に処理する
この例では、元の関数は、量子回路シミュレーションにおける目標ステップを実現するために使用され、該目標ステップは入力波動関数を処理するステップを含み、第1の入力パラメータは、目標量子回路の入力波動関数を含む。
【0083】
幾つかの態様では、変換後の第1の入力パラメータに対応するテンソルを取得する。該変換後の第1の入力パラメータに対応するテンソルは、目標量子回路の複数の並列化された入力波動関数を結合して得られた結果である。ベクトル命令セットを用いて変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、目的関数に対応する実行結果を取得する。ここで、目的関数に対応する実行結果は、複数の並列化された入力波動関数のそれぞれに対応する処理結果を含む。
【0084】
変分量子回路シミュレーションを一例にすると、変分量子回路シミュレーションは、入力波動関数、回路ユニタリ行列及び回路測定の3つの部分により構成される。多くのタスクでは、回路の入力波動関数は全0直積状態であり、この場合に入力波動関数を指定する必要がない。しかし、あるタスクでは、異なる入力波動関数を受け取って処理と出力を行うために、同一の回路構造が必要となる場合があり、このような場合には、入力波動関数というパラメータをベクトル並列化してシミュレーションすることが適している。
【0085】
例えば、量子機械学習のようなタスクでは、入力されたデータセットをバッチ処理し、入力されたデータのバッチの結果を毎回同時に計算する必要がある。このデータのバッチは、入力された波動関数として量子機械学習モデルに入力される入力波動関数としてエンコードされる。そのため、入力波動関数を並列に処理することで、量子機械学習のバッチ入力を容易に処理することができ、大きなbatch size(バッチサイズ)での加速を実現することができる。数値実験によると、GPUの場合、batch size=512とbatch size=1が必要とする計算時間は略同様である。これは、ベクトル並列化の基礎アーキテクチャの最適化のため、シミュレーションを直接batch size倍加速したことに相当する。
【0086】
図5は、本発明の1つの実施例に係る入力波動関数の並列的な処理の概略図である。上述したvvagインターフェースを用いることを一例として、目的関数f’=vvag(f,vectorized_argnums=0,argnums=1)、ここで、fは元の関数であり、vectorized_argnums=0は、並列化が必要な入力パラメータが目標量子回路の入力波動関数であることを表し、argnums=1は、微分演算が必要な入力パラメータが目標量子回路の重みであることを表す。目的関数f’の入力パラメータは、目標量子回路の重み51と、目標量子回路の複数の並列化された入力波動関数を結合して得られた結果52と、この目的関数f’をベクトル並列化で実行し、複数の並列化された入力波動関数のそれぞれに対応する処理結果53と、重みの微分係数情報54とを含む。そして、この複数の並列化された入力波動関数のそれぞれに対応する処理結果に基づいて、回路変分パラメータの最適化などのステップを行い、例えば、入力波動関数に対応する処理結果が所望の結果にできるだけ近くなるように、入力波動関数に対応する処理結果と所望の結果との差分に基づいて、目標量子回路の回路変分パラメータを調整してもよい。
【0087】
この例では、入力波動関数を並列に処理することによって、量子回路シミュレーションにおける入力波動関数のバッチ処理効率を十分に向上させることができる。
【0088】
2.回路変分パラメータを並列に最適化する
この例では、元の関数は、量子回路シミュレーションにおける目標ステップを実現するために使用され、この目標ステップは、回路変分パラメータを最適化することを含み、第1の入力パラメータは、目標量子回路の回路変分パラメータを含む。
【0089】
幾つかの態様では、変換後の第1の入力パラメータに対応するテンソルを取得する。該変換後の第1の入力パラメータに対応するテンソルは、目標量子回路の複数組の並列化された回路変分パラメータを結合して得られた結果である。ベクトル命令セットを用いて変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、目的関数に対応する実行結果を取得する。ここで、目的関数に対応する実行結果は、複数組の並列化された回路変分パラメータのそれぞれに対応する最適化結果を含む。
【0090】
変分量子最適化の問題では、勾配降下のパラメータは、しばしば局所極小値にとどまる。これによって、異なる初期パラメータから同一の問題に対して独立な最適化を複数回行い、その中から最適化関数を最適化するパラメータの組を選択することを要求する。このような複数回の独立した最適化の試みは、単純なループのスキームでは、時間のかかる最適化の数が倍になる。この場合、回路変分パラメータに対応する変数に対してベクトル並列化を行うことができる。
【0091】
本発明の実施例は、並列加速を用いて複数回の独立最適化を提案する。特に、VQEのような最適化が局所的に非常に小さなアルゴリズムに対して、並列な多重の最適化を同時に行い、最後に最適な収束パラメータを選択する。このような複数回の最適化の時間は、1回の最適化時間と略完全に一致する。この最適化方式をバッチのVQE(batched VQE)最適化と称される。即ち、複数回の独立した最適化の並列的な実行を下位層の演算子から実現してもよい。
【0092】
図6は、本発明の1つの実施例に係る回路変分パラメータの並列的な最適化の概略図である。上述したvvagインターフェースを用いることを一例として、目的関数f’=vvag(f,vectorized_argnums=0,argnums=0)、ここで、fは元の関数であり、vectorized_argnums=0は、並列化が必要な入力パラメータが目標量子回路の回路変分パラメータ(重み)であることを表し、argnums=0は、微分演算が必要な入力パラメータも目標量子回路の回路変分パラメータ(重み)であることを表す。目的関数f’の入力パラメータは、目標量子回路の複数組の並列化された回路変分パラメータを結合して得られた結果61と、この目的関数f’をベクトル並列化で実行して得られた複数組の並列化された回路変分パラメータのそれぞれに対応する最適化結果62と、回路変分パラメータの微分係数情報63を取得する。そして、この複数組の並列化された回路変分パラメータのそれぞれに対応する最適化結果に基づいて、最適な一組の回路変分パラメータを最終的な目標量子回路のパラメータとして選択することができる。
【0093】
この例では、回路変分パラメータを並列に最適化することによって、量子回路シミュレーションプロセスにおける回路変分パラメータに対する最適化効率を十分に向上させることができる。
【0094】
3.回路ノイズを並列に生成する
この例では、元の関数は、量子回路シミュレーションにおける目標ステップを達成するために使用され、該目標ステップは、回路ノイズを生成することを含み、第1の入力パラメータは、目標量子回路の回路ノイズを生成するための乱数を含む。
【0095】
幾つかの態様では、変換後の第1の入力パラメータに対応するテンソルを取得する。該変換後の第1の入力パラメータに対応するテンソルは、目標量子回路の回路ノイズを生成するための複数組の並列化された乱数を結合して得られた結果である。ベクトル命令セットを用いて変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、目的関数に対応する実行結果を取得する。ここで、目的関数に対応する実行結果は、複数の並列化された乱数のそれぞれに対応するノイズシミュレーション結果を含む。その後、目標量子回路の異なる乱数に対応するノイズシミュレーション結果での実行結果を観測し、異なるノイズ環境での該目標量子回路の実行状況及び実行結果の差異を取得することができる。
【0096】
モンテカルロ軌道シミュレータのシナリオでは、ノイズの異なる確率分布の挙動を異なる乱数でシミュレートする。モンテカルロ軌道シミュレータは観測量を評価するため、大量の異なる乱数配置の観測量を平均化する必要があるため、乱数というパラメータをベクトル並列化し、数十種類又は数百種類の乱数配置を同時にシミュレートすることができる。従って、本発明のスキームは、量子ノイズのモンテカルロシミュレーションを加速し、異なる乱数入力を並列化して、ノイズのモンテカルロシミュレーションをベクトル化して並列化するために使用することができる。ここで、乱数を並列次元とする動作と入力波動関数を並列次元とする動作とは類似しており、個別に模式図を示さない。
【0097】
この例では、回路ノイズを並列に生成することによって、量子回路シミュレーションプロセスにおける回路ノイズを生成する効率を十分に向上させることができる。
【0098】
以上の3つのシナリオでは、実装された関数に対して特別な処理を行うことなく、vmap又はvvagインターフェースを直接呼び出して、並列化が必要な入力パラメータの位置を指定して、APIにおけるvectorized_argnumsパラメータとしてベクトル並列化をサポートする効率的なシミュレーションに変えることができる。
【0099】
以下の2つのシナリオでは、入力パラメータが異なる場合に、対応する簡略化されたテンソルネットワークの構造が異なるように、テンソルネットワークに基づく回路シミュレータをもとに、何らかのテンソルのパラメータ化の合計効果を実現する必要がある。図7に示すように、このような局所テンソルの合計をパラメータ化し、同一の局所テンソル形状を維持してテンソルネットワーク全体に埋め込むことで、異なるテンソルネットワーク構造(又は量子回路構造)のシミュレーションのパラメータ化制御の思想を実現する。図7は、テンソルネットワークに含まれるパラメータ化された構造情報のセグメントを示しており、ここで、
(外14)
は構造パラメータである。異なるone-hot(ワンホット)ベクトルを
(外15)
とした場合、テンソルネットワークにおける注目される局所的なものはCNOT(制御NOT)ゲート(
(外16)
=(1,0,…))又はシングルビットロータリーゲート直積(
(外17)
=(0,1,…))として実現できる。より多くのサブブロックのパラメータ化構造のシミュレーションでは、各局所に独立した
(外18)
構造パラメータベクトルを導入するだけでよい。測定のパラメータ化についても同様であり、選択された測定位置の局所テンソルは、
(外19)
であればよい。ここで、λはi番目の量子ビットに対応する4次元ベクトルを表し、σ=I(I演算子は
(外20)
)、σ、σ及びσはパウリ行列X、Y及びZに対応する。この場合、1組の形状が[量子ビット,4]のパラメータテンソルを入力することによって、最後の測定に対応するパウリ文字列を直接的に制御することができる。全ての計算プロセスと即時コンパイルにより作成された計算グラフは、完全に同一であり、且つ再利用することができる。例えば、測定パラメータ[[1,0,0,0],[0,1,0,0],[0,0,0,1]]は、測定されるべき所望のパウリ文字列がIであることを表し、Xとして簡略化される。さらに重要なこととして、上記のスキームは、テンソルネットワークの全体的な静的構造を変更しないため、即時コンパイル及びテンソル縮退経路の事前最適化探索を完全にサポートすることができる。
【0100】
4.回路構成を並列に生成する
この例では、元の関数は、量子回路シミュレーションにおける目標ステップを実現するために使用され、該目標ステップは、回路構造を生成することを含み、第1の入力パラメータは、目標量子回路の回路構造を生成するための制御パラメータを含み、異なる制御パラメータは、異なる回路構造を生成するために使用される。
【0101】
幾つかの態様では、変換後の第1の入力パラメータに対応するテンソルを取得する。該変換後の第1の入力パラメータに対応するテンソルは、目標量子回路の回路構造を生成するための複数組の並列化された制御パラメータを結合して得られた結果である。ベクトル命令セットを用いて変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、目的関数に対応する実行結果を取得する。ここで、目的関数に対応する実行結果は、複数組の並列化された制御パラメータのそれぞれに対応する回路構造の生成結果を含む。
【0102】
異なる回路構造の並列化を実現するために、下位層シミュレータがテンソルネットワークに基づくシミュレータである特性を十分に利用する必要があり、異なる構造の回路部分に対して、異なる構造を代表するテンソルのパラメータ化合計を行い、即ち、これらのパラメータは、回路構造を制御すると同時に、即時コンパイルの制限を満たすことができる。これは、回路構成が変わっても、最も一般化されたパラメータ化された合計で代表されるスーパネットが、全ての可能性を固定されたテンソル形状で一般化しているため、即時コンパイルが正常に実現できるからである。
【0103】
DARTSにトリガされた微分可能量子構造探索は、一つのbatch(バッチ)において大量の異なる回路構造に対応する目標最適化関数を評価するタスクを含み、ちょうど並列化回路構造のシナリオにぴったり満足する。これによって、ベクトル並列化を有する量子ソフトウェアは、微分可能量子構造探索、即ち変分回路自動化設計の効率を著しく向上させることができる。これは、テンソルシミュレータ固有の、状態シミュレータでは実現が困難な並列パラダイムである。
【0104】
図8は、本発明の1つの実施例に係る回路構造の並列的な生成の概略図である。上述したvvagインターフェースを用いることを一例として、目的関数f’=vvag(f,vectorized_argnums=0,argnums=1)、ここで、fは元の関数であり、vectorized_argnums=0は、並列化が必要な入力パラメータが目標量子回路の回路構造の制御パラメータであることを表し、argnums=1は、微分演算が必要な入力パラメータが目標量子回路の重みであることを表す。目的関数f’の入力パラメータは、目標量子回路の重み81と、目標量子回路の回路構成の複数組の並列化された制御パラメータを結合して得られた結果82、この目的関数f’をベクトル並列化で実行して得られた複数組の並列化された制御パラメータのそれぞれに対応する回路構造の生成結果を取得して、複数組の回路構造の生成結果に基づいて得られた複数組の測定結果83と、重みに対する測定結果の微分係数情報84を含む。そして、上記の複数組の回路構造生成結果から、最適な回路構造生成結果を1つ選択し、それに基づいて実際のハードウェアでの目標量子回路の配置を行うことができる。
【0105】
この例では、回路構造を並列化して生成することによって、量子回路シミュレーションにおける回路構造の生成効率を十分に向上させることができる。
【0106】
5.回路測定を並列に実行する
この例では、元の関数は、量子回路シミュレーションにおける目標ステップを実行するために使用され、該目標ステップは、回路測定を実行することを含み、第1の入力パラメータは、目標量子回路のための回路測定を実行するための測定パラメータを含み、異なる測定パラメータは、異なる測定結果を生成するために使用される。
【0107】
幾つかの態様では、変換後の第1の入力パラメータに対応するテンソルを取得する。該変換後の第1の入力パラメータに対応するテンソルは、目標量子回路についての回路測定を実行するための複数組の並列化された測定パラメータを結合して得られた結果である。ベクトル命令セットを用いて変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、目的関数に対応する実行結果を取得する。ここで、目的関数に対応する実行結果は、複数組の並列化された測定パラメータのそれぞれに対応する測定結果を含む。その後、複数組の測定パラメータのそれぞれに対応する測定結果に基づいて、目標量子回路の実行結果を観測することができる。
【0108】
小さいサイズの体系に対して、数値シミュレーションは、完全に量子回路の最終状態出力の波動関数情報を保存することができる。この場合、測定結果に対する数値シミュレーションは様々なスキームがある。例えば、この波動関数情報を再利用し、それによって異なるパウリ文字列演算子の該波動関数での期待値を求めてもよい。また、より小さい体系がメモリにおいて完全にハミルトニアン演算子の行列形式を表すことができる場合、パウリ文字列の和を直接に1つの独立したハミルトニアン行列に結合して期待値を計算することができ、この場合に効率がより良い。
【0109】
しかし、テンソルネットワークシミュレータのみがサポートするような大きなサイズの体系では、異なるパウリ文字列に対して所望を求めるために、最終状態の波動関数(メモリに十分なスペースがない)を再利用することはできない。また、逐次縮退テンソル回路ネットワークを用いて異なる演算子の期待値を求める場合、新たに縮退経路を探すことと即時コンパイルが必要となり、多くの時間を浪費する。従って、パラメータ化回路構造の和を求めるスキームに倣って、パラメータ化回路測定の合計を実現することができるため、入力パラメータのone-hotベクトルにより対応する測定演算子のパウリ文字列を制御することができる。この場合、1回の即時コンパイルだけで、全ての異なるパウリ文字列の期待される解の求めをサポートする。さらに、測定での構造パラメータのベクトル並列化と組み合わせることで、複数のパウリ文字列を同時に効率的に計算するという期待を実現することができ、異なる測定演算子ごとに再度(即時)コンパイルする必要がない。
【0110】
この例では、メモリが完全な波動関数を格納できないことにより完全な波動関数を再利用して異なるパウリ文字列を評価できない状況に対して、パラメータ化回路測定に対してベクトル並列化を行うことで、大きな体系回路シミュレーションを効率的に実現することができる。
【0111】
以上は、本発明の技術の応用シナリオ及び対応する加速効果を説明した。一般には、GPUなどのハードウェアでは、ベクトル並列化は、並列の次元サイズにほぼ一致した加速を実現する。これによって、一般的なシナリオにおいて、単純なループ計算と比較して、数十倍から数百倍の効率向上を達成することができ、必要とされる追加の開発コストを無視でき、ユーザに対して友好である。以下は、この効率化の重要性を簡単な定量的結果によりさらに説明する。
【0112】
1.量子機械学習タスクの加速。
【0113】
上述したように、機械学習タスクでは、入力データをバッチ処理する必要があるため、入力波動関数のパラメータをベクトル並列化することで、量子機械学習の計算効率を著しく向上させることができる。異なる主流の量子ソフトウェアは、同一のパラメータ化回路をシミュレートしてMNIST判別問題を行い、図9に示すように、シングルステップでかかる時間はbatch size(バッチサイズ)の変化に従って変化する。ここで、線91は、本発明に係るベクトル並列化スキームを用いたGPUでの実行時間のbatch sizeによる変化を示し、線92は、本発明に係るベクトル並列化スキームを用いたCPUでの実行時間のbatch sizeによる変化を示し、線93は、pennylaneスキームを用いた実行時間のbatch sizeによる変化を示し、線94は、tensorflow-quantumスキームを用いた実行時間のbatch sizeによる変化を示す。この図から分かるように、本発明に係るベクトル並列化技術に基づいて、より大きいbatch sizeの場合、GPUでの計算は、他の主流ソフトウェアの100倍以上の加速を実現することができる。
【0114】
2.測定並列化による超大量子系の高効率シミュレーションの実現。
【0115】
ベクトル並列化技術によれば、波動関数を再利用できない状況での異なるパウリ文字列測定計算グラフの再利用を実現することによって、1枚のV100で100ビットを超える量子化学基底状態シミュレーションVQE問題をシミュレートすることができる。このような大きな体系で変分量子アルゴリズムの流れ全体を展示してシミュレートするのは世界で初めてである。対応する100格子点における1次元横磁場イジングモデル相転移点と1次元等方性のハイゼンベルクモデルのシミュレーションの収束結果は次の表1の通りである。100格子点VQEのような大規模な問題では、1回の最適化反復に必要な時間は秒のオーダーであり、このシミュレーションタスクは主流の量子状態に基づくシミュレータではメモリ指数の発散により実現できない。
【0116】
【表1】
本発明に係るスキームは、自分で研究されたTensorCircuit量子シミュレーションフレームワークに基づくものである。TensorCircuitは、最新の機械学習フレームワークに基づくものであり、マルチハードウェアプラットフォームとマルチソフトウェアバックエンドをサポートすると共に、自動微分、即時コンパイル、ベクトル並列化及び異種ハードウェアアクセラレーションをサポートする、次世代の量子コンピューティングシミュレーションソフトウェアである。それは、特にNISQ時代のアルゴリズムの設計、研究と開発に適合し、量子古典ハイブリッド計算パラダイムのシミュレーションを完璧に支持する。それは、完全に単純なPythonで編集され、アルゴリズムではテンソルネットをコアエンジンとし、ユーザの友好性を維持すると共に、最適化されたC++コードを超える実行効率を有する。本発明に係るスキームは、TensorCircuitフレームワークで完全に実現され、そのまま使用することができ、同種のソフトウェアを遥かに上回る効率を達成している。
【0117】
本発明のスキームとTensorCircuitプラットフォームは、NISQ時期の量子ハードウェアの検証発展と量子ソフトウェア及びアルゴリズムの設計とテストを著しく加速、強化することができる。該スキームは、NISQハードウェアで有効な量子優勢を示し、大規模な変分量子計算の関連問題を検証するために基礎を築き、量子コンピュータと量子啓発商業化の応用の可能性を加速する。
【0118】
以下は、本発明の装置の実施例であり、本発明の方法の実施例を実行するために使用することができる。本発明の装置の実施例において開示されていない詳細については、本発明の方法の実施例を参照されたい。
【0119】
図10は、本発明の1つの実施例に係る量子回路シミュレーション装置のブロック図である。該装置は、上記の量子回路シミュレーション方法を実現する機能を有し、該機能は、ハードウェアで実現されてもよいし、ハードウェアにより対応するソフトウェアを実行して実現されてもよい。該装置は、コンピュータ機器であってもよいし、コンピュータ機器に設けられていてもよい。装置1000は、関数取得モジュール1010、関数変換モジュール1020、関数実行モジュール1030、及び回路シミュレーションモジュール1040を含んでもよい。
【0120】
関数取得モジュール1010は、量子回路シミュレーションのための元の関数を取得し、元の関数における並列化を必要とする第1の入力パラメータを決定する。
【0121】
関数変換モジュール1020は、元の関数及び第1の入力パラメータに基づいて、元の関数を目的関数に変換する。ここで、目的関数の入力パラメータは、第1の入力パラメータに対応する変換後の第1の入力パラメータを含み、変換後の第1の入力パラメータに対応するテンソルは、第1の入力パラメータに対応する複数の並列化されたテンソルを結合して得られた結果である。
【0122】
関数実行モジュール1030は、目的関数の入力パラメータに基づいて、目的関数に対応する実行結果を取得する。
【0123】
回路シミュレーションモジュール1040は、目的関数に対応する実行結果に基づいて、量子回路シミュレーションを実行する。
【0124】
例示的な態様では、関数実行モジュール1030は、目的関数の入力パラメータに含まれる変換後の第1の入力パラメータをベクトル並列化方式で処理し、目的関数に対応する実行結果を取得する。
【0125】
例示的な態様では、関数実行モジュール1030は、ベクトル命令セットを用いて変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、目的関数に対応する実行結果を取得する。ベクトル命令セットは、プロセッサが変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行するための実行可能命令を含む。
【0126】
幾つかの態様では、元の関数は、量子回路シミュレーションにおける入力波動関数を処理するステップを実現するために使用され、第1の入力パラメータは、目標量子回路の入力波動関数を含む。関数実行モジュール1030は、変換後の第1の入力パラメータに対応するテンソルを取得し、変換後の第1の入力パラメータに対応するテンソルは、目標量子回路の複数の並列化された入力波動関数を結合して得られた結果であり、ベクトル命令セットを用いて変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、目的関数に対応する実行結果を取得し、目的関数に対応する実行結果は、複数の並列化された入力波動関数のそれぞれに対応する処理結果を含む。
【0127】
幾つかの態様では、元の関数は、量子回路シミュレーションにおける回路変分パラメータを最適化するステップを実現するために使用され、第1の入力パラメータは、目標量子回路の回路変分パラメータを含む。関数実行モジュール1030は、変換後の第1の入力パラメータに対応するテンソルを取得し、変換後の第1の入力パラメータに対応するテンソルは、目標量子回路の複数組の並列化された回路変分パラメータを結合して得られた結果であり、ベクトル命令セットを用いて変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、目的関数に対応する実行結果を取得し、目的関数に対応する実行結果は、複数組の並列化された回路変分パラメータのそれぞれに対応する最適化結果を含む。
【0128】
幾つかの態様では、元の関数は、量子回路シミュレーションにおける回路ノイズを生成するステップを実現するために使用され、第1の入力パラメータは、目標量子回路の回路ノイズを生成するための乱数を含む。関数実行モジュール1030は、変換後の第1の入力パラメータに対応するテンソルを取得し、変換後の第1の入力パラメータに対応するテンソルは、目標量子回路の回路ノイズを生成するための複数組の並列化された乱数を結合して得られた結果であり、ベクトル命令セットを用いて変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、目的関数に対応する実行結果を取得し、目的関数に対応する実行結果は、複数の並列化された乱数のそれぞれに対応するノイズシミュレーション結果を含む。
【0129】
幾つかの態様では、元の関数は、量子回路シミュレーションにおける回路構造を生成するステップを実現するために使用され、第1の入力パラメータは、目標量子回路の回路構造を生成するための制御パラメータを含み、異なる制御パラメータは、異なる回路構造を生成するために使用される。関数実行モジュール1030は、変換後の第1の入力パラメータに対応するテンソルを取得し、変換後の第1の入力パラメータに対応するテンソルは、目標量子回路の回路構造を生成するための複数組の並列化された制御パラメータを結合して得られた結果であり、ベクトル命令セットを用いて変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、目的関数に対応する実行結果を取得し、目的関数に対応する実行結果は、複数組の並列化された制御パラメータのそれぞれに対応する回路構造の生成結果を含む。
【0130】
幾つかの態様では、元の関数は、量子回路シミュレーションにおける回路測定を実行するステップを実現するために使用され、第1の入力パラメータは、目標量子回路についての回路測定を実行するための測定パラメータを含み、異なる測定パラメータは、異なる測定結果を生成するために使用される。関数実行モジュール1030は、変換後の第1の入力パラメータに対応するテンソルを取得し、変換後の第1の入力パラメータに対応するテンソルは、目標量子回路についての回路測定を実行するための複数組の並列化された測定パラメータを結合して得られた結果であり、ベクトル命令セットを用いて変換後の第1の入力パラメータに対応するテンソルに対してベクトル並列化処理を実行し、目的関数に対応する実行結果を取得し、目的関数に対応する実行結果は、複数組の並列化された測定パラメータのそれぞれに対応する測定結果を含む。
【0131】
例示的な態様では、目的関数を取得する際に、元の関数の入力パラメータに並列化を必要としない目標入力パラメータが含まれる場合、元の関数における第1の入力パラメータを変換後の第1の入力パラメータに修正し、目標入力パラメータを維持し、目的関数を取得し、或いは、元の関数の入力パラメータに並列化を必要としない目標入力パラメータが含まれない場合、元の関数における第1の入力パラメータを変換後の第1の入力パラメータに修正し、目的関数を取得する。
【0132】
例示的な態様では、関数変換モジュール1020は、関数変換インターフェースを呼び出し、関数変換インターフェースに元の関数及び第1の情報を伝送し、第1の情報は、元の関数における並列化を必要とする第1の入力パラメータを示すために使用され、関数変換インターフェースにより第1の情報に基づいて元の関数を目的関数に変換する。
【0133】
幾つかの態様では、関数変換モジュール1020は、関数変換インターフェースに第2の情報を伝送し、第2の情報は、元の関数における微分演算を必要とする第2の入力パラメータを示すために使用され、関数変換インターフェースにより第1の情報及び第2の情報に基づいて元の関数を目的関数に変換し、目的関数は、第2の入力パラメータに対する元の関数の微分係数情報をさらに出力する。
【0134】
幾つかの態様では、関数変換インターフェースは、第1のインターフェース及び第2のインターフェースを含み、第1のインターフェースは、第1の情報に基づいて元の関数を目的関数に変換し、第2のインターフェースは、第1の情報及び第2の情報に基づいて元の関数を目的関数に変換する。
【0135】
幾つかの態様では、関数変換インターフェースは、機械学習ライブラリにカプセル化されたアプリケーションプログラミングインターフェース(API)であり、機械学習ライブラリは、目的関数を実行するためのベクトル命令セットを提供する。
【0136】
例示的な態様では、第1の入力パラメータに対応する複数の並列化されたテンソルを目標次元において結合して、変換後の第1の入力パラメータに対応するテンソルを取得し、変換後の第1の入力パラメータに対応するテンソルの目標次元におけるサイズは、第1の入力パラメータに対応する並列化されたテンソルの数に対応する。
【0137】
本発明に係る技術は、量子回路シミュレーションにベクトル並列化の思想を導入し、即ち、元の関数を目的関数に変換し、該目的関数の入力パラメータは並列化を必要とする第1の入力パラメータに対応する変換後の第1の入力パラメータを含み、該変換後の第1の入力パラメータに対応するテンソルは第1の入力パラメータに対応する複数の並列化されたテンソルを結合して得られた結果であり、目的関数を実行することによって、本来の複数回実行する必要のある計算プロセスを1回の計算プロセスに並列化して実行することができるため、1回の計算と同一の時間だけで完成することができ、量子回路シミュレーションの効率を十分に向上させることができる。
【0138】
なお、上記の実施例に係る装置は、その機能を実現する際には、上記各機能モジュールの分割のみを例に挙げて説明したが、実際には、上記機能割り当てを必要に応じて異なる機能モジュール、即ち、機器の内部構造を異なる機能モジュールに分割して、上記機能の全部又は一部を完成させるようにしてもよい。また、上述した実施例に係る装置は、方法の実施形態と同一の概念に属するものであり、その具体的な実現過程は方法の実施形態に詳述されているので、ここでは説明しない。
【0139】
図11は、本発明の1つの実施例に係るコンピュータ機器の概略図である。このコンピュータ機器は、古典コンピュータであってもよい。該コンピュータ機器は、上記の実施例に係る量子回路シミュレーション方法を実施するために使用されてもよい。
【0140】
具体的には、コンピュータ機器1100は、処理装置(CPU(Central Processing Unit:中央処理装置)、GPU(Graphics Processing Unit:グラフィックスプロセッサ)、FPGA(Field Programmable Gate Array:フィールドプログラマブル論理ゲートアレイ)など)1101と、RAM(Random-Access Memory:ランダムアクセスメモリ)1102及びROM(Read-Only Memory:読み取り専用メモリ)1103を含むシステムメモリ1104と、システムメモリ1104と中央処理装置1101とを接続するシステムバス1105とを含む。コンピュータ機器1100は、サーバ内の様々なデバイス間の情報の伝送をサポートする基本入力/出力システム(Input Output System:I/Oシステム)1106と、オペレーティングシステム1113、アプリケーションプログラム1114及び他のプログラムモジュール1115を記憶するための大容量記憶装置1107とをさらに含む。
【0141】
好ましくは、基本入力/出力システム1106は、情報を表示するためのディスプレイ1108と、ユーザが情報を入力するためのマウス、キーボードなどの入力装置1109とを含む。なお、ディスプレイ1108及び入力装置1109は、いずれもシステムバス1105に接続された入力/出力コントローラ1110を介して中央処理装置1101に接続されている。基本入力/出力システム1106は、キーボード、マウス、又は電子タッチペンなどの複数の他のデバイスからの入力を受け付けて処理するための入力/出力コントローラ1110をさらに含んでもよい。同様に、入力/出力コントローラ1110は、ディスプレイ、プリンタ、又は他のタイプの出力デバイスに出力を提供する。
【0142】
好ましくは、大容量記憶装置1107は、システムバス1105に接続された大容量記憶コントローラ(図示せず)を介して中央処理装置1101に接続される。大容量記憶装置1107及び関連するコンピュータ読み取り可能な媒体は、コンピュータ機器1100に不揮発性記憶を提供する。即ち、大容量記憶装置1107は、ハードディスク又はCD-ROM(Compact Disc Read-Only Memory:読み取り専用CD)ドライブなどのコンピュータ読み取り可能な媒体(図示せず)を含むことができる。
【0143】
一般性を失うことなく、コンピュータ読み取り可能な媒体は、コンピュータ記憶媒体及び通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ読み取り可能なプログラム、データ構造、プログラムモジュール、又は他のデータなどの情報を記憶するための任意の方法又は技術で実装される揮発性及び不揮発性、リムーバブル及び非リムーバブル媒体を含む。コンピュータの記憶媒体には、RAM、ROM、EPROM(Erasable Programmable Read-Only Memory:書き換え可能なプログラマブル読み取り専用メモリ)、EEPROM(Electrically Erasable Programmable Read-Only Memory:電気的に書き換え可能なプログラマブル読み取り専用メモリ)、フラッシュメモリ又は他の固体ストレージ、CD-ROM、DVD(Digital Video Disc:高密度デジタルビデオディスク)又は他の光学ストレージ、カートリッジ、磁気テープ、磁気ディスクストレージ又は他の磁気ストレージデバイスが含まれる。なお、当業者には明らかなように、このコンピュータ記憶媒体は、上記に限定されない。上述したシステムメモリ1104及び大容量記憶装置1107をメモリとして総称してもよい。
【0144】
本発明の実施例によれば、コンピュータ機器1100は、インターネットなどのネットワークを介してネットワークに接続されたリモートコンピュータで動作することもできる。即ち、コンピュータ機器1100は、システムバス1105に接続されたネットワークインターフェースユニット1111を介してネットワーク1112に接続されてもよいし、ネットワークインターフェースユニット1111を使用して、他のタイプのネットワーク又はリモートコンピュータシステム(図示せず)に接続されてもよい。
【0145】
メモリは、メモリ内に格納され、上述した量子回路シミュレーション方法を実施するために1つ又は複数のプロセッサによって実行されるように構成されたコンピュータプログラムをさらに含む。
【0146】
例示的な実施例では、上述した量子回路シミュレーション方法を実現するためのコンピュータ機器をさらに提供する。幾つかの実施例では、コンピュータ機器は、古典コンピュータである。
【0147】
例示的な実施例では、コンピュータ機器のプロセッサによって実行された際に、上述した量子回路シミュレーション方法を実現するコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体をさらに提供する。
【0148】
幾つかの実施例では、コンピュータ読み取り可能な記憶媒体は、ROM(Read-Only Memory:読み取り専用メモリ)、RAM(Random-Access Memory:ランダムアクセスメモリ)、SSD(Solid State Drives:ソリッドステートドライブ)、又は光ディスクなどを含むことができる。ランダムアクセスメモリは、ReRAM(Resistance Random Access Memory:抵抗型ランダムアクセスメモリ)及びDRAM(Dynamic Random Access Memory:ダイナミックランダムアクセスメモリ)を含むことができる。
【0149】
例示的な実施例では、コンピュータ読み取り可能な記憶媒体に記憶されたコンピュータプログラムを含むコンピュータプログラム製品をさらに提供する。コンピュータ機器のプロセッサは、コンピュータ読み取り可能な記憶媒体からコンピュータプログラムを読み取り、プロセッサはコンピュータプログラムを実行し、コンピュータ機器に上記の量子回路シミュレーション方法を実行させる。
【0150】
なお、本明細書で言及される「複数」は、2つ以上を意味する。「及び/又は」は、係り先の係り受け関係を記述したものであり、AとBのように3つの関係がありうることを表し、即ち、Aが単独で存在する場合、AとBが同時に存在する場合、Bが単独で存在する場合の3つを表すことができる。文字「/」は、一般に、相互関係オブジェクトが「又は」の関係であることを表す。さらに、本明細書に記載されたステップ番号は、ステップ間の実行可能な順序を例示するに過ぎず、幾つかの他の実施例では、2つの異なる番号のステップが同時に実行されてもよいし、2つの異なる番号のステップが図示された順序とは逆の順序で実行されるように、ステップが番号の順序で実行されなくてもよく、本明細書の実施例はこれらに限定されない。
【0151】
上記は、本発明の例示的な実施例に過ぎず、本発明を限定するものではなく、本発明の主旨及び原則の範囲内でなされた修正、均等物の置換、改良などは、本発明の範囲内に含まれるものとする。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11