Amazon Braketには、無料の量子コンピュータ・シミュレータがある
Amazon Braketでは量子コンピュータを利用できますが、料金表のページに記載があるように有料です。
- Amazon Braket Pricing
https://aws.amazon.com/jp/braket/pricing/
Amazon Braketには無料枠がないため、「量子コンピュータのことはよく分からないが、お試しで雰囲気を知りたい」という人には、ちょっとハードルが高いです。
Amazonがクラウド上で提供しているSV1というシミュレータは4.50ドル/時なので、本物の量子コンピュータと比べるとかなり安く実行できますが、「1円たりとも課金されたくない」「Amazonのアカウントを持っていないが試してみたい」という人はローカルのPC上で動作するシミュレータを使うのがよいと思います。
本記事では、ローカルのシミュレータ(以下、「LocalSimulator」と呼びます)を動かすまでの流れを紹介します。
(2020/08/16時点の情報にもとづいています)
インストール
Amazon Braketでは「amazon-braket-sdk」というPython製のライブラリを利用します。
Amazon Braketのノートブックインスタンスを利用すると最初からインストールされていますが、ローカルで動かす場合は自分でインストールします。
pip等を使い、インストールしましょう。
pip install amazon-braket-sdk
LocalSimulatorを実行
LocalSimulatorの使い方は、次のページの「Usage」に簡単な記載があります。
- GitHub: amazon-braket-default-simulator-python
https://github.com/aws/amazon-braket-default-simulator-python
上記のページに記載されているコードを説明しやすいように少し書き換えたものが次のコードです。
from braket.circuits import Circuit
from braket.devices import LocalSimulator
# LocalSimulatorをインスタンス化
device = LocalSimulator()
# 量子回路を作成
circuit = Circuit().h(0).cnot(0, 1)
# 量子回路を実行(100回実行する)
result = device.run(circuit, shots=100).result()
counts = result.measurement_counts
# 量子回路の実行結果を表示
print(counts)
ここでは「量子回路とは何か?」について説明しませんが、自分の好きな量子回路を実行する場合は「量子回路を作成」の部分を目的の量子回路に変更すればOKです。
量子コンピュータの実行結果は確率的に変わるため、ここでは100回実行して結果を表示しています。
「shots」の部分を変更すれば、実行回数を変更できます。
このコードを実行すると、次のような形式の結果が返ってきます。
Counter({'11': 52, '00': 48})
これで、LocalSimulatorを実行できました。
確率的に動作する量子コンピュータをシミュレートしているため、実行結果にある「52」や「48」の部分は実行するたびに異なる値になります。
数字だけ見ても味気ないため、matplotlibで可視化すると次のようになります。
import matplotlib.pyplot as plt
plt.bar(counts.keys(), counts.values());
plt.xlabel('bitstrings');
plt.ylabel('counts');
まとめ
この記事では、LocalSimulatorを使い、量子コンピュータの動作をシミュレートする流れを紹介しました。
実際に量子コンピュータを利用する前にLocalSimulatorで慣れたり、動作確認してから、本物の量子コンピュータ(有料)を動かすと安くすむので、オススメです。
Qiitaのハッシュタグ「AmazonBraket」で、Amazon Braketに関する記事が少しずつ増えているので、それらの記事も勉強になるかと思います。