common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING


Overview
Contact
Event
Project
Research

Terms of service (Web service)

Terms of service (Quantum and ML Cloud service)

Privacy policy


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