• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    MAKROUSEKKvantové počítače a programování
    LOJZA
    LOJZA --- ---
    Nasdílím své dosavadní pocity (pls, nekamenujte mě za nepřesnosti; rozhodně nejsem žádný matematik ani kdovíjaký programátor) založené na pár článcích a chvilkovém hraní s kvantovým principem v IBM appce (hře) Hello Quantum.

    Myslím, že kvantové počítače a programování jsou dnes dostupné na úrovni čehosi jako "Assembler". Řešíme qubity, hradla, pravděpodobnosti... IMHO si tímhle stádiem musíme projít. Masovému využití QC (Quantum Computing) ale nutně v budoucnu musí předcházet vybudování nějaké odstiňovací, zapouzdřovací vrstvy. Stejně jako dnes programátoři píšou for smyčky, používají sort a search funkce, aniž by se jakkoliv zabývali tím, jak jsou na dané platformě reálně implementované, bude muset toto nastat i ohledně QC. Jen budou kompilátory napsané jinak a ve výsledku budou využívat rychlosti QC. To umožní běžným lidem psát běžné programy s řádově lepším výkonem a zajímavějšími out-of-the-box dostupnými metodami a knihovnami.

    Druhá větev budou dedikované algoritmy ušité na míru QC. Tady se ale dostávám na tenký let. Ruku na srdce, kdo z nás běžně zvládá aplikovaný maticový počet? Kdo reálně zná a umí pracovat s pojmy, o kterých píše RAGUPKI (Blochova sféra, Pauliho matice, Kroneckerův součin, "udělat Toffoliho"). Drsná znalost aplikované matematiky bude pro takové programátory absolutní must. QC je IMHO dělané na genetické algoritmy. Široká vstupní data, masivně paralelní zpracování, do kterého člověk moc nevidí, rychlý výstup. Neuronové sítě si o to IMHO přímo říkají. Pořád ale budou muset vznikat programy na uzavření hypotéky a obsluhu leasingové smlouvy, kteréžto související business algoritmy podle mého QC nijak zvlášť neusnadní (alespoň ne za našeho života; než celé ERP jakékoliv firmy zvládne převzít jedna kvantová neuronová síť, která se pomocí real-world čidel na firmě natrénuje, optimalizuje a po dvou třech měsících převezme zpracování a propustí 90 % zaměstnanců :)).

    That being said, pro mě osobně je fajn chápat plus mínus základy. Ale stejně jako jsem nikdy nepronikl do Assembleru (a začínal až v Basicu), asi se nikdy nebudu snažit proniknout tak hluboko do QC, abych nadšeně programoval qubity a hradla. Nejspíš počkám na QPHP nebo něco podobného. Tedy pokud se toho nedočkají až moje děti :)
    RAGUPKI
    RAGUPKI --- ---
    GIOMIKY: Toto znamená, že na qubit |0⟩ aplikuji odmocninu z NOT, což je v podstatě otočení na Blochově sféře z pólu na rovník. Tím se vytvoří superpozice |0⟩ - i|1⟩ (až na absolutní fázi, kterou jsem vytknul). Potom nastává měření, u kterého hádám, že je v bázi |0⟩/|1⟩. To ale znamená, že pravděpodobnost naměření 0 i 1 je 1/2. Proto se na výstupu náhodně střídají jedničky a nuly.

    Kvantové počítání si můžete udělat třeba v Pythonu, je tam dokonce i knihovna qutip, nebo i na koleně v jakémokoliv jazyce, třeba C. Pokud je vstupní kvantový stav čistý, stačí vám uložit 2^n komplexních čísel (2^(n+1) reálných čísel) na n qubitů, pokud vám záleží na globální fázi a budete si hlídat jednotkovou normu. Logické operace pak buďto můžete skládat maticově (to je ta lineární algebra, kterou tu někdo zmiňoval) a normálně jimi násobit vstupní vektor, nebo pokud jsou to jednoduché gaty, můžete to vymyslet přes prohazování koeficientů. Příklad: obecný stav na vstupu je a*|0⟩ + b*|1⟩. Chci aplikovat Pauliho x matici, tak to vrazím do funkce, která jen přehodí koeficienty a a b. Alternativně můžu vyrobit matici 2x2, kterou to maticově ponásobím. To je užitečnější, když by pak člověk skládal vícequbitová hradla, tak aby mohl jednoduše použít Kroneckerův součin a vyrobit jednu velkou megamatici, ve které se nemusí vyznat. Problém je ale samozřejmě s pamětí, protože u 10 qubitů mít matici 1024*1024 komplexních čísel už něco zabere, pokud není sparse. Ale v těchto implementacích se už tolik nevyznám.

    Jenom pro info, nejsem kvantový informatik, takže můj přehled končí u nějakých základů. Zrovna teď jsem pročítal články, které využívají vícerozměrných "quditů" k tomu, aby se snížil minimální počet logických hradel, ze kterých se dají poskládat vícequbitová hradla podmíněná několika qubity. (jistí vykukové se to snažili opublikovat, jako by to vymysleli oni :-)) Takže když chce člověk udělat třeba Toffoliho, stačí mu na to tři qudit-qubit hradla místo pěti dvouqubitových. Je to docela pěkný fígl, článek zde:
    https://qudev.phys.ethz.ch/static/content/QSIT13/pdfs/Lanyon2009.pdf
    QWWERTY
    QWWERTY --- ---
    ROLAND: ad. nejaky zakladni info v cestine
    42m45s zminuje i to IBM Q

    LinuxDays - Stručný úvod do kvantového počítání -Jiří Khun
    https://www.youtube.com/watch?v=hY_olHSmEQg
    ROLAND
    ROLAND --- ---
    RAINBOF: To zní jako dobré lákadlo. Hlavně bylo by to v češtině.

    ADD ten link: Ona otázka kvantového počítače mi tak trochu připomíná otevírání pandořiny skříňky. A první kdo po tom logicky šáhnul a u čeho nemáme ifno jsou vojenské síly. Ostatně stačí se podívat u informací o D-Wave kdo to používá. Těch 5-10 let tedy do roku 2030 my přijde jako takové rozhodné období praktického určení. Něco jako to zda RISC or CISC a nebo jejich kombinace. A nebo kdy třeba IBM v dobách kdy ještě nebyly SSD přemýšlelo o trochu jiné struktuře současných počítačů. Tehdy to ukončili protože cena, dnes cena už není problém, ale do praxe se to neuvedlo. Otázka zní zda budeme jako lidstvo připraveni na takové změny, které kvantové počítače přinesou.
    RAINBOF
    RAINBOF --- ---
    MAKROUSEK:

    Článek jsem sem dal proto že mi přišlo že když se takovou věcí chceš zabývat, je užitečný v nějakým rychlým průletu znát problémy technologie. To zda budeš souhlasit s kritickým laděním článku či ne je na tobě (ale jo možná jsem na to měl upozornit). Kdybych měl plakat kvůli každýmu kritickýmu názoru nedělam nic jinýho.

    Takže ke tvoji poznámce bych dodal: no a co :)
    (nesklouzávejme k aerodynamice chrousta)
    MAKROUSEK
    MAKROUSEK --- ---
    RAINBOF: Ja nevim, taky bylo dokazano, ze letadlo tezsi nez vzduch nemuze litat...
    RAINBOF
    RAINBOF --- ---
    ROLAND:
    RAINBOF:

    Jinak se zdá že máme v brmlabu člověka s celkem slušnou znalostí a včera mi "napůlhuby" slíbil že by o tom něco během CCC v brmlabu něco řekl...
    KRAL_KAREL_IV
    KRAL_KAREL_IV --- ---
    ROLAND: Pro základy bych doporučoval buď tu knížku https://homepages.cwi.nl/~rdewolf/qcnotes.pdf nebo na youtube je Coursera kurz od Vaziraniho (moc hezká videa).

    Jo |000> se většinou značí že jsou všechny tři qbity ve stavu 0. Obecně je možný dostat stav a_0 |000> + a_1 |001> + a_2 |010> + a_3 |011> + ... + a_7 |111> kde a_j jsou amplitudy -- komplexní čísla, taková že suma |a_j|^2 = 1.

    Co říkají lidi, kteří to studují: je to jen lineární algebra. A vyplatí se rozepsat si, co se tam děje (já se jinak ztrácím v indexech). Nebo si zkusit napsat simulátor.
    ROLAND
    ROLAND --- ---
    KRAL_KAREL_IV: A jo, já zase zapoměl uplně na možnost superpozice. Že tam není jasný výsledek že je to 1 nebo 0, ale pravděpodobnost. A teprve to co nějak převažuje z x počtu je pak výsledek.
    Stále si to snažím představovat jako 4 reálné stavy (00,01,10,11) a ne pravděpodobnostní.
    Halt jsem už starej pes a nové věci mi do hlavy už horko těžko lezou.

    A tento stav: |000> je stav 3Qubit?

    Také je to momentálně pro mě těžko představitelné že bychom měli doma nějaký vlastní kvantový počítač. Možná jednou ano, pokud se toho dožiju. Ale jak pozoruji snahu těch velkých v současnosti. Tak to spíše nahrává na systém terminálových služeb. Doma budeme mít jen řekněme komunikační/ovládací zařízení a budeme se připojovat k nějakému centrálnímu počítači či shluku počítačů. Ať už normálním nebo kvantovým.

    Jediné co mi na tom terminálovém systému služeb absolutně vadí je - kontrola, cenzura, vyloučení, žádné soukromí a i nějaká ztráta bezpečnosti vlastních informací a že ve finále pro mě jako pro uživatele to bude dražší než když si dnes můžeme kupovat počítače domů. A za každý přístup budeš platit a nebo čekat až se uvolní místo.

    A ano současná architektura počítačů, je problematická. Také už pár let čekám kdy přijde pořádná změna a zvětší se datová propustnost. Ty výpočty u těch grafických karet mi pak přijdou jak napojování na nějaký vlastní svět. Něco jako se dříve dávali k procesorům coprocesory aby pomáhaly s výpočty.
    Takže kromě X86 se dříve přidávali ještě x87 co si pamatuji třeba hlavně u 386.
    KRAL_KAREL_IV
    KRAL_KAREL_IV --- ---
    ROLAND: Ad vstup a výstup: moje celkem naivní představa vstupu je buď začnu se stavem |000> a pomocí not překlopím jednotlivé bity. Případně můžu mít krabičku, která počítá klasickou funkci (třeba f(x, y) = x*y násobení) a tu umím reprezentovat kvantovým obvodem (kvantové obvody umí simulovat ty klasické). Výstup pak je měření -- kouknu na ty svoje qubity a uvidím něco (jako ta kočka, prostě zkolabujou). Tak to 1000x zopakuju a mám odhad pravděpodobnosti. No a z toho se snažím vykoukat ten výstup.

    Ad totální dominance kvantových počítačů: spíš mi přijde, že realistické je buď pár subjektů vlastní veliký sálový q-počítač. Případně že bude něco jako "grafická karta" která bude specializovaný q-počítač uvnitř počítače. Ale to bude hodně záviset na poptávce a tedy na tom, jestli někdo najde "masové" využití. Jako i kdyby pomocí toho velké firmy optimalizovali neuronky, tak běžný zákazník nebude mít potřebu do něčeho takového investovat. Klasický příklad ty grafické karty, napřed to chtělo spousta lidí, protože video a hry. Pak si lidi všimli, že grafické karty pokročily natolik, že se na nich dají počítat neuronky. Ale myslím, že kdyby ta cesta měla být naopak (napřed neuronky), tak grafické karty nejsou ani zdaleka tak rozvinuté jako dneska.
    ROLAND
    ROLAND --- ---
    GIOMIKY:
    KRAL_KAREL_IV:
    Díky.
    Trochu jsem zkoušel se dívat, ale ještě stále mi to nedochází, abych si dokázal zhruba představit ten princip fungování. Kdysi jsem viděl nějaký dokument ze kterého tak nějak vycházím. Trochu třeba u toho počasí si dokáži představit výhodu výpočtů pomocí Quantového počítače. Ale už vůbec nějak jak se tam ta data zapracovávají a vypočítávají.

    Kdysi bavil s někým kdo to studoval, a ptal jsem se ho ohledně mých představ pro AI u strategické hry, tak mi říkal, že pokud mě dobře pochopil, tak Quantum na mé představy jsou overkill, ale na druhou stranu tehdy klasacké PC zase nestačí. Takže jsem to o čem jsem přemýšlel někdy v 98 dal k ledu. Pak později jsem se pokusil udělat si nějaké základní schéma pro diplomacii a to má cca 102 řádek a každá řádka má 2-4 volby. Ale pokud se k tomu někdy vrátím, tak to budu muset výrazně z redukovat, protože by to pochopil málokterý hráč.

    A tak nějak naivně doufám že Quantové počítače převezmou jednoho dne žezlo nad těmi klasickými. I když z toho vývoje to vypadá tak, že skončíme u terminálových služeb a cloudu. Nějaké domácí PC nebo Konzole budou asi minulostí.
    MAKROUSEK
    MAKROUSEK --- ---
    GIOMIKY: Aaa! Ja tomu vubec nerozumim! A to jsem si rikal, jak jsem chytrej.
    GIOMIKY
    GIOMIKY --- ---
    Dalsi knizka na wishlist:
    Practical Quantum Computing for Developers: Programming Quantum Rigs in the Cloud using Python, Quantum Assembly Language and IBM QExperience 1st ed. Edition
    https://www.amazon.com/Practical-Quantum-Computing-Developers-Programming-ebook/dp/B07LCDLK4B
    GIOMIKY
    GIOMIKY --- ---
    GIOMIKY: Tech prvku je 20 a 11x1... tak jeste jestli neni vysledek posledni stav (to by byla 0)
    GIOMIKY
    GIOMIKY --- ---
    GIOMIKY:
    > a asi podle cetnosi by mohl odhadnou, ze je to 0...
    Coz neni !!! :-)
    Tak ja fakt nevim...
    - sum([1,0,0,0,1,1,1,1,1,1,0,1,1,0,0,1,0,0,0])
    - 10
    10 jednicek ...
    - len([1,0,0,0,1,1,1,1,1,1,0,1,1,0,0,1,0,0,0])
    - 19
    19 prvku
    Tak asi jedna... a pritom:
    
    def sqrt(n):
      if n < 0:
        return
      else:
        return n**0.5
      
    print(sqrt(0))
    
    0.0
    

    GIOMIKY
    GIOMIKY --- ---
    Tohle by mohlo byt zajimave...
    GitHub - tensorflow/quantum: Hybrid Quantum-Classical Machine Learning in TensorFlow
    https://github.com/tensorflow/quantum
    ROLAND:
    Asi bych zacal tady:
    Quantum programming - Wikipedia
    https://en.wikipedia.org/wiki/Quantum_programming
    Kazdy pes, jina ves... asi neni moc standardu, kterym by nejaka kvantova pocitadla podlehala...
    Existujou najeky simulatory kvantovyho pocitace na legacy hardware... ale abych odpovedel na otazku...
    GitHub - quantumlib/Cirq: A python framework for creating, editing, and invoking Noisy Intermediate Scale Quantum (NISQ) circuits.
    https://github.com/quantumlib/Cirq
    
    import cirq
    
    # Pick a qubit.
    qubit = cirq.GridQubit(0, 0)
    
    # Create a circuit
    circuit = cirq.Circuit(
        cirq.X(qubit)**0.5,  # Square root of NOT.
        cirq.measure(qubit, key='m')  # Measurement.
    )
    print("Circuit:")
    print(circuit)
    
    # Simulate the circuit several times.
    simulator = cirq.Simulator()
    result = simulator.run(circuit, repetitions=20)
    print("Results:")
    print(result)
    


    Example output:
    
    Circuit:
    (0, 0): ───X^0.5───M('m')───
    Results:
    m=11000111111011001000
    


    Umel by to nekdo interpretovat?
    Ja to chapu tak, ze clovek vytvori otazku:
    Jaka je mozcnina nuly....
    A 20-tkrat (v tomto prikladu) zmeri polarizci (?) qubitu
    a asi podle cetnosi by mohl odhadnou, ze je to 0...

    Sorry za nepresnosti, fakt o tom nic moc nevim (a o to vice bych se chtel dozvedet)...
    KRAL_KAREL_IV
    KRAL_KAREL_IV --- ---
    ROLAND: Těžko říct, co je typický kód. Před časem tu proběhla zmínka o Q# https://docs.microsoft.com/en-us/samples/browse/?languages=qsharp Většina učebnic používá obvody https://homepages.cwi.nl/~rdewolf/qcnotes.pdf Články pak jak kdy, někdy vyjádří co chtějí udělat pomocí nějakého Hamiltoniánu a pak řeknou, že to jde optimalizovat. A samozřejmně lisp https://www.youtube.com/watch?v=svmPz5oxMlI
    ROLAND
    ROLAND --- ---
    Byla by prosím ukázka nějakého typického kódu? (Nejde mi asi ani tak o překladač to bude asi dosti podobné jako u klasického programování. Takový ten rozdíl ala - Basic vs Pascal vs C++ apot.) Respektive by mne zajímala nějaká jednoduchá obrazová/diagramová názornost. Pan google se se mnou nekamarádí a nebo nevím řádně ani co přesně zadat.

    U klasického strojového kódu si to představit ještě stále umím.
    Díky.
    MAKROUSEK
    MAKROUSEK --- ---
    GIOMIKY: To zni trochu jako "playstation prece nedokaze nikdo hacknout"!
    Kliknutím sem můžete změnit nastavení reklam