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 raggruppamento quantistico delle attività è disponibile su tutti i dispositivi Amazon Braket, ad eccezione del simulatore locale. Il batching è particolarmente utile per le attività quantistiche eseguite sui simulatori su richiesta (TN1oSV1) 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
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 forSV1, può comportare costi elevati. Assicuratevi di ricontrollare attentamente i valori di
run_batch
assegnazione prima di iniziare una serie di attività quantistiche. Si sconsiglia l'utilizzo conTN1.run_batch
-
TN1può comportare costi in caso di mancata riuscita delle attività della fase di prova (vedi la descrizione del TN1 per maggiori informazioni). 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 (vedere Quantum Task Batching, riga 186). TN1
Quantum task batching e PennyLane
Sfrutta i vantaggi del batch quando utilizzi PennyLane Amazon Braket impostando parallel = True
quando istanziare un dispositivo Amazon Braket, come mostrato 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 operazioni quantistiche che contiene circuiti parametrizzati, è possibile fornire un inputs
dizionario, utilizzato per tutte le attività quantistiche del batch, oppure uno list
dei dizionari di input, nel qual caso il dizionario -th viene abbinato al task i
-th, come mostrato nell'esempio seguente. i
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)