Начало работы с программами Q# и Visual Studio Code
В этой статье описано, как использовать VC Code для создания и отправки заданий квантовых вычислений Q#, Jupyter Notebook или Python в Azure Quantum с помощью VS Code.
Отправка заданий Q# в Azure Quantum
Узнайте, как использовать VS Code для запуска, отладки и отправки программы Q# в Azure Quantum.
Предварительные требования
Сведения об установке см. в статье Установка современного QDK в VS Code.
- Рабочая область Azure Quantum по подписке Azure. сведения о создании рабочей области см. в статье Создание рабочей области Azure Quantum;
- Последняя версия Visual Studio Code или откройте VS Code в Интернете.
- Последняя версия расширения Пакета средств разработки Azure Quantum .
Загрузка примера программы Q#
В VS Code выберите Файл > Новый текстовый файл и сохраните файл как RandomNum.qs.
Откройте RandomNum.qs и введите
sample
, а затем выберите выборка Random Bit из списка параметров и сохраните файл.
Примечание
Вы также можете открыть собственный файл Q#. Если вы запускаете старую программу Q# и возникают ошибки, см. статью Тестирование и отладка или Перенос программ в современный QDK.
Запуск программы Q#
Чтобы протестировать запуск программы локально во встроенном симуляторе, щелкните Выполнить в списке команд ниже
@EntryPoint()
или нажмите клавиши CTRL+F5. Выходные данные отобразятся в консоли отладки.Чтобы выполнить отладку программы перед отправкой в Azure Quantum, щелкните Отладка в списке команд ниже
@EntryPoint()
или нажмите клавишу F5. Используйте элементы управления отладки в верхней части для пошагового перехода, входа в код и выхода из него. Дополнительные сведения об отладке программ Q# см. в разделе Тестирование и отладка.
Построение гистограммы частоты
Гистограмма частоты представляет распределение результатов, полученных при выполнении квантовой программы несколько раз или "выстрелов". Каждый столбик в гистограмме соответствует возможному результату, а его высота представляет количество наблюдаемых результатов. Гистограмма частоты помогает визуализировать распределение вероятностей этих результатов.
Выберите Вид —> палитра команд и введите "гистограмма", чтобы открыть файл Q#: Выполнить и показать гистограмму . Вы также можете щелкнуть гистограмму в списке команд ниже
@EntryPoint()
. Выберите этот параметр, чтобы открыть окно гистограммы Q#.Введите несколько снимков для выполнения программы, например 100 выстрелов, и нажмите клавишу ВВОД. Гистограмма будет отображаться в окне гистограммы Q#.
Щелкните значок параметров вверху слева, чтобы отобразить параметры.
Щелкните полосу, чтобы отобразить процент от этого результата. В этом случае возможны два результата, 0 и 1, и процент каждого результата близок к 50 %.
Совет
Гистограмму можно масштабировать с помощью колесика прокрутки мыши или жеста трекпада. При увеличении диаграммы можно сдвигать, нажав клавишу ALT во время прокрутки.
Подключение к Azure Quantum и отправка задания
Вы можете подключать и отправлять задания непосредственно из VS Code. В этом примере вы отправите задание в симулятор Rigetti.
Выберите Вид —> палитра команд и введите Q#: Подключение к рабочей области Azure Quantum. Нажмите клавишу ВВОД.
Выберите учетную запись Azure и следуйте инструкциям, чтобы подключиться к предпочтительному каталогу, подписке и рабочей области.
Примечание
Если у вас есть строка подключения, можно выбрать Строку подключения и вставить строка подключения, соответствующую рабочей области Azure Quantum. Дополнительные сведения см. в статье Подключение к рабочей области Quantum с помощью строка подключения.
После подключения в области Обозреватель разверните узел Квантовые рабочие области.
Разверните рабочую область и разверните поставщик Rigetti .
Примечание
Если при подключении к Azure Quantum возникла проблема, рядом с именем рабочей области появится значок предупреждения. Наведите указатель мыши на имя рабочей области, чтобы отобразить сведения об ошибке.
Выберите rigetti.sim.qvm в качестве .target
Щелкните значок воспроизведения справа от имени, target чтобы начать отправку текущей программы Q#. Если появится всплывающее окно, выберите Изменить профиль QIR target и продолжите работу.
Добавьте имя для идентификации задания.
Добавьте количество снимков или количество запусков программы.
Нажмите клавишу ВВОД , чтобы отправить задание. Состояние задания отобразится в нижней части экрана.
Разверните узел Задания и наведите указатель мыши на задание, чтобы отобразить время и состояние задания.
Чтобы просмотреть результаты, щелкните значок облака рядом с именем задания, чтобы скачать результаты из хранилища рабочей области и отобразить их в VS Code.
Отправка заданий Jupyter Notebook в Azure Quantum
Узнайте, как использовать VS Code для запуска, отладки и отправки Jupyter Notebook Q# в Azure Quantum. Действия, описанные в этой статье, также относятся к записным книжкам Jupyter Notebook на локальном сервере Jupyter или записных книжках на портале Azure Quantum.
Предварительные требования
Сведения об установке см. в статье Установка современного QDK в VS Code.
- Рабочая область Azure Quantum по подписке Azure. сведения о создании рабочей области см. в статье Создание рабочей области Azure Quantum;
- Среда Python с установленными Python и Pip .
- VS Code с установленными расширениями Azure Quantum Development Kit, Python и Jupyter .
- Azure Quantum
qsharp
иazure-quantum
пакеты, а такжеipykernel
пакет.
Запуск и тестирование программы в локальном симуляторе
В VS Code выберите Просмотреть > палитру команд и выберите Создать: создать Jupyter Notebook.
В правом верхнем углу VS Code обнаружит и отобразит версию Python и виртуальную среду Python, выбранную для записной книжки. Если у вас несколько сред Python, может потребоваться выбрать ядро с помощью средства выбора ядра в правом верхнем углу. Если среда не обнаружена, см. сведения о настройке записных книжек Jupyter Notebook в VS Code .
В первой ячейке записной книжки выполните команду
import qsharp import azure.quantum
- Модуль
qsharp
активирует магическую%%qsharp
команду, которая позволяет ввести код Q# непосредственно в ячейку. - Модуль
azure-quantum
обеспечивает подключение к рабочей области Azure Quantum.
Примечание
Если ядро
ipykernel
Jupyter Python не обнаружено, VS Code предложит установить его.- Модуль
Добавьте еще одну ячейку и введите следующий код Q#, который возвращает указанное пользователем число случайных битов:
%%qsharp operation Random() : Result { use q = Qubit(); H(q); let result = M(q); Reset(q); return result } operation RandomNBits(N: Int): Result[] { mutable results = []; for i in 0 .. N - 1 { let r = Random(); set results += [r]; } return results }
Чтобы протестировать операцию, можно использовать
eval
метод , который может вызывать любую операцию Q#, ранее определенную в записной книжке:qsharp.eval("RandomNBits(4)")
[Zero, One, One, Zero]
Чтобы запустить программу в локальном симуляторе
run
, используйте метод .shots
Укажите или количество запусков программы, и симулятор возвращает результаты в виде списка Python.qsharp.run("RandomNBits(4)", shots=10)
[[One, One, One, One], [Zero, Zero, One, Zero], [One, Zero, Zero, One], [Zero, One, Zero, Zero], [One, Zero, One, One], [One, Zero, One, Zero], [One, One, One, Zero], [One, One, One, One], [Zero, Zero, Zero, One], [One, Zero, Zero, One]]
Компиляция задания с помощью базового профиля
При запуске программ в локальном квантовом симуляторе можно отправить любой тип программы Q#. Однако оборудование targets Azure Quantum пока не поддерживает все возможности, необходимые для запуска всех программ Q#. Чтобы скомпилировать и отправить программы Q# в Azure Quantum, необходимо задать профиль target , чтобы сообщить Q# о возможностях, поддерживаемых оборудованием target . В настоящее время это базовый профиль. Дополнительные сведения см. в статье Типы профилей в Azure Quantum.
Чтобы повторно инициализировать интерпретатор Q# и скомпилировать программу с базовым профилем, выполните следующие действия:
Используйте метод ,
init
чтобы задать профиль:qsharp.init(target_profile=qsharp.TargetProfile.Base)
Так как вы повторно инициализировали интерпретатор, необходимо снова запустить код с новым профилем:
%%qsharp operation Random() : Result { use q = Qubit(); H(q); let result = M(q); Reset(q); return result } operation RandomNBits(N: Int): Result[] { mutable results = []; for i in 0 .. N - 1 { let r = Random(); set results += [r]; } return results }
Затем используйте метод ,
compile
чтобы указать операцию или функцию, которая является точкой входа в программу. При этом код компилируется в формат QIR, который затем можно отправить на любое квантовое оборудование:MyProgram = qsharp.compile("RandomNBits(4)")
Подключение к Azure Quantum и отправка задания
Теперь, когда программа скомпилирована в правильном формате, создайте azure.quantum.Workspace
объект для подключения к Azure Quantum. Для подключения вы будете использовать идентификатор ресурса рабочей области Azure Quantum. Идентификатор ресурса и расположение можно скопировать на странице обзора рабочей области в портал Azure.
В новой ячейке введите идентификатор ресурса и расположение из рабочей области Azure Quantum:
MyWorkspace = azure.quantum.Workspace( resource_id = "MyResourceID", location = "MyLocation" )
Используйте метод ,
get_targets
чтобы просмотреть доступное оборудование targets в рабочей области:MyTargets = MyWorkspace.get_targets() print("This workspace's targets:") MyTargets
Выберите :
rigetti.sim.qvm
targetMyTarget = MyWorkspace.get_targets("rigetti.sim.qvm")
Наконец, используйте метод ,
submit
чтобы отправить программу с ее параметрами и отобразить результаты:job = MyTarget.submit(MyProgram, "MyQuantumJob", shots=100) job.get_results()
{'Histogram': ['[0, 0, 0, 0]', 0.3, '[1, 0, 0, 0]', 0.1, '[1, 1, 1, 1]', 0.3, '[0, 1, 1, 1]', 0.3]}
Все свойства задания доступны в
job.details
, например:print(job.details) print("\nJob name:", job.details.name) print("Job status:", job.details.status) print("Job ID:", job.details.id)
{'additional_properties': {'isCancelling': False}, 'id': '0150202e-9638-11ee-be2f-b16153380354', 'name': 'MyQuantumJob', 'provider_id': 'rigetti'...} Job name: MyQuantumJob Job status: Succeeded Job ID: 0150202e-9638-11ee-be2f-b16153380354
Отправка Python с заданиями Q# в Azure Quantum
Узнайте, как использовать VS Code для написания программы Python, которая вызывает операции Q#, подключается к Azure с помощью команд Python или Azure CLI и отправляет задание.
Предварительные требования
Сведения об установке см. в разделе Установка современного QDK в VS Code.
- Рабочая область Azure Quantum по подписке Azure. сведения о создании рабочей области см. в статье Создание рабочей области Azure Quantum;
- Среда Python с установленными Python и Pip .
- VS Code с установленным пакетом средств разработки Azure Quantum и расширением Python .
- Azure Quantum
qsharp
иazure-quantum
пакеты. - Azure CLI с установленным последним расширением Azure Quantum.
Создание и импорт операций Q#
qsharp
С помощью пакета можно хранить функции и операции в файлах Q# и создавать проекты Q#, которые позволяют вызывать любые из них из кода Python. Это особенно полезно, если необходимо запустить программу, которая принимает входные параметры.
Выполните действия, чтобы создать проект Q#.
Откройте новый текстовый файл, добавьте следующий код Q#, который возвращает указанное пользователем число случайных битов, и сохраните файл в проекте как
source.qs
.Примечание
Обратите внимание, что этот код Q# не имеет
@EntryPoint
функции, подобной программе Q# (см. раздел Отправка заданий Q# в Azure Quantum), но в отличие от Jupyter Notebook требуется пространство имен (см. раздел Отправка заданий Jupyter Notebook в Azure Quantum).namespace Sample { operation Random() : Result { use q = Qubit(); H(q); let result = M(q); Reset(q); return result } operation RandomNBits(N: Int): Result[] { mutable results = []; for i in 0 .. N - 1 { let r = Random(); set results += [r]; } return results } }
В той же папке откройте другой файл и сохраните его как
randomNum.py
.Добавьте следующий код для импорта
qsharp
модулей иazure.quantum
.import qsharp import azure.quantum
Затем добавьте код, чтобы определить корневую папку проекта Q# и протестируйте выполнение target операции в локальном симуляторе. Операция вызывается по пространству< имен>.<operation_name( )> и в этом случае вы передаете количество возвращаемых случайных битов.
qsharp.init(project_root = '/MyProjectRootFolder') print(qsharp.eval("Sample.RandomNBits(4)"))
[Zero, One, One, Zero]
Вы также можете протестировать операцию с помощью
run
метода , который передает дополнительныйshots
параметр и возвращает результаты в списке Python. ВrandomNum.py
замените предыдущую инструкцию print следующим:result = qsharp.run("Sample.RandomNBits(4)", shots=10) for x in result: print(x)
[[One, One, One, One], [Zero, Zero, One, Zero], [One, Zero, Zero, One], [Zero, One, Zero, Zero], [One, Zero, One, One], [One, Zero, One, Zero], [One, One, One, Zero], [One, One, One, One], [Zero, Zero, Zero, One], [One, Zero, Zero, One]]
Компиляция задания с помощью базового профиля
При запуске программ в локальном квантовом симуляторе можно отправить программу Q# любого типа. Однако оборудование targets Azure Quantum пока не поддерживает все возможности, необходимые для запуска всех программ Q#. Чтобы компилировать и отправлять программы Q# в Azure Quantum, необходимо настроить профиль target , чтобы сообщить Q# о возможностях, поддерживаемых оборудованием target . В настоящее время это базовый профиль. Дополнительные сведения см. в статье Типы профилей в Azure Quantum.
Примечание
Для программ только на Q# в VS Code VS Code VS Code автоматически задает базовый профиль.
Используйте метод ,
init
чтобы задать профиль:qsharp.init(target_profile=qsharp.TargetProfile.Base)
Затем используйте метод ,
compile
чтобы указать операцию или функцию, которая является точкой входа в программу. Затем скомпилированную программу можно отправить на любое квантовое оборудование:MyProgram = qsharp.compile("Sample.RandomNBits(4)")
Подключение к Azure Quantum и отправка задания
Вы можете подключиться к Azure Quantum и отправить задание с помощью объекта, созданного Workspace
Python, или подключиться и отправить задание с помощью Azure CLI. При использовании Azure CLI необходимо сохранить скомпилированную программу в виде текстового файла и отправить этот файл с помощью команды CLI.
Теперь, когда программа скомпилирована в правильном формате, создайте azure.quantum.Workspace
объект для подключения к Azure Quantum. Для подключения вы будете использовать идентификатор ресурса рабочей области Azure Quantum. Идентификатор ресурса и расположение можно скопировать на странице обзора рабочей области в портал Azure.
Добавьте следующий код
randomNum.py
в , указав идентификатор ресурса и расположение из рабочей области Azure Quantum:workspace = azure.quantum.Workspace( resource_id = "MyResourceID", location = "MyLocation" )
Используйте метод ,
get_targets
чтобы отобразить доступное оборудование targets в рабочей области:MyTargets = workspace.get_targets() print("This workspace's targets:") for x in MyTargets: print(x)
Выберите :
rigetti.sim.qvm
targetMyTarget = workspace.get_targets("rigetti.sim.qvm")
Наконец, используйте метод ,
submit
чтобы отправить программу с ее параметрами. Результаты задания возвращаются в виде словаря Python.job = MyTarget.submit(MyProgram, "MyPythonJob", shots=100) results = job.get_results() print("\nResults: ", results)
Чтобы извлечь только значения и отобразить их, выполните следующие действия:
resultList = results.get("Histogram") for x in resultList: print(x)
[0, 0, 0, 0] 0.3 [1, 0, 0, 0] 0.1 [1, 1, 1, 1] 0.3 [0, 1, 1, 1] 0.3
Все свойства задания доступны в
job.details
, например:print(job.details) print("\nJob name:", job.details.name) print("Job status:", job.details.status) print("Job ID:", job.details.id)
{'additional_properties': {'isCancelling': False}, 'id': '0fc396d2-97dd-11ee-9958-6ca1004ff31f', 'name': 'MyPythonJob', 'provider_id': 'rigetti'...} Job name: MyPythonJob Job status: Succeeded Job ID: fc396d2-97dd-11ee-9958-6ca1004ff31f
Дальнейшие действия
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по