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à.
Costruisci il tuo primo circuito
Dopo l'avvio dell'istanza del notebook, apri l'istanza con un'interfaccia Jupyter standard scegliendo il notebook appena creato.
Le istanze di notebook Amazon Braket sono preinstallate con Amazon Braket e tutte le sue dipendenze. SDK Inizia creando un nuovo notebook con kernel. conda_braket
Puoi iniziare con un semplice «Hello, world!» esempio. Innanzitutto, costruite un circuito che prepari uno stato di Bell, quindi eseguitelo su dispositivi diversi per ottenere i risultati.
Inizia importando i moduli Amazon SDK Braket e definendo un semplice circuito Bell State.
import boto3 from braket.aws import AwsDevice from braket.devices import LocalSimulator from braket.circuits import Circuit # create the circuit bell = Circuit().h(0).cnot(0, 1)
Puoi visualizzare il circuito con questo comando:
print(bell)
Esegui il tuo circuito sul simulatore locale
Quindi, scegli il dispositivo quantistico su cui eseguire il circuito. Amazon Braket è SDK dotato di un simulatore locale per la prototipazione e i test rapidi. Consigliamo di utilizzare il simulatore locale per circuiti più piccoli, che possono arrivare fino a 25 qubits (a seconda dell'hardware locale).
Ecco come creare un'istanza del simulatore locale:
# instantiate the local simulator local_sim = LocalSimulator()
ed esegui il circuito:
# run the circuit result = local_sim.run(bell, shots=1000).result() counts = result.measurement_counts print(counts)
Dovresti vedere un risultato simile a questo:
Counter({'11': 503, '00': 497})
Lo stato specifico di Bell che avete preparato è una sovrapposizione uguale di |00> e |11>, e ne troverete uno più o meno uguale (fino a shot distribuzione del rumore) di 00 e 11 come risultati di misurazione, come previsto.
Esegui il tuo circuito su un simulatore on-demand
Amazon Braket fornisce anche l'accesso a un simulatore on-demand ad alte prestazioni, SV1, per far funzionare circuiti più grandi. SV1 è un simulatore vettoriale di stato su richiesta che consente la simulazione di circuiti quantistici fino a 34 qubits. Puoi trovare maggiori informazioni su SV1 nella sezione Dispositivi supportati e nella AWS console. Quando si eseguono attività quantistiche su SV1 (e così via TN1 o qualsiasi altroQPU), i risultati della tua attività quantistica vengono archiviati in un bucket S3 del tuo account. Se non specifichi un bucket, Braket SDK crea automaticamente un bucket predefinito. amazon-braket-{region}-{accountID}
Per ulteriori informazioni, consulta Gestire l'accesso ad Amazon Braket.
Nota
Inserisci il nome effettivo del bucket esistente, come indicato nell'esempio seguente amzn-s3-demo-bucket
come nome del bucket. Nomi dei bucket per Amazon La parentesi inizia sempre con amazon-braket-
seguita da altri caratteri identificativi che aggiungi. Se hai bisogno di informazioni su come configurare un bucket S3, consulta Guida introduttiva ad Amazon S3.
# get the account ID aws_account_id = boto3.client("sts").get_caller_identity()["Account"] # the name of the bucket my_bucket = "amzn-s3-demo-bucket" # the name of the folder in the bucket my_prefix = "simulation-output" s3_folder = (my_bucket, my_prefix)
Per far funzionare un circuito SV1, è necessario fornire la posizione del bucket S3 precedentemente selezionato come argomento posizionale nella chiamata. .run()
# choose the cloud-based on-demand simulator to run your circuit device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1") # run the circuit task = device.run(bell, s3_folder, shots=100) # display the results print(task.result().measurement_counts)
La console Amazon Braket fornisce ulteriori informazioni sulla tua attività quantistica. Vai alla scheda Quantum Tasks nella console e il tuo compito quantistico dovrebbe essere in cima all'elenco. In alternativa, puoi cercare il tuo task quantistico utilizzando l'ID univoco del task quantistico o altri criteri.
Nota
Dopo 90 giorni, Amazon Braket rimuove automaticamente tutte le attività quantistiche IDs e gli altri metadati associati alle tue attività quantistiche. Per ulteriori informazioni, consulta Conservazione dei dati.
Esecuzione su un QPU
Con Amazon Braket, puoi eseguire il precedente esempio di circuito quantistico su un computer quantistico fisico semplicemente modificando una singola riga di codice. Amazon Braket fornisce l'accesso a QPU dispositivi da IonQ, IQM, QuErae Rigetti. Puoi trovare informazioni sui diversi dispositivi e sulle finestre di disponibilità nella sezione Dispositivi supportati e nella AWS console nella scheda Dispositivi. L'esempio seguente mostra come creare un'istanza di IQM dispositivo.
# choose the IQM hardware to run your circuit device = AwsDevice("arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet")
Oppure scegli un IonQ dispositivo con questo codice:
# choose the Ionq device to run your circuit device = AwsDevice("arn:aws:braket:us-east-1::device/qpu/ionq/Aria-1")
Dopo aver selezionato un dispositivo e prima di eseguire il carico di lavoro, puoi interrogare la profondità della coda del dispositivo con il codice seguente per determinare il numero di attività quantistiche o lavori ibridi. Inoltre, i clienti possono visualizzare le profondità di coda specifiche del dispositivo nella pagina Dispositivi del Amazon Braket Management Console.
# Print your queue depth print(device.queue_depth().quantum_tasks) # returns the number of quantum tasks queued on the device {<QueueType.NORMAL: 'Normal'>: '0', <QueueType.PRIORITY: 'Priority'>: '0'} print(device.queue_depth().jobs) '2' # returns the number of hybrid jobs queued on the device
Quando esegui un'attività, Amazon Braket verifica SDK il risultato (con un timeout predefinito di 5 giorni). Puoi modificare questa impostazione predefinita modificando il poll_timeout_seconds
parametro nel .run()
comando, come mostrato nell'esempio che segue. Tieni presente che se il timeout per il polling è troppo breve, i risultati potrebbero non essere restituiti entro il tempo di polling, ad esempio quando a non QPU è disponibile e viene restituito un errore di timeout locale. Puoi riavviare il polling chiamando la funzione. task.result()
# define quantum task with 1 day polling timeout task = device.run(bell, s3_folder, poll_timeout_seconds=24*60*60) print(task.result().measurement_counts)
Inoltre, dopo aver inviato l'operazione quantistica o il lavoro ibrido, è possibile richiamare la queue_position()
funzione per controllare la posizione della coda.
print(task.queue_position().queue_position) # Return the number of quantum tasks queued ahead of you '2'