TensorFlow Quantum (TFQ) dirancang untuk masalah pembelajaran mesin kuantum era NISQ. Ini membawa komputasi kuantum primitif—seperti membangun sirkuit kuantum—ke ekosistem TensorFlow. Model dan operasi yang dibuat dengan TensorFlow menggunakan primitif ini untuk membuat sistem hibrid kuantum-klasik yang andal.
Dengan menggunakan TFQ, peneliti dapat membuat grafik TensorFlow menggunakan kumpulan data kuantum, model kuantum, dan parameter kontrol klasik. Ini semua direpresentasikan sebagai tensor dalam grafik komputasi tunggal. Hasil pengukuran kuantum—yang mengarah ke peristiwa probabilistik klasik—diperoleh oleh operasi TensorFlow. Pelatihan dilakukan dengan API Keras standar. Modul tfq.datasets
memungkinkan peneliti bereksperimen dengan kumpulan data kuantum baru dan menarik.
lingkaran
Cirq adalah kerangka kerja pemrograman kuantum dari Google. Ini menyediakan semua operasi dasar—seperti qubit, gerbang, sirkuit, dan pengukuran—untuk membuat, memodifikasi, dan memanggil sirkuit kuantum pada komputer kuantum, atau komputer kuantum simulasi. TensorFlow Quantum menggunakan primitif Cirq ini untuk memperluas TensorFlow untuk komputasi batch, pembuatan model, dan komputasi gradien. Agar efektif dengan TensorFlow Quantum, sebaiknya efektif dengan Cirq.
TensorFlow Quantum primitif
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 berbagai ukuran, mirip dengan kumpulan titik data bernilai nyata yang berbeda. - Pauli sum : Mewakili kombinasi linier dari produk tensor dari operator Pauli yang didefinisikan dalam Cirq (
cirq.PauliSum
). Seperti sirkuit, buat kumpulan operator dengan berbagai ukuran.
Operasi dasar
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. Ops ini mengambil sampel dari sirkuit, menghitung nilai ekspektasi, dan menampilkan status yang dihasilkan oleh sirkuit yang diberikan. Menulis ops yang fleksibel dan berkinerja memiliki beberapa tantangan:
- Sirkuit tidak berukuran sama. Untuk sirkuit simulasi, Anda tidak dapat membuat operasi statis (seperti
tf.matmul
atautf.add
) dan kemudian mengganti nomor yang berbeda untuk sirkuit dengan ukuran berbeda. Operasi ini harus memungkinkan ukuran dinamis yang tidak diizinkan oleh grafik komputasi TensorFlow berukuran statis. - Data kuantum dapat menginduksi struktur sirkuit yang berbeda sama sekali. Ini adalah alasan lain untuk mendukung ukuran dinamis dalam operasi TFQ. Data kuantum dapat mewakili perubahan struktural ke keadaan kuantum yang mendasarinya yang diwakili oleh modifikasi pada rangkaian asli. Karena titik data baru ditukar masuk dan keluar saat runtime, grafik komputasi TensorFlow tidak dapat dimodifikasi setelah dibuat, sehingga diperlukan dukungan untuk berbagai struktur ini.
-
cirq.Circuits
mirip dengan grafik komputasi karena merupakan rangkaian operasi—dan beberapa mungkin berisi simbol/placeholder. Penting untuk membuat ini sekompatibel mungkin dengan TensorFlow.
Untuk alasan kinerja, Eigen (library C++ yang digunakan di banyak operasi TensorFlow) tidak cocok untuk simulasi sirkuit kuantum. Sebagai gantinya, simulator sirkuit yang digunakan dalam eksperimen kuantum di luar klasik digunakan sebagai verifikator dan diperluas sebagai dasar operasi TFQ (semua ditulis dengan instruksi AVX2 dan SSE). Operasi dengan tanda tangan fungsional identik dibuat yang 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 Quantum TensorFlow memaparkan pengambilan sampel, ekspektasi, dan penghitungan status ke 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 kerumitan tinggi yang mendukung rangkaian batch, nilai parameter kontrol batch, dan melakukan operasi pembacaan batch. Lihat tfq.layers.Sample
untuk contoh.
Diferensiator
Tidak seperti banyak operasi TensorFlow, yang dapat diamati di sirkuit kuantum tidak memiliki rumus untuk gradien yang relatif mudah untuk dihitung. Ini karena komputer klasik hanya dapat membaca sampel dari sirkuit 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" dari perhitungan ekspektasi berbasis sampel, dan dunia eksak analitik. Metode seperti perbedaan hingga sering kali 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. Sebuah tfq.differentiators.Differentiator
dipakai dan dilampirkan ke operasi yang ada dengan generate_differentiable_op
, atau diteruskan ke konstruktor tfq.layers.Expectation
atau tfq.layers.SampledExpectation
. Untuk menerapkan pembeda kustom, mewarisi dari kelas tfq.differentiators.Differentiator
. Untuk menentukan operasi gradien untuk pengambilan sampel atau penghitungan vektor keadaan, gunakan tf.custom_gradient
.
Kumpulan data
Saat bidang komputasi kuantum tumbuh, lebih banyak data kuantum dan kombinasi model akan muncul, membuat perbandingan terstruktur 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 komunitas yang besar, modul tfq.datasets
akan berkembang untuk memungkinkan penelitian yang lebih transparan dan dapat direproduksi. Masalah yang dikuratori dengan cermat dalam: kontrol kuantum, simulasi fermionik, klasifikasi transisi fase dekat, penginderaan kuantum, dll. Semuanya merupakan kandidat bagus untuk penambahan tfq.datasets
. Untuk mengusulkan kumpulan data baru, buka masalah GitHub .