Pengelompokan tugas kuantum - Amazon Braket

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pengelompokan tugas kuantum

Pengumpulan tugas kuantum tersedia di setiap perangkat Amazon Braket, kecuali simulator lokal. Batching sangat berguna untuk tugas kuantum yang Anda jalankan pada simulator sesuai permintaan (TN1 atau SV1) karena mereka dapat memproses beberapa tugas kuantum secara paralel. Untuk membantu Anda mengatur berbagai tugas kuantum, Amazon Braket menyediakan contoh notebook.

Batching memungkinkan Anda untuk meluncurkan tugas kuantum secara paralel. Misalnya, jika Anda ingin membuat perhitungan yang membutuhkan 10 tugas kuantum dan sirkuit dalam tugas kuantum tersebut tidak tergantung satu sama lain, sebaiknya gunakan batching. Dengan begitu, Anda tidak perlu menunggu satu tugas kuantum selesai sebelum tugas lain dimulai.

Contoh berikut menunjukkan cara menjalankan sekumpulan tugas kuantum:

circuits = [bell for _ in range(5)] batch = device.run_batch(circuits, s3_folder, shots=100) print(batch.results()[0].measurement_counts) # The result of the first quantum task in the batch

Untuk informasi selengkapnya, lihat contoh Amazon Braket on GitHub atau Quantum task batching, yang memiliki informasi lebih spesifik tentang batching.

Tentang pengelompokan tugas kuantum dan biaya

Beberapa peringatan yang perlu diingat mengenai biaya batching dan penagihan tugas kuantum:

  • Secara default, pengelompokan tugas kuantum mencoba ulang sepanjang waktu atau gagal tugas kuantum 3 kali.

  • Sekumpulan tugas kuantum yang berjalan lama, seperti 34 qubits untuk SV1, dapat menimbulkan biaya besar. Pastikan untuk memeriksa ulang nilai run_batch penetapan dengan hati-hati sebelum Anda memulai serangkaian tugas kuantum. Kami tidak menyarankan menggunakan TN1 denganrun_batch.

  • TN1 dapat menimbulkan biaya untuk tugas fase latihan yang gagal (lihat TN1deskripsi untuk informasi lebih lanjut). Percobaan ulang otomatis dapat menambah biaya dan jadi kami sarankan untuk mengatur jumlah 'max_retries' pada batching ke 0 saat menggunakan TN1 (lihat Quantum Task Batching, Baris 186).

Pengelompokan tugas kuantum dan PennyLane

Manfaatkan batching saat Anda menggunakan PennyLane di Amazon Braket dengan parallel = True menyetel saat Anda membuat instance perangkat Amazon Braket, seperti yang ditunjukkan pada contoh berikut.

device = qml.device("braket.aws.qubit",device_arn="arn:aws:braket:::device/quantum-simulator/amazon/sv1",wires=wires,s3_destination_folder=s3_folder,parallel=True,)

Untuk informasi lebih lanjut tentang batching dengan PennyLane, lihat Optimalisasi paralel sirkuit kuantum.

Pengelompokan tugas dan sirkuit parametris

Saat mengirimkan batch tugas kuantum yang berisi sirkuit parametris, Anda dapat menyediakan inputs kamus, yang digunakan untuk semua tugas kuantum dalam batch, atau kamus input, dalam hal ini kamus -th dipasangkan dengan tugas i -th, seperti yang ditunjukkan pada contoh berikuti. list

from braket.circuits import Circuit, FreeParameter, Observable from braket.aws import AwsQuantumTaskBatch # create the free parameters alpha = FreeParameter('alpha') beta = FreeParameter('beta') # create two circuits circ_a = Circuit().rx(0, alpha).ry(1, alpha).cnot(0,2).xx(0, 2, beta) circ_a.variance(observable=Observable.Z(), target=0) circ_b = Circuit().rx(0, alpha).rz(1, alpha).cnot(0,2).zz(0, 2, beta) circ_b.expectation(observable=Observable.Z(), target=2) # use the same inputs for both circuits in one batch tasks = device.run_batch([circ_a, circ_b], inputs={'alpha': 0.1, 'beta':0.2}) # or provide each task its own set of inputs inputs_list = [{'alpha': 0.3,'beta':0.1}, {'alpha': 0.1,'beta':0.4}] tasks = device.run_batch([circ_a, circ_b], inputs=inputs_list)

Anda juga dapat menyiapkan daftar kamus input untuk rangkaian parametrik tunggal dan mengirimkannya sebagai kumpulan tugas kuantum. Jika ada kamus masukan N dalam daftar, batch berisi N tugas kuantum. Tugas kuantum i ke--sesuai dengan rangkaian yang dijalankan dengan kamus masukan i ke--th.

from braket.circuits import Circuit, FreeParameter # create a parametric circuit circ = Circuit().rx(0, FreeParameter('alpha')) # provide a list of inputs to execute with the circuit inputs_list = [{'alpha': 0.1}, {'alpha': 0.2}, {'alpha': 0.3}] tasks = device.run_batch(circ, inputs=inputs_list)