Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Você pode enviar programas do Qiskit para execução no Azure Quantum targets com o QDK (Microsoft Quantum Development Kit). Você também pode executar os programas do Qiskit em seu computador local com o simulador esparso interno do QDK. O QDK dá suporte à versão 1 e à versão 2 do Qiskit.
Neste artigo, você aprenderá a executar programas do Qiskit com a biblioteca QDK Python de um Jupyter Notebook no Visual Studio Code (VS Code).
Observação
É uma prática recomendada executar seu programa quântico em um simulador target antes de enviar um trabalho para ser executado em um computador quântico. Cada provedor do Azure Quantum oferece um ou mais simuladores targetsgratuitos.
Pré-requisitos
Para enviar trabalhos do Qiskit para o Azure Quantum e executar programas do Qiskit no simulador esparso local, você deve ter o seguinte:
Um espaço de trabalho do Azure Quantum em sua assinatura do Azure. Para criar um espaço de trabalho, consulte Criar um espaço de trabalho no Azure Quantum.
Um ambiente local Python (versão 3.10 ou superior) com Python e Pip instalado.
Visual Studio Code (VS Code) com as extensões do Python e do Jupyter instaladas.
A biblioteca
qdkPython com os extrasazureeqiskit, e o pacoteipykernel.pip install --upgrade "qdk[azure,qiskit]" ipykernel
Enviar um trabalho para um target do Azure Quantum no seu workspace do Quantum
Para enviar um programa qiskit para execução em um Azure Quantum target, siga estas etapas:
No VS Code, abra o menu Exibir e escolha Paleta de Comandos.
Insira e selecione Criar: Novo Jupyter Notebook. Um arquivo vazio do Jupyter Notebook é aberto em uma nova aba.
Na primeira célula do bloco de anotações, escreva um circuito do Qiskit. Por exemplo, use o seguinte circuito:
from qiskit import QuantumCircuit # Create a Quantum circuit that acts on the q register circuit = QuantumCircuit(3, 3) circuit.name = "Qiskit Sample - 3-qubit GHZ circuit" circuit.h(0) circuit.cx(0, 1) circuit.cx(1, 2) circuit.measure([0, 1, 2], [0, 1, 2]) # Print out the circuit circuit.draw()Conecte-se ao workspace do Azure Quantum.
from qdk.azure import Workspace workspace = Workspace(resource_id="") # Add the resource ID of your workspaceObtenha os provedores do seu workspace que podem executar programas Qiskit e imprima os targets disponíveis para cada provedor.
from qdk.azure.qiskit import AzureQuantumProvider provider = AzureQuantumProvider(workspace) for backend in provider.backends(): print("- " + backend.name)Defina o back-end do Azure Quantum com o target ao qual você deseja enviar seu trabalho. Por exemplo, o código a seguir configura um back-end para executar seu programa no simulador Rigetti:
backend = provider.get_backend('rigetti.sim.qvm')Execute seu programa no Azure Quantum target e obtenha os resultados. O código a seguir realiza 1.000 execuções do seu programa no target especificado e armazena os resultados:
job = backend.run(circuit, shots=1000) result = job.result() print(result)
Avalie os resultados da atividade
O objeto result contém informações sobre os resultados do trabalho, por exemplo, o resultado da medição de cada execução e as contagens totais e probabilidades de cada possível medição.
Para criar um histograma de resultados de medida, passe o circuito para o get_counts método e, em seguida, passe as contagens para a plot_histogram função do qiskit.visualization módulo. O código a seguir reformata o counts objeto para mostrar todos os resultados de medida possíveis:
from qiskit.visualization import plot_histogram
print("Job ID:", job.job_id())
counts = result.get_counts(circuit)
print('Counts:', counts)
# Reformat counts to include all possible measurement outcomes, even those with zero counts
full_counts = {format(n, "03b"): 0 for n in range(8)}
full_counts.update(counts)
plot_histogram(full_counts)
Observação
Para usar a plot_histogram função do Qiskit, você deve instalar o Matplotlib.
pip install matplotlib
Resultados de tarefas do Qiskit para programas com perda de qubit
Alguns tipos de hardware quântico podem sofrer perda de qubit durante uma execução de programa. Se a perda de qubit ocorrer em qualquer momento durante uma execução para um programa Qiskit, essa execução será removida dos resultados do trabalho do Azure Quantum. Por exemplo, se a perda de qubit ocorrer em 10 de 200 execuções, os resultados do trabalho terão apenas 190 contagens de medições totais.
Os resultados brutos de todas as capturas, incluindo as capturas em que ocorreu a perda de qubit, ainda estão disponíveis no results objeto. O código a seguir obtém os dois conjuntos de resultados:
# Get results only for shots without qubit loss
print('Counts:', result.results[0].data.counts)
print('Probabilities:', result.results[0].data.probabilities)
print('Memory:', result.results[0].data.memory)
# Get the raw total shot results
print('Raw counts:', result.results[0].data.raw_counts)
print('Raw probabilities:', result.results[0].data.raw_probabilities)
print('Raw memory:', result.results[0].data.raw_memory)
Para trabalhos ou targets que não têm perda de qubit, os resultados padrão e os resultados brutos são idênticos.
Observação
O atributo memory para resultados do trabalho do Qiskit é uma lista do resultado de medição de cada execução.
Executar um trabalho no simulador esparso do QDK
O QDK inclui um simulador esparso interno que você pode usar para executar programas do Qiskit em seu computador local em vez de enviar um trabalho para o Azure Quantum. Para executar um programa Qiskit no simulador esparso, use QSharpBackend para criar uma instância de um objeto de back-end.
from qsharp.interop.qiskit import QSharpBackend
backend = QSharpBackend()
job = backend.run(circuit)
counts = job.result().get_counts()
print(counts)