Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вы можете отправить программы Qiskit для запуска в Azure Quantum с помощью пакета средств разработки Microsoft Quantum targets (QDK). Вы также можете запускать программы Qiskit на локальном компьютере с помощью встроенного разреженного симулятора QDK. QDK поддерживает как версию 1, так и версию 2 Qiskit.
В этой статье вы узнаете, как запускать программы Qiskit с библиотекой QDK Python из Jupyter Notebook в Visual Studio Code (VS Code).
Примечание.
Рекомендуется запустить квантовую программу на симуляторе target перед отправкой задания для запуска на квантовом компьютере target. Каждый поставщик Azure Quantum предлагает один или несколько бесплатных симуляторов targets.
Предварительные условия
Чтобы отправить задания Qiskit в Azure Quantum и запустить программы Qiskit на локальном разреженном симуляторе, необходимо следующее:
Рабочая область Azure Quantum в вашей подписке Azure. Сведения о создании рабочей области см. в статье Создание рабочей области Azure Quantum.
Локальная Python среда (версия 3.10 или более поздняя) с установленными Python и Pip.
Visual Studio Code (VS Code) с расширениями PythonJupyter, установленными.
Библиотека
qdkPython с дополнительными функциямиazureqiskitи пакетомipykernel.pip install --upgrade "qdk[azure,qiskit]" ipykernel
Отправьте задание в Azure Quantum target в вашей квантовой рабочей области
Чтобы отправить программу Qiskit для запуска в Azure Quantum target, выполните следующие действия.
В VS Code откройте меню "Вид " и выберите палитру команд.
Введите и выберите "Создать: Новая записная книжка Jupyter". Пустой файл Jupyter Notebook открывается на новой вкладке.
В первой ячейке записной книжки напишите схему Qiskit. Например, используйте следующую схему:
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()Подключитесь к рабочей области Azure Quantum.
from qdk.azure import Workspace workspace = Workspace(resource_id="") # Add the resource ID of your workspaceПолучите поставщиков из вашей рабочей области, которые могут запускать программы Qiskit, а затем печатают доступные targets для каждого поставщика.
from qdk.azure.qiskit import AzureQuantumProvider provider = AzureQuantumProvider(workspace) for backend in provider.backends(): print("- " + backend.name)Задайте серверную часть Azure Quantum, target в которую вы хотите отправить задание. Например, следующий код настраивает серверную часть для запуска программы в симуляторе Rigetti:
backend = provider.get_backend('rigetti.sim.qvm')Запустите программу в Azure Quantum target и получите результаты. Следующий код выполняет 1,000 запусков вашей программы на указанном target и сохраняет результаты:
job = backend.run(circuit, shots=1000) result = job.result() print(result)
Проверка результатов задания
Объект result содержит сведения о результатах задания, таких как результат измерения для каждого выстрела, а также общее количество и вероятности каждого возможного измерения.
Чтобы создать гистограмму результатов измерения, передайте схему в get_counts методу, а затем передайте счетчики в plot_histogram функцию из qiskit.visualization модуля. Следующий код переформатирует counts объект, чтобы показать все возможные результаты измерения:
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)
Примечание.
Чтобы использовать функцию plot_histogram из Qiskit, необходимо установить Matplotlib.
pip install matplotlib
Результаты задания Qiskit для программ с потерей кубитов
Некоторые типы квантового оборудования могут столкнуться с потерей кубита во время выполнения программы. Если потеря кубита происходит в любой момент во время пробного запуска программы Qiskit, то этот запуск удаляется из результатов задачи Azure Quantum. Например, если потеря кубита возникает в 10 из 200 измерений, то результаты задания содержат только 190 суммарных измерений.
Необработанные результаты для всех выстрелов, включая выстрелы, в которых произошла потеря кубитов, по-прежнему доступны в объекте results . Следующий код получает оба набора результатов:
# 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)
Для заданий или targets без потери кубитов результаты по умолчанию и необработанные результаты идентичны.
Примечание.
Атрибут memory для результатов задания Qiskit — это список результатов измерения для каждого выстрела.
Выполнение задания в разреженном симуляторе QDK
QDK включает встроенный разреженный симулятор, который можно использовать для запуска программ Qiskit на локальном компьютере вместо отправки задания в Azure Quantum. Чтобы запустить программу Qiskit на разреженном симуляторе, используйте QSharpBackend для создания экземпляра внутреннего объекта.
from qsharp.interop.qiskit import QSharpBackend
backend = QSharpBackend()
job = backend.run(circuit)
counts = job.result().get_counts()
print(counts)