@yuichirominato 2018.12.11更新 838views

量子古典ハイブリッドフレームワークのD-Wave Hybridが発表されたので早速使ってみた。

D-Wave D-Wave Hybrid qbsolv QUBO 量子アニーリング 量子古典ハイブリッド

はじめに

量子アニーラのD-Waveは約2000量子ビットの量子効果を利用したマシンで、カナダのD-Wave社が提供しています。今回はそのD-Waveが量子コンピュータと現在のコンピュータをハイブリッドで活用して計算するフレームワークを発表したので早速レビューして使ってみます。

D-Waveとは?

カナダのベンチャー企業で、量子アニーリングと言われる量子効果を活用したアルゴリズムをハードウェア実装したマシンです。

企業情報:
本社所在地:カナダブリティッシュコロンビア州バーナビー
設立:1999年
事業内容:量子コンピュータのハードウェアとソフトウェアを商用製品として提供
従業員数:160名(Ph.D 55名)

引用元:https://www.dwavesys.com/resources/media-resources

引用元:https://www.dwavesys.com/resources/media-resources

詳細はカナダのホームページを参照してくださいませ。
https://www.dwavesys.com/

日本語サイトもあります。
http://dwavejapan.com/

D-Wave Hybridとは?

DEC 10, 2018

D-Wave Releases Hybrid Workflow Platform to Build and Run Quantum Hybrid Applications in Leap Quantum Application Environment

www.dwavesys.com/press-releases/d-wave-releases-hybrid-workflow-platform-build-and-run-quantum-hybrid-applications

こちらにリリースが出ていますが、

量子クラシックハイブリッドアプリケーションを構築および実行するためのシンプルなオープンソースのハイブリッドワークフロープラットフォームであるD-Wave Hybrid™の開発者プレビューを発表しました。 D-Wave Hybridは、D-WaveのLeap™Quantaアプリケーション環境(QAE)のOceanソフトウェア開発キットの一部となり、試用版と開発​​者向けの入力用として、現在https://github.com/dwavesystems/dwave-hybridで入手可能です。 D-Wave Hybridフレームワークは、開発者にワークフロー制御を簡素化し、古典システムと量子システムの両方を並行して使用し、システムのパフォーマンスを把握し、システム全体でコードを最適化し、量子ハイブリッドアプリケーションをより簡単に開発できるようにします。

すでに提供しているLEAPの一部として、量子古典ハイブリッドでのアプリケーション開発を支援するフレームワークのようです。

LEAPとは?

今回D-Waveがプロ向けのクラウド環境の他に、コミュニティ機能や無料使用時間を搭載した新しいLEAPのプラットフォームを並行して立ち上げました。

新しいLEAPの画面はLEAPやD-Waveマシンの紹介、そしてデモの使い方、SDKのインストールの仕方などが書いてあります。ダッシュボードは下記のようにアカウントのタイプやAPItoken、QPUの使用時間や残時間が細かく載っています。個人的なあれですので、ちょっと情報は削除させてもらっています。

下の方には、使用できるハードウェアとソフトウェアのマシンのリストや、APIのendpoint情報、マシンの稼働状況などが載っています。弊社は企業で借りているのでプランが違う可能性があり、表記は異なる可能性があります。みた感じ、有料プランには優先権などが付与されているような表記があります。

D-Wave Hybridの概要

D-Wave Hybridを早速使ってみます。LEAPをみてみましたがアナウンスはありませんで、開発プレビューなので、githubから入手します。

https://github.com/dwavesystems/dwave-hybrid

また、ドキュメントは、こちらからみれます
https://docs.ocean.dwavesys.com/projects/hybrid/en/latest/

特徴は、

ハイブリッドワークフロー制御:古典的なD-Wave 2000Q™量子システムを越えて実行可能なハイブリッドアプリケーションの迅速な開発を可能にします。

モジュラーアプローチ:ロジックを組み込んで、古典的タスクや量子タスクの配布を簡素化し、開発者がシステム間で割り込みや同期を行い、各システムから最大限の計算能力を引き出すことができます。

問題の分解:量子プロセッサー・ユニット(QPU)より大きい大きな問題を断片化して、全体の解に対して再結合することができます。

使い慣れたコーディング環境:Pythonで構築されているため、並列リソースをコーディングする開発者は、フレームワークをよく理解しており、開始するには量子力学を知る必要はありません。

Leap QAEのアクセス、教育、コミュニティのサポート:Leap QAEの一環として、ソースコードを公開している開発者は、D-Wave 2000QTMシステムへの無料のリアルタイムアクセス、学習リソース、コミュニティや技術フォーラムを簡単に利用できます。開発者のコ​​ラボレーション。

どうやらみた感じは以前出ていたqbsolvを中心に、フレームワークとして再構成をしているようです。今後アプリケーションの開発者向けにより具体的な開発手法を提供して社会問題への適用を加速させるようです。

すでにD-Waveは先行してアプリケーション開発を行っていますので、各種のアプリケーションの開発を加速させるのであると思います。

D-Waveのお客様は、航空会社のスケジューリング、選挙モデリング、量子化学シミュレーション、自動車デザイン、予防的医療、物流などの問題を100件まで早期に申請しています。とあります。

使ってみる

早速使ってみます。通常量子アニーラでの量子古典ハイブリッド計算はqbsolvに代表されるように、大きな社会問題を量子アニーラで解けるように問題分解して細切れにし、それを古典計算機で再構成するという手法をとります。

qbsolvはこちらで少し紹介されています。
https://qiita.com/abenben/items/1ccc51cd5d9ba18b30c1

インストールはシンプル

pip install dwave-hybrid

早速使ってみます。例題サンプル


import dimod
from hybrid.samplers import (
    QPUSubproblemAutoEmbeddingSampler, InterruptableTabuSampler)
from hybrid.decomposers import EnergyImpactDecomposer
from hybrid.composers import SplatComposer
from hybrid.core import State
from hybrid.flow import RacingBranches, ArgMin, Loop
from hybrid.utils import min_sample

# Construct a problem
bqm = dimod.BinaryQuadraticModel({}, {'ab': 1, 'bc': -1, 'ca': 1}, 0, dimod.SPIN)

# Define the solver
iteration = RacingBranches(
    InterruptableTabuSampler(),
    EnergyImpactDecomposer(max_size=2)
    | QPUSubproblemAutoEmbeddingSampler()
    | SplatComposer()
) | ArgMin()
main = Loop(iteration, max_iter=10, convergence=3)

# Solve the problem
init_state = State.from_sample(min_sample(bqm), bqm)
solution = main.run(init_state).result()

# Print results
print("Solution: sample={s.samples.first}".format(s=solution))

実行してみると、、、
いきなりエラーが!

Endpoint URL and/or token not defined

今考えると当たり前ですが、ハイブリッドなのでD-Waveのアカウントが必要のようです。弊社はD-Wave契約しているので契約アカウントを設定してみます。気を取り直して実行してみると、

Solution: sample=Sample(sample={‘a’: 1, ‘b’: -1, ‘c’: -1}, energy=-3.0, num_occurrences=1)

元の問題はとても簡単な3体のabcの間にJij相互作用を設定した問題ですが、
‘ab’: 1, ‘bc’: -1, ‘ca’: 1
の相互作用を持つ問題をループさせて分解で解いてるようです。

実際にどのような問題がサーバーに届いているのか確認してみる

これだけではへーそうですか、で終わってしまうので、実際にどのような問題がサーバーに届いているのか確認します。Leapでは投げた問題を確認できなさそうですが、カスタム開発者向けの画面では実際にサーバーに届いた問題を確認できます。上記問題が実際にサーバーにどのように届いているか確認してみます。

実際には4回計算が行われたようです。

2018-12-11 09:25:30
2018-12-11 09:25:29
2018-12-11 09:25:28
2018-12-11 09:25:27

1秒ずつ問題が計算されています。

最初に行われた計算はこちらで、1659と1662の量子ビットが利用されています。
2048 3
1659 1659 0.0
1662 1662 0.0
1659 1662 -4.0

そしてその次は、368と372の量子ビットが利用されて計算されています。372には局所磁場-4が固定されているのが特徴的です。
2048 3
368 368 0.0
372 372 -4.0
368 372 4.0

その次は、1411と1415で、今度は1411にも1415にも4.0の局所磁場が設定されています。
2048 3
1411 1411 4.0
1415 1415 4.0
1411 1415 -4.0

最後に2005と2013をつかっています。今回は2013のみに局所磁場が設定されています。
2048 3
2005 2005 0.0
2013 2013 -4.0
2005 2013 4.0

実際に実行してみるととてもわかりやすいです。通常D-Waveでは3体問題の実装は難しいですが、ここでは問題分割を異なる量子ビットの計算を収束させることで少ない量子ビット数で3体問題を解いています。このように様々な問題を分解して最終的に再結合して収束させることで効率的に解くというツールのようです。

最後に

期待していたよりも面白い実行だと思いました。特に例題の3体問題を分解する手法は言われてみればという感じですが、こういうのがミドルウェアとして登場するのはとても面白いです。収束時間とかさまざまな問題はあると思いますのでさらなる開発と展開が望まれます。




Recommended


CONTACT

info@mdrft.com

ブログトップへ Wikiへ移動

量子コンピュータ一般

量子ゲートアルゴリズム

量子アニーリング一般

量子アニーリングアルゴリズム

BlueqatSDKの使い方