Desain kuantum TensorFlow

TensorFlow Quantum (TFQ) dirancang untuk masalah pembelajaran mesin kuantum era NISQ. Hal ini menghadirkan komputasi kuantum primitif—seperti pembuatan sirkuit kuantum—ke ekosistem TensorFlow. Model dan operasi yang dibuat dengan TensorFlow menggunakan primitif ini untuk menciptakan sistem hibrid kuantum-klasik yang kuat.

Dengan menggunakan TFQ, peneliti dapat membuat grafik TensorFlow menggunakan kumpulan data kuantum, model kuantum, dan parameter kontrol klasik. Ini semua direpresentasikan sebagai tensor dalam satu grafik komputasi. Hasil pengukuran kuantum—yang mengarah ke peristiwa probabilistik klasik—diperoleh oleh operasi TensorFlow. Pelatihan dilakukan dengan Keras API standar. Modul tfq.datasets memungkinkan peneliti bereksperimen dengan kumpulan data kuantum yang baru dan menarik.

Lingkaran

Cirq adalah kerangka pemrograman kuantum dari Google. Ini menyediakan semua operasi dasar—seperti qubit, gerbang, sirkuit, dan pengukuran—untuk membuat, memodifikasi, dan menjalankan sirkuit kuantum pada komputer kuantum, atau komputer kuantum yang disimulasikan. TensorFlow Quantum menggunakan primitif Cirq ini untuk memperluas TensorFlow untuk komputasi batch, pembuatan model, dan komputasi gradien. Agar efektif dengan TensorFlow Quantum, sebaiknya gunakan Cirq secara efektif.

Primitif TensorFlow Quantum

TensorFlow Quantum mengimplementasikan komponen yang diperlukan untuk mengintegrasikan TensorFlow dengan perangkat keras komputasi kuantum. Untuk itu, TFQ memperkenalkan dua tipe data primitif:

  • Sirkuit kuantum : Ini mewakili sirkuit kuantum yang ditentukan Cirq ( cirq.Circuit ) dalam TensorFlow. Buat kumpulan sirkuit dengan ukuran berbeda-beda, mirip dengan kumpulan titik data bernilai nyata yang berbeda.
  • Jumlah Pauli : Mewakili kombinasi linier produk tensor dari operator Pauli yang ditentukan dalam Cirq ( cirq.PauliSum ). Seperti sirkuit, buatlah kumpulan operator dengan ukuran berbeda-beda.

Operasi mendasar

Menggunakan primitif sirkuit kuantum dalam tf.Tensor , TensorFlow Quantum mengimplementasikan operasi yang memproses sirkuit ini dan menghasilkan keluaran yang berarti.

Operasi TensorFlow ditulis dalam C++ yang dioptimalkan. Operasi ini mengambil sampel dari sirkuit, menghitung nilai ekspektasi, dan mengeluarkan status yang dihasilkan oleh sirkuit tertentu. Operasi penulisan yang fleksibel dan berkinerja baik memiliki beberapa tantangan:

  1. Sirkuit tidak berukuran sama. Untuk rangkaian simulasi, Anda tidak dapat membuat operasi statis (seperti tf.matmul atau tf.add ) dan kemudian mengganti nomor berbeda untuk sirkuit dengan ukuran berbeda. Operasi ini harus mengizinkan ukuran dinamis yang tidak diizinkan oleh grafik komputasi TensorFlow berukuran statis.
  2. Data kuantum dapat menyebabkan struktur sirkuit yang berbeda sama sekali. Ini adalah alasan lain untuk mendukung ukuran dinamis dalam operasi TFQ. Data kuantum dapat mewakili perubahan struktural pada keadaan kuantum yang mendasarinya yang diwakili oleh modifikasi pada rangkaian aslinya. Karena titik data baru dipertukarkan masuk dan keluar saat runtime, grafik komputasi TensorFlow tidak dapat dimodifikasi setelah dibuat, sehingga diperlukan dukungan untuk berbagai struktur ini.
  3. cirq.Circuits mirip dengan grafik komputasi karena merupakan serangkaian operasi—dan beberapa mungkin berisi simbol/placeholder. Penting untuk membuat ini sekompatibel mungkin dengan TensorFlow.

Karena alasan performa, Eigen (library C++ yang digunakan di banyak operasi TensorFlow) tidak cocok untuk simulasi sirkuit kuantum. Sebaliknya, simulator rangkaian yang digunakan dalam eksperimen kuantum di luar klasik digunakan sebagai pemverifikasi dan diperluas sebagai dasar operasi TFQ (semua ditulis dengan instruksi AVX2 dan SSE). Operasi dengan tanda tangan fungsional yang identik dibuat menggunakan komputer kuantum fisik. Beralih antara komputer kuantum simulasi dan fisik semudah mengubah satu baris kode. Operasi ini terletak di circuit_execution_ops.py .

Lapisan

Lapisan TensorFlow Quantum memaparkan pengambilan sampel, ekspektasi, dan penghitungan status kepada developer menggunakan antarmuka tf.keras.layers.Layer . Lebih mudah untuk membuat lapisan sirkuit untuk parameter kontrol klasik atau untuk operasi pembacaan. Selain itu, Anda dapat membuat lapisan dengan tingkat kompleksitas tinggi yang mendukung rangkaian batch, nilai parameter kontrol batch, dan melakukan operasi pembacaan batch. Lihat tfq.layers.Sample sebagai contoh.

Pembeda

Tidak seperti banyak operasi TensorFlow, observasi dalam sirkuit kuantum tidak memiliki rumus gradien yang relatif mudah dihitung. Hal ini karena komputer klasik hanya dapat membaca sampel dari rangkaian yang dijalankan pada komputer kuantum.

Untuk mengatasi masalah ini, modul tfq.differentiators menyediakan beberapa teknik diferensiasi standar. Pengguna juga dapat menentukan metode mereka sendiri untuk menghitung gradien—baik dalam pengaturan “dunia nyata” penghitungan ekspektasi berbasis sampel, dan dunia analitik yang tepat. Metode seperti perbedaan hingga seringkali merupakan yang tercepat (waktu jam dinding) dalam lingkungan analitik/tepat. Meskipun lebih lambat (waktu jam dinding), metode yang lebih praktis seperti pergeseran parameter atau metode stokastik seringkali lebih efektif. tfq.differentiators.Differentiator dibuat dan dilampirkan ke operasi yang ada dengan generate_differentiable_op , atau diteruskan ke konstruktor tfq.layers.Expectation atau tfq.layers.SampledExpectation . Untuk mengimplementasikan pembeda khusus, warisi dari kelas tfq.differentiators.Differentiator . Untuk menentukan operasi gradien untuk pengambilan sampel atau penghitungan vektor status, gunakan tf.custom_gradient .

Kumpulan data

Seiring berkembangnya bidang komputasi kuantum, semakin banyak data kuantum dan kombinasi model yang akan muncul, sehingga membuat perbandingan terstruktur menjadi lebih sulit. Modul tfq.datasets digunakan sebagai sumber data untuk tugas pembelajaran mesin kuantum. Ini memastikan perbandingan terstruktur untuk model dan kinerja.

Diharapkan dengan kontribusi masyarakat yang besar, modul tfq.datasets akan berkembang sehingga memungkinkan penelitian lebih transparan dan dapat direproduksi. Masalah yang disusun dengan cermat dalam: kontrol kuantum, simulasi fermionik, klasifikasi transisi fase dekat, penginderaan kuantum, dll merupakan kandidat bagus untuk ditambahkan ke tfq.datasets . Untuk mengusulkan kumpulan data baru, buka masalah GitHub .