no image

量子コンピュータ(D-wave Leap)を利用してみた

1. はじめに

はしへいです。米ガートナー(Gartner)の先進テクノロジーハイプサイクル2018年度版に量子コンピューティングが含まれていたり、2019年に入り、IBMが世界初の単体動作可能な量子コンピュータの発表を行ったりと最近よく耳にする様になったので手軽に試せるサービスを利用してみました。

では量子コンピュータはすごく新しい技術かというとそういう訳ではないです。現在私達が一般的に利用するコンピュータと異なる性質を持つコンピュータではあるものの、量子コンピュータの歴史は長く、1980年代にその原型の理論が確立されていました。

私も学生であった10年以上前に1冊手に取った記憶がある程、既に理論は確立され、一般書籍にされていました。

2. 量子コンピュータとは

2-1. 量子コンピュータの用途

既に量子コンピュータを販売しGoogleでも利用されているものにD-wave社の製品があります。D-wave社によると量子コンピュータの用途として以下が示されています。

D-Waveシステムは、最適化、サイバー・セキュリティ、機械学習、サンプリングなどの計算集約型タスクに使用されます。この種の問題は解くことが極めて難しく、最適な解を簡単に計算できれば潜在的に大きなメリットとなります。

D-wave社は量子コンピュータを実用化したカナダを拠点とする会社です。

2-2. 量子コンピュータとパソコンの違い

現在私達が一般的に利用しているコンピュータはノイマン型コンピュータと言われるものです。量子コンピュータとの大まかな違いを示します。

# 量子コンピュータ ノイマン型
コンピュータ
現在の用途
現在は特定用途

様々な用途で利用
多重処理
同時処理可能≒高速

原則1コア1処理
コスト 高価 比較的安価
特徴 現在のパソコンが苦手とする
計算集約型タスクが得意
ある程度の速度で様々な
タスクを処理するのが得意
備考
量子の重ね合わせすることができる性質を利用し、
演算値を0と1以外の値を持たすことができる。
現在私たちが一般的に利用している
コンピュータ

もう少し詳しい説明は、ベイカレントコンサルティングのページがわかりやすいです。

 

3. 量子コンピュータを利用してみる

量子コンピュータに手軽に触れる方法としてD-wave Leapというサービスがありますので、 今回はこれを利用してみました。

3-1. アカウント作成

  1. D-waveのサイトへアクセスし、右下の”Sign up”からアカウント登録を開始する。

    D-wave leap

  2. ユーザ名,ログインパスワード等の必要項目の記入、利用規約に了承し、”SIGN UP”します。所属会社情報なども項目として存在しますが、必須項目ではないので、空欄のままでも利用できます。
  3. メール認証を行います。
    アカウントは作成されており、入力したメールアドレス宛に届いているメールに記載されているリンクをクリックする事で、アカウントの有効化を行います。
  4. ログインする
    メールに記載されているリンクをクリックし、サイトトップページから先ほど設定したログイン情報でログインします。 ログイン後のTOPページニハDEMOへのリンクと、アカウント作成時点で1分間分の無料利用枠が設定されています。

3-2. Demo1の実行

Demoに採用されている素因数分解とは

素因数分解は、ノイマン型コンピュータでは処理bit数が大きくなると解読にかかる計算量が莫大になる事から、暗号化に利用されています。ノイマン型コンピュータでは現実的な時間内に計算が終わらない長さとなるbit長の暗号化キーを用いる事でその秘匿性を機能させています。具体的には公開鍵暗号方式のRSAで利用されています。
この様な暗号化に利用する鍵の解読等は量子コンピュータが得意とするタスクの一つです。

IPAの資料NISTの資料を確認すると、2030年迄は暗号強度(Security Strength)が112以上、2031年以降については128以上を要求しています。(2019年4月現在)
これをRSA暗号のキー長にすると、2030年迄はキー長2048bit以上、2031年以降については3072bit以上となります。

このDemoでは数bit程度で表現できる数の素因数分解を行うだけですので、現在採用、利用されているRSAを簡単に解読できるというわけではありませんが、原理としては同じでこれを高度に処理すると、理論上は計算により解読できると考えられています。

DEMO1(Factoring)を実行してみる

  1. ログイン後の上部にある”Run a Demo”をクリックした先にあるページからDEMOを実施する事ができる。このDEMOを行う上でも量子コンピュータを利用する事ができるので、手軽に試す事ができます。以下の画像をクリックするとDEMOが開始されます。 与えられる無料枠1分間の利用枠を消費しますが、僅か100ms程度です。 DEMO1ではインターネット上で一般的に利用される素因数分解暗号化プロトコル(いわゆる公開鍵暗号方式のRSA暗号)のDEMOを行う事ができます。
  2. Demoの説明内容が記載されているページが表示されますので、 ページ下部の”CONTINUE”から次のページへ進みます。
  3. 好きな数字を選ぶ様に促されるため、好きな数字を選択します。
    今回は49を選択しました。その後、”CONTINUE”をクリックします。

基本的には後は結果の出力とその解読方法の説明等が表示されていきます。

次のページでは、一般的なコンピュータによる計算方法を説明するために、 ANDゲート、半加算器、全加算器による計算結果が求められます。 ANDゲートは入力の全てが1なら1を出力します。半加算器と全加算器は入力を全て足し、 2進数の考え方で2^0、2^1の結果を出力します。(1,1なら0,1、0,1か1,0なら1,0を出力)半加算器と全加算器の違いは入力の数が2個か3個かの違いです。

49 = 7 * 7 と素因数分解されているのがわかります。この画面では一度で表示されていますが、実際のプログラムを作成するとなると、For文を回す等、大量の計算が必要になります。

次のページからは実際の量子コンピュータの計算方法が示されています。 量子コンピュータでは、二値制約を用いることで、出力と与えられた制約から高い確率で入力値を同時に求める事ができます。順次計算ではなく、同時に求める事で、高速に実行する事が可能になっています。

DEMOの結果について

実際に私が上記を量子コンピュータで実施したところ、0.021Secという時間で計算を終える事ができました。これが早いのかどうか調べてみるため、簡単なプログラムをgoogle colab上で実行してみたところ、0.0013Secという結果になりました。

クラウドコンピューティングによる既存コンピュータによる計算の方が10倍程早いという結果になりました。
上記結果が量子コンピュータの将来に影を落としたり、現時点ではまだまだ未発展という訳ではないと考えられます。
この様な結果になったのは、DEMOで取り扱う計算対象が十分な桁数を有していないという事が考えられます。
DEMOはあくまで量子コンピュータを説明するためのものなので、量子コンピュータのメリット(性能)を十分に引き出せていないのだと考えられます。

量子コンピュータはあらゆるものに最適化されるというものではなく、先ずは、ある特定の領域に対し抜群のパフォーマンスを出す事が期待されています。
また現在はとてつもなく高価ですので「一般家庭に量子コンピュータが1台」という将来は向こう10年はこないでしょう。
しかしアプリのバックグラウンド、クラウドサービスの裏側等、一般の人々が知らず知らずの内に利用する時代は近そうです。