天天看點

量子模型可視化dwave-inspector

dwave-inspector

一種可以可視化的向D-wave結構解算器如D-wave 2000Q量子計算機)送出問題并接收答案的工具。

Introduction

dwave-inspector為檢查D-wve量子計算機的問題和答案提供了一個圖形界面。

正如Ocean文獻《Ocean documentation’s Getting Started》中所描述的,D-wave系統解決了二進制二次模型(BQM)中的問題,這些二進制二次模型在一個稱為minor-embedding的過程中被映射到它的量子位。因為minor-embedding問題的方式(映射和相關參數)會影響解決方案的品質,是以檢視它的樣子會有所幫助。

例如,将K3全連通圖(如布爾與門示例)嵌入到具有Chimera拓撲的D-Wave 2000Q中,需要用兩個實體量子位的“鍊”來表示三個變量之一:

問題檢查器會一目了然地向您展示您的鍊條:您可以看到長度、任何破損和實體布局。

Usage and Examples

導入問題檢查器,使其能夠與送出的問題挂鈎。

使用show()方法在預設浏覽器中可視化嵌入的問題,以及可選的邏輯問題。

(導入問題檢查器會為會話激活資料捕獲,例如發送到QPU的問題和傳回的響應、minor-embedding的相關詳細資訊以及警告。推薦的工作流程是在編碼會話開始時導入它,這是Python包的典型做法(在送出中指定嵌入等資料随響應一起傳回也是可能的,但不太友善)。)

Inspecting an Embedded Problem

這個例子展示了規範用法:在量子處理單元(QPU)上的代表實體量子位的樣本

from dwave.system import DWaveSampler
import dwave.inspector
# Get solver
sampler = DWaveSampler(solver=dict(qpu=True)) # doctest: +SKIP
# Define a problem (actual qubits depend on the selected QPU's working graph)
h = {}
J = {(0, 4): 1, (0, 5): 1, (1, 4): 1, (1, 5): -1}
all(edge in sampler.edgelist for edge in J) # doctest: +SKIP
True
# Sample
response = sampler.sample_ising(h, J, num_reads=100) # doctest: +SKIP
# Inspect
dwave.inspector.show(response) # doctest: +SKIP
           
量子模型可視化dwave-inspector

Inspecting a Logical Problem

采用dimod 對qubo型問題進行可視化

這個例子可視化了一個邏輯上指定的問題,然後由Ocean的EmbeddingComposite自動地進行minor-embed。為了便于說明,它設定了一個chain_strength來顯示斷鍊。

解決方案中的一個或多個鍊被斷開,這意味着包含單個邏輯變量(“鍊”)的量子位具有不同的值

import dimod
import dwave.inspector
from dwave.system import DWaveSampler, EmbeddingComposite
# Define problem
bqm = dimod.BQM.from_ising({}, {'ab': 1, 'bc': 1, 'ca': 1})
# Get sampler
sampler = EmbeddingComposite(DWaveSampler(solver=dict(qpu=True))) # doctest: +SKIP
# Sample with low chain strength
sampleset = sampler.sample(bqm, num_reads=1000, chain_strength=0.1) # doctest: +SKIP
# Inspect
dwave.inspector.show(sampleset) # doctest: +SKIP
           

Visualizing Problems

通常,在量子計算機傳回的樣本集SampleSet或SAPI問題ID上使用show()函數。其他問題輸入,如二進制二次模型(BQM、ISing或QUBO格式)和嵌入,都是可選的。但是,如果沒有使用dimod的EmbeddingComposite或派生類,為了可視化邏輯問題,您必須提供嵌入。

量子模型可視化dwave-inspector

以下是向show()函數為提供問題資料的一些可選選項,其中直接在實體量子位上定義的問題答複了response,使用EmbeddingComposite:送出的問題傳回了樣本集sampleset:

show(response)
show('69ace80c-d3b1-448a-a028-b51b94f4a49d') # Using a SAPI problem ID
show((h, J), response)
show(Q, response)
show((h, J), response, dict(embedding=embedding, chain_strength=5))
show(sampleset)
show(bqm, sampleset)
           

show()函數支援對帶有block參數的腳本進行流控制。例如,預設設定“once(dwave.inspector.Block.ONCE)”會一直阻止,直到您的問題從檢查器網絡伺服器加載,并且forver blocks,直到使用Ctrl+C/SIGTERM終止。

例如 加載問題時,此示例不會阻塞。

部分函數

show(*args, **kwargs) Auto-detect and forward to the show_* optimal for thespecified arguments.
show_bqm_response(bqm, embedding_context,. . . ) Visualize a quantum machine instruction (QMI) response and binary quadratic model.
show_bqm_sampleset(bqm, sampleset, sampler) Visualize a returned sampleset and binary quadratic model.
show_qmi(problem, response[, . . . ]) Visualize a quantum machine instruction (QMI).

dwave.inspector.show

dwave.inspector導入時啟用了低能級資料捕獲。捕獲的資料包括全量子機器指令(QMI)、QPU響應、embedding上下文、警告和采樣參數。

如果在嵌入embed/采樣sample之前啟用了資料捕獲,則隻需要為show()提供用于QMI檢查的問題辨別或回答response或對應邏輯問題和QMI檢查的SampleSet。

如果在嵌入/采樣之前未啟用資料捕獲,請明确提供所有相關資料。

例子

可視化QMI(不是邏輯問題)

show(response)
show((h, J), response)
show(Q, response)
show('69ace80c-d3b1-448a-a028-b51b94f4a49d')
           

可視化QMI和已明确的嵌入

此示例顯示了從樣本集中讀取的嵌入和警告:

此示例顯示了從樣本集SampleSet中讀取的嵌入和警告,從樣本集中可以重構邏輯問題:

dwave.inspector.show_bqm_response

show_bqm_response(bqm, embedding_context, response, warnings=None, params=None)

可視化量子機器指令(QMI,a quantum machine instruction)響應和二進制二次模型BQM。

dwave.inspector.show_bqm_sampleset

show_bqm_sampleset(bqm, sampleset, sampler, embedding_context=None, warnings=None,

params=None)

可視化傳回的樣本集和二進制二次模型。

dwave.inspector.show_qmi

show_qmi(problem, response, embedding_context=None, warnings=None, params=None)

可視化量子機器指令(QMI)