Tech  / Artykuł

Chcesz rozpocząć przygodę z komputerami kwantowymi? Poznaj Qiskit

Świat komputerów kwantowych ma szansę zmienić wiele z tego, co obecnie wiemy o przetwarzaniu danych. Komputery kwantowe nie opierają się na dobrze nam znanej logice zer i jedynek. Zamiast tego korzystają one z unikalnych właściwości świata mechaniki kwantowej. 

Część ekspertów twierdzi, że komputery kwantowe to przyszłość. Problem tkwi w tym, że nikt nie wie, kiedy ta przyszłość nastąpi. Za dekadę? Za 5 lat? A może już za rok?

Jeśli dręczy cię ciekawość i chciałbyś wyrobić sobie opinię osobiście, gorąco zachęcam do rozpoczęcia przygody z komputerami kwantowymi od projektu Qiskit

Czym dokładnie jest Qiskit?

Qiskit to bardzo żywy i szybko rosnący projekt open source, w którym możesz tworzyć „kod kwantowy” przeznaczony na komputery kwantowe w oparciu o język programowania Python. Na pierwszy rzut oka proces wygląda podobnie do programowania klasycznych bramek logicznych, ale to tylko pozory! Przetwarzanie na komputerach kwantowych ma naturę probabilistyczną, ale o tym więcej w następnym paragrafie.

Qiskit jest zbudowany modułowo, poszczególne moduły to małe projekty same w sobie. Po krótce opiszę, do czego służą:

  • Qiskit Terra – to rdzenna część projektu, możemy to nazwać edytorem „kwantowego kodu maszynowego”, który jest następnie wykonywany na „bramkach kwantowych”.
  • Qiskit Aer – to, wielkim uproszczeniu, emulactory kilku podstawowych typów komputerów kwantowych, na których wykonujemy napisane przez nas programy.
  • Qiskit Aqua – ten moduł zawiera gotowy kod w postaci plików w formacie Jupyter Notebook. Możemy tu dowiedzieć się, jak proste algorytmy i modele realizowane są w sposób kwantowy. Obecnie podane są przykłady z chemii, finansów, machine learning'u i optymalizacji.
  • Qiskit Ignis - odpowiada głównie za mitygację i korekcję błędów generowanych przez komputery kwantowe.

Qiskit w ostatnich tygodniach wykonał bardzo śmiały ruch w kierunku tworzenia chipów kwantowych w modelu opensource. Projekt nosi nazwę Qiskit Metal i w praktyce zapewnia możliwość wejścia w tą trudną i wymagającą dziedzinę każdej osobie posiadającej laptopa i odpowiednią dozę cierpliwości. 

Czym różni się bit od kubita?

Jaka jest więc podstawowa różnica pomiędzy klasycznymi bitami a przetwarzaniem kwantowym? Dobrym pomysłem jest zapomnienie na chwilę, o wszystkim czego nauczyliście się do tej pory jako developerzy. Wiedza o pętlach, funkcjach, obiektach etc. tylko przeszkadza. Programowanie kwantowe nie jest magicznym sposobem na przyspieszenie działania istniejącego kodu. Jest to fundamentalnie inne podejście do przetwarzania danych.

Pierwsza różnica w jednym słowie to: superpozycja. Jest to unikalna własność świata mechaniki kwantowej, która nie występuje w tranzystorach. Jak wszyscy wiemy, klasyczny bit może przyjmować dwa deteministyczne stany: 0 i 1.  Bit kwantowy z kolei, czyli kubit, może przyjmować stan 0, stan 1 oraz superpozycję stanów 0 i 1. Będąc w stanie superpozycji kubit działa probabilistycznie, tzn. może zwrócić z pewnym prawdopodobieństwem jedynkę oraz z innym prawdopodobieństwem zero. Oznacza to, że dwa identyczne kubity mogą dać dwa różne rezultaty, co jest nie do pomyślenia w przypadku standardowych bitów.

Ponieważ możemy określić kubit za pomocą dwóch liczb (a nie jednej, jak w przypadku klasycznych bitów), przyjęło się zapisywać kubit jako wektor dwóch liczb. Ten wektor składa się z liczb zespolonych, ponieważ jest umieszczony w przestrzeni zwanej sferą Blocha (patrz. ilustracja). I tak wektor na sferze Blocha (czyli kubit) zwrócony w kierunku bieguna północnego oznacza stan 0, w kierunku południowego oznacza stan 1. 

Drugą istotną różnicą jest stan splątany (entanglement). Kubity znajdujące się w superpozycji mogą być połączone ze sobą za pomocą stanu splątanego i w efekcie możliwe jest wykonanie zaplanowanej logiki opartej o bramki kwantowe na wszystkich stanach jednocześnie.

Wyobraźmy sobie problem optymalizacji, gdy np. rozważamy wszystkie możliwe konfiguracje posadzenia 10 osób przy jednym stoliku, gdzie liczba wszystkich konfiguracji wynosi 3,6 miliona. Dzięki superpozycji i stanowi splątanemu komputer kwantowy może wejść w superpozcję wszystkich 3,6 miliona stanów i następnie wykonać obliczenia. Dla porównania, komputer klasyczny musiałby analizować każdy z tych przypadków osobno, jeden po drugim. 

Jak zacząć?

Qiskit jest szczególnie atrakcyjny dla osób zaczynających przygodę z komputerami kwantowymi ze względu na bogatą ofertę darmowych kursów i tutoriali.

Najprościej jest po prostu skorzystać z tzw. Qiskit Texbooka, który wyjaśnia niezbędne elementy matematyki oraz praktycznie i szybko wprowadza w świat kwantowych bramek logicznych. 

Warto też śledzić ofertę organizacji Qubit By Qubit, która dla przykładu 3 tygodnie temu rozpoczęła roczny darmowy kurs Quantum Computing sponsorowany przez IBM i prowadzony przez wykładowców z MIT. Tego rodzaju oferty będą się powtarzać. W Polsce też mamy świetne inicjatywy i wysokiej jakości warsztaty wykorzystujące Qiskit takie jak warsztaty organizacji QPoland.

Dodatkowo na Qiskit Youtube znajduje się cała gama początkujących i zaawansowanych kursów, po przejściu których zostajesz z wiedzą w głowie i z działającym kodem na laptopie.

Jeśli przy okazji zabawy z kwantami pojawi się u Was potrzeba na skorzystanie z zasobów chmury obliczeniowej, zachęcam gorąco do skorzystania z darmowego planu Lite na IBM Cloud.

Tak więc, kiedy nadejdzie „kwantowa” przyszłość? A może, zamiast się zastanawiać, warto już teraz rozpocząć przygodę z kwantami? Na pewno giganci technologiczni bardzo dużo inwestują w ten obszar: w 2019 Google potwierdziło tzw. przewagę kwantową (quantum supremacy), prezentując zadanie, które 54-kubitowy komputer kwantowy wykonał w 200 sekund, a czas na wykonanie tego zadania przez jeden z najszybszych ówczesnych superkomputerów został wyestymowany na 10 tys. lat. Z kolei IBM ogłosił dostarczenie na rynek 1000-kubitowego komputera już w 2023 roku.

Michał Kordyzon - od zawsze zainteresowany technologią, wychowany na Bajtku i programie Sonda. Ostatnie 10 lat pracuje w IBM jako inżynier oprogramowania i architekt. Prywatnie praktykuje buddyzm i kalistenikę.

przeczytaj następny tekst


przeczytaj następny tekst


przeczytaj następny tekst


przeczytaj następny tekst


przeczytaj następny tekst