common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING

Nobisuke

Dekisugi


autoQAOA
DEEPSCORE

Overview
Service overview
Terms of service

Privacy policy

Contact
Research

Sign in
Sign up
common.title

Amazon BraketのD-Wave Advantage System 1.1 でQUBOからサンプルを投げる。

Yuichiro Minato

2021/01/07 12:36

#量子アニーリング #D-Wave #Braket

awsからD-Waveに投げる方法を簡単に確認します。

まずはツールの読み込みです。

awsからはbraket SDK

dwaveからはOcean SDK

その二つを繋げる Braket Ocean Pluginを用意します。

from braket.aws import AwsDevice
from dwave.system.composites import EmbeddingComposite
from braket.ocean_plugin import BraketSampler, BraketDWaveSampler

用意するパラメータは、chain,読み込み回数、あとはs3の保存用のフォルダです。QUBOを用意します。

#input
chain = 8
num_read = 10
my_prefix = "自分のを入れる" #user account
qubo = [[-10., 20.,  5.,  0.,  2.,  0.,  3.,  0.],
    [ 0., -10.,  0.,  5.,  0.,  2.,  0.,  3.],
    [ 0.,  0., -10., 20.,  1.,  0.,  5.,  0.],
    [ 0.,  0.,  0., -10.,  0.,  1.,  0.,  5.],
    [ 0.,  0.,  0.,  0., -10., 20.,  2.,  0.],
    [ 0.,  0.,  0.,  0.,  0., -10.,  0.,  2.],
    [ 0.,  0.,  0.,  0.,  0.,  0., -10., 20.],
    [ 0.,  0.,  0.,  0.,  0.,  0.,  0., -10.]]

早速投げます。

def dwave(Q, N, prefix, C=8):
  device = "arn:aws:braket:::device/qpu/d-wave/Advantage_system1"
  s3 = (f"自分のバケット入れる", prefix)
  response = EmbeddingComposite(BraketDWaveSampler(s3, device)).sample_qubo(Q, chain_strength = C, num_reads = N)
  return response

指定するのは、awsのbraketからd-waveのadnvatage system1です。

EmbeddingCompositeは同じですが、BraketDWaveSamplerを指定し、結果の保存用にs3を指定するところがちょっとD-Waveと違います。

そして、投げます。

response = dwave(qubo, num_read, my_prefix)

これで実行されて結果が戻ります。

response

結果は、

SampleSet(rec.array([([0, 1, 1, 0, 1, 0, 0, 1], -36., 3, 0.),
([1, 0, 0, 1, 0, 1, 1, 0], -36., 4, 0.),
([0, 1, 0, 1, 1, 0, 1, 0], -33., 2, 0.),
([1, 0, 0, 1, 0, 1, 0, 1], -32., 1, 0.)],
dtype=[('sample', 'i1', (8,)), ('energy', '<f8'), ('num_occurrences', '<i8'), ('chain_break_fraction', '<f8')]), [0, 1, 2, 3, 4, 5, 6, 7], {'taskMetadata': {'braketSchemaHeader': {'name': 'braket.task_result.task_metadata', 'version': '1'}, 'id': 'ここにプロジェクトのID', 'shots': 10, 'deviceId': 'arn:aws:braket:::device/qpu/d-wave/Advantage_system1', 'deviceParameters': {'braketSchemaHeader': {'name': 'braket.device_schema.dwave.dwave_device_parameters', 'version': '1'}, 'providerLevelParameters': {'braketSchemaHeader': {'name': 'braket.device_schema.dwave.dwave_provider_level_parameters', 'version': '1'}, 'annealingOffsets': None, 'annealingSchedule': None, 'annealingDuration': None, 'autoScale': None, 'beta': None, 'chains': None, 'compensateFluxDrift': None, 'fluxBiases': None, 'initialState': None, 'maxResults': None, 'postprocessingType': None, 'programmingThermalizationDuration': None, 'readoutThermalizationDuration': None, 'reduceIntersampleCorrelation': None, 'reinitializeState': None, 'resultFormat': None, 'spinReversalTransformCount': None}}, 'createdAt': '2021-01-02T08:24:31.666Z', 'endedAt': '2021-01-02T08:24:34.798Z', 'status': 'COMPLETED', 'failureReason': None}, 'additionalMetadata': {'action': {'braketSchemaHeader': {'name': 'braket.ir.annealing.problem', 'version': '1'}, 'type': <ProblemType.QUBO: 'QUBO'>, 'linear': {5283: -10.0, 657: -10.0, 5298: -10.0, 642: -10.0, 702: -10.0, 5253: -10.0, 717: -10.0, 5268: -10.0}, 'quadratic': {'5283,657': 20.0, '5283,5298': 5.0, '5283,702': 2.0, '5283,717': 3.0, '657,642': 5.0, '657,5253': 2.0, '657,5268': 3.0, '5298,642': 20.0, '5298,702': 1.0, '5298,717': 5.0, '642,5253': 1.0, '642,5268': 5.0, '702,5253': 20.0, '702,717': 2.0, '5253,5268': 2.0, '717,5268': 20.0}}, 'dwaveMetadata': {'braketSchemaHeader': {'name': 'braket.task_result.dwave_metadata', 'version': '1'}, 'activeVariables': [642, 657, 702, 717, 5253, 5268, 5283, 5298], 'timing': {'qpuSamplingTime': 760, 'qpuAnnealTimePerSample': 20, 'qpuAccessTime': 26797, 'qpuAccessOverheadTime': 7664, 'qpuReadoutTimePerSample': 35, 'qpuProgrammingTime': 26037, 'qpuDelayTimePerSample': 21, 'postProcessingOverheadTime': 535, 'totalPostProcessingTime': 535, 'totalRealTime': 26797, 'runTimeChip': 760, 'annealTimePerRun': 20, 'readoutTimePerRun': 35}}, 'rigettiMetadata': None, 'simulatorMetadata': None}}, 'BINARY')

その他必要なデータと一緒に戻ります。これでできます。意外と簡単にできました。サンプラーの動かし方だけ気をつけましょう。

© 2025, blueqat Inc. All rights reserved