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
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPB50dFpWT4tmeNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2cjM3UDOwATMzIDNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
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或派生類,為了可視化邏輯問題,您必須提供嵌入。
以下是向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)