Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Konstrukcja TensorFlow Quantum

TensorFlow Quantum (TFQ) został zaprojektowany z myślą o problemach kwantowego uczenia maszynowego ery NISQ. Wprowadza prymitywy obliczeń kwantowych - 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, naukowcy mogą skonstruować wykres TensorFlow, korzystając z zestawu danych kwantowych, modelu kwantowego i klasycznych parametrów kontrolnych. Są one wszystkie reprezentowane jako tensory na jednym wykresie obliczeniowym. Wynik pomiarów kwantowych - prowadzących do klasycznych zdarzeń probabilistycznych - uzyskuje się za pomocą operacji TensorFlow. Szkolenie odbywa się za pomocą standardowego interfejsu API Keras . Moduł tfq.datasets umożliwia naukowcom eksperymentowanie z nowymi i interesującymi zestawami danych kwantowych.

Cirq

Cirq to platforma programowania kwantowego od Google. Zapewnia wszystkie podstawowe operacje - takie jak kubity, bramki, obwody i pomiary - służące do tworzenia, modyfikowania i wywoływania obwodów kwantowych na komputerze kwantowym lub symulowanym komputerze kwantowym. TensorFlow Quantum wykorzystuje te prymitywy Cirq do rozszerzania TensorFlow do obliczeń wsadowych, budowania modeli i obliczeń gradientowych. Aby być skutecznym z TensorFlow Quantum, dobrze jest być efektywnym z Cirq.

Prymitywy kwantowe TensorFlow

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

  • Obwód kwantowy : reprezentuje obwody kwantowe zdefiniowane przez Cirq (Cirq. cirq.Circuit ) w ramach 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.

Fundamental ops

Wykorzystując prymitywy obwodów kwantowych w tf.Tensor , TensorFlow Quantum implementuje tf.Tensor , które przetwarzają te obwody i generują znaczące wyniki.

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

  1. Obwody nie są tego samego rozmiaru. W przypadku obwodów symulowanych nie można tworzyć operacji statycznych (takich jak tf.matmul lub tf.add ), a następnie zastępować różnymi liczbami obwody o różnych rozmiarach. Te operacje muszą zezwalać na dynamiczne rozmiary, na które nie zezwala wykres obliczeniowy TensorFlow o statycznym rozmiarze.
  2. Dane kwantowe mogą wywoływać zupełnie inną strukturę obwodu. To kolejny powód, aby wspierać dynamiczne rozmiary w operacjach TFQ. Dane kwantowe mogą przedstawiać strukturalną zmianę w podstawowym stanie kwantowym, reprezentowaną przez modyfikacje oryginalnego obwodu. Ponieważ nowe punkty danych są wymieniane i usuwane w czasie wykonywania, wykres obliczeniowy TensorFlow nie może być modyfikowany 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ło to jak najbardziej zgodne 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 eksperymencie z supremacją kwantową są używane jako weryfikatory i rozszerzane jako podstawa operacji TFQ (wszystkie napisane za pomocą instrukcji AVX2 i SSE). Stworzono operacje z identycznymi sygnaturami funkcjonalnymi, które wykorzystują fizyczny komputer kwantowy. Przełączanie się między symulowanym a fizycznym komputerem kwantowym jest tak proste, jak zmiana jednej linii kodu. Te circuit_execution_ops.py znajdują się w 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 tworzenie warstwy obwodu 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ść parametru kontroli wsadu i wykonywać operacje odczytu wsadowego. tfq.layers.Sample można tfq.layers.Sample na tfq.layers.Sample .

Różniczki

W przeciwieństwie do wielu operacji TensorFlow, obserwowalne 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, które są uruchomione na komputerze kwantowym.

Aby rozwiązać ten problem, moduł tfq.differentiators zapewnia kilka standardowych technik różnicowania. Użytkownicy mogą również zdefiniować własną metodę obliczania gradientów - zarówno w ustawieniach „świata rzeczywistego” obliczania oczekiwań na podstawie próbek, jak iw świecie 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. tfq.differentiators.Differentiator jest tfq.differentiators.Differentiator 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óżniacz, należy dziedziczyć z klasy tfq.differentiators.Differentiator . Aby zdefiniować operację gradientu dla próbkowania lub obliczenia wektora stanu, użyj tf.custom_gradient .

Zestawy danych

Wraz z rozwojem dziedziny obliczeń kwantowych pojawi się więcej danych kwantowych i kombinacji modeli, co utrudni strukturalne porównania. Moduł tfq.datasets jest używany jako źródło danych dla zadań kwantowego uczenia maszynowego. Zapewnia ustrukturyzowane porównania modelu i wydajności.

Oczekuje się, że przy dużym wkładzie społeczności moduł tfq.datasets rozwinie się, umożliwiając bardziej przejrzyste i powtarzalne badania. Starannie wyselekcjonowane problemy w: kontroli kwantowej, symulacji fermionicznej, klasyfikacji blisko przejść fazowych, wykrywaniu kwantowym itp. Są doskonałymi kandydatami do dodania do tfq.datasets . Aby zaproponować nowy zestaw danych, otwórz zgłoszenie w usłudze GitHub .