量子コンピュータのクラウドサービスをOSSとして公開しました
はじめに
こんにちは、大阪大学 量子情報・量子生命研究センター[1]特任研究員の宮永(@orangekame3)です。
当研究センターでは量子コンピュータの研究を重点的に行っており、取り組みの一環として、量子コンピュータのクラウドサービスをOSSとして公開しました。
本記事では、OSSとしてソースコードを公開した背景や、公開したソースコードの概要について説明します。
量子コンピュータのクラウドサービスをOSSとして公開した背景
本題に入る前に量子コンピュータについて言及します。
量子コンピュータについて
量子コンピュータは、量子力学の原理を利用して情報を処理するコンピュータです。従来のコンピュータとは情報の単位そのものが異なり、量子ビットという情報の単位を用います。量子ビットは、0と1の重ね合わせ状態や、量子もつれ状態を持つことができ、適切なアルゴリズムと組み合わせることで現実的な時間スケールで解けない問題を解くことが可能になります。
量子コンピュータとクラウドサービス
2024年現在、一般の研究者や開発者が量子コンピュータにアクセスするためには、量子コンピュータを保有する企業が提供するクラウドサービスを利用するのが一般的です。量子コンピュータを提供しているサービスはIBM Quantum Platform、Quantum Cloud Services platform、Quantinuum Nexus、Amazon Braket、OQC Cloudなどがあります。
特に、IBMは量子コンピュータのクラウドサービスの先駆けを築いた企業であり、世界中の多くのユーザーが利用しており、その数は2021年当時の記事[2]にて325,000人にのぼると報告されています。IBMの量子コンピュータのクラウドサービスは、量子コンピュータの実機を効率よく利用するための様々な機能を提供しており、ユーザーはそれらの機能を利用して、自分の研究や開発を進めることができます。
量子ソフトウェアの現状と課題
量子コンピュータをプログラムするためのソフトウェアを一般に量子ソフトウェアと呼びます。先述したIBMやRigettiなどのプロバイダが提供する量子コンピュータを利用する際も提供されているSDKを利用することで量子コンピュータ実機を扱うことができます。こうしたSDKも量子ソフトウェアの一部といえます。現在、量子ソフトウェアとしては、量子コンピュータのプログラムを記述するための言語やライブラリ、トランスパイラやシミュレータなどが盛んに開発されています。
しかしながら、トランスパイラやシミュレータは活発に研究がされている一方でプロバイダ側のシステムソフトウェアについてはあまり公開されていないのが現状です。プロバイダが開発すべきソフトウェアはユーザーが投げたジョブを管理するためのジョブスケジューラ、ジョブの実行結果をユーザーに返すためのゲートウェイシステムなどがあります。また、超伝導量子ビットに関しては現状利用開始する前に量子ビットのキャリブレーションを行う必要があり、キャリブレーションシステムや監視システムも必要です。
図は「Quantum Cloud Computing: A Review, Open Problems, and Future Directions」[3]より引用
私たちはこうした状況を鑑みて、量子コンピュータを使うユーザー向けのソフトウェアだけではなく、作る側のソフトウェアをOSSとして公開することで、システム構築から運用までを踏まえた新たな分野を切り開くことができるのではと考えています。
量子コンピュータのクラウドサービスとコミュニティ
量子コンピュータのクラウドサービスをOSSとして公開することで、クラウドサービスを利用するユーザーが、自分たちのニーズに合わせてシステムをカスタマイズすることができるようになります。現在、大阪大学が運用している量子コンピュータは、研究者や大阪大学が運営している量子ソフトウェア勉強会の参加者などのユーザーに利用されています。これらのユーザーからの要望をシステムに反映し、機能開発を進めていくことでクラウド量子コンピュータの可能性を広げていくことができると考えています。
量子コンピュータクラウドサービスのOSS公開の意義
近年、先述したビッグテックだけではなく、研究機関やスタートアップなどが量子コンピュータをクラウドサービスとして提供するようになってきています。一方でこういったクラウドサービスを支えるソフトウェアのスタンダードは未だ確立されていません。そこで、私たちは、量子コンピュータのクラウドサービスをOSSとしていち早く公開することで、量子コンピュータのクラウドサービスを提供する企業や研究機関が、より効率的にシステムを構築することができるようになることを期待しています。
以上、量子コンピュータのクラウドサービスをOSSとして公開した背景について説明しました。再度、量子コンピュータのクラウドサービスをOSSとして公開することの意義をまとめると以下の通りです。
- システム構築から運用までを踏まえた新たな分野を切り開くことができるのではと考えています。
- 量子コンピュータのクラウドサービスを利用するユーザーが、自分たちのニーズに合わせてシステムをカスタマイズすることができるようになります。
- 量子コンピュータのクラウドサービスを提供する企業や研究機関が、より効率的にシステムを構築することができるようになることを期待しています。
今回公開したソースコードについて
今回公開したソースコードはクラウドサービス上にホスティングするジョブマネージメントシステムです。
システムアーキテクチャ図
一般に量子コンピュータをクラウドサービス経由で利用する場合、以下のような量子回路をジョブとしてクラウドサービスにリクエストします。
OPENQASM 3;
include "stdgates.inc";
qubit[2] q;
bit[2] c;
h q[0];
cx q[0],q[1];
c[0] = measure q[0];
c[1] = measure q[1];
先の例はOpenQASM[4]という量子回路を記述するための言語で記述された量子回路ですが、Pythonで記述されたプログラムからジョブを投げることもできます。以下はQURI PartsというPythonライブラリを使って量子回路を記述し、ジョブを投げる例です。
from quri_parts.circuit import QuantumCircuit
from quri_parts.riqu.backend import RiquSamplingBackend
backend = RiquSamplingBackend()
n_shots = 1024
circuit_bell = QuantumCircuit(2)
circuit_bell.add_H_gate(0)
circuit_bell.add_CNOT_gate(0, 1)
job_bell = backend.sample(circuit_bell, n_shots=n_shots, remark="demo Bell state")
counts_bell = job_bell.result(wait=1).counts
プロバイダはジョブを投げるためのAPIを提供しており、ユーザーはそのAPIを使ってジョブを投げることができます。プロバイダはジョブを受け取り、キューに入れて実行し、結果をユーザーに返します。
今回公開したジョブマネージメントシステムは、Restful APIを通じてジョブを受け取り、実行キューに入れて結果をレスポンスする機能を提供しています。
以下は、ジョブの一連の流れをシーケンス図で表したものです。
当然、今回公開したようなジョブマネージメントシステムだけでは、量子コンピュータを支えるソフトウェアとしては十分ではありません。Quantum Processor Unit(QPU)のそばでジョブの実行管理を行うサーバーやQPUを制御するためのソフトウェアなども必要です。今後、こういったシステムも含めてOSSとして公開していく予定です。
おわりに
以上、量子コンピュータのクラウドサービスをOSSとして公開した背景や、公開したソースコードの概要について説明しました。今後も、量子コンピュータのクラウドサービスをOSSとして公開していく予定です。引き続き、当研究センターの取り組みにご注目いただければ幸いです。
Discussion