2022年6月21日火曜日

IBM Quantum(ゲート型量子コンピュータ)をFixstars Amplifyから使ってみた

 これまでに、Fixstars Amplify SDKを利用して、いくつかの小さな組合せ最適化問題を解きました。これらは、全て、量子アニーリング型マシンを用いたものでしたが、先日、この SDKがゲート型量子コンピュータ(IBM Quantum)にも対応したとのニュースがありました。すなわち、これまでとほぼ同じインタフェース(Pythonプログラム)で、組合せ最適化問題をIBM Quantumで解ける!のですから、ビッグニュースです。まだまだ、課題はありますが、以下にそのミニ体験を記します。

まず例題を準備する
 ちょっと前置きですが、ここで用いる例題を示します。図1はすでに報告した「最小頂点カバー問題」を日立CMOS Annealingマシンで解いた状況です。スマホアプリにしてしまったところが憎いですね。イジング模型を使います。図の上部にそのエネルギー関数があります。今回は、できるだけ問題を小さくするため、図右側のノード数5のケースを扱います。

 一方、図2は、これをQUBO模型に人手変換して、Fixstars Amplify AEで解いた様子です。数秒以内に、5個ある最適解が全て求まっています。これまでやってきた通りで、特に問題ありません。

ゲート型量子コンピュータで組合せ最適化問題を解くとは
 上の例は、量子アニーリングマシンで解くためのものでした。今回改訂されたFixstars Amplify SDKでは、ほとんど従来のプログラム記述で(図2のような)、ゲート型量子コンピュータIBM Quantumに適用できるとのことです。これは素晴らしい!

 早速試してみました。確かにその通り、IBM Quantumが動き始めました。しかし、新しいものは何でもそうですが、一筋縄には行きません。第一に、IBM Quantumは物凄い人気らしく、無料枠で解放されている機種では、実行待ちが30分とか1時間、場合によっては数時間以上となり、なかなか実行されません。下図は、(遠慮気味に選択した)量子ビット少なめのマシンibm_quitoを使った例ですが、現在キューの7番目にあり、約20分後に実行開始の見込み、となっています。(IBM Quantumは量子ビット数の異なる20台ほどが稼働しており、そのうちの数台に無料枠が設定されている模様)
 第二に、ゲート型量子コンピュータで組合せ最適化問題を解くために、QAOAと呼ばれるアルゴリズムが使われます。Amplify SDKではこれをユーザが意識しなくてもよいようにしています。しかし、このQAOAでは、一定回数(上図のshotsの値、1024)だけ、ユーザプログラムに対応した量子回路を実行してその結果を観測しますが、まだ解は出ません。その観測を最大shots回だけ自動的に内部jobとして繰り返して最終的な解を求めるとのことです。その各job毎にまた、上記の待ちが発生してしまいます!ですから、おそらく、1日たっても最終解は得られないでしょう。

それでも試したIBM Quantumマシン
 こんなに長大な待ち時間(有料ユーザになれば別かもしれないが)の中、何とか、求解の途中の断面を見ることはできました。図3にその様子を示します。この「最小頂点カバー問題」の最適解は5つあり、そのうちの一つの最適解(10011)に対するprobabilityがダントツに大きくなっています。これが最終解ではないのですが、段々にこうして最適解が求まって行くらしいことを実感できます。

感想
 「初めてのゲート型量子コンピュータ」という感じでした。組合せ最適化問題を解く場合、現時点では、まだまだ、量子アニーリング型マシンを使う方が現実的だ、ということを感じました。しかし、ハードウェアメーカの研究開発がさらに進み、Fixstars Amplifyなどのミドルウェア、ライブラリも進歩し、エンドユーザも少しは量子コンピュータの仕組みを勉強してから使う、ということが重なれば、近々、驚くべき進展があるように思える。ともに頑張りましょう!


0 件のコメント:

コメントを投稿