Programmering

Amazon Braket: Kom godt i gang med quantum computing

Mens IBM, Microsoft og Google har indgået store forpligtelser og investeringer i kvantecomputer, har Amazon indtil for nylig været temmelig stille om området. Det ændrede sig med introduktionen af ​​Amazon Braket.

Amazon forsøger stadig ikke at bygge sine egne kvantecomputere, men med Braket gør det andre selskabers kvantecomputere tilgængelige for cloudbrugere via AWS. Braket understøtter i øjeblikket tre kvantecomputertjenester, fra D-Wave, IonQ og Rigetti.

[Også på: Et praktisk kig på Microsoft Quantum Development Kit og IBM Q og Qiskit quantum computing SDK'er]

D-Wave fremstiller superledende kvanteudglødere, som normalt programmeres ved hjælp af D-Wave Ocean-software, selvom der også er et annealing-modul i Braket SDK. IonQ fremstiller fangede ion-kvanteprocessorer, og Rigetti fremstiller superledende kvanteprocessorer. I Braket kan du programmere både IonQ- og Rigetti-processorer ved hjælp af Braket Python SDK-kredsløbsmodulet. Den samme kode kører også på lokale og hostede kvantesimulatorer.

Navnet Braket er en slags vittighed for fysikere. Bra-ket notation er Dirac-formuleringen af ​​kvantemekanik, som er en lettere måde at udtrykke Schrödingers ligning på end delvise ligninger. I Dirac notation, en bh <> er en rækkevektor og en ket | f> er en søjlevektor. At skrive en bh ved siden af ​​et ket indebærer matrixmultiplikation.

Amazon Braket og Braket Python SDK konkurrerer med IBM Q og Qiskit, Azure Quantum og Microsoft Q # og Google Cirq. IBM har allerede sine egne kvantecomputere og simulatorer tilgængelige for offentligheden online. Microsofts simulator er generelt tilgængelig, men dens kvantetilbud er i øjeblikket i begrænset forhåndsvisning for tidlige adoptere, herunder adgang til kvantecomputere fra Honeywell, IonQ og Quantum Circuits og optimeringsløsninger fra 1QBit. Microsoft har ikke meddelt, hvornår deres egne topologiske superledende kvantecomputere bliver tilgængelige, og heller ikke Google har meddelt, hvornår de vil gøre sine kvantecomputere eller Sycamore-chips tilgængelige for offentligheden.

Amazon Braket oversigt

Amazon Braket er en fuldt administreret tjeneste, der hjælper dig med at komme i gang med kvantecomputering. Det har tre moduler, Build, Test og Run. Build-modulet centrerer omkring administrerede Jupyter-notesbøger, der er forudkonfigureret med eksempelalgoritmer, ressourcer og udviklerværktøjer, herunder Amazon Braket SDK. Testmodulet giver adgang til administrerede, højtydende kvantekredsløbssimulatorer. Kør-modulet giver sikker on-demand adgang til forskellige typer kvantecomputere (QPU'er): gate-baserede kvantecomputere fra IonQ og Rigetti og en kvanteudglødningsmiddel fra D-Wave.

Opgaver kører muligvis ikke straks på QPU'en. QPU'erne udfører kun opgaver under udførelsesvinduer.

Amazon Braket SDK API

Braket Python SDK definerer alle de operationer, du har brug for til at opbygge, teste og køre kvantekredsløb og annealers. Det er organiseret i fem pakker: braket.annealing, braket.aws, braket.circuits, braket.devices og braket.tasks.

Braket.annealing-pakken giver dig mulighed for at definere to slags binære kvadratiske modeller (BQM'er): Ising (en matematisk model for ferromagnetisme i statistisk mekanik ved hjælp af magnetiske dipolmomenter med atomiske "spins") og QUBO (Quadratic Unconstrained Binary Optimization) problemer at løse på en kvanteudglødningsmiddel, såsom en D-Wave-enhed. Pakken braket.circuits giver dig mulighed for at definere kvantekredsløb baseret på et sæt porte, der skal løses på gate-baserede kvantecomputere, såsom dem fra IonQ og Rigetti.

De andre tre pakker styrer kørslen af ​​dit problem. Pakken braket.aws giver dig mulighed for at vælge kvanteenheder, indlæse problemer i opgaver og forbinde opgaver til AWS-sessioner. Pakken braket.devices giver dig mulighed for at køre opgaver på kvanteenheder og simulatorer. Pakken braket.tasks giver dig mulighed for at styre, spore, annullere og få resultater fra kvanteopgaver.

Amazon Braket kredsløb og porte

Kredsløb i en kvantecomputer som dem fra IonQ eller Rigetti (eller IBM eller Honeywell for den sags skyld) er bygget fra et standardsæt af porte (se figur nedenfor), selvom ikke hver QPU muligvis har en implementering af alle slags gate . I Braket SDK definerer du et kredsløb ved hjælp af Kredsløb() metode fra braket.circuits-pakken, kvalificeret af portene i kredsløbet og deres parametre.

For eksempel definerer denne Braket-kode (fra Amazons Deep_dive_into_the_anatomy_of_quantum_circuits eksempel) et kredsløb, der initialiserer fire qubits til en Hadamard (lige sandsynlighed for 1 og 0) tilstand, og derefter vikler qubit 2 med qubit 0 og qubit 3 med qubit 1 ved hjælp af Controlled Not-operationer.

# definer kredsløb med 4 qubits

my_circuit = Circuit (). h (interval (4)). cnot (kontrol = 0, mål = 2). cnot (kontrol = 1, mål = 3)

Braket SDK ser ud til at have et næsten fuldt sæt kvantelogiske porte, som vist i denne optælling af Port klasse. Jeg kan ikke se en Deutsch-gate opført, men så vidt jeg ved, er den endnu ikke implementeret på en reel QPU.

# udskriv alle tilgængelige porte, der i øjeblikket er tilgængelige i SDK

gate_set = [attr for attr i dir (Gate) hvis attr [0] i streng.ascii_uppercase]

udskriv (gate_set)

['CCNot', 'CNot', 'CPhaseShift', 'CPhaseShift00', 'CPhaseShift01', 'CPhaseShift10', 'CSwap', 'CY', 'CZ', 'H', 'I', 'ISwap', ' PSwap ',' PhaseShift ',' Rx ',' Ry ',' Rz ',' S ',' Si ',' Swap ',' T ',' Ti ',' Unitary ',' V ',' Vi ' , 'X', 'XX', 'XY', 'Y', 'YY', 'Z', 'ZZ']

Rxtreme (CC BY-SA 4.0)

D-Wave Ocean

Ocean er den oprindelige Python-baserede softwarestak til D-Wave-kvanteudglødere. Til brug via Braket kan du kombinere Ocean-softwaren med Amazon Braket Ocean-plug-in, som oversættes mellem Ocean- og Braket-formater.

Kvante annealers fungerer meget anderledes end gate-baserede QPU'er. I det væsentlige formulerer du dit problem som en binær kvadratisk model (BQM), der har et globalt minimum til den løsning, du vil finde. Derefter bruger du annealer til at prøve funktionen mange gange (da annealer ikke er perfekt) for at finde minimum. Du kan oprette BQM for et givet problem matematisk eller generere BQM ved hjælp af Ocean-software. Koden, der følger, fra Amazons D-Wave_Anatomy-eksempel, bruger Braket Ocean-pluginnet til at løse en BQM på en D-Wave-enhed.

# sæt parametre

num_reads = 1000

# definer BQM

bqm = dimod.BinaryQuadraticModel (lineær, kvadratisk, forskudt, vartype)

# Kør BQM: Løs med D-Wave-enhed

sampler = BraketDWaveSampler (s3_folder, 'arn: aws: braket ::: device / qpu / d-wave / DW_2000Q_6')

sampler = EmbeddingComposite (sampler)

sampleset = sampler.sample (bqm, num_reads = num_reads)

# samlet løsning:

sampleset = sampleset.aggregate ()

D-Wave-systemer

Aktivering af Amazon Braket og brug af notesbøger

Inden du kan bruge Braket, skal du aktivere det på din AWS-konto.

Derefter skal du oprette en notebook-forekomst. Notebooks bruger Amazon SageMaker (læs min anmeldelse).

Når du åbner en notesbog, kan du indtaste ny kode eller bruge et af Amazons eksempler.

Du skal kontrollere status for QPU-enhederne, da de ikke altid er tilgængelige.

Mens du selv kan køre dem, er Braket-eksemplets notesbøger gemt med resultater fra en tidligere kørsel.

Der er eksempler på både gate-baserede QPU'er som ovenfor og kvanteudglødningsmidler som nedenfor.

Lær i dag, nyttigt i morgen

Amazon Braket er en rimelig måde at få dine fødder våde med kvantecomputere og simulatorer. Da vi stadig er i NISQ-fasen (Noisy Intermediate Scale Quantum) af kvanteberegning, kan du ikke rigtig forvente nyttige resultater fra Braket. Vi har brug for flere qubits, mindre støj og længere sammenhængstider, som alle undersøges aktivt.

Brakets nuværende QPU-tilbud er beskedne. 2048-qubit D-Wave annealer er for det meste nyttig til optimeringsproblemer; det er omtrent halvdelen af ​​størrelsen på D-Waves nyeste generation annealer. 11-qubit IonQ QPU, som har relativt lange sammenhængstider, er vej for lille til at implementere algoritmerne for kvantecomputere, der skal udvise nyttig kvanteoverlegenhed, såsom Grovers algoritme til at finde det inverse af en funktion og Shors algoritme til at finde de primære faktorer for et heltal. Rigetti Aspen-8 på 30 qubit er også for lille.

Braket er ikke gratis, selvom det er relativt billigt at bruge. Til sammenligning er IBM Q helt gratis, selvom de offentligt tilgængelige IBM QPU'er er meget små: de spænder fra en 1 qubit QPU i Armonk til en 15 qubit QPU i Melbourne. IBM tilbyder også en betalt premium QPU-service.

[Også på: anmeldelse: Amazon SageMaker spiller indhentning]

IBM vurderer også sine QPU'er efter deres kvantemængde (QV), et mål, der kombinerer antallet af qubits med deres fejlrate og sammenhængstid. Der er fem qubit IBM QPU'er, der spænder fra QV8 til QV64: højere er bedre. Honeywell har også annonceret at opnå QV64.

Hvad Braket i øjeblikket er godt for, er at lære om kvanteberegning og udvikle kvantealgoritmer i NISQ-regimet. Bliv dog opdateret. Da QPU'er forbedres og tilsluttes AWS, bliver Braket mere og mere nyttigt.

Koste: Administrerede notesbøger: $ 0,04 til $ 34,27 pr. Forekomst-time; kvantesimulator: $ 4,50 pr. time; kvantecomputere: $ 0,30 pr. opgave plus $ 0,00019 til $ 0,01 pr. skud (gentagelse af et kredsløb).

Platform: AWS; installation af Braket SDK lokalt kræver Python 3.7.2 eller højere og Git.