Catat tanggalnya! Google I / O mengembalikan 18-20 Mei Daftar sekarang
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Desain TensorFlow Quantum

TensorFlow Quantum (TFQ) dirancang untuk masalah pembelajaran mesin kuantum era NISQ. Ini menghadirkan primitif komputasi kuantum — seperti membangun sirkuit kuantum — ke ekosistem TensorFlow. Model dan operasi yang dibuat dengan TensorFlow menggunakan model primitif ini untuk membuat sistem hybrid klasik kuantum yang andal.

Dengan TFQ, peneliti dapat membuat grafik TensorFlow menggunakan set 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 dengan operasi TensorFlow. Pelatihan dilakukan dengan API Keras standar. Modul tfq.datasets memungkinkan peneliti bereksperimen dengan tfq.datasets data kuantum yang baru dan menarik.

Cirq

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.

Primitif TensorFlow Quantum

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

  • 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.
  • Jumlah Pauli : Mewakili kombinasi linier produk tensor operator Pauli yang ditentukan di Cirq ( cirq.PauliSum ). Seperti sirkuit, buat kumpulan operator dengan berbagai ukuran.

Operasi dasar

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

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

  1. Sirkuit tidak memiliki ukuran yang sama. Untuk sirkuit simulasi, Anda tidak dapat membuat operasi statis (seperti tf.matmul atau tf.add ) dan kemudian mengganti nomor yang 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 ke status kuantum yang mendasari yang diwakili oleh modifikasi pada rangkaian aslinya. Karena titik data baru bertukar masuk dan keluar pada waktu proses, grafik komputasi TensorFlow tidak dapat diubah setelah dibuat, jadi diperlukan dukungan untuk berbagai struktur ini.
  3. cirq.Circuits mirip dengan grafik komputasi karena merupakan rangkaian 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 sirkuit yang digunakan dalam eksperimen supremasi kuantum digunakan sebagai pengukur dan diperluas sebagai dasar operasi TFQ (semua ditulis dengan instruksi AVX2 dan SSE). Operasi dengan tanda tangan fungsional yang identik dibuat yang menggunakan komputer kuantum fisik. Beralih antara komputer kuantum fisik dan simulasi semudah mengubah satu baris kode. Operasi ini terletak di circuit_execution_ops.py .

Lapisan

Lapisan TensorFlow Quantum mengekspos pengambilan sampel, ekspektasi, dan penghitungan status kepada developer menggunakan antarmuka tf.keras.layers.Layer . Lebih mudah 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.

Pembeda

Tidak seperti banyak operasi TensorFlow, observable di sirkuit kuantum tidak memiliki rumus untuk gradien yang relatif mudah dihitung. Ini karena komputer klasik hanya dapat membaca sampel dari sirkuit yang dijalankan di 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 penghitungan ekspektasi berbasis sampel, dan dunia analitik yang tepat. Metode seperti beda hingga seringkali merupakan yang tercepat (waktu jam dinding) dalam lingkungan analitik / eksak. Meskipun lebih lambat (waktu jam dinding), metode yang lebih praktis seperti pergeseran parameter atau metode stokastik seringkali lebih efektif. Sebuah 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 menerapkan pembeda khusus, warisi dari kelas tfq.differentiators.Differentiator . Untuk menentukan operasi gradien untuk pengambilan sampel atau kalkulasi vektor status, gunakan tf.custom_gradient .

Set data

Ketika bidang komputasi kuantum tumbuh, lebih banyak data kuantum dan kombinasi model akan muncul, 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 komunitas yang besar, modul tfq.datasets akan berkembang sehingga memungkinkan penelitian yang lebih transparan dan reproducible. Masalah yang dikuratori dengan cermat dalam: kontrol kuantum, simulasi fermionik, klasifikasi transisi fase dekat, penginderaan kuantum, dll. Semuanya merupakan kandidat yang bagus untuk tambahan tfq.datasets . Untuk mengusulkan kumpulan data baru, buka masalah GitHub .