電子情報分野出身の三好健文氏

三好健文氏(以下、三好):よろしくお願いします。本日は、量子コンピューティング技術の魅力というお題です。先ほどの遠藤さん(遠藤克浩氏)がわりときちんと量子をやっているのに対して、私はずっと電子情報系なので、電子情報系からの参入で量子コンピューティング技術がどう関わっていて、これからどう関わっていけるかという話をさせていただきたいと思います。

いくつか所属があっていろいろ並べているのですが、電気情報系でいろいろな会社をやったり、最近は量子コンピューターの制御装置を作る会社を設立して、そこで働いています。そのあたりは後で話したいと思います。

本題に入ります。簡単に自己紹介すると、バックグラウンドとしては、コンピューターアーキテクチャやコンパイラみたいなことをやっていました。ちょうどドクターを取った頃にPlayStation 3というゲーム機が出ました。そのプロセッサが大変おもしろかったことが、今でも叫ばれていますが、ムーアの法則が終わるからプロセッサをどうにかしなきゃいけない。

その時はプロセッサをたくさん並べてがんばりましょうという話だったのですが、そういう環境でソフトウェア開発をどうにか効率良くしようという研究をしていました。そんな中で、FPGA(Field Programmable Gate Array)という半導体をいろいろとこねくり回す機会があり、FPGAを使って物理実験装置をいろいろ制御する機会に恵まれました。

そんなことをしているうちに、量子コンピューターをやっている人とも知り合いました。量子コンピューターをおもしろそうだと思っているタイミングで、ちょうど未踏ターゲットの募集があったので、FPGAと量子コンピューターを絡めてなにかできるんじゃないかと思ったというのが経緯です。

「FPGAで量子コンピューターのシミュレーションは高速化できるのでは?」

未踏ターゲットに挑戦するまでは、完全にコンピューティングが好きでした。私はコンピューティングが好きだから、基本的に量子力学はよくわからん。物理屋さんも、少し話を聞けばおもしろいが、僕自身はよくわからんという感じだったんです。

ちょうど未踏のPMをされている藤井啓祐先生がCQ出版の『Interface』という雑誌に「量子コンピューターのシミュレーションって簡単なCのコードで書けるんだよ」という記事を書かれているのを見て、「これだったらFPGAで高速化できるんじゃないかな?」という素朴な発想から、FPGAを使って量子コンピューターシミュレーションシステムを高速化するというテーマで未踏ターゲットに挑戦させてもらいました。

FPGAとは何か?I

みなさんは量子コンピューターがなにかはもちろんご存じだと思いますが、FPGAを使えば、その量子コンピューターのシミュレーションに内在する並列性を活用して高速化できるんじゃないか? というのが、そもそもの発想でした。

ここにいる人は量子コンピューターには詳しいかもしれませんが、FPGAには詳しくないかもしれないので簡単に説明します。

FPGAは、好き勝手なデジタルロジックを作ることができるLSI(Large Scale Integration)です。普通のプロセッサの枠に縛られない独自の計算を高速にできる可能性を持っています。

具体的には、みなさんが使われている、この発表でも使っているパソコン、プロセッサは、例えばデータの形、データ幅みたいなものが固定されているのに対して、自分で好きなビット数のデータ型や表現形式を作ることができます。

複素数を直接デジタルロジックで表現して、計算できるわけです。なんとなく、量子コンピューターシミュレーションが速くできる気がするじゃないですか。ということで、どこまでできるかに挑戦しました。

FPGAを使った量子コンピューターのシミュレーションにおける課題

ただ、自分でデジタルロジックを作るとなると、それなりにオーバーヘッドがあって、ガチガチに作られているプロセッサに比べると、動作周波数という観点で非常にビハインドになるものしかできません。そこを知恵を使っていかに速くするかが鍵になります。

先ほど申したように、FPGAを使うと複素数演算みたいなものを専用の演算単位として用いることができます。

それらを活用したり、量子コンピューターのシミュレーションにはたくさんのデータが必要なわけですが、知恵を使って、それをうまく読んだり書いたりする仕組みを工夫する。

うまく計算するアーキテクチャをパラパラとお見せしていますが、こういうものを考えて、どれだけ速くできるかに挑戦しました。

(スライドを示して)こういうものを作ってました。

結果と未踏ターゲットで得たもの

結果的に出来上がったものは、「Qulacs」という、ものすごく高速な量子コンピューターシミュレーションに勝てるものではなかったのですが、コンピューターアーキテクチャは工夫すればここまでいけるという目鼻を付けました。これが、私の未踏ターゲットの成果です。

こんなことをやっているうちに、先ほども言いましたが、非常に恵まれた環境で量子コンピューターについて勉強することができました。正直、これが一番未踏ターゲットでありがたかったことです。

一方で、あらためてプロセッサ、コンピューターアーキテクチャで計算する上で、どんなことが大事かを知ることができたのも、少しパラドックス的ですが、量子コンピューターを学ぶことで古典コンピューターでどう計算するかをあらためて勉強する機会に恵まれました。

ただ、これをやった時に、結局がんばって古典コンピューターで量子コンピューターのシミュレーションを高速化するより、どうせなら量子コンピューターを作るのをがんばったほうがいいんじゃないか? という着想を得たのも事実です。

量子コンピューターの制御装置を作成

というわけで、最近、量子コンピューターの制御装置を作り始めました。スライドの左下にある写真がプロトタイプなのですが、こんな装置を作って、実際に理研(理化学研究所)や阪大(大阪大学)にある超伝導量子ビットの制御を行っています。

量子コンピューター制御装置と言われても、なんのこっちゃと思うかもしれませんが、ニュースなどで量子コンピューターが取り上げられる時によく写真で出るのが冷凍機、その次に出るのが量子チップです。

量子ビットですが、実は量子性のある表現を持っているだけのデバイスにすぎないので、それだけで計算ができるわけではありません。実際に計算をしようとすると、(スライドを示して)このだいだい色で囲っている量子ビットを制御して、その状態を観測するための周辺装置が必要になります。今私はこの開発をやっています。

もう少し説明すると、量子ビットは量子状態を保存できるデバイスにすぎないので、例えば超伝導量子ビットの場合であれば、マイクロ波を当てたり、当てたマイクロ波の応答を見たりすることで、どんな状態になっているかを観測するものを外側に備えつける必要があります。

もう少し信号処理を知っている人からすると、なんか知っているね、という話になるのですが、もう少し技術的に言うと、すごく高品質なマイクロ波を、超伝導量子ビットあるいはほかの量子ビットに当てて、その応答を見る装置を作ることになります。ぶっちゃけ、これは量子コンピューターではなく、古典コンピューターの仕事になります。

(スライドを示して)これは、一生懸命作った装置を使って大阪大学で実験している様子ですが、青色の冷凍機の中に超伝導量子ビットがあって、それを私たちが作った装置で制御して、実際の量子状態を制御したり観測したりして楽しんでいます。

(スライドを示して)これは、さらに次世代機をたくさん並べて、より大規模な量子コンピューター、量子ビットの制御を行っている様子です。こんな感じで未踏ターゲットから始まって、実際の量子コンピューターの制御に発展して、いろいろ楽しんでいます。

今後の展望

最近は、NISQ(Noisy Intermediate-Scale Quantum Computer)は、IBMQみたいなものがあるので、いろいろ楽しんで使えるようになってきてはいますが、やはり量子コンピューターの本丸といいますか、暗号を解くためには、どうしてもFTQC(誤り耐性量子コンピューター)が必要になる。どうにかしてそれを実現したい、というのが最近の思いです。

たくさんの量子ビットを制御するためには、必要なたくさんの制御装置を作る必要があり、そのためには装置の小型化や、たくさんの装置を一緒に動かす同期の仕組み、さらにはユーザーがうまくプログラミングするための制御システムなどが必要になります。

(スライドを)パラパラとお見せしますが、たくさんの量子ビットを制御するためには制御装置もどんどん必要になるので、その分小さくしなければいけません。

また、たくさんの装置を並べて一緒に動かす仕組みも考えなければいけない。コンピューティングに組み込もうと思うと、ユーザーがやりたいことをプログラミングして装置を動かす仕組みも必要で、そういうことを考えなければいけない。

誤り耐性なので、最終的には誤り訂正をやる仕組みとの連携も必要で、いろいろなことを考えながらやっています。

未踏ターゲットでやらせてもらったシミュレーションの高速化についても、実はまだ諦めておらず、仲間というか一緒にやってくれる方が増えています。

慶應大学の天野先生(天野英晴氏)や筑波大の山口先生(山口佳樹氏)といったFPGA業界でおもしろいことをやっている方たちと一緒に、アクセラレーションの高速化みたいなことにトライしています。

FPGAのプラグラミングも、新しいプログラミングパラダイムやツールがどんどん出てきているので、そういうものを使えば、量子コンピューターのシミュレーションの高速化においては、まだまだ挑戦できる余地があると思っています。

だいぶ駆け足で話しましたが、量子コンピューティング技術は、量子だけではなく古典コンピューティング技術や回路設計技術の粋を集めて、量子コンピューターに挑まなければいけないので、私としてはそのあたりに楽しみを感じて今挑戦中です。

量子コンピューターという意味では、ほぼコンピューティング黎明期ではあるのですが、古典コンピューターと違ってコンピューティングそのものは十分歴史を重ねてきています。

なので、その良かったこと、あるいは落とし穴みたいなものを振り返りつつ、量子プログラミングというパラダイムの中で量子コンピューターを作れたら非常におもしろいと思っています。そんな感じで、未踏ターゲットを通じて、量子はおもしろいということです。私自身は(もともと専門が)量子ではないのですが、非常に楽しくやっております。以上です。

FPGAやGPUで量子コンピューターシミュレーションが大規模にできるようになったら?

司会者:三好さん、ありがとうございました。質問がある方は入力していただければと思います。いかがでしょうか?

(質問を見て)「FPGAやGPUで量子コンピューターシミュレーションが大規模にできるようになった場合、あえて量子コンピューターを使うメリットはなんでしょうか?」という質問です。

三好:本当にFPGAやGPUで量子コンピューターシミュレーションができるようになったら、量子コンピューターは要らないと思います。ただし、ファインマンさん(リチャード・フィリップス・ファインマン氏)も言っているように、量子コンピューターでシミュレーションをやろうと思って量子コンピューターを作ったほうが明らかに楽なんだと思います。

量子コンピューターのエミュレーションを高速化するという観点でいろいろ取り組んでみて、例えば100qubitの量子コンピューターのシミュレーションを古典コンピューターで全部やろうと思うと量子コンピューターを作るより大変だと思います。

だから、すみません。答えとするなら、できないというか、本当に大規模な量子コンピューターをシミュレーションするためには量子コンピューターを作るほうが楽だからです。答えになっていますかね(笑)。

司会者:ありがとうございます。

量子コンピューターの分野に取り組む時に苦労したことは?

司会者:ほかに質問のある方、お願いします。

(質問を見て)三好さんは、もともと量子コンピューターが専門ではなく、電子情報系でこの量子コンピューターの分野に取り組んだと思うのですが、ほかの分野から量子に取り組むという時に、なにか大きな壁や大きな課題、あるいはそれをどうやって乗り越えたかみたいなことは、なにかありますか? ほかの分野出身者として感じることなど。

三好:基本的に、やはり量子コンピューターの言葉があまりよくわからないところからのスタートだったので、勉強することが多かったのが一番ですかね。

乗り越えたという意味では、本当に未踏ターゲットのPMの先生ほか、いろいろな方に教えてもらう機会があったので、そういう意味では、すごく大変だったことや困難を感じたことはないです。難しいことに取り組んでいるなというのはもちろんありますが。

司会者:じゃあ、乗り越えられない壁じゃないということですよね(笑)。

三好:はい、それはそうだと思います。

司会者:ありがとうございます。それでは三好さん、お忙しいところありがとうございました。

三好:失礼します。ありがとうございました。