Esegui il tuo primo circuito utilizzando l'SDK Amazon Braket Python - 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à.

Esegui il tuo primo circuito utilizzando l'SDK Amazon Braket Python

Suggerimento

Impara le basi dell'informatica quantistica con! AWS Iscriviti all'Amazon Braket Digital Learning Plan e ottieni il tuo badge digitale dopo aver completato una serie di corsi di apprendimento e una valutazione digitale.

Dopo l'avvio dell'istanza del notebook, apri l'istanza con un'interfaccia Jupyter standard scegliendo il notebook appena creato.

L'interfaccia di Notebook mostra un'istanza di notebook esistente denominata amazon-braket-test con lo stato e il relativo URL. InService

AmazonLe istanze Braket Notebook sono preinstallate con Amazon Braket SDK e tutte le sue dipendenze. Inizia creando un nuovo notebook con kernel. conda_braket

Interfaccia di avvio per notebook, console e altri strumenti come Terminal, Text File, Markdown File, Python File, con ambiente Python conda_braket evidenziato.

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 Braket SDK 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. AmazonBraket SDK è dotato di un simulatore locale per la prototipazione e il 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 come risultati della misurazione troverete una distribuzione approssimativamente uguale (fino al shot rumore) di 00 e 11 come risultati di misurazione, come previsto.

Esegui il tuo circuito su un simulatore on-demand

AmazonBraket fornisce anche l'accesso a un simulatore on-demand ad alte prestazioni, per la gestione di circuiti più grandi. SV1 SV1è un simulatore vettoriale di stato su richiesta che consente la simulazione di circuiti quantistici fino a 34. qubits Puoi trovare ulteriori informazioni nella sezione Dispositivi supportati e SV1 nella console. AWS Quando esegui attività quantistiche su SV1 (e su TN1 qualsiasi QPU), i risultati dell'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 example-bucket come nome del bucket. I nomi dei bucket per Amazon Braket iniziano sempre con, amazon-braket- seguiti 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 = "example-bucket" # the name of the folder in the bucket my_prefix = "simulation-output" s3_folder = (my_bucket, my_prefix)

Per far funzionare un circuitoSV1, devi 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 sull'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 tutti gli ID delle attività quantistiche e gli altri metadati associati alle attività quantistiche. Per ulteriori informazioni, consulta Conservazione dei dati.

In esecuzione su una 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 ai QPU dispositivi daIonQ, Oxford Quantum CircuitsQuEra, e. 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 un Rigetti dispositivo.

# choose the Rigetti hardware to run your circuit device = AwsDevice("arn:aws:braket:us-west-1::device/qpu/rigetti/Aspen-M-3")

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/Harmony")

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 di lavori ibridi. Inoltre, i clienti possono visualizzare le profondità di coda specifiche del dispositivo nella pagina Dispositivi di. 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à, l'SDK Amazon Braket esegue un sondaggio per ottenere un 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 di polling è troppo breve, i risultati potrebbero non essere restituiti entro il tempo di polling, ad esempio quando una QPU non è 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'