common.title
Cloud support

Nobisuke

Dekisugi

RAG


autoQAOA
RAG for dev
Fortune telling app
Annealing
DEEPSCORE
Translation

Overview
Service overview
Terms of service

Privacy policy

Contact
Research

Sign in
Sign up
common.title

[概要]Amazon Braketの使い方を見てみる。Rigetti/IonQ/OQC Lucy/Xanadu Borealisの実機の使用ゲート、D-Waveも確認。

Yuichiro Minato

2022/10/13 15:58

blueqatSDKを作るモチベーションを上げるためにAmazon Braketにチャレンジします。
実はあんまり使ったことありません。。。

まずは準備運動でもつれ回路を作ってみます。こちらを参考にしています。

https://github.com/aws-samples/amazon-braket-examples-jp

from braket.circuits import Circuit from braket.devices import LocalSimulator import matplotlib.pyplot as plt %matplotlib inline

まずは回路を描画してみます。

bell = Circuit().h(0).cnot(0,1) print(bell)
T  : |0|1|

          

q0 : -H-C-

        | 

q1 : ---X-



T  : |0|1|

次にローカルシミュレータを使って計算をしてみます。

#デバイス指定 device = LocalSimulator() result = device.run(bell, shots=10).result() #計算結果の表示 counts = result.measurement_counts print(counts) #そのまま描画 # plot using Counter plt.bar(counts.keys(), counts.values());
Counter({'00': 7, '11': 3})
<Figure size 432x288 with 1 Axes>output

できました。結構簡単ですね。次は早速実機を使ってみたいと思います。実機は種類によって得意なゲートが違うはずです。実際にはトランスパイラで変換されますので、問題はないと思いますが、一応念のため見てみます。

まずはIonQから。イオントラップ型です。

from braket.aws import AwsDevice device = AwsDevice("arn:aws:braket:::device/qpu/ionq/ionQdevice") print(device.properties.action['braket.ir.jaqcd.program'].supportedOperations)
['x', 'y', 'z', 'rx', 'ry', 'rz', 'h', 'cnot', 's', 'si', 't', 'ti', 'v', 'vi', 'xx', 'yy', 'zz', 'swap', 'i']

次はイギリスのOQCのLucyを見てみます。

device = AwsDevice("arn:aws:braket:eu-west-2::device/qpu/oqc/Lucy") print(device.properties.action['braket.ir.jaqcd.program'].supportedOperations)
['ccnot', 'cnot', 'cphaseshift', 'cswap', 'cy', 'cz', 'h', 'i', 'phaseshift', 'rx', 'ry', 'rz', 's', 'si', 'swap', 't', 'ti', 'v', 'vi', 'x', 'y', 'z', 'ecr', 'start_verbatim_box', 'end_verbatim_box']

そして日本時間の昼間も使えるようになりましたRigetti

device = AwsDevice("arn:aws:braket:us-west-1::device/qpu/rigetti/Aspen-M-2") print(device.properties.action['braket.ir.jaqcd.program'].supportedOperations)
['cz', 'xy', 'ccnot', 'cnot', 'cphaseshift', 'cphaseshift00', 'cphaseshift01', 'cphaseshift10', 'cswap', 'h', 'i', 'iswap', 'phaseshift', 'pswap', 'rx', 'ry', 'rz', 's', 'si', 'swap', 't', 'ti', 'x', 'y', 'z', 'start_verbatim_box', 'end_verbatim_box']

次はD-Waveです。アニーラですのでゲートの指定はありません。システム6.1をみてみます。

device = AwsDevice('arn:aws:braket:us-west-2::device/qpu/d-wave/Advantage_system6') topology = device.properties.dict()['provider']['topology'] qubit_number = device.properties.dict()['provider']['qubitCount'] print(topology) print('qubit number = ', qubit_number)
{'type': 'pegasus', 'shape': [16]}

qubit number =  5760

こちらはペガサス結合の5760量子ビットと情報が出ました。

最後にあまり情報のないBolearisを見てみます。こちらは連続量でほかの量子ゲートは違いますがゲートセットがあります。

device = AwsDevice('arn:aws:braket:us-east-1::device/qpu/xanadu/Borealis') print(device.properties.action['braket.ir.blackbird.program'].supportedOperations)
['s', 'r0', 'r1', 'r2', 'bs0', 'bs1', 'bs2', 'loop0_phase', 'loop1_phase', 'loop2_phase']

このように様々な種類のマシンがあります。最後の二つはD-WaveとBolearisはほかのマシンと使い方が異なります。また、近々もう一台特殊な使い方をするマシンが出ますので、そちらも楽しみです。一応実機での実行方法を確認してみます。

Rigettiのマシンで量子もつれを計算してみます。

device = AwsDevice("arn:aws:braket:us-west-1::device/qpu/rigetti/Aspen-M-2") bell = Circuit().h(0).cnot(0, 1) task = device.run(bell) print(task.result().measurement_counts)
Counter({'00': 447, '11': 432, '10': 65, '01': 56})

比較的早く戻ってきました。結構間違えますが答えも出ました。是非頑張って使いましょう!以上です。

© 2024, blueqat Inc. All rights reserved