Konstrukcja TensorFlow Quantum

TensorFlow Quantum (TFQ) został zaprojektowany z myślą o problemach kwantowego uczenia maszynowego ery NISQ. Wprowadza prymitywne obliczenia kwantowe – takie jak budowanie obwodów kwantowych – do ekosystemu TensorFlow. Modele i operacje zbudowane za pomocą TensorFlow wykorzystują te prymitywy do tworzenia potężnych kwantowo-klasycznych systemów hybrydowych.

Korzystając z TFQ, badacze mogą skonstruować wykres TensorFlow, korzystając z kwantowego zbioru danych, modelu kwantowego i klasycznych parametrów kontrolnych. Wszystko to jest reprezentowane jako tensory na jednym wykresie obliczeniowym. Wynik pomiarów kwantowych – prowadzący do klasycznych zdarzeń probabilistycznych – uzyskujemy za pomocą TensorFlow ops. Szkolenie odbywa się przy użyciu standardowego API Keras . Moduł tfq.datasets umożliwia badaczom eksperymentowanie z nowymi i interesującymi kwantowymi zbiorami danych.

ok

Cirq to platforma programowania kwantowego firmy Google. Zapewnia wszystkie podstawowe operacje — takie jak kubity, bramki, obwody i pomiary — umożliwiające tworzenie, modyfikowanie i wywoływanie obwodów kwantowych na komputerze kwantowym lub symulowanym komputerze kwantowym. TensorFlow Quantum wykorzystuje te prymitywy Cirq do rozszerzenia TensorFlow na potrzeby obliczeń wsadowych, budowania modeli i obliczeń gradientowych. Aby być skutecznym z TensorFlow Quantum, warto być skutecznym z Cirq.

Prymitywy kwantowe TensorFlow

TensorFlow Quantum implementuje komponenty potrzebne do integracji TensorFlow ze sprzętem obliczeniowym kwantowym. W tym celu TFQ wprowadza dwa podstawowe typy danych:

  • Obwód kwantowy : reprezentuje obwody kwantowe zdefiniowane przez Cirq ( cirq.Circuit ) w TensorFlow. Twórz partie obwodów o różnej wielkości, podobne do partii różnych punktów danych o wartościach rzeczywistych.
  • Suma Pauliego : Reprezentuje kombinacje liniowe iloczynów tensorowych operatorów Pauliego zdefiniowanych w Cirq ( cirq.PauliSum ). Podobnie jak obwody, twórz partie operatorów o różnej wielkości.

Podstawowe operacje

Używając prymitywów obwodów kwantowych w tf.Tensor , TensorFlow Quantum implementuje operacje, które przetwarzają te obwody i wytwarzają znaczące wyniki.

Operacje TensorFlow są napisane w zoptymalizowanym języku C++. Te operacje pobierają próbki z obwodów, obliczają wartości oczekiwane i wyświetlają stan wytwarzany przez dane obwody. Pisanie elastycznych i wydajnych operacji wiąże się z pewnymi wyzwaniami:

  1. Obwody nie są tej samej wielkości. W przypadku obwodów symulowanych nie można tworzyć operacji statycznych (takich jak tf.matmul lub tf.add ), a następnie zastępować obwody o różnych rozmiarach różnymi liczbami. Te operacje muszą umożliwiać dynamiczne rozmiary, na które nie pozwala wykres obliczeniowy TensorFlow o rozmiarze statycznym.
  2. Dane kwantowe mogą indukować zupełnie inną strukturę obwodu. Jest to kolejny powód, aby wspierać dynamiczne rozmiary w operacjach TFQ. Dane kwantowe mogą reprezentować zmiany strukturalne w podstawowym stanie kwantowym, które są reprezentowane przez modyfikacje pierwotnego obwodu. Ponieważ nowe punkty danych są wymieniane i wymieniane w czasie wykonywania, wykresu obliczeniowego TensorFlow nie można modyfikować po jego zbudowaniu, dlatego wymagana jest obsługa tych różnych struktur.
  3. cirq.Circuits są podobne do wykresów obliczeniowych w tym sensie, że stanowią serię operacji — a niektóre mogą zawierać symbole/obiekty zastępcze. Ważne jest, aby było to jak najbardziej kompatybilne z TensorFlow.

Ze względu na wydajność Eigen (biblioteka C++ używana w wielu operacjach TensorFlow) nie nadaje się dobrze do symulacji obwodów kwantowych. Zamiast tego symulatory obwodów używane w pozaklasycznym eksperymencie kwantowym są używane jako weryfikatory i rozszerzane jako podstawa operacji TFQ (wszystkie napisane przy użyciu instrukcji AVX2 i SSE). Stworzono operacje o identycznych sygnaturach funkcjonalnych, które korzystają z fizycznego komputera kwantowego. Przełączanie między symulowanym a fizycznym komputerem kwantowym jest tak proste, jak zmiana pojedynczej linii kodu. Te operacje znajdują się w pliku circuit_execution_ops.py .

Warstwy

Warstwy TensorFlow Quantum udostępniają programistom próbkowanie, oczekiwania i obliczenia stanu za pomocą interfejsu tf.keras.layers.Layer . Wygodne jest utworzenie warstwy obwodów dla klasycznych parametrów sterowania lub operacji odczytu. Dodatkowo można utworzyć warstwę o dużym stopniu złożoności obsługującą obwód wsadowy, wartość parametrów sterowania wsadowego oraz wykonywać operacje odczytu wsadowego. Zobacz przykład tfq.layers.Sample .

Wyróżniki

W przeciwieństwie do wielu operacji TensorFlow, obserwable w obwodach kwantowych nie mają wzorów na gradienty, które byłyby stosunkowo łatwe do obliczenia. Dzieje się tak, ponieważ klasyczny komputer może odczytywać jedynie próbki z obwodów działających na komputerze kwantowym.

Aby rozwiązać ten problem, moduł tfq.differentiators udostępnia kilka standardowych technik różnicowania. Użytkownicy mogą także zdefiniować własną metodę obliczania gradientów — zarówno w „świecie rzeczywistym” podczas obliczania oczekiwań na podstawie próbki, jak i w świecie analitycznym. Metody takie jak różnica skończona są często najszybsze (czas zegara ściennego) w środowisku analitycznym/dokładnym. Chociaż są wolniejsze (czas zegara ściennego), bardziej praktyczne metody, takie jak przesunięcie parametrów lub metody stochastyczne, są często bardziej skuteczne. Instancja tfq.differentiators.Differentiator jest tworzona i dołączana do istniejącej operacji za pomocą generate_differentiable_op lub przekazywana do konstruktora tfq.layers.Expectation lub tfq.layers.SampledExpectation . Aby zaimplementować niestandardowy wyróżnik, należy dziedziczyć z klasy tfq.differentiators.Differentiator . Aby zdefiniować operację gradientu do próbkowania lub obliczenia wektora stanu, użyj tf.custom_gradient .

Zbiory danych

W miarę rozwoju dziedziny obliczeń kwantowych będzie pojawiać się więcej danych kwantowych i kombinacji modeli, co utrudni ustrukturyzowane porównania. Moduł tfq.datasets służy jako źródło danych dla zadań kwantowego uczenia maszynowego. Zapewnia uporządkowane porównania modelu i wydajności.

Mamy nadzieję, że dzięki dużemu wkładowi społeczności moduł tfq.datasets będzie się rozwijał, umożliwiając bardziej przejrzyste i powtarzalne badania. Starannie dobrane problemy z zakresu: kontroli kwantowej, symulacji fermionowej, klasyfikacji w pobliżu przejść fazowych, wykrywania kwantowego itp. są świetnymi kandydatami do dodania do tfq.datasets . Aby zaproponować nowy zbiór danych, otwórz zgłoszenie na GitHubie .