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

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

▶ ザ・ユニバーシティ・オブ・シカゴの特許一覧

特表2024-515983量子クラウド計算のインキューを最適化するシステム及び方法
<>
  • 特表-量子クラウド計算のインキューを最適化するシステム及び方法 図1
  • 特表-量子クラウド計算のインキューを最適化するシステム及び方法 図2
  • 特表-量子クラウド計算のインキューを最適化するシステム及び方法 図3
  • 特表-量子クラウド計算のインキューを最適化するシステム及び方法 図4
  • 特表-量子クラウド計算のインキューを最適化するシステム及び方法 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-11
(54)【発明の名称】量子クラウド計算のインキューを最適化するシステム及び方法
(51)【国際特許分類】
   G06N 10/20 20220101AFI20240404BHJP
   G06F 9/48 20060101ALI20240404BHJP
【FI】
G06N10/20
G06F9/48 300A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023566423
(86)(22)【出願日】2022-04-13
(85)【翻訳文提出日】2023-11-22
(86)【国際出願番号】 US2022024618
(87)【国際公開番号】W WO2022231846
(87)【国際公開日】2022-11-03
(31)【優先権主張番号】63/180,369
(32)【優先日】2021-04-27
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】63/252,371
(32)【優先日】2021-10-05
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】63/306,196
(32)【優先日】2022-02-03
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】523405236
【氏名又は名称】ザ・ユニバーシティ・オブ・シカゴ
(74)【代理人】
【識別番号】110001379
【氏名又は名称】弁理士法人大島特許事務所
(72)【発明者】
【氏名】ラヴィ、ゴクル・スブラマニアン
(72)【発明者】
【氏名】チョン、フレデリック・ティー
(72)【発明者】
【氏名】ゴーカレー、プラナヴ
(72)【発明者】
【氏名】スミス、ケイトリン・エヌ
(57)【要約】
本開示に係る、サービスとしての量子処理を提供する量子コンピュータシステムは、量子コンピュータ装置と、少なくとも1つの古典的プロセッサを含むサーバと、を備える。サーバは、第1の量子コンピュータ装置で実行されるように設定された複数のジョブを含む第1のジョブキューを作成し、クライアント装置から量子プログラムの実行要求を受信し、実行要求のために、第1のジョブキューに、第1のジョブのための量子回路を含む第1のジョブエントリを追加し、第1のジョブの量子回路に対する最適化処理を実行し、量子回路を更新された量子回路に更新し、更新された量子回路を第1の量子コンピュータ装置に送信し、第1の量子コンピュータ装置によって更新された量子回路を複数の量子ビットを使用して実行させ、第1の量子コンピュータ装置から更新された量子回路の実行結果を受信し、実行結果をクライアント装置に送信するように構成されている。
【選択図】図1
【特許請求の範囲】
【請求項1】
サービスとしての量子処理を提供する量子コンピュータシステムであって、
複数の量子ビットを含む第1の量子コンピュータ装置と、
少なくとも1つの古典的プロセッサを含むキューイング及び最適化(QaO)サーバであって、前記少なくとも1つの古典的プロセッサによって実行されたときに、該プロセッサに実行させるコンピュータ実行可能命令を格納している、該サーバと、を備え、
前記コンピュータ実行可能命令は、
前記第1の量子コンピュータ装置で実行されるように設定された複数のジョブを含む第1のジョブキューを作成するステップと、
クライアント装置から量子プログラムの実行要求を受信するステップと、
前記実行要求のために、前記第1のジョブキューに、第1のジョブのための量子回路を含む第1のジョブエントリを追加するステップと、
前記第1のジョブの前記量子回路に対する最適化処理を実行し、前記量子回路を更新された量子回路に更新するステップと、
前記更新された量子回路を前記第1の量子コンピュータ装置に送信し、前記第1の量子コンピュータ装置によって前記更新された量子回路を前記複数の量子ビットを使用して実行させるステップと、
前記第1の量子コンピュータ装置から前記更新された量子回路の実行結果を受信するステップと、
前記実行結果を前記クライアント装置に送信するステップと、
を含む、システム。
【請求項2】
請求項1に記載の量子コンピュータシステムであって、
前記コンピュータ実行可能命令は、
前記第1の量子コンピュータ装置を含む1以上の量子コンピュータ装置上でジョブを実行するための複数のジョブキューを管理するステップをさらに含む、システム。
【請求項3】
請求項2に記載の量子コンピュータシステムであって、
前記複数のジョブキューは、1以上の仮想ジョブキューを含み、
前記1以上の仮想ジョブキューのそれぞれに特定のユーザアカウントが割り当てられ、
前記第1のジョブキューは、前記1以上の仮想ジョブキューからのジョブを含む物理ジョブキューである、システム。
【請求項4】
請求項1に記載の量子コンピュータシステムであって、
前記第1の量子コンピュータ装置を含む複数の量子コンピュータ装置をさらに備え、
前記第1のジョブキューは、前記複数の量子コンピュータ装置のうちのいずれかの量子コンピュータ装置上でのジョブの実行をサポートする、システム。
【請求項5】
請求項1に記載の量子コンピュータシステムであって、
前記コンピュータ実行可能命令は、
前記第1のジョブが前記第1のジョブキューで実行を待っている間に、前記第1のジョブの前記量子回路上で、複数のインクリメンタル最適化処理を実行させるステップをさらに含む、システム。
【請求項6】
請求項1に記載の量子コンピュータシステムであって、
前記コンピュータ実行可能命令は、
前記第1のジョブが実行されるまでの時間を推定するステップと、
推定された前記第1のジョブが実行されるまでの時間に基づいて、前記第1のジョブの最適化処理を設定するステップと、をさらに含む、システム。
【請求項7】
請求項1に記載の量子コンピュータシステムであって、
前記コンピュータ実行可能命令は、
前記更新された量子回路の前記実行結果の受信後に、前記第1のジョブの繰り返しとして、前記第1のジョブキューに第2のジョブを作成するステップと、
前記第2のジョブを実行する前に、前記第2のジョブの別の量子回路に対する最適化処理を実行するステップと、をさらに含む、システム。
【請求項8】
複数の量子ビットを含む第1の量子コンピュータ装置と、少なくとも1つの古典的プロセッサを含むキューイング及び最適化(QaO)サーバとを使用して実施される、サービスとしての量子処理を提供するための方法であって、
前記第1の量子コンピュータ装置で実行されるように設定された複数のジョブを含む第1のジョブキューを作成するステップと、
クライアント装置から量子プログラムの実行要求を受信するステップと、
前記実行要求のために、前記第1のジョブキューに、第1のジョブのための量子回路を含む第1のジョブエントリを追加するステップと、
前記第1のジョブの前記量子回路に対する最適化処理を実行して、前記量子回路を更新された量子回路に更新するステップと、
前記更新された量子回路を前記第1の量子コンピュータ装置に送信し、前記第1の量子コンピュータ装置によって前記更新された量子回路を前記複数の量子ビットを使用して実行させるステップと、
前記第1の量子コンピュータ装置から前記更新された量子回路の実行結果を受信するステップと、
前記実行結果を前記クライアント装置に送信するステップと、
を含む、方法。
【請求項9】
請求項8に記載の方法であって、
前記第1の量子コンピュータ装置を含む1以上の量子コンピュータ装置上でジョブを実行するための複数のジョブキューを管理するステップをさらに含む、方法。
【請求項10】
請求項9に記載の方法であって、
前記複数のジョブキューは、1以上の仮想ジョブキューを含み、
前記1以上の仮想ジョブキューのそれぞれに特定のユーザアカウントが割り当てられ、
前記第1のジョブキューは、前記1以上の仮想ジョブキューからのジョブを含む物理ジョブキューである、方法。
【請求項11】
請求項8に記載の方法であって、
当該方法は、前記第1の量子コンピュータ装置を含む複数の量子コンピュータ装置を使用して実施され、
前記第1のジョブキューは、前記複数の量子コンピュータ装置のうちのいずれかの量子コンピュータ装置上でのジョブの実行をサポートする、方法。
【請求項12】
請求項8に記載の方法であって、
前記第1のジョブが前記第1のジョブキューで実行を待っている間に、前記第1のジョブの前記量子回路上で、複数のインクリメンタル最適化処理を実行させるステップをさらに含む、方法。
【請求項13】
請求項8に記載の方法であって、
前記第1のジョブが実行されるまでの時間を推定するステップと、
推定された前記第1のジョブが実行されるまでの時間に基づいて、前記第1のジョブの最適化処理を設定するステップと、をさらに含む、方法。
【請求項14】
請求項8に記載の方法であって、
前記更新された量子回路の前記実行結果の受信後に、前記第1のジョブの繰り返しとして、前記第1のジョブキューに第2のジョブを作成するステップと、
前記第2のジョブを実行する前に、前記第2のジョブの別の量子回路に対する最適化処理を実行するステップと、をさらに含む、方法。
【請求項15】
少なくとも1つの古典的プロセッサによって実行されたときに、該プロセッサに実行させるコンピュータ実行可能命令を格納した非一時的なコンピュータ可読媒体であって、
前記コンピュータ実行可能命令は、
第1の量子コンピュータ装置で実行されるように設定された複数のジョブを含む第1のジョブキューを作成するステップと、
クライアント装置から量子プログラムの実行要求を受信するステップと、
前記実行要求のために、前記第1のジョブキューに、第1のジョブのための量子回路を含む第1のジョブエントリを追加するステップと、
前記第1のジョブの前記量子回路に対する最適化処理を実行し、前記量子回路を更新された量子回路に更新するステップと、
前記更新された量子回路を前記第1の量子コンピュータ装置に送信し、前記第1の量子コンピュータ装置によって前記更新された量子回路を前記複数の量子ビットを使用して実行させるステップと、
前記第1の量子コンピュータ装置から前記更新された量子回路の実行結果を受信するステップと、
前記実行結果を前記クライアント装置に送信するステップと、
を含む、非一時的なコンピュータ可読媒体。
【請求項16】
請求項15に記載の非一時的なコンピュータ可読媒体であって、
前記コンピュータ実行可能命令は、
前記第1の量子コンピュータ装置を含む1以上の量子コンピュータ装置上でジョブを実行するための複数のジョブキューを管理するステップをさらに含み、
前記複数のジョブキューは、1以上の仮想ジョブキューを含み、
前記1以上の仮想ジョブキューのそれぞれに特定のユーザアカウントが割り当てられ、
前記第1のジョブキューは、前記1以上の仮想ジョブキューからのジョブを含む物理ジョブキューである、非一時的なコンピュータ可読媒体。
【請求項17】
請求項15に記載の非一時的なコンピュータ可読媒体であって、
前記コンピュータ実行可能命令は、前記第1の量子コンピュータ装置を含む複数の量子コンピュータ装置を使用して実施され、
前記第1のジョブキューは、前記複数の量子コンピュータ装置のうちのいずれかの量子コンピュータ装置上でのジョブの実行をサポートする、非一時的なコンピュータ可読媒体。
【請求項18】
請求項15に記載の非一時的なコンピュータ可読媒体であって、
前記コンピュータ実行可能命令は、
前記第1のジョブが前記第1のジョブキューで実行を待っている間に、前記第1のジョブの前記量子回路上で、複数のインクリメンタル最適化処理を実行させるステップをさらに含む、非一時的なコンピュータ可読媒体。
【請求項19】
請求項15に記載の非一時的なコンピュータ可読媒体であって、
前記コンピュータ実行可能命令は、
前記第1のジョブが実行されるまでの時間を推定するステップと、
推定された前記第1のジョブが実行されるまでの時間に基づいて、前記第1のジョブの最適化処理を設定するステップと、をさらに含む、非一時的なコンピュータ可読媒体。
【請求項20】
請求項15に記載のコンピュータ可読媒体であって、
前記コンピュータ実行可能命令は、
前記更新された量子回路の前記実行結果の受信後に、前記第1のジョブの繰り返しとして、前記第1のジョブキューに第2のジョブを作成するステップと、
前記第2のジョブを実行する前に、前記第2のジョブの別の量子回路に対する最適化処理を実行するステップと、をさらに含む、非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本出願は、2021年4月27日に出願された「SYSTEM AND METHOD OF IN-QUEUE OPTIMIZATIONS FOR QUANTUM CLOUD COMPUTING」という標題の米国仮特許出願第63/180,369号、2021年10月5日に出願された「SYSTEM AND METHOD OF IN-QUEUE OPTIMIZATIONS FOR QUANTUM CLOUD COMPUTING」という標題の米国仮特許出願第63/252,371号、及び、2022年2月3日に出願された「SYSTEM AND METHOD OF IN-QUEUE OPTIMIZATIONS FOR QUANTUM CLOUD COMPUTING」という標題の米国仮特許出願第63/306,196号に基づく優先権を主張するものである。上記の各出願の内容の全体は、参照により本明細書中に援用される。
【0002】
(連邦政府による資金提供を受けた研究開発の記載)
本発明は、米国国立科学財団から交付された助金成番号1730449、2030859、及び2016136の下に、米国政府の支援を受けてなされた。米国政府は本発明において一定の権利を有する。
【0003】
(技術分野)
本開示は、一般に、量子クラウド計算及び古典的クラウド計算に関し、より詳細には、量子クラウド計算、古典的クラウド計算、及び、量子/古典的ハイブリッド型クラウド計算のインキューを最適化するシステム及び方法に関する。
【背景技術】
【0004】
量子計算は、量子力学的な現象を活用して難解な問題を解く革新的な計算モデルである。量子コンピュータ(Quantum computer:QC)は、古典的なコンピュータと同様の方法で量子回路や量子プログラムを評価するが、量子コンピュータにおける量子情報の重ね合わせ、干渉、及びエンタングルメントを活用する能力は、暗号、化学、最適化、機械学習などの分野での様々な特定の処理問題において非常に役立つと予測される。
【0005】
現在のノイジー中間量子(Noisy Intermediate-Scale Quantum:NISQ)世代の量子計算では、QCは、不完全なゲートの作用を受ける数百から数千の量子ビットを含むと予想されている。さらに、これらのQCの接続性はスパース(疎)であり、量子ビットの寿命は短い。このような制約を考慮すると、NISQ世代のマシンは、フォールトトレラントな量子システムを構築するために数百万個の量子ビットのエラー修正に依存するショアのアルゴリズム(Shor's Factoring Algorithm)やグローバーのアルゴリズム(Grover's Search Algorithm)などの大規模な量子アルゴリズムを実行できない可能性がある。
【0006】
さらに、増大し続ける量子需要を満たす量子リソースのアベイラビリティ(可用性)も不足している。クラウドベースの量子情報処理(Quantum Information Processing:QIP)プラットフォームは、クラウドで利用可能であり、特権的アクセスだけでなくオープンアクセスでも利用可能であるが、その数は非常に限られており、さらには、これらの量子マシン(QC)のユーザ数やこれらの量子マシンに送信される「ジョブ」の数は日々大幅に増加している。産業界及び学術界の両方で量子コンピュータの人気が高まっているため、このようなコンテンション(競合)の傾向は、例えば大規模な信頼性の高い量子コンピュータの構築コストが容易に克服できるようになるまで、今後10年以上にわたって悪化し続けると予想される。
【0007】
まだ初期の段階にあるQCは、例えば、設計、製造、及び保守の困難などに起因して、非常に希少で高価なリソースである。量子マシンの希少さ及びコンテンションの第1の影響は、クラウド上で量子マシンにアクセスしようとするときに発生する長いキューイング時間(待ち時間)である。クラウド上で利用可能な量子マシンの数は非常に限られているにもかかわらず、量子マシンのユーザ数や量子マシンに送信される「ジョブ」の数は日々大幅に増加している。産業界及び学術界の両方でQCの人気が高まっているため、このようなコンテンションの傾向は今後も増加し続けると予想される。例えば、IBMの量子マシンでは、特権的アクセスの場合でも、曜日や時間を問わず、数十から数百の量子ジョブがキューイングされていることがある。オープンアクセスのマシンでは、キューイングされている量子ジョブの数は、数千に跳ね上がる。その結果、何時間も、時には何日ものキュー時間が発生する。コンパイル時間は通常、数分程度であり、大規模な回路でも数時間程度であるため、キューイングされている量子ジョブの数が大きいことは、量子処理にとって特に有害である。さらに、量子マシン上での実際の量子実行時間は、数秒から数分程度である。量子マシンを利用する際のこのようなアクセス上の制約は、QCで効果的に対象とすることができる量子問題の範囲や、量子問題に関係なくQCへのタイムリーなアクセスなど、研究活動に大きなハンディキャップとなる。
【0008】
したがって、量子計算サービスの需要が高まるにつれて、量子リソースを効率的に管理することが不可欠となる。残念ながら、量子クラウドにおけるスケジューリングの現状には多くの問題点がある。従来の量子計算用のクラウドサービスでは、キューに入っている間の待ち時間は無駄な時間に等しい。量子マシンに送信された量子ジョブは、キューの先頭に到達するまで、量子マシンのキュー内で待機状態となる。したがって、この無駄なキューイング時間を利用して、量子マシンからユーザに返される結果の品質を向上させることができるアクションを実行する大きな可能性がある(例えば、それらの特定の量子問題に対して)。
【発明の概要】
【課題を解決するための手段】
【0009】
一態様では、サービスとしての量子処理を提供する量子コンピュータシステムであって、複数の量子ビットを含む第1の量子コンピュータ装置と、少なくとも1つの古典的プロセッサを含むキューイング及び最適化(QaO)サーバであって、少なくとも1つの古典的プロセッサによって実行されたときに、該プロセッサに実行させるコンピュータ実行可能命令を格納している、該サーバと、を備えるシステムが提供される。コンピュータ実行可能命令は、(i)第1の量子コンピュータ装置で実行されるように設定された複数のジョブを含む第1のジョブキューを作成するステップと、(ii)クライアント装置から量子プログラムの実行要求を受信するステップと、(iii)実行要求のために、第1のジョブキューに、第1のジョブのための量子回路を含む第1のジョブエントリを追加するステップと、(iv)第1のジョブの量子回路に対する最適化処理を実行し、量子回路を更新された量子回路に更新するステップと、(v)更新された量子回路を第1の量子コンピュータ装置に送信し、第1の量子コンピュータ装置によって更新された量子回路を複数の量子ビットを使用して実行させるステップと、(vi)第1の量子コンピュータ装置から更新された量子回路の実行結果を受信するステップと、(vii)実行結果をクライアント装置に送信するステップと、を含む。
【0010】
別の態様では、複数の量子ビットを含む第1の量子コンピュータ装置と、少なくとも1つの古典的プロセッサを含むキューイング及び最適化(QaO)サーバとを使用して実施される、サービスとしての量子処理を提供するための方法が提供される。本開示の方法は、(i)第1の量子コンピュータ装置で実行されるように設定された複数のジョブを含む第1のジョブキューを作成するステップと、(ii)クライアント装置から量子プログラムの実行要求を受信するステップと、(iii)実行要求のために、第1のジョブキューに、第1のジョブのための量子回路を含む第1のジョブエントリを追加するステップと、(iv)第1のジョブの量子回路に対する最適化処理を実行し、量子回路を更新された量子回路に更新するステップと、(v)更新された量子回路を第1の量子コンピュータ装置に送信し、第1の量子コンピュータ装置によって更新された量子回路を複数の量子ビットを使用して実行させるステップと、(vi)第1の量子コンピュータ装置から更新された量子回路の実行結果を受信するステップと、(vii)実行結果をクライアント装置に送信するステップと、を含む。
【0011】
さらに別の態様では、少なくとも1つの古典的プロセッサによって実行されたときに、該プロセッサに実行させるコンピュータ実行可能命令を格納した非一時的なコンピュータ可読媒体が提供される。コンピュータ実行可能命令は、(i)第1の量子コンピュータ装置で実行されるように設定された複数のジョブを含む第1のジョブキューを作成するステップと、(ii)クライアント装置から量子プログラムの実行要求を受信するステップと、(iii)実行要求のために、第1のジョブキューに、第1のジョブのための量子回路を含む第1のジョブエントリを追加するステップと、(iv)第1のジョブの量子回路に対する最適化処理を実行し、量子回路を更新された量子回路に更新するステップと、(v)更新された量子回路を第1の量子コンピュータ装置に送信し、第1の量子コンピュータ装置によって更新された量子回路を複数の量子ビットを使用して実行させるステップと、(vi)第1の量子コンピュータ装置から更新された量子回路の実行結果を受信するステップと、(vii)実行結果をクライアント装置に送信するステップと、を含む。
【図面の簡単な説明】
【0012】
図1図1~5は、本開示の方法及びシステムの例示的な実施形態を示す図である。図1は、サービスとして処理を提供する例示的なクラウド処理システムのネットワーク化されたアーキテクチャを示す図である。
図2図2は、古典的制御コンピュータ装置及び量子コンピュータ装置を含む、量子コンピューティングに関連するクラウド処理システムの特定の構成要素を示す図である。
図3図3は、図1に示したQaOサーバのキュー管理、準備処理、及び実行処理の例を示すデータフロー図である。
図4図4は、クラウド処理システムによって提供される仮想キューの例を示す図である。
図5図5は、量子処理のための新たなリクエストを受信したときの装置選択のための例示的な方法を示す図である。
【発明を実施するための形態】
【0013】
以下の詳細な説明は、本開示の実施形態の例を説明するものであり、限定するものではない。本開示は、例えば、クライアント/サーバやクラウドコンピューティングアーキテクチャにおける量子コンピューティング、古典的コンピューティング、及び量子/古典的ハイブリッドコンピューティングに一般的に適用することを意図している。
【0014】
従来のクラウドベースの処理システム(例えば、古典的な情報処理システムや量子情報処理(QIP)システム)では、ジョブキューは通常、特定のコンピュータ装置(例えば、特定のスーパーコンピュータや特定の量子コンピュータ)をターゲット(対象)として提供される。古典的なコンピューティング環境では、ユーザは、処理性能(例えば、より速いクロック速度、より多くのコア、より多くの1秒あたりの浮動小数点演算、スレッド数など)に基づいて、ターゲットとなる古典的なコンピュータ装置を選択することができる。一方、量子コンピューティング環境では、ユーザは、量子装置の特性(例えば、量子ビットの数、量子ハードウェアの種類など)に基づいて、ターゲットとなる量子コンピュータ装置を選択することができる。ユーザが選択したコンピュータ装置にジョブが送信されると、処理システムはそのコンピュータ装置のジョブキューにジョブを入れる。一般的な処理システムは、先入れ先出し(First-In, First-Out:FIFO)のジョブスケジューリングの態様を、例えばユーザとの優先度の合意などの追加の考慮事項とともに組み込んだスケジューリングアルゴリズムを提供する。
【0015】
量子コンピューティング技術には、古典的コンピューティング技術とは異なる点がいくつかある。例えば、量子コンピュータ装置は通常、古典的コンピュータ装置よりもエラーを起こしやすい。そのため、量子コンピューティングでは、量子処理における実行の忠実度を最大化することが第1の課題または第1の関心事であり、古典的コンピューティングでは、信頼性や予測可能性が高いため、性能とエネルギー効率がより重視される。さらに、量子アプリケーションの実行は、ターゲットとなる量子コンピュータ装置とその特性に実質的に依存しており、またその特性に敏感である。量子コンピュータ装置の特性のいくつかは、時間とともに変化する。一方、古典的コンピュータ装置の特性は通常、より安定している。そのため、実行前にターゲットとなる量子コンピュータ装置の現在の情報を活用することによって、量子処理のスケジューリングを改善することができる。加えて、量子ジョブとそれに関連する回路は複雑さが低いことが予想され、その結果、実行特性が予測しやすくなる。
【0016】
本明細書では、量子コンピューティング及び古典的コンピューティングにおけるこれらの及び他の技術的問題に取り組んだシステム及び方法を説明する。例示的な実施形態では、クラウドベースの量子情報処理(QIP)システムは、指定された問題に対する量子回路を最適化することによって、その量子問題の結果の質を向上させる。これらの最適化は、ジョブが実行待ちキューに入っている間に実行される。例示的な実施形態では、本開示のQIPシステムは、低システム負荷時には実行忠実度を最大化し、高システム負荷時には待ち時間を最小化するジョブスケジューリングサービスを提供する。また、本開示のQIPシステムは、量子コンピュータ(QC)装置の再較正の影響を考慮して較正スケジュールを最適化することによって忠実度の向上及び待ち時間の短縮を図るとともに、ユーザのサービス品質(Quality Of Service:QoS)(例えば、最大待ち時間)を考慮した、バランスのとれたアプローチを提供する。本開示のQIPシステムは、量子ジョブをQCにスケジューリングする自動化された適応ジョブスケジューラを使用することによって、既存の量子ジョブスケジューラを改善して、忠実度及び待ち時間の両方を最適化するとともに、様々な他の目的にも対処する。本開示のQIPシステムは、コンパイルされた量子回路の特徴と、量子アプリケーション及びQCの様々なセットにおけるマシン実行忠実度との間の相関関係を推定する新しい予測モデルを提供する。また、本開示のQIPシステムは、様々なQCでのジョブの実行時間を推定するキューイング時間予測モデルを提供する。これらの予測モデルは、様々な性能特性のバランスを取り、QoS要件を満たし、かつ、ジョブの古くなったコンパイルの影響を最小限に抑えるように、QIPシステムに統合される。本開示のQIPシステムは、マシン較正サイクルとジョブスケジュールとの関係を調査し、「スタガリング(staggering)」アプローチによる較正スケジュールを改善することによって、マシンの古くなったコンパイルをさらに改善する。
【0017】
最適化の例は、(1)ジョブ内最適化(intra-job optimization)と、(2)ジョブ間最適化(inter-job optimization)との2つのクラスに大別される。ジョブ内最適化は、特定の量子回路(例えば、量子コンピュータ装置上で実行される「ジョブ」として送信される)を最適化することを目的としており、キューに入ったジョブが実行される前に、量子回路の品質を様々な方法で向上させる(例えば、実行成功確率や忠実度などを向上させる)。ジョブ間最適化は、複数の量子回路(例えば、複数のジョブ)の実行を必要とする量子問題のシナリオにおいて、ジョブ実行間を最適化することを目的としている。このようなシナリオでは、1つの問題に対して複数のジョブがキューイングされ、順番に実行される場合、ジョブ間最適化は、先に実行したジョブの解析に基づいて、後続のジョブを追加、削除、修正する能力に焦点が当てられる。これにより、解の品質や忠実度を向上させたり、問題の全体的な実行時間を短縮したり、または別の方法で量子マシンのスループットを向上させたりすることができる。
【0018】
本明細書で使用するとき、「古典的」という用語は、従来のトランジスタベースのコンピューティング技術、または他の非量子ベースの処理技術(例えば、アナログコンピューティング、超電導コンピューティング)を指す。この用語は、必要に応じて、従来のコンピュータ装置またはそれに関連するハードウェア、ソフトウェア、アルゴリズムなどを、「量子」コンピュータと区別するために使用される。量子コンピュータ装置または単に「量子コンピュータ(QC)」及びそれに関連するハードウェア、ソフトウェア、アルゴリズムなどは一般的に、量子力学の量子現象に依存して(例えば、量子ビットを使用して)処理演算を実行するという点で、古典的コンピュータ装置と区別される。古典的コンピュータの例としては、従来のパーソナルコンピュータ、サーバ、タブレット、スマートフォン、x86ベースプロセッサ、ランダムアクセスメモリ(RAM)モジュールなどが挙げられる。量子コンピュータの例としては、IBM社製の「IBM Q」装置、Google社製の「Bristlecone」量子コンピュータ、Intel社製の「Tangle Lake」量子コンピュータ、及び、D-Wave社製の「2000Q」などが挙げられる。「古典的ビット」または「cbit」という用語は、本明細書では、古典的コンピュータにおけるビットを指すために使用される。「量子ビット」という用語は、本明細書では、量子コンピュータにおける量子ビットを指すために使用される。QCは、量子力学に依存して処理を行う量子コンピューティングハードウェアを含むが、そのようなQC及びそれに関連するQIPシステムは一般的に、通常の動作(例えば、ジョブのスケジューリング、準備、コンパイル、信号生成など)のために様々な古典的コンピュータ装置に依存することを理解されたい。
【0019】
量子プログラミング言語やコンパイラは、1量子ビットゲートまたは2量子ビットゲートからなる量子アセンブリ言語を使用する。量子コンパイラフレームワークが、この量子アセンブリ言語を、制御パルス、一般的には、特定の量子コンピュータ装置上で指定された計算を実行する電気信号に変換する。量子回路は、多数のゲートを有し、多数の量子ビットにわたって広がっている、いくつかのレジスタにバインドされた命令(コンピュータ実行可能命令)のリストを表する。量子回路のコンパイルは、量子回路を特定のQC上で実行できるようにするための一連のステップを含む。量子ジョブ(コンテキストに応じて「QCジョブ」、または単に「ジョブ」とも称する)は、QC上で実行される単一の回路または複数の回路のバッチをカプセル化したものである。バッチされたジョブ内の回路は、すべての量子回路を連続して実行できるように単一のタスクとして扱われ、ジョブ内の各回路は、特定の数の「ショット」に対して迅速に再実行される。
【0020】
QIPシステムが実行のために量子回路をコンパイルするとき、そのコンパイルは、デバイストポロジやデバイスベースゲートなどの静的デバイス特性を組み込むことができ、また、ゲートや量子ビット忠実度などの動的特性も組み込むことができる。動的特性の中には、時間とともに変化するものもある。これらの特性は、ある程度の粗い精度(例えば、1日1回)で再較正されるため、不均一となり得る(例えば、ある日の量子ビット忠実度は、その翌日の量子ビット忠実度と大きく異なる場合がある)。さらに、これらの特性は、時間の経過とともにドリフトすることがある(例えば、それらは1回の較正サイクル中で異なることがある)。異なるQC間で空間的なばらつきが存在することもある。QCが高度に制御された設定で製造されたとしても、避けられないばらつきにより、性能に影響を与える固有の特性が生じる。また、たとえ、QCの量子ビット数が同じであっても、量子ビットエラー値が異なる場合がある(例えば、CXゲート実行時のエラー)。したがって、本開示のQIPシステムは、異なるQC特性がアプリケーションの忠実度にどのような影響を与えるかを分析し、それに応じて様々なQCにジョブをスケジューリングすることによって、そのようなマシン特性とアプリケーションへの影響とを考慮する。このような静的特性及び動的特性は一般的に、ユーザには知られていないか、または、よく理解されていない。
【0021】
さらに、ジョブのキューイング時間が長くなるシナリオでは、最初のジョブ準備中に考慮されていた動的特性が、ジョブの実行準備が整うまでにQC上で大きく異なることになる可能性があり、ジョブが再最適化されない場合には、ジョブは最適でない状態(例えば、有害な忠実度など)で実行されることになる。したがって、本開示のQIPシステムは、実行性能を最大化するために、予想される実行時間と、ターゲットQCの時間に敏感な動的特性との組み合わせを、再最適化オペレーションを組み込む。ゲートベースのコンパイル法では、量子ゲートは実行時にパルスに変換されることに留意されたい。そのため、本開示のQIPシステムは、直近の較正されたパルスを使用して、特定のQC上のゲートを実行する(例えば、ジョブがキューの先頭に到達し、実際の量子実行の準備ができた後に)。パルスベースのコンパイル法では、パルスはコンパイル時に生成される。したがって、これらのパルスは、コンパイル時のマシン特性に基づいて生成される。
【0022】
図1は、サービスとして処理を提供する例示的なクラウド処理システム100のネットワーク化されたアーキテクチャを示す図である。例示的な実施形態では、クラウド処理システム100は、量子コンピューティングリソースまたは古典的なハイパフォーマンスコンピューティング(HPC)リソース(例えば、スーパーコンピュータ、コンピュートファーム、クラスタHPCなど)へのアクセスを望む様々な顧客に対して計算サービス(例えば、演算ジョブの実行)を提供する。説明を目的として、図1は、投入102、準備104、実行106のコンテキストにおけるクラウド処理システム100の様々なコンポーネントと及びデータフローを分類したものである。本明細書で提供される例の多くは、本開示のクラウド処理システム100が、本明細書では量子情報処理(QIP)とも呼ばれるサービスとしての量子処理(quantum processing as a service:QaaS)を提供する量子コンピューティングに関連して説明される。例示的な実施形態では、クラウド処理システム100は、QIPシステム(例えば、QC装置に処理サービスを提供する)、古典的な情報処理システム(例えば、古典的なコンピュータ装置に処理サービスを提供する)、またはハイブリッド型システム(例えば、量子コンピュータ装置及び古典的コンピュータ装置の組み合わせをサポートする)であってもよい。例示的な実施形態の多くはQIP及びQC装置に関連して説明されているが、本開示のクラウド処理システムはサービスとして古典的な処理も提供できることができ、また、同様に、本明細書で説明される方法の多くは古典的コンピュータ装置及び処理にも同様に適用できることを理解されたい。さらに、例示的な実施形態のアーキテクチャは、クラウドベースのサービスとして提供されるが、本明細書で説明されるスケジューリング及び実行機能は、スタンドアロン、サーバベース、またはクライアント/サーバベースのアーキテクチャ(例えば、実行のためにクライアント装置からジョブが投入される)などの非クラウドアーキテクチャで提供されてもよい。
【0023】
キューイング及び最適化サーバ(Queueing and Optimizations server:QaOサーバ)110は、パブリッククライアント装置144A(例えば、インターネットなどのパブリックネットワーク146を介して)またはプライベートクライアント装置144B(例えば、企業ネットワークやプライベートネットワークなどを介して)などの要求元のクライアント装置144からのジョブリクエスト140の受信を制御する。また、QaOサーバ110は、量子コンピュータ装置132や古典的コンピュータ装置134(例えば、スーパーコンピュータや他のHPCデバイス)などの1以上のバックエンドコンピューティングリソース上で実行するために、ジョブキュー120上のジョブ122を準備し、スケジューリングする。このようなジョブ122が実行されるコンピュータ装置は、ジョブ実行(ジョブリクエスト140の中心であるコア計算ワークロード)の中心として提供されるコンピュータ装置を表すため、本明細書では「プレミアムコンピュータ装置」と称する。プレミアムコンピュータ装置132は、希少性、運用コスト、アベイラビリティ(可用性)などの理由から、プレミアムデバイスと見なされる。
【0024】
例示的な実施形態では、ジョブリクエスト140は、クラウド処理システム100に何らかの計算ワークロードを実行させるためのリクエスト(要求)を表している。いくつかのジョブリクエスト140は、量子プログラムを含み、そのため、プレミアム量子コンピュータ装置132上での実行をターゲットとする。いくつかのジョブリクエスト140は、古典的プログラムを含み、そのため、プレミアム古典的コンピュータ装置134での実行をターゲットとする。ジョブリクエスト140とともに最初に提供されるデータは、本明細書ではリクエスト入力と称する。リクエスト入力としては、リクエスト140に関連する計算作業を実行するために使用されるソースコード、実行可能コード、中間コード、または他のコンポーネントが挙げられる。例えば、量子ベースのリクエスト140(「量子ベースリクエスト」、例えば、プレミアム量子コンピュータ装置132での実行を要求する)では、リクエスト入力は、量子プログラムのソースコード(例えば、コンパイルされていないコード)または何らかの中間コンパイルコンポーネント(例えば、初期レイアウト選択、ルーティングマッピング、実行スケジュール、パルスまたはパルスレベルの制御コマンド)を含むか、または参照することができる。古典的ベースのリクエスト140(「古典的ベースリクエスト」、例えば、プレミアム古典的コンピュータ装置134での実行を要求する)では、リクエスト入力は、ソースコード(例えば、コンパイルされていないコード、インタプリタ言語のスクリプト)または実行可能コード(例えば、コンパイルされたコード)を含むか、または参照することができる。また、リクエスト入力は、リクエスト140の準備または実行に使用されるデータ、設定、制御パラメータ、または他の情報も含み得る。
【0025】
例示的な実施形態では、QaOサーバ110は、アプリケーションプログラミングインターフェース(Application Programming Interface:API)112を備えており、要求元のクライアント装置144はAPI112を介してジョブリクエスト140を送信することができ、また、応答としてジョブ結果(または単に「結果」)142を受け取ることができる。API112を介して受信したリクエスト140は、認証され、特定のユーザ(例えば、「要求元のユーザ」という固有のユーザIDを持っているユーザ)に関連付けられる。QaOサーバ110は、例えば、ジョブキュー120上でジョブ122を順序付けるとき、特定のプレミアムコンピュータ装置132、134へのアクセスを制御するとき、プレミアムコンピュータ装置132、134で実行された実行時間を追跡して請求するとき、及び、ジョブ構成またはリクエスト入力(例えば、リクエスト140の実行が完了する前、実行中、または実行後)へのアクセスを制御するときに、ユーザIDを考慮することができる。いくつかの実施形態では、QaOサーバ110は、ユーザがジョブキュー120上のアンブレラジョブ310または個々のジョブ122を修正することを可能にする能力を要求元のユーザに提供することができる(例えば、関連する演算ジョブ202の実際の実行が、実行のために量子コンピュータ装置132に送信される直前の或る予め決定されたカットオフ時間まで)。このようにして、ユーザは、量子コンピュータ装置132から受信したフィードバック、以前のジョブ122からのフィードバック、またはユーザが知る他の理由に基づいて、ジョブ122の量子回路を修正することができる。
【0026】
例示的な実施形態では、QaOサーバ110は、スケジューリングエンジン114、最適化エンジン116、及び実行エンジン118を含む。大まかに言うと、スケジューリングエンジン114は、QaOサーバ110の制御モジュールとして機能し、クライアント装置144との通信(例えば、API112を介して)、ジョブキュー120の管理(例えば、ジョブキュー120への若いジョブ122の追加、ジョブ122の並べ替え、ジョブキュー120上のジョブ122のジョブ詳細の編集、ジョブキュー120からのジョブ122の削除など)、ジョブ122に対して実行される最適化タスクの最適化エンジン116による調整(例えば、最適化を実行するジョブ122の特定、それらのジョブに対して実行する最適化の特定、最適化エンジン116への最適化タスクのディスパッチなど)、及び、実行エンジン118によって実行される実行タスクの調整(例えば、ジョブ122の実行結果の出力の分析)などのタスクを実行する。スケジューリングエンジン114によって実行される様々な処理の詳細については、図3及び図5を参照して後述する。
【0027】
例示的な実施形態では、最適化エンジン116は、ジョブキュー120上のジョブ122の最適化処理を実行する。処理中、最適化エンジン116は、スケジューリングエンジン114から最適化タスクを受け取る。これらの最適化タスクは、実行する最適化処理の種類、及び、その最適化処理を実行する特定のジョブ122を識別することができる。このような最適化処理は、本明細書では、量子最適化処理(例えば、プレミアム量子コンピュータ装置132での量子アプリケーションの実行を可能にするまたは改善することを目的とした最適化)と、古典的最適化処理(例えば、プレミアム古典的コンピュータ装置134上での古典的アプリケーションの実行を可能にするまたは改善することを目的とした最適化)とに分類される。さらに、これらの最適化タスクは、ジョブ122がジョブキュー120に入っているときに、単一のジョブ122に対して最適化処理を実行するジョブ内最適化と、互いに関連する一連のジョブ122の実行の間(例えば、反復的なアプリケーションの反復の間)に最適化処理を実行するジョブ間最適化とに分類される。所与の最適化タスクが完了すると、最適化エンジン116は、関連するジョブ122を、最適化された結果に更新する(例えば、古典的ジョブのための新しいコンパイルされた実行可能ファイル、量子アプリケーションのための更新されたレイアウト選択、ルーティング、またはスケジュールなど)。最適化エンジン116によって実行される様々な種類の量子最適化処理及び古典的最適化処理の処理については、図3を参照して後述する。
【0028】
いくつかの最適化処理は、計算負荷が高い場合がある。したがって、最適化エンジン116は、ローカルで最適化タスクを実行してもよいし(例えば、QaOサーバ110上の処理ハードウェアを使用する)、または、補助処理サーバ124などの外部の計算リソースを利用して最適化タスクを実行してもよい。例えば、最適化エンジン116は、最適化処理メッセージを補助処理サーバ124に送信し(例えば、ジョブ122に関連する特定の入力によって)、補助処理サーバ124上で補助処理を実行してもよい。補助処理の完了後、最適化エンジン116は、補助処理サーバ124から最適化処理の結果を受け取り、それに応じて関連するジョブ122を更新する。いくつかの実施形態では、最適化エンジン116は、ジョブ122に関連付けられた要求元のクライアント装置144を、(例えば、準備作業の処理を実行するための)補助処理サーバとして使用するように構成される。このように、QaOサーバ110は、負荷の高い計算作業を軽減するために、追加の処理ハードウェアを活用することができる。
【0029】
例示的な実施形態では、実行エンジン118は、ジョブキュー120からのジョブ122の実行を制御する。処理中、実行エンジン118は、1以上のプレミアムコンピュータ装置132、134上で実行するためのジョブ122を投入する。いくつかの実施形態では、量子ジョブ122を実行するために、実行エンジン118は、そのようなジョブ122及びそれに関連するジョブコンポーネントを、プレミアム量子コンピュータ装置132を制御する古典的な制御コンピュータ装置130に演算ジョブとして送信する。いくつかの量子アプリケーションの実施形態では、古典的な制御コンピュータ装置130は、量子コンピュータ装置132上で演算ジョブを準備して実行し、その実行結果を実行エンジン118に返す。古典的な制御コンピュータ装置130は、例えば、量子コンピュータ装置132上で実行する演算ジョブのための制御パルスを生成するように構成された信号発生器を含み得る。いくつかの実施形態では、実行エンジン118は、(例えば、古典的な制御コンピュータ装置の代わりに)プレミアムコンピュータ装置132、134と直接通信してもよい。例えば、QaOサーバ110は、信号発生器を動作させて特定の量子ジョブ122の制御パルスを生成し、それらの制御パルスを量子コンピュータ装置132に直接送信し、量子コンピュータ装置132から実行結果を直接受け取ってもよい。図2は、古典的な制御コンピュータ装置130及び量子コンピュータ装置132に関する追加的な詳細を示す。
【0030】
いくつかの実施形態では、QaOサーバ110は、複数の別個のプレミアムコンピュータ装置132、134上で実行されるジョブ122のためにジョブキュー120を使用する。例えば、QaOサーバ110は、複数の量子コンピュータ装置132上でのジョブ実行を管理することができ、例えば、ジョブ122を、それらの量子コンピュータ装置132のいずれかまたはすべてを実行の対象とすることができるジョブキュー120に追加することを許可してもよい。このような共有キュー実行環境では、所与のジョブ122を特定の量子コンピュータ装置132に指定または割り当ててもよいし、あるいは、所与のジョブ122を複数の量子コンピュータ装置132のいずれかで実行してもよい(例えば、アベイラビリティに基づいて)。本明細書で説明する例示的な実施形態は、単一のプレミアム量子コンピュータ装置132のためのジョブ122を持つ単一のジョブキュー120を含むことができるが、任意の数のジョブキュー120を提供し、それらのジョブキュー120のいずれかが専用ジョブキューまたは共有ジョブキューであってもよいことを理解されたい。
【0031】
いくつかの実施形態では、QaOサーバ110は、複数のプレミアムコンピュータ装置132、134に対して複数のジョブキュー120を作成し、維持することができ、各ジョブキュー120は、特定のプレミアムコンピュータ装置132、134の専用である。例えば、一実施形態では、QaOサーバ110は、第1の量子コンピュータ装置132専用の第1のジョブキュー120と、第2の量子コンピュータ装置132専用の第2のジョブキュー120とを作成してもよい。このようにして、第1の量子コンピュータ装置132で実行するように指定または割り当てられたジョブ122を第1のジョブキュー120に配置し、第2の量子コンピュータ装置132で実行するように指定または割り当てられたジョブ122を第2のジョブキュー120に配置することができる。いくつかの実施形態では、スケジューリングエンジン114は、特定のジョブを特定のプレミアムコンピュータ装置132、134に割り当てたり、ジョブ122をジョブキュー120間で移動させたりすることができる(例えば、クライアントの要求、コストの考慮事項、性能のニーズ、予測される待ち時間、一時的なデバイスのアベイラビリティなどに基づいて)。このような、実行前の、特定のプレミアムコンピュータ装置132、134へのジョブ122のターゲティングにより、共有キューまたは専用キューの実装のいずれにおいても、QaOサーバ110は、割り当てられたプレミアムコンピュータ装置132、134に基づいて特定のジョブを最適化することができる。例えば、量子回路をコンパイルする場合、量子回路は、デバイスを認識する方法でコンパイルすることができる(例えば、特定のプレミアムコンピュータ装置132、134の静的特性または動的特性について)。コンパイルは、デバイストポロジやデバイスベースゲートなどの静的特性を含む場合もあるが、コンパイルは、ゲート/量子ビット忠実度などの特定の量子コンピュータ装置132の動的特性を含む場合がある。このような動的特性は、時間の経過とともに変化する可能性があるため、動的である。量子ビット及びゲートのこのような特性は、ある程度の粗い精度(例えば、1日1回)で再較正されるため、不均一となり得る(例えば、ある日の量子ビット忠実度は、その翌日の量子ビット忠実度と大きく異なる場合がある)。したがって、特定の量子コンピュータ装置132をターゲットにすることにより、QaOサーバ110は、そのターゲットとなる量子コンピュータ装置132の動的特性の最近の状態に特有の最適化をターゲットにすることができる。
【0032】
図2は、古典的制御コンピュータ装置130及び量子コンピュータ装置132を含む、量子コンピューティングに関連するクラウド処理システム100の特定の構成要素を示す図である。例示的な実施形態では、古典的制御コンピュータ装置130は、量子コンピュータ装置132上で実行するために、QaOサーバ110から(例えば、実行エンジン118から)送信された演算ジョブを準備し、実行するように構成されている。量子コンピュータ装置132は、演算ジョブ202を実行する複数の量子ビット232を有する量子プロセッサ230を含む。いくつかの実施形態では、量子プロセッサ230は、50個または100個の量子ビット232を含む。なお、本開示は、数十個、数百個、またはそれ以上の個数の量子ビット232を有する量子プロセッサに適用可能であり、かつ有益であると考えられることを理解されたい。
【0033】
量子ビット232は、図2及び図1に示されている量子コンピュータ装置132などの量子コンピュータ装置の基本要素である。古典的ビット(cbit)とは対照的に、量子ビット(qubit)は、本明細書では、|0〉及び|1〉として表記される論理状態が重なり合った状態で存在することができる。量子ビットの一般的な量子状態は、下記の式で表される。
【0034】
【数1】
【0035】
式中、α、βは、|α|+|β|=1の複素係数である。0/1基底で測定すると、上記の量子状態は、それぞれ、|α|及び|β|の確率で、|0〉または|1〉に崩壊する。量子ビット232は、ブロッホ球と呼ばれる3次元球上の点として可視化することができる。量子ビット232は、イオントラップ、量子ドットシステム、及び例示的な本実施形態では超電導回路を含む、様々な量子情報処理(QIP)プラットフォーム上で実現することができる。量子論理状態の数は、量子プロセッサ230内の量子ビット232の数とともに指数関数的に増加する。例えば、3個の量子ビット232を有するシステムでは、8つの論理状態(|000〉、|001〉、|010〉、|011〉、・・・、|111〉)を重ね合わせることができる。この特性は、古典的計算に対する潜在的な量子高速化の基礎となる。換言すれば、線形数の量子ビット232を有する量子コンピュータ装置132によって、指数関数的な数の相関論理状態を同時に記憶及び処理することができる。
【0036】
量子コンパイル中に、量子プログラムは、まず、論理量子ゲートと呼ばれる1量子ビット及び2量子ビットの離散的な量子演算のセットに分解される。これらの量子ゲートは、ユニタリ行列として行列形式で表される。1量子ビットゲートは、ブロッホ球の特定の軸に沿った回転に対応する。量子ISAの例では、1量子ビットゲートのセットは、ブロック球のx軸、y軸、及びz軸に沿った回転を含む。これらのゲートは、本明細書では、それぞれ、Rゲート、Rゲート、及びRゲートと表記する。さらに、量子ISAは、対角x+z軸を中心とする回転に対応するアダマールゲートも含み得る。量子ISAにおける2量子ビット論理ゲートの一例は、制御NOT(CNOT)ゲートである。このCNOTゲートは、制御量子ビットが|1〉の場合にはターゲットの量子ビットの状態を反転させ、制御量子ビットが|0〉の場合にはターゲットの量子ビットの状態を変化させない。例えば、CNOTゲートは、|10〉を|11〉に変化させ、|11〉を|10〉に変化させ、他の論理状態を保持する。
【0037】
さらに、量子プログラムのコンパイル中に一般的に使用される一般的な論理アセンブリ命令は、使用され得る物理的ハードウェアの種類のバリエーションを直接考慮せずに設計されていることを理解されたい。そのため、論理命令と、特定のQIPプラットフォームの性能との間に、しばしばミスマッチが生じる。例えば、いくつかのQIPプラットフォームでは、その特定の物理プラットフォームにCNOTゲートを直接実装する方法が明確でない場合がある。そのため、CNOTゲートは、標準的なゲートベースのコンパイルにおいて、物理ゲートにさらに分解され得る。様々なアーキテクチャのための他の例示的な物理量子ゲートとしては、例えば、量子ドットなどのハイゼンベルグ相互作用ハミルトニアンを有するプラットフォームでは、直接実装可能な2量子ビット物理ゲートは、√SWAPゲートである(2回適用したときにSWAPを実行する)。ジョセフソン磁束量子ビットの超伝導システムやNMR量子システムなどの、ZZ相互作用ハミルトニアンを有するプラットフォームでは、物理ゲートは、CPhaseゲートであり、単一量子ビットの回転まではCNOTゲートと同一である。容量結合ジョセフソン電荷量子ビット(例えば、トランスモン量子ビット)などの、XY相互作用ハミルトニアンを有するプラットフォームでは、2量子ビット物理ゲートは、iSWAPゲートである。双極子鎖相互作用を有するイオンプラットフォームでは、物理的2量子ビットゲートは、幾何位相ゲートとXXゲートとの2つが一般的である。
【0038】
量子プロセッサ230は、外部の物理的操作によって、論理状態が跨る空間内の任意の状態に連続的に駆動することができる。制御フィールドと呼ばれる物理的操作は、基礎となるシステムに特有のものであり、制御フィールド及びシステムの特性により、ハミルトニアンと呼ばれる固有の時間依存性の量が制御される。ハミルトニアンにより、量子状態の発展経路が決定される。例えば、例示の量子コンピュータ装置132などの超伝導システムでは、マイクロ波電気信号を印加することによって、量子ビット232を駆動してブロッホ球上で連続的に回転させることができる。また、マイクロ波信号の強度を変化させることによって、量子ビット232の回転速度を操作することができる。ハミルトニアンシステムをリアルタイムで操作する能力により、量子コンピュータ装置132は、関連する制御フィールドの精密な制御を通じて、量子ビット232を目的の量子状態に導くことができる。したがって、量子コンピュータは、量子ビット232の最終測定時にハミルトニアンが高確率で一致するように発展させた量子システムを構築することによって実現することができる。量子制御のコンテキストにおいて、量子ゲートは、量子プロセッサ230上で実行される予めプログラムされた制御フィールドのセットと見なすことができる。
【0039】
例示的な実施形態では、QaOサーバ110は、量子プログラム(例えば、ソースコードから)を最適化された物理スケジュール204に変換するように設定されたコンパイル及び最適化処理を実行することができる。最適化された物理スケジュール204は、最適化された制御パルス220(例えば、予めプログラムされた制御フィールド)として信号発生器210から量子コンピュータ装置132の量子プロセッサ230に送信されたときに、量子プロセッサ230に演算ジョブ202を実行させて実行結果222を生成する一連の制御命令及び関連するスケジュールを表す。例示的な実施形態では、量子コンピュータ装置132は超伝導デバイスであり、信号発生器210は、最適化された制御パルス220を量子プロセッサ230上で実行するように構成された任意波発生器(AWG)である(例えば、量子ビット232に送信されるマイクロ波パルスを介して行われ、回転軸は信号の直交振幅変調によって決定され、回転角度は信号のパルス長によって決定される)。他の量子コンピューティングアーキテクチャでは、異なるサポートハードウェアを有し得ることを理解されたい。
【0040】
例示的な実施形態では、量子ベースのリクエスト140の場合、QaOサーバ110は、リクエスト140からの入力として量子プログラムを受け取り、一連のコンパイル及び最適化処理を適用して、量子コンピュータ装置132上で演算ジョブ202を実施する制御パルス(例えば、最適化された物理スケジュール204)を生成する。このようなコンパイルと最適化処理には、例えば、QaOサーバ110が命令(コンピュータ実行可能命令)のサブセットに対して適切な最適化解を生成することができるように、量子プログラムの論理演算をサブセットまたは量子ビット232(及びそれらに関連する演算)のブロックに分割すること、論理演算をブロックに分割することに固有の並列性の問題に対処すること、及び、基礎となる物理ハードウェアの長所及び短所に基づいて論理演算を最適化することが含まれる。
【0041】
図3は、図1に示したQaOサーバ110のキュー管理、準備処理、及び実行処理の例を示すデータフロー図300である。例示的な実施形態では、QaOサーバ110は、1つの特定のプレミアム量子コンピュータ装置132に専用される単一のジョブキュー120を管理するが、複数のジョブキュー120または専用若しくは共有のジョブキュー120が提供されてもよいことを理解されたい。本明細書で使用される「準備処理」という用語は、実行前に、またはリクエストに関連する複数の実行の間に、リクエスト140を準備するように構成されたQaOサーバ110によって実行されるコンパイル及び最適化処理を指す。
【0042】
処理中、及び図1を参照して上述したように、QaOサーバ110は、1以上のクライアント装置144(図1参照)からジョブリクエスト140を受信する。例示的な実施形態では、リクエスト140を受信すると、QaOサーバ110はリクエスト140ごとにアンブレラジョブ310を確立する。アンブレラジョブ310は、リクエスト140からの入力データ(例えば、ソースコード、設定パラメータ、データなど)、及び、リクエスト140の処理を管理するために使用される他のデータを含む。量子アプリケーションのコンテキストにおいて、「ソースコード」は、様々な形式の基礎となる量子アプリケーションの非コンパイルまたは中間コンポーネントを含み、そのようなものとしては、例えば、静的にコンパイルされた量子回路(例えば、実行シーケンスの形態では、デバイスの特定の量子ビット上の量子ゲートのグラフ)、初期レイアウト選択、ルーティングマッピング、実行スケジュール、パルスまたはパルスレベルの制御コマンド、パルススケジュール(例えば、OpenPulseと同様に)などが挙げられる。
【0043】
処理中、実行エンジン118は、ジョブ122をプレミアムコンピュータ装置132、134に送信して処理させる。リクエスト140の処理が完了すると、QaOサーバ110は、リクエスト140の結果142を要求元のクライアント装置144に送信する。いくつかの実施形態では、リクエスト140は、量子プログラムのソースコード(例えば、コンパイルされていないソースコード)を含むことができ、また、設定パラメータ(例えば、量子コンピュータ装置132のどの動的特性がジョブ122の最適化に影響を与えるか)、量子プログラムによって使用される入力データ、及び、ハードウェア要件や他の実行要件などのリクエスト140に関連するメタデータなどの他のデータも含むことができる。いくつかの実施形態では、リクエスト140は、例えば、最小限にコンパイルされた量子プログラム(例えば、最低限必要な回路の成功に十分な量子プログラムのコンパイル)、特定の量子コンピュータ装置132の静的特性に基づいてコンパイルされた回路、または、パルススケジュール(例えば、パルスベースの実行の場合)などの、量子プログラムの中間コンポーネントを含むことができる。結果142は、量子アプリケーションのコンテキストでは、基礎となる量子コンピュータ装置132上の各実行にわたって測定される回路の様々な出力ビット列の分布(例えば、実行中に実行された様々な「ショット」の結果)を含み得る。
【0044】
個々のリクエスト140及びそれに関連するアンブレラジョブ310は、QaOサーバ110によってジョブキュー120に追加される1以上のジョブ122を生成する。各ジョブ122は、量子コンピュータ装置132で実行される単一回路または回路バッチをカプセル化する。回路は、いくつかのレジスタにバインドされた命令のリストを含み、多数の量子ビット232にわたって広がった多数のゲートを有する。実行中、所与のジョブ122の各回路は、指定された回数(ショット)再実行される。いくつかのジョブ122は、互いに完全に独立しているが(例えば、異なる量子問題に属する)、連続してキューイングされ得る。いくつかのジョブ122は、相互に依存しているが(例えば、同じ量子問題に属する)、間隔を大きくあけてキューイングされ得る。いくつかのジョブ122は、「バッチジョブ」、すなわち、複数の量子回路がグループ化されたジョブ122として構成され得る。いくつかの実施形態では、スケジューリングエンジン114は、(例えば、インテリジェント制御ロジックを介して)ジョブキュー120内のジョブ122の順序を制御する。いくつかの実施形態では、ジョブキュー120上のジョブ122の順序は、少なくとも部分的には、(例えば、図4を参照して後述する仮想キューのユーザ制御を介して)ユーザによる影響を受ける。バッチジョブ内の回路は、量子回路の全てが単一の演算ジョブ202の間に連続的に実行されるように、ジョブキュー120上で単一のジョブ122として扱われ、例えば、各回路に対して複数のショットが実行される。
【0045】
いくつかのリクエスト140は、単一のジョブの実行によって完了する。このようなリクエスト140を、本明細書では「単純リクエスト」と称する。例えば、単純なジョブでは、ジョブキュー120に1つのジョブ122が追加され、単一の演算ジョブ202として量子コンピュータ装置312に送信され、単一の実行結果222が生成されてリクエスト140が完了する。他のリクエスト140は、リクエスト140を完了するために複数のジョブ122を必要とする場合がある。複数のジョブ122を必要とするリクエスト140を、本明細書では「複雑なリクエスト」と称する。例えば、いくつかの量子アプリケーションは、アルゴリズムが解に近づくにつれて複数のジョブ122の実行を必要とする反復型である(例えば、εを目標精度とし、深さ-O(1)の回路のO(1/ε)反復を使用する変分量子固有値ソルバー法(Variational Quantum Eigensolver:VQE))。いくつかの量子アプリケーションは、完全な結果を得るために複数のジョブ122を必要とする複合型である。例えば、VQEの各反復では、アンザッツ(ansatz)は、各項が量子回路である複数の項から構成される。これらの各項は個別の量子回路であるため、これらの項を解くことは個別に実行される。したがって、N個の項のアサッツは、QaOサーバ110に、VQEの反復ごとに、ジョブキュー120上にN個のジョブ122を生成させる。
【0046】
量子ベースのリクエスト140の場合、量子回路が量子コンピュータ装置132に送信(例えば、演算ジョブ202として)されて実行される前に、量子回路の構築中に複数の準備処理が実行される。このような準備処理として、例えば、レイアウトの選択(例えば、量子アプリケーションの論理量子ビットを量子コンピュータ装置132の最適な物理量子ビット232にマッピングする)、ルーティング(例えば、挿入SWAPを介して回路をバックエンドトポロジにマッピングする)、スケジューリング(例えば、回路内の特定のゲートを実行するタイミングを設定する)、コンパイル(例えば、ターゲットとなるプレミアムコンピュータ装置132で許可されたゲート処理の中からソースコードをゲートに変換する)が挙げられる。これらの準備処理は、アルゴリズムを段階的に改善することによって実行できるため、複数のレベルの労力で実行することができる。より大きな労力とは、より長いコンパイル時間を犠牲にして、レイアウト、回路経路、及びスケジュールを改善できる可能性があることを意味する。さらに、「コンパイル時間対回路の利点」の勾配は不均一であり、時間の経過とともに平坦化する可能性があるが(例えば、回路のさらなる改善を達成するための時間が指数関数的に長くなる可能性がある)、いくつかの状況では、最適化のいずれかが、最適化処理の後半で(例えば、しばらくの間プラトーになった後に)、より優れたレイアウト、経路、またはスケジュールを見つける可能性がある。
【0047】
したがって、例示的な実施形態では、量子ベースのリクエスト140を最初に受信したとき、QaOサーバ110は、そのリクエスト140に対する初期準備処理を最小限に実行する。いくつかの状況では、クライアント装置144がこのような初期準備処理を実行してもよく、その場合、初期準備処理の結果はリクエスト140の一部として送信される。より具体的には、最初のジョブ122をジョブキュー120に展開する前に、QaOサーバ110は量子アプリケーションの初期コンパイル(例えば、基礎となる量子コンピュータ装置132によって許可されたゲート操作に基づいて、ソースコードを仮想回路のゲートに変換する)を実行し、必要最小限の回路の成功のために十分な初期レイアウト選択、ルーティング、及びスケジューリング(例えば、図5に示すように、特定のQC132のスコアリング及び選択)を実行する。レイアウトパスは、量子コンピュータ装置132内の物理量子ビットを回路の各仮想量子ビットに関連付ける。QaOサーバ110は、リクエスト140に対してユーザが指定した初期レイアウトを適用し、何も指定されていない場合は、QaOサーバ110は、i番目の仮想量子ビットをi番目の物理量子ビットにマッピングし、未使用の物理量子ビットを補助的な空間として割り当てることにより、自明なレイアウトを生成する。次に、QaOサーバ110は、パスマネージャを適用して、回路を所望のベースに展開し、結合マップに一致するように回路を変換する。コンパイル及びレイアウトの後、ルーティングステップによって、物理回路を、量子コンピュータ装置132のトポロジに実際に適合するように変換する(例えば、スワップによる新しいゲートの挿入を含む)。続いて、スケジューリングパスを実行し、回路の量子動作スケジュール(または単に「スケジュール」)を生成する。いくつかの実施形態では、スケジューリングエンジン114は、ジョブ122をジョブキュー120に配置する前に、初期コンパイル及び準備処理を実行する。いくつかの実施形態では、スケジューリングエンジン114は、初期コンパイル及び準備処理を実行する前にジョブ122をジョブキュー120に入れることができ、例えば、初期準備処理がジョブでまだ実行されているかどうかを追跡する1以上の準備フラグをジョブ122に設定する。これらの準備フラグは、最小限の準備処理のそれぞれが実行されたときに設定される。いくつかの状況では、ジョブ122のターゲットとなるプレミアムコンピュータ装置132が変更された場合、スケジューリングエンジン114は準備フラグをリセットし、それによって、準備処理が再実行される。若いジョブ122を特定のジョブキュー120に配置する前に、QaOサーバ110及びスケジューリングエンジン114によって実行され得る追加の実施形態を、図5を参照して後述する。
【0048】
いくつかの実施形態では、QaOサーバ110は、IBM社(International Business Machines、米国ニューヨーク州)によって公開された回路モデル量子プログラムのためのオープンソースのフレームワーク及びツールセット(例えば、トランスパイラ)であるQISKITを使用することができる。いくつかの実施形態では、QaOサーバ110は、Google社の量子AIチーム(米国デラウェア州、Alphabet, Inc.)によって開発されたオープンソースのフレームワーク及びツールセットであるCIRQを使用してもよい。いくつかの実施形態では、QaOサーバ110は、Scaffoldプログラミング言語で記述された量子アプリケーションをコンパイルし、量子アセンブリ(「QASM」)表現(例えば、マシンに依存する物理レベル操作に変換する前のコンパイル、分析、最適化)を出力するように構成されたツールであるScaffCCを使用してもよい。
【0049】
ジョブ122がジョブキュー120に追加されると、ジョブ122がジョブキュー120で待機している間に、そのジョブ122に対してさらなる改善や最適化が実行される。したがって、キューイング時間が長いほど、マッピング、ルーティング、及びスケジューリング処理におけるさらなるコンパイル作業によって回路生成が改善される可能性が高くなる。このようなキュー内最適化は、長時間のコンパイルにも適している。例示的な実施形態では、レイアウト選択、ルーティング、及びスケジューリングのステップは、アルゴリズムを漸進的に改善することによって実行され、これにより、複数のレベルの労力で実行することができる(例えば、処理時間の延長)。例えば、最適化エンジン116は、レイアウト選択、ルーティング、及びスケジューリングパスを実行するためにQISKITトランスパイラを使用することができる。処理時間の延長は、レイアウト、回路経路、及びスケジュールが改善される可能性が高くなることを意味する。最適化時間対回路のメリットは一様ではなく、時間の経過とともにフラットになる可能性がある。例えば、後者の割合の回路改善を達成するための処理時間は、指数関数的に長くなる可能性がある。加えて、近似的な量子回路合成のための探索アルゴリズムは、数分から数時間かかる。合成に要する時間は、キュー内の最適化に適しているだけでなく、キューイング時間が長い場合には、より適している可能性がある。さらに、これらの探索アルゴリズムは、本質的に漸進的であるため、キューイング前にいくつかのより緩い近似目標を達成することができ、その結果、キュー内でより厳しい目標を達成することができる。
【0050】
キュー内コンパイルや他の最適化は、ゲートベースのジョブ及びパルスベースのジョブの両方に適用することができる。パルスコンパイルは通常、ゲートコンパイルよりも長く、「陳腐化(staleness)」の影響を受けやすいため、特にキュー内コンパイルと最適化の恩恵を受けることができる。さらに、特定のQC132への量子回路のスケジューリングは、ゲートベースとパルスベースの両方のジョブにも有用である。両方のアプローチは、図5を参照して後述するようなマシン選択から利益を得ることができるためである。例えば、ゲートベースのジョブの場合、QaOサーバ110は、特定のジョブ122に最適な特定のQC132を決定するときに、回路深さや2量子ビットゲートの数などの考慮事項を使用することができる(例えば、スコアリングの要素として)。パルスベースのジョブでは、QaOサーバ110は、例えば、特定のジョブ122に対してどの特定のQC132を対象とするかを決定するときに、パルス持続時間、またはゲートもしくは測定のエラー率を使用することができる(例えば、スコアリングの要素として)。
【0051】
いくつかの実施形態では、QaOサーバ110は、インテリジェント回路構成及び古典的シミュレーションサポートを介してQC132の選択を実行する。例えば、QaOサーバ110は、古典的にシミュレート可能なバージョンのターゲット回路を構築し、この新しい回路を、古典的なコンピュータだけでなく、目的のQC132で実行する。次に、これらの出力を比較して、目的のQC装置が提供するサービス品質の推定値を取得する。そして、予め定められたQoS閾値を超えるQC装置を、ターゲット回線または同様の回線の将来の実行に使用することができる。
【0052】
いくつかの実施形態では、スケジューリングエンジン114は、ジョブキュー120上の様々なジョブ122の実行までの推定時間(Estimated Time To Execution:ETE)を追跡し、維持することができる。所与のジョブのETEは、ジョブ122の残りのキューイング時間(例えば、ジョブ122が処理のために送信されるまでの時間)の推定を表す。そのため、スケジューリングエンジン114は、所与のジョブ122のETEを使用して、そのジョブ122に対して実行すべき最適化、またはそのジョブ122に対する特定の最適化タスクに割り当てる処理時間を決定することができる。いくつかの実施形態では、キューイング時間は、様々な可能性のある最適化の間で分割してもよい(例えば、ヒューリスティック、あるいは、ジョブ122、回路、または量子コンピュータ装置132の何らかの分析に基づいて)。いくつかの量子ジョブは均質であり、したがって、ETEの比較的正確な推定を可能にする。ETEが正確に知られていない場合、スケジューリングエンジン114は、最適化試行ごとに、段階的により積極的に最適化を実行することができる。例えば、各試行の後、最適化エンジン116は、状態のスナップショットをキャプチャして保存する。待ち時間が終了間近の場合、保存されている最新のスナップショットを使用して、パイプライン内の保留中のまたは進行中の最適化をすべて終了させることができる。いくつかの実施形態では(例えば、仮想キュー管理)、スケジューリングエンジン114は、別のジョブに先立って、ユーザの別の独立したジョブをプロモートすることができる(例えば、追い越されたジョブに対して進行中の最適化タスクが現在実行中である場合、または、追い越されたジョブが実行の準備ができていない場合)。
【0053】
いくつかの実施形態では、QaOサーバ110は、ジョブキュー120内のジョブ122に対して他のキュー内最適化を実行することができる。これらの追加のキュー内最適化としては、例えば、1量子ビットまたは2量子ビットシーケンスの結合、回路ブロックの統合、特定のゲートの置換またはキャンセル、クロストーク緩和のための最適化、あるいは、測定エラー軽減の実行が挙げられる。このような最適化の中には反復的なものもあり、そのような最適化に割り当てられる処理の量は、推定されるキューイング時間に基づいている。このような追加の最適化により、回路深さ、クリティカルパス、またはランタイムの減少、生成される回路の品質の向上、あるいは、回路の成功の可能性の向上が得られる。いくつかのキュー内最適化は、所与のジョブ122の他のコンポーネントに影響を与え、これにより、QaOサーバ110にジョブ準備のいくつかの態様を再実行させる。例えば、後続のキュー内最適化がレイアウト選択に対して行われる場合、QaOサーバ110は、ルーティングまたはスケジューリングの再処理を自動的にトリガーする。
【0054】
パルスレベルへのコンパイルは特に煩雑であり、コンパイル時間が数時間かかる場合もある。キューイング時間の大部分が数時間程度であり、将来的に増加することが予想されることを考慮すると、QaOサーバ110は、キュー内パルスレベルのコンパイルを追加的に実行し得る。このようなキュー内パルスレベルのコンパイルは、ジョブ122がジョブキュー120に入っている間、及び、演算ジョブ202を量子コンピュータ装置132に送信する前に実行される(例えば、制御コンピュータ装置130で実行されるパルスレベルのコンパイルの代わりに)。一実施形態では、パルス生成は、量子実行の直前に行われ、そのため、ジョブキュー120内のすべてのゲートレベル最適化はパルスを処理しない。別の実施形態(例えば、OpenPulseスタイル)では、ジョブ122は最初からパルスを含んでおり、そのため、マッピング、ルーティング、スケジューリングなどの処理は行われないが、パルスレベルの最適化は行われる(例えば、意図的に回路を悪化させるためにパルスを引き伸ばす誤差外挿法などの誤差軽減技術)。さらに別の実施形態では、ジョブ122は、ゲートレベル最適化とパルスレベル最適化との両方の組み合わせをサポートすることができる。例えば、初期ゲート最適化は、ジョブ122がジョブキュー120に入っている間に実行される。そして、ジョブキュー120に入っているジョブ122上でパルス生成が実行された後、他のすべての最適化がロックアウトされ、パルスレベル最適化がそのジョブ122上で実行される。
【0055】
上述のように、量子回路をコンパイルするとき、それらはデバイスを意識した方法でコンパイルされる。コンパイルは、デバイストポロジやデバイスベースゲートなどの静的特性を含み得るが、コンパイルはまた、ゲートや量子ビット忠実度などの特定の量子コンピュータ装置132の動的特性(例えば、性能特性330)を組み込むことができる。このような動的特性は、時間の経過とともに変化する可能性があるため、動的である。量子ビット及びゲートのそのような特性は、ある程度の精度(例えば、1日1回)で再較正されるが、そのような較正は不均一である場合がある(例えば、ある日の量子ビット忠実度は、その翌日の量子ビット忠実度と大きく異なる場合がある)。言い換えれば、動的特性は、1日1回行われ、毎回異なる影響を与える可能性がある較正と、較正の間に量子コンピュータ装置132の特性が時間とともに変化するドリフトとの両方の影響を受ける可能性がある。例えば、最適化エンジン116は、ノイズを考慮したルーティングやノイズ適応型レイアウトを行うことができる。
【0056】
NISQ時代の量子マシンは、その特性(例えば、それらの1量子ビット及び2量子ビットのエラー率に関して)において、非決定論的な空間的ばらつき及び時間的ばらつきの影響を受ける可能性がある。例えば、いくつかの量子コンピュータでは、空間的な観点から、T/Tコヒーレンス時間のばらつき係数(例えば、平均値に対する標準偏差の比率)が30~40%の範囲にあり、2量子ビットのエラー率が約75%であるため、マシン全体に大きなばらつきがあることを示している。時間的な観点から見ると、いくつかの量子コンピュータでは、1日の平均値でエラー率に2倍以上のばらつきがある。これらのばらつきは、これらのマシンの日々の較正と、較正のドリフトとの両方の影響を受ける。
【0057】
そのため、キューイング時間が長いシナリオでは、以前のコンパイル時に考慮された可能性のある動的特性が、実行時の量子コンピュータ装置132の動的特性と大きく異なる可能性がある。その結果、量子回路が量子コンピュータ装置132上で最適に実行されず、パフォーマンスが低下する可能性がある。
【0058】
したがって、例示的な実施形態では、QaOサーバ110は、量子コンピュータ装置132の性能特性330を経時的にモニタ(監視)する。例えば、QaOサーバ110は、コースグレインモニタリング(course grained monitoring)、ファイングレインモニタリング(fine grained monitoring)、及び/または投機的再コンパイル(speculative recompilation)を実行する。コースグレインモニタリングは、再較正のためのモニタを含み、再較正がトリガーされた場合には、現在の特性を使用してジョブキュー120上の1以上のジョブ122に対して部分的または完全な再コンパイルを実行する。ファイングレインモニタリングは、量子コンピュータ装置132の様々な特性における偏差を定期的に測定し、偏差が大きい場合(例えば、偏差が予め定められた閾値を超えた場合)には、ジョブキュー120上のジョブ122の部分的または完全な再較正をトリガーすることを含む。投機的再コンパイルは、量子コンピュータ装置132の性能特性のドリフトを予測し、それに応じて、コンパイルされた回路を適応させることを含む。このような最適化により、生成される回路の品質が向上し、実行中に回路が成功する可能性が向上する。
【0059】
いくつかの実施形態では、QaOサーバ110は、複雑なリクエスト(例えば、完了すべき複数のジョブ122を含むリクエスト140)を処理する。このような複雑なリクエストは、(例えば、リクエストの前のジョブ122の出力に基づいて)ジョブ122間で実行される最適化を含み得る。このような最適化は、本明細書では「ジョブ間最適化」と称する。したがって、ジョブ間最適化は、解全体の品質を向上させるだけでなく、要求者の観点からも、量子サービスプロバイダの観点からも、処理効率を向上させることができるため、特に有益であり得る。
【0060】
例えば、分子の基底状態のエネルギーを求めるためにVQEが使用されることがある。このタスクは古典的なコンピュータでは一般に指数関数的に困難であるが、量子コンピュータでは効率的に解くことができると考えられている。分子の基底状態の推定は、反応速度や分子形状の決定など、化学において重要な用途がある。このような問題を解決するために、VQEは、深さ-O(1)の回路のO(1/ε)反復を使用する。ここで、εは目標精度である。VQEの各反復に対応する量子回路は、アンザッツと呼ばれる。様々なアンザッツの選択が可能であるが、例示的な実施形態では、ユニタリ結合クラスタシングルダブル(Unitary Coupled Cluster Single-Double:UCCSD)が使用され得る。
【0061】
、LiH、BeH、NaH、HOの5つの分子についてのUCCSDアンザッツのベンチマークは、これらのアンザッツは、各項が量子回路である複数の項で構成されていることを示した。これらの分子のこのような項/回路の数は、例えば3から92(HOの場合の最大)まで様々である。これらの数は、より大きく複雑な分子では増加し得る。さらに、これらの分子では、項/回路あたりの量子ビットの数は、例えば3から92(HOの場合の最大)まで様々である。そのため、すべてのパスを合計した1項あたりのコンパイル時間は、通常は数秒程度である。一般に、UCCSDの回路深さとアンザッツ項の数は、回路幅のO(N4)としてスケールされる。
【0062】
例示的な実施形態では、これらの各項は別個の量子回路であるため、個別に解かれる(例えば、各項は、ジョブキュー120上の別個のジョブ122に対応する)。したがって、N個の項を有するアンザッツは、VQEの反復ごとに、量子マシン上でN個のジョブ122をランチする。そのため、この問題の合計キューイング時間は、N個の個数及び反復回数に対して線形に増加する。単一のジョブ122でもかなりのキューイング時間が発生する可能性があることを考慮すると、これらの問題は、現実的な展開時間スケールで評価することがすぐに困難になる。キューイングシステムが「フェアシェア」などのアルゴリズムを使用することが多く、多数のジョブを持つユーザの優先順位が下がるため、キューイング時間はさらに悪化する。したがって、より大きな分子は、より多くのアンザッツ項を有し、したがってより多くのジョブを有するため、さらに遅れる。
【0063】
これらの時間枠を短縮するために、例示的な実施形態では、項の切り捨てと組み合わせたジョブ間最適化を活用している。項の切り捨ては、初期項によって提供される解が対象の問題に対して既に十分であると判断される場合、いくつかのアンザッツ項を削除することを含む。目下の量子問題を理解することによって得られる優先順位で項/ジョブ122を順序付けることによって、より早いジョブ122が適切な解の形成に寄与する可能性が高くなる。このことは、量子コンピュータ装置132の静的及び動的な特性(例えば、性能特性330)だけでなく、問題自体の様々な態様にも影響されることに留意されたい。N個の項/ジョブ122が与えられ、最初のk個のジョブ122で十分と判断された場合、他のN-k個のジョブをジョブキュー120から削除し、そして必要であれば、VQEの次の反復処理を開始する。このことは、完了後に実行結果222を後処理し、古典的な分析(例えば、ユーザエンドまたはQaOサーバ110のいずれかで)を実行し、キューイングされた他のジョブ122と相互作用することによって行うことができる。全体として、余分な量子リソースを無駄にすることなく(例えば、効果的に解に大きく寄与しないジョブを実行することにより)、目下のマシンが与えられた問題に対する十分な精度を得ることができる。
【0064】
加えて、残りのk個の項/ジョブ122の特定の態様は、目下の問題により適している場合、最初のN-k個の項/ジョブ122の観察に基づいて適合させることができる。上述したように、これらの項のコンパイルは数秒程度であるため、キュー内の修正に適している可能性がある。さらに、項の切り捨ては、例えば、ハミルトニアンシミュレーションや、量子虚数時間発展(Quantum Imaginary Time Evolution:QITE)のような他のアルゴリズムなどの他の問題に対しても使用できることに留意されたい。
【0065】
ジョブ間最適化の別の例としては、量子近似最適化アルゴリズム(Quantum Approximate Optimization Algorithm:QAOA)を使用したリクエスト140が挙げられる。QAOAは、正確に解くことが難しい問題の近似解を生成するためのアルゴリズムである。QAOAは、最近の研究で計算上普遍的であることが示されているため、今後短期的には特に興味深い。さらに、QAOAは、実験的にノイズに強いことが示されている。これらの理由から、QAOAは、量子コンピュータを使用して古典的に実行不可能な問題を解く量子超越性の有力な候補である。
【0066】
QAOAは、例示的な実施形態では、混合ステップとコスト最適化ステップとの交互パターンとして実行され得る。各混合ステップでは、QAOAは、量子重ね合わせにおいて全ての可能な状態が探索されるように拡散を適用する。各コスト最適化ステップでは、コスト関数を最小化する量子状態の大きさを高めるためにバイアスが適用される。その後、測定することで、最適に近い近似解を高い確率で得ることができる。混合ステップとコスト最適化ステップを交互に繰り返す回数は、pと称する。VQEと同様に、QAOAは、推測-検査-繰り返しのアルゴリズムである。QAOAの場合、推測は、反復回数1-pの間の混合の大きさ、及び、反復回数1-pの間のコスト最適化の大きさに対応する。各回(i回目)の混合反復は、変分混合パラメータであるβベクトルによって特徴付けられ、各回(i回目)のコスト最適化ステップは、コストパラメータであるγベクトルによって特徴付けられる。各パラメータベクトルは長さpを持ち、i番目の混合反復はβベクトルのi番目のエントリによって特徴付けられ、i番目のコスト最適化反復はγベクトルのi番目のエントリによって特徴付けられる。各ベクトルは、長さpを有し、i回目の混合反復はβベクトルのi回目のエントリによって特徴付けられ、i回目のコスト最適化反復はγベクトルのi回目のエントリによって特徴付けられる。
【0067】
キュー内最適化によるQAOAの利点の1つは、古典的な事前学習コストの点である。β及びγの探索空間は、実際の量子実行の前に、目下の問題をある程度理解した上で、古典的な探索を使って枝刈り(プルーニング)することができる。この事前学習は、ジョブ122がジョブキュー120に入っている間に実行することができ、これにより、1回の検索時間の短縮によって、アプリケーション全体のランタイムを削減することができる。
【0068】
これらの利点は、探索空間のフィードバックに基づく枝刈りによって、大幅に向上させることができる。以前のQAOAラウンドの評価(例えば、より低いp値での評価)は、将来のラウンドのために検索スペースを枝刈りする方法に関するヒントを提供することができる。このようにして、問題のニーズと量子コンピュータ装置132の特性との両方に合わせてパラメータを効率的に最適化することができる。ジョブ122がキューイングされている間にこれらの最適化を実行することにより、各ラウンド/反復の実行時間を大幅に短縮することができ(例えば、より大きな問題サイズで利益を拡大する結果となる)、また、量子コンピュータ装置132の特性をより適切に捉えることができる。VQEと同様に、QAOAラウンドごとのコンパイル時間は、いくつかの実施形態では、(例えば、部分的なコンパイル最適化によって)10秒~100秒の程度まで短縮することができ、これは、キュー内最適化に非常に適している。
【0069】
同様の利点の可能性は、再帰的量子近似最適化アルゴリズム(Recursive Quantum Approximate Optimization Algorithm:RQAOA)でも探索することができる。これは基本的にはQAOAのN個の逐次インスタンスに過ぎず、各インスタンスは問題グラフ全体の代わりに1つの頂点のみを解く。実際、RQAOAは、バニラQAOAと比較してO(N)以上のジョブを必要とすることから、キュー内最適化により適していると思われる。
【0070】
ジョブ間最適化の別の例として、ゼロノイズ外挿法(Zero-Noise Extrapolation:ZNE)がある。ZNEでは、量子プログラムは、プロセッサノイズの異なる有効レベルで実行されるように変更される。計算結果は、ノイズのないレベルで推定値に外挿される。異なるノイズレベルを実現するために、「伸張因子(stretch factor)」を使用して元の量子回路を変更する。一般に、使用される伸張因子は、特定の機械特性に依存しない。キュー内ジョブ最適化の使用により、複数の伸張されたジョブ122が次々にキューイングされる場合、後のジョブ122は、以前の伸張されたジョブ122からのフィードバックに基づいて変更または削除され、それにより、全体的な実行時間だけでなく、ZNEの品質を効果的に改善することができる。
【0071】
図1及び図3は、単一のジョブキュー120及び単一の量子コンピュータ装置132に関して図示されているが、クラウド処理システム100は、複数の量子コンピュータ装置132をサポートしてもよいことを理解されたい。このような実施形態では、クラウド処理システム100は、要求元のユーザが特定の量子コンピュータ装置132をターゲットにすることを可能にする。量子マシンの能力は、量子ビット及び量子体積の点で異なる可能性があるが、多数の量子コンピュータ装置132が多くのアプリケーションにわたって同様の実行特性を示す可能性がある場合もある。したがって、いくつかの実施形態では、リクエスト140は、必ずしも特定のマシンをターゲットにしなくてもよく、その代わりに、一連の量子コンピュータ装置132をターゲットにしてもよい(例えば、量子コンピュータ装置132の予め定義されたプールに基づくか、特定の制約を満たす量子コンピュータ装置132に基づくか、または、いくつかのマシンの優先権や優先順位を提供する)。このようなシナリオでは、ジョブ122は、(例えば、アベイラビリティ/予想されるキューイング時間、全体的なマシン利用率/有効量子量/忠実度の最大化などの特定の測定基準を満たすことに基づいて)異なるジョブキュー120間で動的に移動されるか、または、異なる量子コンピュータ装置132に割り当てられる。ジョブ122が異なるジョブキュー120または量子コンピュータ装置132に動的に再割り当てられる場合、そのコンパイルされた量子回路は、新しいターゲットの量子コンピュータ装置132のために再最適化される。このことも、キュー内最適化で実行することができる。単一マシンのシナリオで説明したように、最適化は、マシンの特性やジョブ間分析などに影響され得る。多少直交するが、上記の利点は、マシンに依存しないコンパイル及び/またはマシン固有の部分再コンパイルの探求である。後者は、実行のための特定の量子コンピュータ装置132がシステム100によって決定された後、キュー内で実行することができる。これには、対象となる実際の量子コンピュータ装置132とそのベースゲートに依存して、デバイス非依存IRからベースゲート命令への遅延トランスレーションが含まれ得る。
【0072】
いくつかの実施形態では、クラウド処理システム100は、特定のプレミアムコンピュータ装置132、134への専用アクセスを提供することができる。要求元のユーザが特定の量子コンピュータ装置132への単独アクセスを望む場合、要求元のユーザはマシン使用の専用モードを予約することができる。量子コンピュータ装置132が専用モードにあるとき、他の要求元のユーザのためのジョブキューはブロックされる(例えば、予約された量子コンピュータ装置132のためのジョブキュー120から)。したがって、他のユーザのジョブ122の実行を待つことなく、以前の結果(例えば、反復計算法やニアタイム計算法)を入力回路の条件とするアルゴリズムを実装することができる。専用モードが複数のユーザのために予約されている場合、単一のユーザのジョブ122は、他のユーザのジョブの後ろにキューイングされてもよく、また、実行は、先入れ先出しでキューイングされてもよい。専用モードは、キュー内最適化からも実質的に利益を得ることができる。専用マシン/キューの最適な使用は、単一のカスタマーの予約のための高いコストを考慮すると特に重要である。さらに、キュー内のすべてのジョブをグローバルに管理でき、相互に通信できる可能性があるため、マシンの特性評価及びジョブ間の最適化がより実現可能となる。例えば、特性評価ジョブは、量子コンピュータ装置132の様々な性能特性330をキャプチャするために、必要なときに容易に挿入することができ、このことは、ジョブ間及びジョブ間最適化の両方に役立つ。
【0073】
専用アクセスのシナリオや、物理マシンのキューが空のシナリオでは、ジョブ間の待ち時間は大幅に短縮される。特定の最適化(例えば、特にジョブ間最適化)が有効であるためには、ジョブiから得られた情報がジョブjを最適化できるように処理できるように、ジョブiとジョブjとの実行の間に少なくともT時間が必要とされる。これらのジョブ間の間隔がT時間未満の場合、この間隔はマルチスレッド(multi-threading)を介して人為的に誘発することができる。マルチスレッドでは、2つの異なるプロセスまたはアプリケーションからのジョブ(例えば、互いに独立しているジョブのセット)は、必要に応じて、同じプロセスまたはアプリケーションのジョブ間の十分な時間を確保するように、適切に絡み合わせることができる。マルチスレッドは、きめ細かくすることも、粗くすることもでき、また、ジョブを認識してもよいし、ジョブに依存しなくてもよい。マルチスレッドは、ユーザが管理する仮想キュー無しで使用できる側面もあるが、仮想キューの存在は、特にジョブ認識型の欲張りマルチスレッドに対して、かなり多くの制御を提供する。
【0074】
複数の回路を1つの量子ジョブにバッチ処理することは、マルチスレッドを実現する1つの形態と考えられることに留意すべきである。1つのジョブ122の実行時間は、通常、そのジョブのバッチに含まれる回路の数に対して線形にスケールされる。例えば、バッチに含まれる回路の数が多いほど、長い量子実行時間が必要になる(例えば、バッチ内のジョブが1つずつ個別に実行されるため)。したがって、ジョブ間の時間を制御する1つの方法(例えば、マルチスレッドと同じ目的)は、ジョブのバッチ内の回路数を制御することである。1つの問題または複数の問題から独立した回路を組み合わせて実行できるため、依存する回路間の時間間隔を長くすることができ、若いジョブを実行する前に古いジョブの効果的な後処理が可能となる。
【0075】
キュー内最適化は、バッチ内でも実行することができる。かなりのサイズのバッチ内の回路が次々に実行されることを考えると、バッチ内の以前の回路を使用して、同じバッチ内の後の回路を最適化することができ、その結果、より最適なきめ細かな最適化を実現することができる。これは、マシンインターフェイスでさらに細かい制御を行うことが有効であり得る。
【0076】
いくつかの実施形態では、システム100は、量子コンピュータ装置132のマルチプログラミングをサポートし、より大きな量子コンピュータ装置132上で2以上のより小さな量子回路を同時に実行する。並列実行の数は、各回路が必要とする量子ビットの数、量子コンピュータ装置132内の量子ビットの数、マシンのトポロジ/接続性、量子ビットのエラー率などに依存する。キュー内最適化は、ユニプログラミング及びマルチプログラミングの両方に適しており、後者にはさらに大きな利点がある。マルチプログラムが、静的に未知の回路間で動的に実行されるように構築される場合(例えば、最大の効率を得るために)、その回路が最終的にどの量子ビット/デバイス領域に割り当てられるかに基づいて、また、隣接する回路間の相互作用(最小化)の観点から、マルチプログラム内の各回路を最適化する大きな可能性がある。このような最適化は、ジョブキュー120で実行することができる。
【0077】
後処理され、若いジョブを最適化するために使用される古いジョブからのフィードバックは、中間回路測定を組み込むことによって、より迅速に行うことができる。中間回路測定は、量子回路の終端以外の位置で量子ビットを選択的に計測することができる。測定された量子ビットの量子情報は古典的な状態(0または1)に崩壊するが、測定されていない量子ビットは量子状態を維持する。このような形式の初期測定は、特にターンアラウンド時間が短い場合(例えば、キュー内最適化がジョブバッチ内で追求される場合)、キュー内最適化に役立つ。
【0078】
いくつかの実施形態では、クラウド処理システム100は、古典的な演算ジョブのリクエスト140に対してキュー内最適化を提供する。スーパーコンピュータのキューイング時間に関する最近の分析によると、キューイング時間は過去十年間で10倍以上増加しており、待ち時間の中央値は2.5時間にも達している。キューイング時間が長いため、キューイング中にタスクを実行する機会は非常に多い。
【0079】
待ち時間は、ジョブの数、特定のジョブの種類、及びシステム全体の他のジョブによって大きく異なるため、量子ジョブと比較して予測がより困難となる。複数の予測スキームが採用されているが、正確な推定を得ることは困難である。また、量子セットアップでは、「サーバ」(量子マシン)の能力と、「クライアント」及び/または「コプロセッサ」(古典的なマシン)の能力は、大きく異なる。そのため、ジョブがサーバ上で量子実行のキューに入っている間に、クライアント及び/またはコプロセッサで古典的なコンパイル時間の最適化が実行されることは明らかである。一方、古典的なシナリオでは、これらのマシンはすべて古典的なマシンである。しかし同時に、これらの古典的なマシンの能力は大きく異なり得る。サーバは複数(100~1000ノード)の高性能計算ユニットで構成され、一方、クライアント及び/またはコプロセッサは10ノード以下の低/中性能計算ユニットで構成され得る。したがって、後者で実行される最適化は軽量であるべきであり、実際のジョブ自体と同様の計算要件を持つ最適化であってはならない。
【0080】
実際のジョブの実行時間は、しばしばユーザによって大幅に過大評価される。例えば、50%のジョブが要求されたウォールタイムよりも65%以下の時間しか消費していないため、ジョブがより正確な実行時間の見積もりのために計測されていないか、または、ジョブが可能な限り決定論的に最適化されていない可能性もある。このような最適化は、本質的には必要ではないが「あれば便利」であり、キューに長い待ち時間がある場合に実行することができる。同様に、システム全体の負荷に対して最適化されたリソース推定は、システムのスループットにとって有益であるため、オンザフライでリソース推定を実行することには大きな利点がある。このような推定は、(残りの)待ち行列時間に応じて、繰り返し、及び/または、異なる詳細レベルで実行することができる。
【0081】
量子ジョブ間最適化と同様に、1つのアプリケーションが複数のジョブ実行で構成される古典的なユースケースがある。一度に1つのジョブのみをキューイングすると、アプリケーション内の異なるジョブの実行間に大幅な遅延が発生し、全体的な実行時間が大幅に増加する。したがって、複数のジョブをジョブキュー120に順番にキューイングすることができる。いくつかのユースケースでは、アプリケーションの以前のジョブからのフィードバックに基づいて、後のジョブを最適化することができる。ジョブ間最適化のユースケースの例としては、分子系のシミュレーションやモデリング、及びそれ以降の機械学習駆動アプローチの領域が挙げられる。物理現象のシミュレーションには通常、スーパーコンピューティングの総時間の45~60%を占める。メモリへの大幅なデータ移動を伴う、従来の粗いコンピューティング+分析の実行は、すぐに実行不可能になる。そのため、よりきめ細かなフィードバックベースの技術が望まれている。このような技術は、キュー内最適化に適しており、以前のジョブからのフィードバックを使用して、キューに入れられた後のジョブに対して簡単な最適化を実行することができる。分子動力学シミュレーションの強化学習は、上記の具体例の1つである。
【0082】
最適化の中には、コンパイル時には動的に実行されず、実行時にハードウェアを認識した方法で実行する必要があるものもある。例えば、並列及び分散アプリケーションは、性能が分散タスクと各タスクで使用可能なリソースとの相互作用に依存するため、最適化が困難である。このような動的で予測不可能な設定では、コンパイル時の最適化を実行時の最適化で増補することができる。リソース割り当てが時間の経過とともに変化することが許容されている場合、ジョブが実行のためにキューを上に移動すると(例えば、システム全体の瞬間的なスループットを最適化するために)、アプリケーションのランタイム最適化は、可能な最後のリソース割り当ての後のキューで実行することができる。
【0083】
不均一性とアクセラレータの時代において、将来のコンピューティングクラウド/スーパーコンピューティングシステムは、それぞれが動的に再構成可能な、及び/またはタスクに適したリソースのクラスタを動的に構成可能な、不均一性リソースの海から構成され得る。アプリケーションは、リソースの動的な構成に合わせて動的に最適化することができる。例えば、フィールドプログラマブルゲートアレイ(Field-Programmable Gate Array:FPGA)/テンソルプロセッシングユニット(Tensor Processing Unit:TPU)ベースの計算クラスタでは、ジョブがキューに入っている間に、最終的なターゲットの不均一性に合わせてアプリケーションを合成/コンパイルできることが想定される。
【0084】
チップ設計者が電力目標を達成するために電源電圧を下げようとする場合、パラメータのばらつきが深刻な問題となる。プロセッサの機能に影響を与える環境に起因するばらつきは、プロセス、電圧、温度の3つのカテゴリに分類される。電源電圧及びオンチップ温度は、作業負荷や環境によって変化する動的なばらつきである。電圧のばらつきは、10秒~100秒程度のサイクルで電流変動をもたらし、熱的ホットスポットを悪化させる可能性がある。熱のばらつきは、リーク電流の変化を引き起こし、チップの環境における許容電圧及びTDPを制限する。
【0085】
キュー内最適化には、動的な変動特性を認識する最適化が含まれる。ばらつきの影響は、すべてのジョブに割り当てられるリソースを削減したり、システムの最適性に応じてリソースをインテリジェントに再編成したりすることによって達成される、マイクロアーキテクチャ活動の削減によって制御することができる。これらの最適化は、可能な限り遅く実行することにより、ばらつきの最新の影響をジョブの最適化に組み込むことができる。
【0086】
本明細書で説明する量子最適化には、クライアント装置144によって、またはコプロセッサへのアクセスを介して行われる古典的な最適化が含まれ得る。現実世界のアプリケーションを対象とする場合、VQAのような古典的/量子アルゴリズムの複雑さは非常に大きくなる。例えば、小さなHO分子でさえ、100個近くの量子回路/パラメータを持っている。これらのアルゴリズムの複雑さが増すにつれて、量子コンポーネント及び古典的コンポーネントの両方にかなりのリソースが必要になると予想される。例えば、QAOAアルゴリズムの場合、複雑性が高いということは、量子の観点からは、より多くの量子ビットとより深い回路を意味するだけでなく、QAOAパラメータを調整するためには、より困難な最適化スキームとより高い計算要件が必要となることを意味する。このようなシナリオでは、クラウド上の希少なリソースに対して、古典的な最適化と量子的な最適化との両方が実行されることが期待される。したがって、古典的なリソースと量子リソースとの両方にアクセスするためのキューが存在する。このようなシナリオでは、古典的リソースと量子リソースとの両方に対してキュー内最適化の余地がある。前述の最適化セットは両方とも、このハイブリッドモデルに適している。
【0087】
図4は、クラウド処理システム100によって提供される仮想キュー402の例を示す図である。より多くのユーザフレキシビリティを可能にするために(例えば、上述の最適化を超えて)、クラウド処理システム100は、ユーザが管理する仮想キュー402を提供する。例示的な実施形態では、クラウド処理システム100は、要求元のユーザ「ユーザA」に対しては仮想キュー402Aを確立し、別の要求元のユーザ「ユーザB」に対しては別の仮想キュー402Bを確立している。仮想キューAPIを介して、各要求元のユーザには、相対的な順序付け、ジョブ404の追加/削除、ジョブ404の修正などに関して、ユーザの制御下にあるジョブ404をキューイング可能な仮想キュー402が付与される。これらの仮想キュー402A、402Bのそれぞれには、それに関連する要求元のユーザのジョブ404A、404Bが含まれる。これらのジョブ404のそれぞれは、それに関連するジョブキュー(または「物理的ジョブキュー」)120上に現在あるジョブ122の1つへのリンクを表する。仮想キュー402は、マシンの実際の物理的なジョブキュー120に沿って分散される(例えば、フェアシェアのような従来の優先順位スキームに基づいて、ハードウェアのターゲティングに基づいて、またはそのようなものに基づいて)。物理的なジョブキュー120自体は、ユーザ仮想キュー402の存在に依存しなくてもよい。また、物理層での仮想キューベースの優先順位付けアルゴリズムを実装することもできる。
【0088】
いくつかの実施形態では、「ユーザA」のような特定のユーザは、複数の仮想キュー402を持つことができ、それぞれの仮想キュー402は、異なる量子アプリケーション、または、異なる量子コンピュータ装置132もしくは古典的コンピュータ装置134をターゲットとすることができる。いくつかの実施形態では、QaOサーバ110は、ユーザが仮想キュー402及びそれに関連するジョブ404の態様を設定、維持、管理、または他の方法で管理することを可能にするグラフィカルユーザインタフェース(GUI)を提供することができ、また、それらの仮想キュー402をサポートする基礎となるジョブキュー120に関するデータを提供することができる。いくつかの実施形態では、仮想キュー402のコンポーネントは独立していてもよいし、または依存していてもよく、仮想キュー402は、キュー間の依存関係を容易にするためにタスク制御バリアを提供してもよい。QaOサーバ110は、ユーザが自身の仮想キュー402内でジョブ404を並べ替えることを許可してもよく、これにより、スケジューリングエンジン114は、基礎となる物理的なジョブキュー120上の関連するジョブ122を並べ替えることができる。
【0089】
図5は、量子処理のための新たなリクエスト140を受信したときの装置選択のための例示的な方法500を示す図である。例示的な実施形態では、方法500は、新しいリクエスト140を受信したとき、そのリクエスト140に関連付けられた若いジョブが特定のQC132で実行するために任意の特定のジョブキュー120に追加される前に、QaOサーバ110によって(例えば、図1に示すスケジューリングエンジン114及びクラウド処理システム100によって)実行される。より具体的には、この例のリクエスト140では、リクエスト140は実行の対象となる特定のQC132を指定するのではなく、むしろ、QaOサーバ110が方法500を実行して、システム100によって管理されている一連のQC132から、リクエスト140を実行するために使用する特定の量子コンピュータ装置(または図5の「QC」)132を特定する。
【0090】
例示的な実施形態では、リクエスト140は、(例えば、リクエスト140のための回路502のバッチとして)リクエスト140に関連付けられた1以上の回路502を含むか、またはそうでなければ特定する。これらの回路502は、リクエスト140に含まれてもよいし、QaOサーバ110によって生成されてもよい(例えば、ソースコードなどからコンパイルされる)。ステップ510において、QaOサーバ110は、この特定のリクエスト140について検討する適格な候補であるQCのサブセットを特定する。例えば、QaOサーバ110は、システム100によって管理されるQC132のすべてから、このリクエスト140の実行を実行することができないQC132、または、このリクエスト140を実行するための候補から除外されるQC132を削除することによって、それらのQC132のサブセット512を特定することができる、このことは、例えば、リクエスト140に対するハードウェアの制限(例えば、各特定のQC132上で利用可能な量子ビット数に対する回路を実行するために必要な量子ビット数)、サービスレベルの考慮(例えば、サービスレベル契約で事前に定義された制限、ユーザアカウント設定、事前に定義されたキューイング時間の制限など)、または、リクエスト140内の制限(例えば、イオントラップQC132または超電導QC132のみに制限するなどのユーザが指定した制限)に基づいて行うことができる。QaOサーバ110は、例えば、QC132によって提供される量子ビットの数、QC132全体の平均ゲートエラー率、QC132全体の平均測定エラー率、異なる量子ビットのサブセット全体の平均エラー率、QC132の忠実度に関する履歴データ、閾値キューイング時間(例えば、現在のキュー時間が特定の閾値を超えるQC132は、この段階で除外することができる)、較正サイクルの詳細(例えば、近い将来較正される予定のQC132は、この段階で除外することができる)、QC使用傾向に関する履歴データ、QC使用率データ(例えば、特定のジョブによって使用されるであろう特定のQCの全量子ビットの割合)、及び/または、QCトポロジの132側面に基づいて、QC132を制限することができる。
【0091】
ステップ520において、例示的な実施形態では、QaOサーバ110は、QCのサブセット512における候補のQC132ごとに回路502をコンパイルする。回路502のコンパイルは、この段階では、サブセット512のQC132の各々について、より具体的には、各QC132の特定のアーキテクチャごとに、コンパイルされた回路を作成する。いくつかの実施形態では、所与のリクエスト140のための回路502は、多くの回路(例えば、回路502のバッチ)を含むことができ、ステップ520における回路502のコンパイルは、そのリクエスト140のための回路502のすべてをコンパイルすること、及び、各マシン-ジョブペアについて(例えば、平均、最小、最大、または何らかのパーセンタイルを介して)集計することを含み得る。リクエスト140は何百もの回路を含むことができ、したがって何百ものコンパイルが発生するため、この徹底的なアプローチはリソースを消費する可能性がある。忠実度スコアリングを低減するために、いくつかの実施形態では、送信元のユーザは、ユーザが回路502のバッチを代表するとみなすリクエスト140の一部として、1以上の特定の回路502Xを特定することを選択することができ、QaOサーバ110は、ステップ520において、各候補QC132の忠実度スコアリングのために、それらの代表的な回路502Xのみをコンパイルすることができる。いくつかの実施形態では、QaOサーバ110は、忠実度スコアリングのために1以上の回路502Xを自動的に選択することができる(例えばランダムに)。いくつかの実施形態では、送信元のユーザは、忠実度スコアリングのためにどの回路502Xを特定するか、及びそれらの回路502Xのうちのいくつを特定するかを決定することができる。代表的な回路502Xのこの選択は、本方法500のコンパイル及び解析のためのコンパイルのオーバーヘッドを容易にする。
【0092】
回路のコンパイルは、例示的な実施形態では、QaOサーバ110が、コンパイルされた回路のそれぞれについて特定の回路特徴522を抽出することを可能にする。回路特徴522は、例えば、回路深さ(例えば、回路内の高エラーゲートの最長シーケンス)を含み得る。各回路502のこのような回路特徴522は、回路502がコンパイルされた特定のQC132の特徴(例えば、QC132の特定のアーキテクチャやトポロジ)の影響を受け、そのため、コンパイル後にいくつかの回路特徴522を抽出することができる。例えば、同じ回路について、良好に接続されたQC132の回路深度は、良好に接続されていないQC132の回路深度よりも低くなる。例示的な実施形態では、回路特徴522には、回路深度、回路全体の平均CXエラー、回路クリティカルパスにおける平均CX、及び、測定された量子ビットの読み取りエラーが含まれる。いくつかの実施形態では、回路特徴522は、1qゲートエラーなどの追加の特徴を含み得る。
【0093】
例示的な実施形態では、これらの回路特徴522が抽出され、忠実度相関に使用される。ステップ530において、QaOサーバ110は、これらの回路502のQCのこれらの回路特徴522を使用して、回路特徴522と、各特定のQC132上での回路502の実行の予想される忠実度との間の相関関係を決定する。忠実度は、回路の実行がこのQC132で正しい出力を達成する可能性の近似値を表す(例えば、実行時に出力が成功する確率)。ステップ530の間、QaOサーバ110は、各QC132上の回路502の忠実度の予測、すなわち「忠実度スコア」を生成する。これらの忠実度スコアは、その後、このジョブ122Xを特定のQC132に割り当てる際の1つの要因として使用され、特定のQC132に対するより高い忠実度スコアは、他のQC132に対するより低い忠実度スコアよりも優先される。例示的な実施形態では、忠実度相関の忠実度スコアリングモデルは、線形項の積として構築される。
【0094】
【数2】
【0095】
式中、Fはジョブnの忠実度スコアであり、xは特徴であり、a及びbは調整係数である。
【0096】
例示的な実施形態では、忠実度の推定に加えて、QaOサーバ110は、ジョブ122Xを特定のQC132に割り当てる際に、2つの追加的な要素を使用する。ステップ540では、QaOサーバ110は、各候補QC132のジョブキュー120ごとに現在のキューイング時間を推定する。これらのキューイング時間は、ジョブ122Xがジョブキュー120を移動し、特定のQC132で実行されるのに要する時間の推定値を表する。特定のジョブキュー120のキューイング時間の推定値が低い方が、他のジョブキュー120のキューイング時間が長い方よりも好ましい。
【0097】
例示的な実施形態では、実行時間予測モデルは、線形項の積として構築される。
【0098】
【数3】
【0099】
式中、Eはジョブnの実行時間スコアであり、xは特徴であり、a及びbは調整係数である。例示的な実施形態では、実行時間予測モデルの特徴としては、バッチサイズ、ショット数、回路深度、回路幅、量子ゲートの総数、及び、マシンのオーバーヘッド(例えば、必要なサイズ及びメモリスロット)が挙げられる。QaOサーバ110は、上記の実行時間予測モデルを使用して、所与のジョブキュー120上の各ジョブ122の実行時間を計算し、その特定のジョブキュー120のキューイング時間を決定する。特定のジョブキュー120ごとのキューイング時間の推定値は下記のとおりである。
【0100】
【数4】
【0101】
式中、QはM番目のQC132のキューイング時間であり、EはそのQC132のジョブキュー120のi番目のジョブの実行時間であり、mはジョブキュー120に現在入っているジョブの合計数である。
【0102】
例示的な実施形態では、QaOサーバ110は、ステップ560において、忠実度スコア及びキューイング時間を使用して、このリクエスト140(例えば、ジョブ122X)に対する特定のQC132を選択する。効用関数の最大化は、忠実度とキューイング時間とのバランスを取ったジョブスケジュールを提供する。効用関数としては、平衡線形方程式が使用される。
【0103】
【数5】
【0104】
式中、xは特徴(例えば、キューイング時間、忠実度スコア、QoS満足度、期待される較正交差、または他の機能の記述)であり、aはその特徴の係数である。例示的な実施形態では、各QC132/ジョブキュー120の忠実度スコアとともにキューイング時間を使用するが、いずれかのメトリックのみを使用してもよく、また、ステップ550において追加の制約として識別された他の機能を使用してもよい。他の特徴としては、例えば、リクエスト140に(例えば、サービスレベル契約等に基づいて)適用されるQoS要件、QC132の較正の影響やQC132用のコンパイルの失効、ユーザの優先順位、及び、マシン使用率の向上などが挙げられる。
【0105】
さらに、各特徴に関連する係数aは、集合[-1、0、または1]から構成されてもよいし、例えば過去の性能や現在のシステム条件などに基づいて静的または動的に構成されてもよい。例えば、全体的なキューイング時間が短い状況(例えば、QC132の選択されたサブセットの平均キューイング時間が予め定められた閾値を下回っている場合)では、短い待ち時間はそれほど重要ではないため、高忠実度に対してより高い重みが設定される(例えば、より高い忠実度スコアを持つQC132では)。このような状況では、予測精度の高いQC132がルーチン的にターゲットにされる傾向があり、したがって、それらのQC132がより多くのジョブ実行をフィールドすることができる。いくつかの実施形態では、システム100は、それらの高忠実度QCのキューイング時間が増加するにつれて、他のQC132を対象として重み付けを行うように構成され得る。より高いシステム負荷(例えば、より長い平均キューイング時間)では、ユーティリティ関数がジョブ122を忠実度は低いがキューイング時間の短いQC132/ジョブキュー、120に送信するため、システム100は実行時間の改善のために忠実度をある程度犠牲にすることがある。
【0106】
いくつかの実施形態では、QCスコアのいくつかの因子は、ユーザによって調整してもよく(例えば、因子係数を介して)、例えば、様々な因子のユーザ提供またはユーザ固有の係数を可能にするなどしてもよい(例えば、ユーザが特定のリクエストの優先順位を特定したり、すべてのリクエストの優先順位を特定したりしてもよい)。いくつかの実施形態では、同様に、管理者がいくつかの要素を調整してもよい。いくつかの実施形態では、いくつかの因子を動的に設定してもよい(例えば、教師ありまたは教師なし訓練として、過去の性能データまたは性能特性330を使用して特定の特徴について訓練された機械学習モデルなど)。
【0107】
上述したように、QC132は、定期的に再較正される。この再較正は、較正直後のQCをより正確にする傾向があるが(例えば、より高いジョブ忠実度を提供する)、時間の経過とともに精度が低下する傾向がある(例えば、エラー率が変化する)。このようなデバイス較正の「低下(decay)」または「陳腐化(staleness)」の状況は、考慮すべき2つの問題を提示する。第1に、所与のリクエスト140の忠実度予測は、各特定のQC132を再調整してからの経過時間によって影響を受ける可能性がある。第2に、特定のQC132に割り当てられたいくつかのジョブ122は、そのQC132の特定の較正サイクルを「クロスオーバー(crossover)」する場合がある(例えば、QC132の再較正の前にコンパイルされたが、QC132の再較正の後に実行される)。QaOサーバ110は、これらの各状況に対処するように設定され得る。
【0108】
各特定のQCに対する較正サイクルの陳腐化に対処するために、例えば、QaOサーバ110は、ステップ560におけるスコアリングに(または、ステップ530における忠実度スコアリングの修正としてより直接的に)、較正サイクル時間を機能に統合する較正サイクル機能を含めることができる。例えば、システム100は、各QC132の最後の再較正時間を追跡してもよく、最後の再較正時間からの経過時間に基づいて各QC132の「陳腐化時間」を決定することができる。この陳腐化時間は、その特定のQC132の忠実度スコアを調整するために使用されてもよいし、または効用関数の別の制約として使用してもよいし、これにより、陳腐化時間が長くなるにつれてQC132のスコアを減らすことができる。いくつかの実施形態では、QaOサーバ110は、それに加えてまたはその代わりに、次回の再較正までの予測時間をスコアリングの因子として使用することができる。次回の再較正イベントの時間が近いQC132は、そのQC132に若いジョブ122Xを投入することに対して重み付けしてもよい。QaOサーバ110は、特定のジョブキュー120の予測されるキューイング時間と次回の再調整までの時間との差を考慮し、そのQC132が次回の再較正までQC132を占有するのに十分なジョブ122を有している場合に、特定のQC132に対してスコアリングを重み付けする。換言すれば、その特定のQC132のスコアは、このジョブ122XがそのQC132のクロスオーバーの対象となるリスクが増大するにつれて低くなる。これにより、スケジューリングに基づくクロスオーバージョブの発生が低減される。「クロスオーバージョブ」という用語は、再較正の前に特定のQC132のためにキューに入れられているが、何らかの理由で、そのQC132が再較正を完了するまで実行されないジョブ122を指す。
【0109】
特定のジョブキュー120にすでに入っているジョブ122の較正クロスオーバー状況に対処するために、QaOサーバ110は、QC132の一部またはすべてについて較正サイクルを実施するタイミングを調整することができる。いくつかの実施形態では、QaOサーバ110は、QC132の較正時間を終日スタッガー(stagger)することができる。このように、いくつかのQC132は、クロスオーバーのリスクがないジョブ122を受け入れるために、スケジューリングアルゴリズムに対して利用可能になる。いくつかの実施形態では、QaOサーバ110は、定期的にスケジュールされた再較正時間に近い、キュー時間が短いQC132を識別し、その短いキュー時間をうまく利用するために、そのQC132に事前に再較正のフラグを立てることができる(例えば、定期的に予定されている再較正を繰り上げる)。例えば、特定のQC132が、予め定められた閾値(例えば、残りのジョブ122が10分、30分)を下回るジョブキュー120を有し、予定されている次回の再較正時間が予め定められた閾値以下の場合(例えば、通常は次の30分、60分、2時間以内に実行される)、QaOサーバ110は、そのQC132に再較正のためのフラグを立てることができる。このようなフラグ付けにより、そのQC132に、その既存のジョブキュー120を終了させ、再較正を実行し、その後、サービスに再入力させることができる。
【0110】
いくつかの実施形態では、QaOサーバ110は、関連するジョブキュー120が再較正までの残り時間に達するかそれを超えるのに十分なジョブ122を含むようになるまで、特定のQC132にジョブ122をスケジュールしてもよく(例えば、残り時間を考慮したらジョブキュー120を閉じる)、QaOサーバ110は、ジョブキュー120が使い果たされるまでQC132の再較正を保持し、それにより、クロスオーバージョブを回避することができる。いくつかの状況では、ジョブのクロスオーバーが発生したときに、QaOサーバ110は、クロスオーバージョブを再コンパイルし、コンパイル後にクロスオーバージョブを再キューイングしてもよい(例えば、再コンパイルが完了すると、好ましい配置で)。いくつかの実施形態では、特定のQC132のマシンノイズプロファイルが再コンパイルによってわずかにしか変化しない場合(例えば、デルタが予め定められた閾値より小さい場合)、クロスオーバージョブは再コンパイルしなくてもよい(例えば、前のコンパイル依然として良好であると予想されるため)。
【0111】
いくつかの実施形態では、QaOサーバ110は、履歴データ(例えば、キュータイム、クロスオーバージョブのパフォーマンス)を使用して、QC132のスケジュールされた再較正時間を動的に決定することができる。例えば、いくつかのQC132は、1日の特定の時間帯に使用量が少なくなることがあり(例えば、より低いキュー時間で例示されるように)、そのため、QaOサーバ110は、そのQC132のスケジュールされた再較正時間をその日のその時間帯にシフトさせることができる。別の例では、(例えば、過去の再較正に対する特定のQC132の)クロスオーバージョブ数がQaOサーバ110によって追跡される場合があり、QaOサーバ110は、スケジュールされた再較正時間を、クロスオーバージョブの発生がより少ない時間帯にシフトさせることができる。
【0112】
例示的な実施形態では、リクエスト140に対して特定のQC132及び関連するジョブキュー120が選択されると、QaOサーバ110は、ステップ570において、ジョブ122Xを作成し、そのジョブ122Xを関連するジョブキュー120に追加する。回路502のすべてがQC132のためにコンパイルされなかった実施形態では(例えば、ステップ520の間に、ユーザがこのリクエスト140のための代表回路として使用する特定の回路502Xを指定した場合)、QaOサーバ110は、このジョブ122Xのため及びこの特定のQC132のために、回路502の残りをコンパイルする。
【0113】
図5は、リクエスト140を最初に受信したときの、特定のジョブ122Xの特定のQC132及び関連するジョブキュー120へのQC選択及び割り当ての例を示しているが、このQC選択及び割り当ては、他の状況でも行われ得ることを理解されたい。例えば、図3で説明したように、リクエストによっては、そのリクエストを完了するために必要とされる複数のジョブを使用する(例えば、実行結果222の分析後に複数回再実行される反復ジョブなど)。したがって、後続のジョブ122も同様に、図5に示すQC選択方法500に供することができる。さらに、いくつかの状況では、QaOサーバ110は、再割り当てのためにジョブ122を識別することができる(例えば、すでにジョブキュー120に割り当てられていたが、様々な理由により再び割り当てられるジョブ122)。例えば、いくつかの実施形態では、QaOサーバ110は、オフラインになったQC132のために(例えば、再較正イベントや予期せぬ故障などのために)、いくつかのQC132のキューイング時間を短縮するために(例えば、キューイング時間の長いQC132から他のQCにジョブ122を再分配する)、または、クロスオーバー状況において、ジョブを再割り当てすることができる。そのため、再割り当てされたジョブ122は、このQC選択方法500を用いて再処理され、いくつかの状況では、若いジョブキュー120に好ましい配置が与えられる(例えば、再割り当てされたジョブ122Xが前のジョブキュー120に配置された時点と、新しく選択されたジョブキュー120上のジョブ122のキューイング時間に基づいて)。
【0114】
上述の本明細書の記載に基づいて理解されるように、本開示の上述の実施形態は、コンピュータソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせまたはサブセットを含むコンピュータプログラミング技術またはコンピュータエンジニアリング技術を用いて実施することができ、その技術的効果は、量子プロセッサ上での実行のために変分量子プログラムをコンパイル及び最適化することである。コンピュータ可読コード手段を有する任意のそのようなプログラムは、1以上のコンピュータ可読媒体により具現化または提供され、それによって、本開示の説明された実施形態にしたがって、コンピュータプログラム製品(すなわち、製品)を製造することができる。コンピュータ可読媒体は、これに限定しないが、例えば、固定(ハード)ドライブ、ディスケット、光ディスク、磁気テープ、読み出し専用メモリ(ROM)などの半導体メモリ、及び/または、インターネットまたは他の通信ネットワーク若しくはリンクなどの任意の送受信媒体であってもよい。コンピュータコードを含む製品は、或る媒体から直接コードを実行することによって、或る媒体から別の媒体にコードをコピーすることによって、または、ネットワークを介してコードを送信することによって、製造及び/または使用することができる。
【0115】
これらの従来のコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリケーション、コードとも呼ばれる)は、従来のプログラマブルプロセッサ用の機械命令を含み、高レベルの手続き型及び/またはオブジェクト指向のプログラミング言語、及び/またはアセンブリ/機械言語によって実装することができる。本明細書で使用するとき、「機械可読媒体」、「コンピュータ可読媒体」という用語は、機械命令及び/またはデータをプログラマブルプロセッサに提供するために使用される任意のコンピュータプログラム製品、装置、及び/またはデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を指し、機械命令を機械可読信号として受信する機械可読媒体を含む。ただし、「機械可読媒体」及び「コンピュータ可読媒体」には、一過性の信号は含まれない。「機械可読信号」という用語は、プログラマブルプロセッサに機械命令及び/またはデータを提供するために使用される任意の信号を指す。
【0116】
本明細書は、実施例を用いて、最良の実施の形態(ベストモード)を含む本発明の内容を開示し、かつ本発明を当業者が実施(任意の装置またはシステムの作製及び使用、並びに組み込まれた任意の方法の実施を含む)することを可能にしている。本発明の特許される技術範囲は、特許請求の範囲の請求項の記載によって定義され、当業者が想到可能な別の実施形態も含まれ得る。そのような別の実施形態は、各請求項の文言と相違しない構成要素を含む場合、または、各請求項の文言とは実質的に相違しない均等な構成要素を含む場合、その請求項の範囲内に含まれるものとする。
図1
図2
図3
図4
図5
【国際調査報告】