Raggruppamento quantistico delle attività - Amazon Braket

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 notebook di esempio.

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, che contiene informazioni più specifiche sul batching.

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,)

Per ulteriori informazioni sul batching with, consulta Ottimizzazione parallelizzata dei circuiti PennyLane quantistici.

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)