Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Raggruppamento quantistico delle attività
Il quantum task batching è disponibile su tutti i dispositivi Amazon Braket, ad eccezione del simulatore locale. Il batching è particolarmente utile per le attività quantistiche eseguite sui simulatori on-demand (TN1 oppure SV1) perché possono elaborare più attività quantistiche in parallelo. Per aiutarti a configurare varie attività quantistiche, Amazon Braket fornisce
Il batching consente di avviare attività quantistiche in parallelo. Ad esempio, se si desidera eseguire un calcolo che richiede 10 attività quantistiche e i circuiti utilizzati in tali attività quantistiche sono indipendenti l'uno dall'altro, è consigliabile utilizzare il batching. In questo modo, non è necessario attendere il completamento di un'attività quantistica prima di iniziare un'altra attività.
L'esempio seguente mostra come eseguire un batch di attività quantistiche:
circuits = [bell for _ in range(5)] batch = device.run_batch(circuits, s3_folder, shots=100) print(batch.results()[0].measurement_counts) # The result of the first quantum task in the batch
Per ulteriori informazioni, consulta gli esempi di Amazon Braket GitHub o Quantum task batching
In questa sezione:
Informazioni sul raggruppamento quantistico delle attività e sui costi
Alcune avvertenze da tenere a mente per quanto riguarda il raggruppamento quantistico delle attività e i costi di fatturazione:
-
Per impostazione predefinita, il quantum task batching riprova ogni volta o fallisce le attività quantistiche 3 volte.
-
Un batch di attività quantistiche di lunga durata, ad esempio 34 qubits for SV1, può comportare costi elevati. Assicurati di ricontrollare attentamente i valori di
run_batch
assegnazione prima di iniziare una serie di attività quantistiche. Si sconsiglia di utilizzare TN1 conrun_batch
. -
TN1 può comportare costi in caso di mancata riuscita delle attività della fase di prova (per ulteriori informazioni, consulta la TN1 descrizione). I nuovi tentativi automatici possono aumentare il costo, quindi consigliamo di impostare il numero di «max_retry» per il batch su 0 quando si utilizza TN1 (vedi Quantum Task
Batching, riga 186).
Quantum task batching e PennyLane
Sfrutta i vantaggi del batch quando utilizzi PennyLane Amazon Braket parallel = True
impostando quando crei un'istanza di un dispositivo Amazon Braket, come illustrato nell'esempio seguente.
device = qml.device("braket.aws.qubit",device_arn="arn:aws:braket:::device/quantum-simulator/amazon/sv1",wires=wires,s3_destination_folder=s3_folder,parallel=True,)
Task batching e circuiti parametrizzati
Quando si invia un batch di attività quantistiche che contiene circuiti parametrizzati, è possibile fornire un inputs
dizionario, che viene utilizzato per tutte le attività quantistiche list
del batch, o un dizionario di input, nel qual caso il dizionario i
-th viene abbinato i
al task -th, come mostrato nell'esempio seguente.
from braket.circuits import Circuit, FreeParameter, Observable from braket.aws import AwsQuantumTaskBatch # create the free parameters alpha = FreeParameter('alpha') beta = FreeParameter('beta') # create two circuits circ_a = Circuit().rx(0, alpha).ry(1, alpha).cnot(0,2).xx(0, 2, beta) circ_a.variance(observable=Observable.Z(), target=0) circ_b = Circuit().rx(0, alpha).rz(1, alpha).cnot(0,2).zz(0, 2, beta) circ_b.expectation(observable=Observable.Z(), target=2) # use the same inputs for both circuits in one batch tasks = device.run_batch([circ_a, circ_b], inputs={'alpha': 0.1, 'beta':0.2}) # or provide each task its own set of inputs inputs_list = [{'alpha': 0.3,'beta':0.1}, {'alpha': 0.1,'beta':0.4}] tasks = device.run_batch([circ_a, circ_b], inputs=inputs_list)
È inoltre possibile preparare un elenco di dizionari di input per un singolo circuito parametrico e inviarli come batch di operazioni quantistiche. Se nell'elenco sono presenti N dizionari di input, il batch contiene N task quantistici. Il task quantistico i
-th corrisponde al circuito eseguito con il dizionario di input -th. i
from braket.circuits import Circuit, FreeParameter # create a parametric circuit circ = Circuit().rx(0, FreeParameter('alpha')) # provide a list of inputs to execute with the circuit inputs_list = [{'alpha': 0.1}, {'alpha': 0.2}, {'alpha': 0.3}] tasks = device.run_batch(circ, inputs=inputs_list)