Nieograniczona potęga? O podstawach komputerów kwantowych

9 minut czytania
Komentarze

Wyczekiwana rewolucja, która odmieni sposób w jaki przetwarzamy, przesyłamy oraz szyfrujemy informacje. Dopiero nadejdzie… a może już nadeszła? O komputerach kwantowych słyszycie od lat, ale niewiele osób naprawdę rozumie, o w tym wszystkim w ogóle chodzi. Po lekturze poniższego materiału – mam nadzieję, że te grono się powiększy.

Autor: dr Jan Kwapisz (Dijkstra Enterprise)

Filmy a zdjęcia

Kiedy oglądasz film tak naprawdę oglądasz następujące po sobie zdjęcia. W początkach kina, filmy były tworzone z wykorzystaniem taśmy, która przechodziła przez kamerę, umożliwiając rejestrację poszczególnych klatek. Wtedy, standardowa liczba klatek wynosiła około 16 na sekundę, co umożliwiało uzyskanie wrażenia ciągłości ruchu postaci. Z czasem, technologia poszła do przodu, a liczba klatek zwiększała się, co umożliwiło uzyskanie bardziej płynnych i realistycznych ruchów. W dzisiejszych czasach, standardowa liczba klatek w filmach wynosi 24 na sekundę, co wystarcza do wywołania wrażenia ciągłości. W niektórych kinach możesz cieszyć się nawet 48 klatkami na sekundę.

Tak samo w muzyce, częstość próbkowania odnosi się do liczby próbek dźwięku, które są pobierane w ciągu jednej sekundy, a następnie przetwarzane w cyfrowy sygnał dźwiękowy. Ta wartość jest mierzona w hercach (Hz). Standardową częstością próbkowania w muzyce jest 44,1 kHz, co oznacza, że 44100 próbek dźwięku jest pobieranych i przetwarzanych w ciągu jednej sekundy. Ta wartość została ustalona jako standard dla audio-CD i jest wystarczająca dla większości zastosowań audio. Jednak wraz z postępem technologicznym i wzrostem wymagań jakości dźwięku, coraz częściej używa się wyższych częstości próbkowania, takich jak 48 kHz, 96 kHz, 192 kHz i nawet wyższych.

Im wyższa częstość próbkowania, tym więcej informacji dźwiękowej jest pobieranych i przetwarzanych na cyfrowy sygnał dźwiękowy. To z kolei umożliwia uzyskanie bardziej szczegółowego i dokładnego dźwięku, zwłaszcza w zakresie wysokich częstotliwości. Jednakże, większa liczba próbek również oznacza większy rozmiar pliku audio i większe wymagania dotyczące mocy obliczeniowej sprzętu, co może prowadzić do problemów z wydajnością. Jakie ma to znaczenie w temacie naszego materiału?

Wszystko jest liczbą. Jak działa procesor?

W komputerach każdy plik czy każda operacja sprowadzana jest do liczb, na których wykonywane są operacje dodawania, mnożenia, etc. Możliwość wykonywania takich operacji jest zapewniana przez centralną jednostkę obliczeniową (CPU), popularnie zwaną procesorem. Procesor to układ scalony wykonujący operacje na danych. Wykonuje on bardzo wiele prostych operacji na sekundę po kolei.

Częstotliwość taktowania procesora, również nazywana zegarem procesora, określa liczbę operacji wykonywanych przez procesor w ciągu jednej sekundy. Wyrażana jest w jednostce megaherce (MHz) lub gigaherce (GHz). Obecnie procesory wykonują standardowo około trzech bilionów, czyli 3 miliony milionów. Jest on zatem niezwykle szybki.

Xbox Series X z poprawionym procesorem

Na przykład, jeśli masz jednocześnie “odpaloną” przeglądarkę, edytor tekstu oraz program do słuchania muzyki, to procesor po kolei “odświeża” każdą z tych operacji w tak szybki sposób, że masz wrażenie, że każda z tych rzeczy działa jednocześnie.

Wraz z postępem technologicznym i rozwojem architektury, producenci procesorów uzyskali wyższą wydajność przy niższej częstotliwości taktowania poprzez zwiększenie liczby rdzeni, a więc liczby możliwych procesów, które mogą się dziać jednocześnie. Obecnie najlepsze procesory mają około 16 rdzeni, a zatem mogą wykonywać 16 operacji równocześnie lub 32 operacje jeśli mają zaimplementowane tak zwane rdzenie logiczne, czyli jeden rdzeń realizujący dwie operacje naraz.

W grach komputerowych, gdzie wymagana jest bardzo duża moc obliczeniowa (ponieważ obraz “tworzony” jest na bieżąco), „zużywa się” ją na przykład do realistycznego odwzorowywania pogody czy ruchu wielu postaci. Dopóki wszystko działa poprawnie, gra sprawia nam wiele przyjemności, jednak “dziwne” zachowania postaci, takie jak przechodzenie przez ściany czy nagłe spadki klatek prowadzą do frustracji wśród graczy. Im mocniejszy nasz gamingowy sprzęt (i co za tym zwykle idzie – im droższy) tym szansa na to mniejsza.

Jeśli chcesz dowiedzieć się więcej o procesorach i o programowaniu, to zajrzyj do darmowego kursu Dijkstra Enterprise, który przygotowaliśmy na naszej platformie DijkstraHub.

Wszystko wszędzie naraz. O kartach graficznych

Z drugiej strony, wiele operacji na komputerze można “zrównoleglić”, czyli wykonać je jako wiele operacji w tym samym czasie. Przykładowo w grach komputerowych, ruch każdej z postaci jest w dużej mierze niezależny od siebie (dopóki się one nie zderzą). Zwykły jednordzeniowy procesor musiałby “przeliczyć” ruch każdej z tych postaci po kolei i dopiero wtedy ją wyświetlić na ekran. Z drugiej strony nic prostszego niż zrobić to w tym samym momencie dla każdej z postaci i na końcu wyświetlić ruch tych postaci na ekranie. Do tego celu służą właśnie karty graficzne (GPU), wyspecjalizowane procesory do przetwarzania danych graficznych.

Karty graficzne są bardziej wydajne w wykonywaniu operacji graficznych niż procesory, ponieważ są zaprojektowane i zoptymalizowane specjalnie do tego celu. Procesory wykonują wiele różnych zadań, takich jak obliczenia matematyczne, zarządzanie pamięcią i wiele innych operacji, natomiast karty graficzne są stworzone głównie do przetwarzania obrazów i wykonywania operacji graficznych. Współczesne karty graficzne posiadają zwykle od kilkuset do kilku tysięcy rdzeni. Im więcej rdzeni, tym większa moc obliczeniowa karty graficznej, co przekłada się na płynniejsze wyświetlanie obrazu, większą liczbę klatek na sekundę i lepszą jakość grafiki. Trochę takie wszystko wszędzie naraz, nawiązując do zdobywcy tegorocznego Oscara.

Podając inny przykład wyobraź sobie, że musisz dodać do siebie tysiąc liczb. Gdybyś robił to a’la procesor to robiłbyś to mniej więcej tak:

  1. Do pierwszej liczby dodałbyś liczbę drugą
  2. Do ich sumy liczbę trzecią
  3. Do tej sumy liczbę czwartą…
  4. I tak dalej, aż do momentu dodania tysięcznej liczby

Natomiast dodawanie a’la karta graficzna wyglądałoby mniej więcej tak:

  1. Podziel liczby na pary. Pierwsza z drugą, trzecia z czwartą etc.
  2. Dodaj wszystkie pary do siebie w tym samym czasie, każdą na swoim rdzeniu.
  3. Wyniki znowu podziel na pary.
  4. Znowu dodaj pary.
  5. Powtórz, aż do osiągnięcia wyniku końcowego

Operacja dzielenia na pary jest “tania” obliczeniowo, dzięki czemu karty graficzne są tak skuteczne w przetwarzaniu operacji graficznych. Ponadto karty graficzne wykorzystują wiele specjalistycznych układów i jednostek przetwarzających, takich jak procesory strumieniowe, jednostki teksturujące i jednostki renderujące, które są zoptymalizowane do wykonywania operacji graficznych. Ponadto, karty graficzne mają własną pamięć, która jest szybsza i bardziej wydajna w przetwarzaniu dużych ilości danych graficznych niż pamięć RAM komputera.

Okazuje się, że karty graficzne są także świetnie przystosowane do innych celów, które również wymagają wielkiej mocy obliczeniowej. W dzisiejszych czasach, karty graficzne są wykorzystywane również w aplikacjach z dziedziny naukowej i przemysłowej, takich jak modelowanie 3D, symulacje fizyczne, projektowanie CAD, trenowania sieci neuronowych, czy “kopania” kryptowalut i wielu innych. Ich wysoka wydajność pozwala na szybsze przetwarzanie danych i znacznie skraca czas potrzebny na wykonywanie skomplikowanych operacji, dlatego też są one tak drogie.

W szczególności proces uczenia sieci neuronowych może być łatwo zrównoleglony, dzięki czemu możemy tworzyć znacznie bardziej zaawansowane modele takie jak GPT-3 czy GPT-4, Stable Diffusion czy fundament Midjourney, których czas szkolenia na pojedynczym procesorze byłby pewnie dłuższy niż czas od Wielkiego Wybuchu do chwili obecnej (13 mld lat). Z drugiej strony, można sobie wyobrażać, że dzięki karcie graficznej każdy neuron szkolony jest oddzielnie w tym samym czasie, tak, że sieć neuronowa zawierająca miliony (a często i miliardy) jednostek szkolona jest zdecydowanie szybciej… choć to tylko pewne uproszczenie, bo zrównoleglenie treningu sieci neuronowe polega na czymś trochę innym.

fot. Wikimedia Commons/CC 2.0/Steve Jurvetson z Menlo Park

Nieograniczona moc obliczeniowa. Procesory kwantowe

Wiemy już, że wiele operacji komputerowych można znacząco przyspieszyć dzięki ich zrównolegleniu. Procesory kwantowe (QPU), zwane popularnie komputerami kwantowymi, mogą mieć potencjalnie nieograniczoną ilość rdzeni.

Osiąga się to dzięki zasadom mechaniki kwantowej do wykonywania operacji na danych. W klasycznych komputerach informacje są przetwarzane za pomocą bitów, które mogą reprezentować albo 0 albo 1. Jednak w komputerach kwantowych informacje są przetwarzane za pomocą kwantowych bitów, zwanych kubitami, które mogą reprezentować jednocześnie 0 i 1. Nazywa się to superpozycją.

Oprócz superpozycji, kubity mogą być także splecione ze sobą, co oznacza, że stan jednego kubitu zależy od stanu innego. To pozwala na wykonywanie pewnych obliczeń znacznie szybciej niż w klasycznych komputerach, zwłaszcza w przypadku dużych ilości danych. Można powiedzieć, że liczba rdzeni takiego QPU to dwa do liczby kubitów. Zatem 100-kubitowy komputer ma potencjalnie tyle rdzeni ile wynosi masa Słońca w gramach (około 2 razy 10^30 grama). Dzięki tym właściwościom komputery kwantowe mają potencjał do rozwiązywania problemów, które są bardzo trudne lub wręcz niemożliwe do rozwiązania przez klasyczne komputery.

fot. Wikimedia Commons/CC 3.0/D-Wave Systems, Inc.

Jednym z głównych przykładów zastosowania komputerów kwantowych jest kryptografia kwantowa, która wykorzystuje zjawiska kwantowe do zapewnienia bezpieczeństwa komunikacji. Dzięki temu, że nie można zmierzyć stanu kwantowego bez wpływu na niego, kryptografia kwantowa pozwala na bezpieczne przesyłanie informacji między dwoma punktami bez ryzyka przechwycenia informacji przez osobę trzecią.

Innym obszarem, w którym komputery kwantowe mają potencjał, jest optymalizacja, czyli szukanie najlepszych rozwiązań problemów w najkrótszym czasie. W wielu dziedzinach, takich jak logistyka czy sztuczna inteligencja, optymalizacja może przynieść ogromne korzyści, a komputery kwantowe mają potencjał, aby zrewolucjonizować ten obszar. Jeśli wydaje Ci się, że sztuczna inteligencja już teraz jest niesamowita, to wyobraź sobie co moglibyśmy osiągnąć dzięki możliwościom komputerów kwantowych, pozwalających na znacznie więcej i znacznie bardziej skomplikowanych operacji.

Jednakże, pomimo obiecujących perspektyw, komputery kwantowe wciąż stoją przed wieloma wyzwaniami technologicznymi. Obecnie, jedne z największych wyzwań to utrzymywanie stabilności i dokładności kubitów, ponieważ nawet najmniejsze zaburzenia mogą wpłynąć na ich stan i spowodować błędne wyniki. Ponadto, komputery kwantowe wymagają bardzo specjalistycznych warunków środowiskowych i są bardzo kosztowne w produkcji i utrzymaniu, co sprawia, że ich powszechne zastosowanie wciąż jest nieosiągalne.

O autorze:

Autor jest doktorem fizyki teoretycznej, w pracy zajmuje się przetwarzaniem języka przy użyciu sieci neuronowych. Jest Head of Product w Dijkstra Enterprise i przygotował kurs Dijkstra: Podstawy Pythona. Jest certyfikowanym Instruktorem NVIDIA Deep Learning Institute oraz nauczycielem akademickim na Uniwersytecie Warszawskim.

fot. Wikimedia Commons/CC 2.0/IBM Research

Motyw