Konstrukcja TensorFlow Quantum

TensorFlow Quantum (TFQ) został zaprojektowany z myślą o problemach kwantowego uczenia maszynowego z 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 systemów hybrydowych klasy kwantowej.

Korzystając z TFQ, naukowcy mogą skonstruować wykres TensorFlow przy użyciu zestawu danych kwantowych, modelu kwantowego i klasycznych parametrów kontrolnych. Wszystkie są reprezentowane jako tensory na jednym wykresie obliczeniowym. Wynik pomiarów kwantowych — prowadzących do klasycznych zdarzeń probabilistycznych — jest uzyskiwany przez TensorFlow ops. Szkolenie odbywa się za pomocą standardowego Keras API. Moduł tfq.datasets pozwala naukowcom eksperymentować z nowymi i interesującymi zestawami danych kwantowych.

Cirq

Cirq to framework programowania kwantowego od Google. Zapewnia wszystkie podstawowe operacje — takie jak kubity, bramki, obwody i pomiary — do tworzenia, modyfikowania i wywoływania obwodów kwantowych na komputerze kwantowym lub symulowanym komputerze kwantowym. TensorFlow Quantum używa tych prymitywów Cirq do rozszerzenia TensorFlow do obliczeń wsadowych, budowania modeli i obliczeń gradientów. Aby być skutecznym z TensorFlow Quantum, dobrym pomysłem jest być skutecznym z Cirq.

Prymitywy TensorFlow Quantum

TensorFlow Quantum implementuje komponenty potrzebne do integracji TensorFlow ze sprzętem do obliczeń kwantowych. W tym celu TFQ wprowadza dwa prymitywne typy danych:

  • Obwód kwantowy : reprezentuje obwody kwantowe zdefiniowane przez Cirq ( cirq.Circuit ) w obrębie 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 liniowe kombinacje iloczynów tensorowych operatorów Pauliego zdefiniowanych w Cirq ( cirq.PauliSum ). Podobnie jak obwody, twórz grupy operatorów o różnej wielkości.

Operacje podstawowe

Korzystając z prymitywów obwodów kwantowych w tf.Tensor , TensorFlow Quantum implementuje operacje, które przetwarzają te obwody i wytwarzają znaczące dane wyjściowe.

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

  1. Obwody nie są tego samego rozmiaru. W przypadku symulowanych obwodów nie można tworzyć operacji statycznych (takich jak tf.matmul lub tf.add ), a następnie zastępować różnymi numerami obwody o różnych rozmiarach. Te operacje muszą umożliwiać dynamiczne rozmiary, na które nie pozwala graf obliczeniowy TensorFlow o rozmiarach statycznych.
  2. Dane kwantowe mogą indukować zupełnie inną strukturę obwodu. To kolejny powód do obsługi dynamicznych rozmiarów w operacjach TFQ. Dane kwantowe mogą reprezentować zmianę strukturalną podstawowego stanu kwantowego, który jest reprezentowany przez modyfikacje oryginalnego obwodu. Ponieważ nowe punkty danych są wymieniane i wymieniane w czasie wykonywania, grafu 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, ponieważ są serią operacji — a niektóre mogą zawierać symbole/symbole zastępcze. Ważne jest, aby była jak najbardziej kompatybilna z TensorFlow.

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

Warstwy

Warstwy TensorFlow Quantum udostępniają programistom próbkowanie, oczekiwanie i obliczanie stanu za pomocą interfejsu tf.keras.layers.Layer . Wygodne jest tworzenie warstwy obwodów dla klasycznych parametrów sterowania lub operacji odczytu. Dodatkowo można utworzyć warstwę o wysokim stopniu złożoności obsługującą obwód wsadowy, wartość parametrów sterowania wsadowego i 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 są stosunkowo łatwe do obliczenia. Dzieje się tak, ponieważ klasyczny komputer może odczytywać tylko próbki z obwodów uruchomionych na komputerze kwantowym.

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

Zbiory danych

Wraz z rozwojem dziedziny obliczeń kwantowych pojawi się więcej danych kwantowych i kombinacji modeli, co utrudni ustrukturyzowane porównanie. Moduł tfq.datasets jest używany 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 rozrośnie się, umożliwiając prowadzenie bardziej przejrzystych i powtarzalnych badań. Starannie wyselekcjonowane problemy w: kontroli kwantowej, symulacji fermionowej, klasyfikacji w pobliżu przejść fazowych, wykrywaniu kwantowym itp. są świetnymi kandydatami do dodania do tfq.datasets . Aby zaproponować nowy zestaw danych, otwórz zgłoszenie w serwisie GitHub .