国産量子コンピュータ・システム(3号機)の概要を紹介します

こんにちは、@snuffkinです。

普段は、大阪大学で量子コンピュータ・システムを作ったり、運用したりしています。
趣味で、[オープンソースの量子コンピュータ・クラウド](https://github.com/gaqqie/gaqqie)を開発したり、[実機を使ったサービス](https://www.quantumcomputer.tokyo/horoscope.html)を4年くらい運用しています。

# 量子コンピュータがシステム化される時代になった

今年は「国産量子コンピュータ元年」とも言われており、国内の研究機関・企業が中心になって3台の量子コンピュータがクラウド公開されました。メディアで報道されたこともあり、もしかすると、ご存じの方もいるかもしれません。
それぞれのプレスリリースへのリンクを貼っておきます。

 * [初号機](https://www.riken.jp/pr/news/2023/20230324_1/)
 * [2号機](https://pr.fujitsu.com/jp/news/2023/10/5.html)
 * [3号機](https://qiqb.osaka-u.ac.jp/20231220pr/)

実用化はまだ先ではあるものの、量子コンピュータがシステム化される時代になりました。
**量子コンピュータを実用化するには、実験装置ではなく、システムとしてユーザに提供する必要があります。** そのために、量子コンピュータ・システムの開発や運用に関する研究が必要です。今はその黎明期です。

実際に運用している立場からすると、課題だらけの状況です。システム開発や運用に関する技術が深まらないと、とてもじゃないけど実用化なんてできないです。たとえば、スパコンはハードウェアがあるだけでなく、使うためのソフトウェアや運用技術も揃っています。だから実用的に使えるんです。量子コンピュータの場合、そういうのはまだ揃っていない状態です。
この記事の本題ではないので、このあたりは、別の機会で詳しくお伝えできればと思います。

私が所属する大阪大学でも、12月22日から量子コンピュータ・システムの運用を開始し、実際に使ってもらっています。
現在は3台とも不特定多数には公開しておらず、限られたユーザに公開しています。3号機の場合は、大阪大学が主催している[量子ソフトウェア勉強会](https://qsrh.jp/seminar/)の参加者に対して公開しています(2023年12月現在)。

3号機のプレスリリースでは、システムの全体像を公開しました。量子コンピュータ・システムの中身をここまで公開したのは、少なくとも国内では初めてだと思います。そこで、**この記事では、量子コンピュータ・システムの概要をご紹介します**(あくまで概要です)。
今後は量子コンピュータ・システムの中身についてお伝えする機会が増えると思いますので、詳細については、別に機会にまた。
この記事の図はすべて[大阪大学のプレスリリース](https://qiqb.osaka-u.ac.jp/20231220pr/)から引用しています。


# 量子コンピュータ・システムの概要

これが3号機のプレスリリースで公開された、量子コンピュータ・システムの全体像です。なんか、あちこちに大阪大学のロゴがありますね。その理由はこの記事の最後の方で分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13107/61a7d0a3-d25b-ddda-780c-150c66d298d2.png)

図の左側にいるユーザがプログラミングを行い、左から右に情報が渡っていき、右側にある量子チップで計算します。計算結果は右から左に返ってくる流れになります。
このシステムは3層に分かれています。

 * **フロントエンド層** … ユーザのコンピュータでプログラミングを行います
 * **クラウド層** … ユーザ認証を行い、ユーザから量子計算ジョブを受け付けてジョブ管理などを行います
 * **バックエンド層** … 量子コンピュータやその制御を行う、オンプレミスのサーバ群からなります

層の名前の付け方は量子コンピュータ業界で統一的なものがあるわけではないため、論文などによって異なります。ただ、システム構成の雰囲気は概ね似ているのではないかと思います。
3号機のクラウド層はAWS上に構築しており、インターネットにつながっているパソコンから量子コンピュータを実行できます。
それでは、各構成要素について概要をお伝えします。

## ブログラミング(フロントエンド層)

量子プログラミングのライブラリはPythonで動作することが多く、3号機も[QURI Parts](https://qunasys.com/news/posts/quri-parts/)というPythonで動作するライブラリから実行できるようにしています。量子回路のクラスを初期化し、量子ゲートを載せていく、という標準的な実装を行います。
基本的な量子回路であるBell測定の実装例は次のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13107/1fc2e273-58e1-b410-3064-6af0f17a7c57.png)

実装したら、[QURI Parts riqu](https://quri-parts-riqu.readthedocs.io/en/latest/)というライブラリを経由して、クラウド層に量子回路を渡します。QURI Parts riquは量子回路のジョブをプログラムから操作できるようにし、フロントエンド層とクラウド層の通信処理も担っています。
また、フロントエンド層とクラウド層のやりとりはQURI Partsのプログラムそのものを送るのではなく、OpenQASM3.0(のサブセット)に変換したものを使っています。OpenQASM3.0はIBMやAWSが仕様策定を行っている、量子コンピュータの世界である程度一般的な量子回路の表現形式です。先ほどの量子回路をOpenQASM3.0で表現すると、次のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13107/0e424cca-a979-7f59-2c91-3558804c8ea1.png)

インタフェースにOpenQASM3.0を採用しているため、将来的にはQURI Partsだけでなく、様々なライブラリから3号機を実行できるようになるでしょう。

フロントエンド層はユーザが直接利用することもあり、量子コンピュータ業界ではオープンソースとして公開するのが一般的です。3号機で利用しているフロントエンド層のライブラリも、オープンソースとして公開されています。

## ユーザ認証、ジョブ管理(クラウド層)

クラウド上に構築したアプリケーションで、ユーザ認証や量子回路のジョブ管理を行っています。また、ユーザ向けにWeb画面を提供しています。業務要件は量子コンピュータ特有ですが、基本的に普通のITシステムです。

## スケジューリング、トランスパイル(バックエンド層)

量子回路ジョブを量子チップで実行するため、スケジューリングを行います。また、トランスパイルという処理を行います。
実は、ユーザがプログラミングした量子回路は、そのままでは量子チップで実行できません。量子チップがサポートしているプリミティブな命令に変換する必要があります。従来のコンピュータに命令セットがあると同じです。また、量子ビットの物理的な接続性や実行精度の情報などを考慮し、プログラムを最適化します。こういった変換や最適化を行うのがトランスパイラです。

トランスパイラを実装するのに(線形代数的な)量子力学の概念は多少必要ですが、トランスパイラ自体は普通のプログラムです。個人的な感想ですが、最適化とか競技プログラミングとか機械学習をやっている人は、親和性が高い分野だと思います。

## マイクロ波信号・波形生成(バックエンド層)

3号機は超伝導方式の量子コンピュータです。超伝導方式では、量子チップをマイクロ波で制御します。そこで、トランスパイルされた量子回路からマイクロ波信号の波形を生成する必要があります。
この波形の形式は独自の形式です。量子コンピュータ・システムはまだ黎明期のため、業界全体で合意されたレイヤ分割は無く、レイヤ間の標準仕様も確立していません。

ある程度の量子力学の知識が必要ですが、従来型のコンピュータでマイクロ波制御(ソフトウェア)を行っている人は、親和性が高い分野だと思います。

## マイクロ波信号・送受信(バックエンド層)

実際にマイクロ波を量子チップに送受信するところです。マイクロ波を制御するソフトウェアだけでなく、ハードウェアに関する知識も必要です。標準規格は無く、制御装置のメーカに依存しているのが現状です。

よく写真で見かけるシャンデリアみたいなやつの近くにラックがいくつか置いてあり、そこに制御装置があります。
扱う量子ビットが増えると制御装置も増え、制御の大変さは増していきます。

量子力学の知識も必要ですが、従来型のコンピュータでマイクロ波制御(ハードウェア)を行っている人は、親和性が高い分野だと思います。

## 量子チップ(バックエンド層)

量子チップ上には超伝導回路があり、マイクロ波で制御します。よく写真で見かけるシャンデリアみたいなやつが希釈冷凍機に入っており、その先端に量子チップがあります。熱雑音を防いだり、超伝導を使ったりするため、量子チップの部分は10mK(ほぼ絶対零度)に冷やす必要があります。
量子チップ上に量子ビットを実現し、それを操作することで、計算を行います。量子力学の世界です。

# 量子コンピュータ・システムは、ほぼ従来のコンピュータでできている

(ここから先はポエムです)

さて、こうして量子コンピュータ・システムを眺めてみるとあることに気づきます。
実は、**量子コンピュータが量子なのは、量子チップの部分だけ**なんです。量子コンピュータ・システムのほんどの部分は従来のコンピュータで動作しています。
コンピュータにとってCPUが重要なのは言うまでもありませんが、それ以外にも重要な要素はたくさんあります。量子コンピュータにも同じことが言えます。量子チップが重要なのは言うまでもありませんが、それ以外にも重要な要素はたくさんあります。そして、量子チップ以外は従来のコンピュータです。

これまでの量子コンピュータは「いかにチップを作るか」の比重が大きく、量子力学関連の人材が多く必要とされてきました。しかし、量子コンピュータをシステムとしてユーザに提供し、実用化に向けて進むには、幅広い人材が必要になります。**従来のコンピュータに関して専門的なスキルを持った方は、量子コンピュータでも活躍できる可能性が高い**、と私は思います。(私も物理出身ではありません)

国産3号機を公開した大阪大学には、次のような特長があります。

 * 量子情報・量子生命研究センター(量子ソフトウェア研究拠点)という1つの組織に様々なレイヤの研究者がいるため、ほとんどのレイヤを自分たちでサポートできる(図3の至る所に大阪大学が登場する)
 * 1つの組織として研究者同士が連携している強みがある
 * 量子コンピュータには幅広い人材が必要なことを理解しており、尊重する風土がある

こういう研究機関は、おそらく現状で日本唯一だと思います。

今の量子コンピュータは、従来のコンピュータを真空管で作っていた時期に相当します。実用的な量子コンピュータを作り、世の中に普及させるには厳しい課題が山ほどありますが、それをクリアして新しい技術を作っていく楽しさも味わえます。
**「自分の技術を量子コンピュータに役立てたい」と考えている方は、ぜひ一緒に作りましょう！**(SNSでもいいですし、お声がけください)