Programavimas

„Amazon Braket“: pradėkite nuo kvantinio skaičiavimo

Nors IBM, „Microsoft“ ir „Google“ prisiėmė svarbius įsipareigojimus ir investavo į kvantinį skaičiavimą, „Amazon“ iki šiol gana tyliai kalbėjo apie šią sritį. Tai pasikeitė įvedus „Amazon Braket“.

„Amazon“ vis dar nemėgina kurti savo kvantinių kompiuterių, tačiau kartu su „Braket“ kitų kompanijų kvantinius kompiuterius prieina debesies vartotojams per AWS. Šiuo metu „Braket“ palaiko tris kvantinio skaičiavimo paslaugas: „D-Wave“, „IonQ“ ir „Rigetti“.

[Taip pat: praktinis „Microsoft Quantum Development Kit“ ir „IBM Q“ ir „Qiskit“ kvantinių skaičiavimo SDK žvilgsnis]

„D-Wave“ gamina superlaidžius kvantinius atkaitintuvus, kurie paprastai programuojami naudojant „D-Wave Ocean“ programinę įrangą, nors „Braket SDK“ yra ir atkaitinimo modulis. „IonQ“ gamina įstrigusius jonų kvantinius procesorius, o „Rigetti“ - superlaidžius kvantinius procesorius. „Braket“ galite programuoti „IonQ“ ir „Rigetti“ procesorius naudodami „Braket Python SDK“ grandinių modulį. Tas pats kodas taip pat veikia vietiniuose ir talpinamuose kvantiniuose treniruokliuose.

Pavadinimas „Braket“ yra savotiškas pokštas fizikams. Bra-ket žymėjimas yra „Dirac“ kvantinės mechanikos formuluotė, kuri yra lengvesnis būdas išreikšti Schrödingerio lygtį nei dalinės diferencialinės lygtys. Dirac žymėjime liemenėlė <> yra eilutės vektorius ir ket | f> yra stulpelio vektorius. Rašant liemenėlę šalia ketų, reikia matricos daugybos.

„Amazon Braket“ ir „Braket Python SDK“ konkuruoja su „IBM Q“ ir „Qiskit“, „Azure Quantum“ ir „Microsoft Q #“ bei „Google Cirq“. IBM jau turi savo kvantinius kompiuterius ir treniruoklius, prieinamus visuomenei internete. „Microsoft“ simuliatorius paprastai yra prieinamas, tačiau jo kvantiniai pasiūlymai šiuo metu yra riboti ankstyviems vartotojams, įskaitant prieigą prie „Honeywell“, „IonQ“ ir „Quantum Circuits“ kvantinių kompiuterių ir „1QBit“ optimizavimo sprendimus. „Microsoft“ nepranešė, kada taps prieinami jos pačios topologiniai superlaidūs kvantiniai kompiuteriai, taip pat „Google“ nepranešė, kada savo kvantinius kompiuterius ar „Sycamore“ lustus pateiks viešai.

„Amazon Braket“ apžvalga

„Amazon Braket“ yra visiškai valdoma paslauga, padedanti pradėti naudotis kvantiniu skaičiavimu. Jame yra trys moduliai: „Build“, „Test“ ir „Run“. „Build“ modulis yra aplink valdomus „Jupyter“ bloknotus, iš anksto sukonfigūruotus algoritmų pavyzdžiais, ištekliais ir kūrėjų įrankiais, įskaitant „Amazon Braket SDK“. „Test“ modulis suteikia prieigą prie valdomų, didelio našumo kvantinių grandinių treniruoklių. „Run“ modulis suteikia saugią prieigą pagal pareikalavimą prie įvairių tipų kvantinių kompiuterių (QPU): „IonQ“ ir „Rigetti“ vartų kvantiniai kompiuteriai ir „D-Wave“ kvantinis atkaitiklis.

QPU užduotys gali būti atliekamos ne iš karto. QPU užduotis vykdo tik vykdymo langų metu.

„Amazon Braket SDK“ API

„Braket Python SDK“ apibrėžia visas operacijas, kurių reikia norint sukurti, išbandyti ir paleisti kvantines grandines ir atkaitintuvus. Jis suskirstytas į penkis paketus: „braket.annealing“, „braket.aws“, „braket.circuits“, „braket.devices“ ir „braket. taskks“.

Paketas „braket.annealing“ leidžia apibrėžti dviejų rūšių dvejetainius kvadratinius modelius (BQM): Ising (matematinis feromagnetizmo modelis statistinėje mechanikoje, naudojant magnetinius dipolinius atominių „sukimų“ momentus) ir QUBO („Quadratic Unconstrained Binary Optimization“) problemas, išspręsti kvantiniame atkaitintuve, pavyzdžiui, D-Wave vienete. Paketas „braket.circuits“ leidžia apibrėžti kvantines grandines, pagrįstas vartų rinkiniu, spręsti vartų kvantiniuose kompiuteriuose, tokiuose kaip „IonQ“ ir „Rigetti“.

Kiti trys paketai kontroliuoja jūsų problemos vykdymą. Paketas „braket.aws“ leidžia pasirinkti kvantinius įrenginius, įkelti užduotis į užduotis ir prijungti užduotis prie AWS sesijų. Paketas „braket.devices“ leidžia vykdyti užduotis kvantiniuose įrenginiuose ir treniruokliuose. Paketas „braket.tasks“ leidžia valdyti, stebėti, atšaukti ir gauti kvantinių užduočių rezultatus.

„Amazon Braket“ grandinės ir vartai

Kvantinio kompiuterio grandinės, tokios kaip „IonQ“ ar „Rigetti“ (šiuo klausimu - „IBM“ ar „Honeywell“), yra pastatytos iš standartinio vartų rinkinio (žr. Toliau pateiktą paveikslą), nors ne kiekviename QPU gali būti įdiegti visų tipų vartai . „Braket SDK“ grandinę apibrėžiate naudodami Grandinė () metodas iš „braket.circuits“ paketo, kurį atitinka grandinės vartai ir jų parametrai.

Pavyzdžiui, šis „Braket“ kodas (iš „Amazon“ „Deep_dive_into_the_anatomy_of_quantum_circuits“ pavyzdžio) apibrėžia grandinę, kuri inicializuoja keturis kubitus į „Hadamard“ (vienoda 1 ir 0 tikimybė) būseną, tada įpina 2 kubitą su 0 ir 3 kubitu, naudodama „Controlled Not“ operacijas.

# apibrėžti grandinę su 4 kubitais

my_circuit = grandinė (). h (diapazonas (4)). mazgas (kontrolė = 0, taikinys = 2). mazgas (kontrolė = 1, taikinys = 3)

Panašu, kad „Braket SDK“ yra beveik visas kvantinės logikos vartų rinkinys, kaip parodyta šiame Vartai klasė. Nematau, kad „Deutsch“ vartai būtų išvardyti, bet, kiek žinau, jie dar nebuvo įdiegti tikrame QPU.

# atsispausdinti visus šiuo metu SDK esančius vartus

gate_set = [attr attr at dir (vartai) if attr [0] string.ascii_uppercase]

spausdinti (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 bangos vandenynas

„Ocean“ yra savaiminė „Python“ pagrindu sukurta programinė įranga „D-Wave“ kvantiniams atkaitintojams. Jei norite naudoti per „Braket“, galite sujungti „Ocean“ programinę įrangą su „Amazon Braket Ocean“ papildiniu, kuris verčia „Ocean“ ir „Braket“ formatus.

Kvantiniai atkaitintojai veikia visai kitaip nei vartai pagrįsti QPU. Iš esmės jūs formuluojate savo problemą kaip dvejetainį kvadratinį modelį (BQM), kurio globalus minimumas yra norimas rasti sprendimas. Tada naudodamiesi atkaitinimo prietaisu, galite daug kartų atrinkti funkciją (nes atgrasiklis nėra tobulas), kad rastumėte minimumą. Galite sukurti matematiškai tam tikros problemos BQM arba sugeneruoti BQM naudodami „Ocean“ programinę įrangą. Kodas, pateiktas iš „Amazon“ D-Wave_Anatomy pavyzdžio, naudoja „Braket Ocean“ papildinį, kad išspręstų BQM „D-Wave“ įrenginyje.

# nustatyti parametrai

skaičių_skaičius = 1000

# apibrėžti BQM

bqm = dimod.BinaryQuadraticModel (tiesinis, kvadratinis, poslinkis, vartype)

# paleisti BQM: išspręsti naudojant „D-Wave“ įrenginį

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

sampler = EmbeddingComposite (pavyzdys)

pavyzdžių rinkinys = sampler.sample (bqm, num_reads = num_reads)

# visuminis sprendimas:

pavyzdžių rinkinys = pavyzdžių rinkinys. agregatas ()

„D-Wave“ sistemos

„Amazon Braket“ įgalinimas ir bloknotų naudojimas

Kad galėtumėte naudoti „Braket“, turite jį įgalinti savo AWS paskyroje.

Tada turite sukurti nešiojamojo kompiuterio egzempliorių. Nešiojamieji kompiuteriai naudoja „Amazon SageMaker“ (skaitykite mano apžvalgą).

Atidarę bloknotą, galite įvesti naują kodą arba naudoti vieną iš „Amazon“ pavyzdžių.

Turite patikrinti QPU įrenginių būseną, nes jie ne visada pasiekiami.

Nors galite patys juos paleisti, „Braket“ bloknotų pavyzdžiai buvo išsaugoti su ankstesnio važiavimo rezultatais.

Yra tiek vartų pagrindu veikiančių QPU, kaip aukščiau, tiek kvantinių atkaitintojų pavyzdžių, kaip nurodyta toliau.

Sužinok šiandien, naudinga rytoj

„Amazon Braket“ yra pagrįstas būdas sušlapinti kojas kvantiniais kompiuteriais ir treniruokliais. Kadangi mes vis dar esame kvantinio skaičiavimo NISQ (Noisy Intermediate Scale Quantum) fazėje, iš „Braket“ tikrai negalima tikėtis naudingų rezultatų. Mums reikės daugiau kubitų, mažiau triukšmo ir ilgesnio darnos, kurie visi yra aktyviai tiriami.

Dabartiniai „Braket“ QPU pasiūlymai yra kuklūs. 2048 kubitų „D-Wave“ atkaitiklis dažniausiai naudingas sprendžiant optimizavimo problemas; jis yra maždaug perpus mažesnis už „D-Wave“ naujausios kartos atkaitintojo dydį. 11 bitų „IonQ QPU“, kurio nuoseklumo laikas yra gana ilgas, yra būdu per mažas, kad būtų galima įgyvendinti kvantinių kompiuterių algoritmus, kurie turėtų parodyti naudingą kvantinę viršenybę, pvz., Groverio algoritmas funkcijos atvirkštinei radimui ir Shoro algoritmas pirminio skaičiaus veiksnių radimui. 30 kubitų „Rigetti Aspen-8“ taip pat per mažas.

Stabdys nėra nemokamas, nors juo naudotis yra palyginti pigu. Palyginimui, „IBM Q“ yra visiškai nemokama, nors viešai prieinami „IBM QPU“ yra labai maži: jie svyruoja nuo 1 kubito QPU Armonke iki 15 kvitų QPU Melburne. IBM taip pat siūlo mokamą aukščiausios kokybės QPU paslaugą.

[Taip pat: apžvalga: „Amazon SageMaker“ atlieka pasivijimą]

IBM taip pat vertina savo QPU pagal jų kvantinį tūrį (QV) - ​​matą, kuris sujungia kubitų skaičių su jų klaidų lygiu ir darnos laiku. Yra penkių kubitų IBM QPU nuo QV8 iki QV64: aukštesnis yra geriau. Honeywell taip pat paskelbė pasiekęs QV64.

Šiuo metu „Braket“ yra naudinga mokytis apie kvantinį skaičiavimą ir kurti NISQ režimo kvantinius algoritmus. Vis dėlto sekite naujienas. Tobulėjant QPU ir prijungus juos prie AWS, „Braket“ taps vis naudingesnė.

Kaina: Tvarkomi bloknotai: nuo 0,04 iki 34,27 USD už egzempliorių valandą; kvantinis treniruoklis: 4,50 USD per valandą; kvantiniai kompiuteriai: 0,30 USD už užduotį ir 0,00019–0,01 USD už kadrą (grandinės pakartojimas).

Platforma: AWS; norint įdiegti „Braket SDK“ vietoje, reikia „Python 3.7.2“ arba naujesnės versijos ir „Git“.

$config[zx-auto] not found$config[zx-overlay] not found