Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Сеансы являются ключевым компонентом гибридных квантовых вычислений. Сеанс — это логическая группировка одного или нескольких заданий, которые вы отправляете в один target. Каждый сеанс имеет уникальный идентификатор, подключенный к каждому заданию в этом сеансе. Сеансы полезны при выполнении нескольких заданий квантовых вычислений в последовательности и выполнении классического кода между квантовыми заданиями.
Примечание.
Задания группы сеансов для отправки от Azure Quantum поставщика, но задания в сеансе не пакетируются на стороне поставщика.
Предварительные условия
Чтобы создать сеанс, необходимо выполнить следующие предварительные требования:
Учетная запись Azure с активной подпиской. Если у вас нет учетной записи Azure, зарегистрируйтесь бесплатно и зарегистрируйтесь для подписки с оплатой по мере использования.
Одна Azure Quantum рабочая область. Дополнительные сведения см. в Azure Quantum разделе "Создание рабочей области".
Среда с установленными PythonPython и программой Pip.
Последняя версия Visual Studio Code (VS Code), с установленными расширениями QDK, Python и Jupyter.
Пакет
qdkPython . Чтобы отправить Qiskit и Cirq программы, установитеazureqiskitcirqи дополнительные компоненты.pip install --upgrade "qdk[azure,qiskit,cirq]"
Что такое сеанс?
В сеансах вы можете переместить вычислительный ресурс клиента в облако для снижения задержки и возможность многократного выполнения квантовой программы с разными параметрами. Вы можете логически сгруппировать задания в один сеанс, и вы можете определить приоритеты заданий в этом сеансе по сравнению с заданиями, отличными от сеанса. Состояния Кубита не сохраняются между заданиями, но задания в сеансе имеют более короткое время очереди. Более короткое время очереди позволяет выполнять сложные алгоритмы для более эффективной организации и отслеживания отдельных заданий квантовых вычислений.
Сеансы полезны для параметризованных квантовых алгоритмов, где выходные данные одного задания квантовых вычислений используются для определения входных параметров для следующего задания квантовых вычислений. Наиболее распространенными примерами этого типа алгоритма являются Variational Quantum Eigensolvers (VQE) и Quantum Approximate Optimization Algorithms (QAOA).
Поддерживаемое оборудование
Сеансы поддерживаются для всех поставщиков оборудования квантовых вычислений. В некоторых случаях задания, отправленные в сеансе, приоритизируются в очереди этого target. Дополнительные сведения см. в разделе "Поведение целевого объекта".
Создание сеанса
Чтобы создать сеанс, выполните следующие действия.
В этом примере показано, как создать сеанс с использованием встроенного кода Q# в записной книжке Jupyter на платформе VS Code.
Примечание.
Сеансы управляются с помощью Python, даже если выполняется встроенный код Q#.
Откройте VS Codeменю "Вид " и выберите палитру команд.
Введите и нажмите кнопку "Создать:".Jupyter Notebook
В правом верхнем углу VS Code определит и отобразит версию Python и виртуальной среды Python, выбранной для записной книжки. Если у вас несколько Python сред, может потребоваться выбрать ядро с помощью средства выбора ядра в правом верхнем углу. Если среда не была обнаружена, смотрите сведения о настройке в Jupyter Notebook.
В первой ячейке записной книжки выполните следующий код:
from qdk.azure import Workspace workspace = Workspace(resource_id="") # add your resource IDДобавьте новую ячейку в записную книжку
qsharpPython и импортируйте пакет:from qdk import qsharpВыберите квантовый target. В этом примере target используется симулятор IonQ.
target = workspace.get_targets("ionq.simulator")Выберите конфигурации target профиля либо
Base,Adaptive_RIлибоUnrestricted.qsharp.init(target_profile=qsharp.TargetProfile.Base)Примечание.
Adaptive_RItarget Задания профилей в настоящее время поддерживаются в Quantinuum targets. Дополнительные сведения см. в разделе "Интегрированные гибридные квантовые вычисления".Напишите вашу программу Q#. Например, следующая Q# программа создает случайный бит. Чтобы проиллюстрировать использование входных аргументов, эта программа принимает целое число
nи массив углов,angleв качестве входных данных.%%qsharp import Std.Measurement.*; import Std.Arrays.*; operation GenerateRandomBits(n: Int, angle: Double[]) : Result[] { use qubits = Qubit[n]; // n parameter as the size of the qubit array for q in qubits { H(q); } R(PauliZ, angle[0], qubits[0]); // arrays as entry-points parameters R(PauliZ, angle[1], qubits[1]); let results = MeasureEachZ(qubits); ResetAll(qubits); return results; }Затем вы создадите сеанс. Предположим, вы хотите выполнить
GenerateRandomBitоперацию три раза, поэтому вы используетеtarget.submitдля отправки Q# операции сtargetданными, и вы повторяете код три раза - в реальном сценарии, вы можете отправить разные программы вместо одного и того же кода.angle = [0.0, 0.0] with target.open_session(name="Q# session of three jobs") as session: target.submit(input_data=qsharp.compile(f"GenerateRandomBits(2, {angle})"), name="Job 1", shots=100) # First job submission angle[0] += 1 target.submit(input_data=qsharp.compile(f"GenerateRandomBits(2, {angle})"), name="Job 2", shots=100) # Second job submission angle[1] += 1 target.submit(input_data=qsharp.compile(f"GenerateRandomBits(2, {angle})"), name="Job 3", shots=100) # Third job submission session_jobs = session.list_jobs() [session_job.details.name for session_job in session_jobs]Внимание
При передаче аргументов в качестве параметров заданию аргументы форматируются в Q# выражение, когда вызывается
qsharp.compile. Это означает, что необходимо отформатировать аргументы в виде Q# объектов. В этом примере, так как массивы в Python уже печатаются как[item0, item1, ...], входные аргументы соответствуют форматированию Q#. Для других Python структур данных может потребоваться дополнительная обработка, чтобы строковые значения обрабатывались и вставлялись в Q# совместимым способом.После создания сеанса можно использовать
workspace.list_session_jobsдля получения списка всех заданий в сеансе. Дополнительные сведения см. в разделе "Управление сеансами".
Поведение целевого объекта
Каждый поставщик квантового оборудования определяет собственные эвристики для лучшего управления приоритетом заданий в сеансе.
Quantinuum
Если вы решили отправить задания в течение сеанса на Quantinuum target, ваш сеанс имеет монопольный доступ к оборудованию до тех пор, пока вы ставите задания в очередь с интервалом не более одной минуты друг от друга. После этого задания принимаются и обрабатываются с помощью стандартной логики очередей и приоритетов.