As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Executando tarefas quânticas durante uma reserva
Depois de obter uma reserva válida em ARN Criar uma reserva, você pode criar tarefas quânticas para serem executadas durante a reserva. Essas tarefas permanecem no QUEUED
estado até o início de sua reserva.
nota
As reservas são AWS específico da conta e do dispositivo. Somente o AWS A conta que criou a reserva pode usar sua reservaARN.
nota
Não há visibilidade de fila para tarefas e trabalhos enviados com uma reserva ARN porque somente suas tarefas são executadas durante a reserva.
Você pode criar tarefas quânticas usando Python SDKs como Braket, Qiskit
pip install --upgrade amazon-braket-sdk amazon-braket-pennylane-plugin qiskit-braket-provider
Execute tarefas com o gerenciador de DirectReservation
contexto
A forma recomendada de executar uma tarefa dentro da sua reserva agendada é usar o gerenciador de DirectReservation
contexto. Ao especificar o dispositivo de destino e a reservaARN, o gerenciador de contexto garante que todas as tarefas criadas na instrução with
Python sejam executadas com acesso exclusivo ao dispositivo.
Primeiro, defina um circuito quântico e o dispositivo. Em seguida, use o contexto de reserva e execute a tarefa.
from braket.aws import AwsDevice, DirectReservation from braket.circuits import Circuit from braket.devices import Devices bell = Circuit().h(0).cnot(0, 1) device = AwsDevice(Devices.IonQ.Aria1) # run the circuit in a reservation with DirectReservation(device, reservation_arn="<my_reservation_arn>"): task = device.run(bell, shots=100)
Você pode criar tarefas quânticas em uma reserva usando PennyLane e Qiskit plugins, desde que o DirectReservation
contexto esteja ativo durante a criação de tarefas quânticas. Por exemplo, com o Qiskit-Braket provedor, você pode executar tarefas da seguinte forma.
from braket.devices import Devices from braket.aws import DirectReservation from qiskit import QuantumCircuit from qiskit_braket_provider import BraketProvider qc = QuantumCircuit(2) qc.h(0) qc.cx(0, 1) aria = BraketProvider().get_backend("Aria 1") # run the circuit in a reservation with DirectReservation(Devices.IonQ.Aria1, reservation_arn="<my_reservation_arn>"): aria_task = aria.run(qc, shots=10)
Da mesma forma, o código a seguir executa um circuito durante uma reserva usando o Braket-PennyLane plugin.
from braket.devices import Devices from braket.aws import DirectReservation import pennylane as qml dev = qml.device("braket.aws.qubit", device_arn=Devices.IonQ.Aria1.value, wires=2, shots=10) @qml.qnode(dev) def bell_state(): qml.Hadamard(wires=0) qml.CNOT(wires=[0, 1]) return qml.probs(wires=[0, 1]) # run the circuit in a reservation with DirectReservation(Devices.IonQ.Aria1, reservation_arn="<my_reservation_arn>"): probs = bell_state()
Configurando manualmente o contexto da reserva
Como alternativa, você pode definir manualmente o contexto da reserva com o código a seguir.
# set reservation context reservation = DirectReservation(device, reservation_arn="<my_reservation_arn>").start() # run circuit during reservation task = device.run(bell, shots=100)
Isso é ideal para notebooks Jupyter, onde o contexto pode ser executado na primeira célula e todas as tarefas subsequentes serão executadas na reserva.
nota
A célula que contém a .start()
chamada só deve ser executada uma vez.
Para voltar ao modo sob demanda: reinicie o notebook Jupyter ou ligue para o seguinte para alterar o contexto de volta para o modo sob demanda.
reservation.stop() # unset reservation context
nota
As reservas têm um horário de início e término programado (consulte Criar uma reserva). Os reservation.stop()
métodos reservation.start()
e não iniciam nem encerram uma reserva. Esses são métodos para modificar todas as tarefas quânticas subsequentes a serem executadas durante a reserva. Esses métodos não têm efeito no horário agendado da reserva.
Passe explicitamente a reserva ARN ao criar a tarefa
Outra forma de criar tarefas durante uma reserva é passar explicitamente a reserva ARN ao ligardevice.run()
.
task = device.run(bell, shots=100, reservation_arn="<my_reservation_arn>")
Esse método associa diretamente a tarefa quântica à reservaARN, garantindo que ela seja executada durante o período reservado. Para essa opção, adicione a reserva ARN a cada tarefa que você planeja executar durante uma reserva. Além disso, verifique se as tarefas foram criadas no Qiskit ou PennyLane estão usando a reserva corretaARN. Devido a essas considerações adicionais, as duas formas anteriores são recomendadas.
Ao usar o boto3 diretamente, transmita a reserva ARN como uma associação ao criar uma tarefa.
import boto3 braket_client = boto3.client("braket") kwargs["associations"] = [ { "arn": "<my_reservation_arn>", "type": "RESERVATION_TIME_WINDOW_ARN", } ] response = braket_client.create_quantum_task(**kwargs)