こんにちは、アイダです。
もしあなたが「量子コンピュータが我が社のビジネスに適用できるか調べてもらえないか?」と言われたらどうしますか?
インテージテクノスフィアでは「技術探究委員会」にて先端技術を含めたテクノロジーにおける基礎研究、および応用研究を行っております。今年度の研究テーマとして「量子コンピュータ」も、その一つ! 研究員のK.Mさんが、「量子コンピュータ」初心者の方むけに情報を提供いたします。これを読めば「量子コンピュータ」のハードルが少し下がるかも・・それではK.Mさん、どうぞ。
本物の量子コンピュータを使ってみたい方へ
現在(2022年)では、量子コンピュータの実機(本物)を使う方法は幾つか存在します。 実は、本格的にクラウドサービスが始まる少し前から可能でした。しかも無料で。
ここではその方法の一つについて、その概略をご紹介します。
はじめに
この記載は、量子コンピュータの使用方法や環境に関連する事項を、網羅的に紹介することを意図したものではありません。
それでも敢えてそれを紹介するのは、仮に量子コンピュータに興味を持っていても、実機を触ってみるのには、以下の様な障壁が存在すると思われるからです。
古典プログラムをそのまま量子コンピュータ上で動かすことは出来ない。 従って量子コンピュータを使ってみるには何らかの量子プログラムが必要であるが、 それなりの専門知識がなければ ”Hello world!” (に相当するプログラム) すら書けない。
量子コンピュータを使うのに必要な環境の構築方法が分からない。 そもそも量子コンピュータとはどんなものかよく解らないので、どうやって調べればいいのかもよく分からないし、面倒そう。
一方で、現時点で量子コンピュータを動かしてみても、出来ることは極めて限られていることも理解しておくべきです(特に、無料で使える範囲のリソースでは)。
使えるレジスターは数qubitで、作用できるゲート数も精々数十程度ですし、そうした演算に対してさえ古典コンピュータより速いなんてことは全然ありません(むしろ、ほとんどのケースで遅いと思います、しかもかなりの程度で)。
もし本気で量子プログラムを開発したいのなら、量子コンピュータのシミュレータを利用すべきです。皆、そうしています。
IBM Quantum experience
さて、紹介するのはIBM Quantum experienceです。その理由を、その特徴とともに列挙します。
- 老舗であり、現在も極めて熱心に量子コンピュータの研究開発が行われている。
- GUIで使うことも、エディターで編集したプロフラムを”投入”することも出来る。
- チュートリアルが充実している。従って量子コンピュータ版 “Hello world” が学べる。
- 筆者が個人的にお世話になっていて、このプラットホームが生き残れば嬉しい。
では、その方法です。以下のURLに飛んでください。
https://quantum-computing.ibm.com
そして、そこに記載されているとおりにして下さい。それでは宜しく…
…では、あんまりなので、もう少し解説します。
利用にはアカウントの作成が必要です(無料)。 メールアドレスは、個人のものでも会社のものでも構いません。
確認メールが送信されることもあるので、利用環境を考えて設定しましょう。 ローカルに作成したプログラムを遠隔実行する場合は、API token も必要です(これも無料)。
量子コンピュータの実行
量子プログラムの実行には、
- IBMが公開している実行環境にアクセスして、対話的に実行
- ローカルにインストールした量子コンピュータシミュレータで実行
- 量子プログラムをIBMが公開している実行環境にAPI経由で投入して、量子コンピュータシミュレータで実行
- 量子プログラムをIBMが公開している実行環境にAPI経由で投入して、量子コンピュータの実機で実行
など、幾つかの方法があります。ローカル(手元のPC)で実行するには、量子コンピュータシミュレータをダウンロードする必要があります。
量子コンピュータシミュレータ(IBMのものはqiskitと呼ばれ、IBMの提供する実行環境へのフロントエンドも兼ねます)は、 Pythonのライブラリの形態で実装されています。
従って、qiskitの量子プログラムは一見pythonのプログラムのように見えますが、 そこで量子コンピュータ機能に相当する関数やメソッドを使うことになります。
qiskitのインストールは簡単で、いつものように、 % pip install qiskit と、やるだけです(qiskitはオープンソース)。
例によって、依存する他のライブラリも自動的にインストールされます(勿論、その前にpythonの実行環境がセットアップされていることが前提ですが)。
なおPythonはフロントエンドの実装プラットホームとして選ばれているだけで、 特に量子コンピューティングと関係があるわけではございませんので念の為。
量子プログラムの実行は、
- 量子状態の初期化
- 演算(量子ゲートによる量子状態の操作)
- 結果となる量子状態の測定
という手順で行われます。
2までは古典コンピュータの相当するプロセスとほぼ同じですが、3の'測定'は、量子コンピュータ特有の概念なのでちょっと分かり難いかも知れません。
古典コンピュータのシミュレータ上では print()で波動関数そのものの中間状態を取り出せてしまうのですが、これは実機上では'反則'です。 実機でこの操作を行うことは、物理法則によって出来ません。
また実機で'測定'を行ってしまうと、その操作によって量子状態が不可避かつ予測不能に変化してしまい、以降の演算は無意味になってしまいます。
従って量子コンピューティングでの'測定'は、すべての演算が終った最後の1回だけです。
シミュレータ上でのデバックで、プログラムの数学的な正しさを検証する過程では、print()を何回やっても構わないでしょう。
さらに量子コンピュータを学びたい方へ
さてこれ以上は量子プログラミング本体の解説に踏み込んでしまうので、記載はここまでとしますが、 最後にIBMの提供する量子プログラミングの解説ページを紹介します。
https://qiskit.org/textbook/ja/preface.html
これをすべて理解すれば入門、初級から中級の最初のレベル位まで到達できます。
こういう力作を無償で公開する辺りに、IBMが自社の量子コンピュータ開発プラットホームにかける熱意を窺うことができますね。